在我想来,一本书出到了第4版,说明获得了大量读者的赞同,也证明了作者的优秀,作者在delphi和javascript方面写的几本书也证明了他在编程领域的深入思考。但此书我读来却是十分难受,读完第7章就读不下去,为何如此?
第七章 从编程到工程
1、语言只是工具
从软件工程的角度来说这是正确的,但要注意的是这么说并不是抹平语言之间的差异,不同的语言有不同的适用场景,不同的语言背后有它特定的编程范式。
2、关注点
作者的软件工程层次模型(EHM)的关注点分为实现、团队和经营,这不是同一抽象级别的东西。实现不是一个工程角色,而后两者项目团队本身就设定了PM(项目经理)和PSM(项目软件经理)这两个不同的角色,关注点的内容属于它们的工作范围。
3、程序=算法+结构
Pascal之父——Nicklaus Wirth提出的著名公式“算法+数据结构=程序”使得他在1984年获得图灵奖。简单说,程序运行的过程就是数据流的处理过程,如何处理那是算法问题,数据怎么组织,那就是数据结构了。他的结构化程序设计概念完全改变了人们对程序设计的思维方式,不过,在软件日益复杂的今天,采用的大多是面向对象方法,如果要用公式表达的话,那就是“程序=对象+交互”,当然,你硬要说对象属性是结构,对象方法和对象之间的交互是算法那我也没辙。
4、方法
作者把模式算作方法,我不同意。模式只是一种设计经验,在特定场景下效果不错。就像现成的感冒药丸,可以用于下次感冒。那么,什么是方法?方法是一种形式化过程,告诉你如何做。面向对象是一种方法,它包括以对象定义和对象交互为导向的需求描述、分析、设计和程序开发,但不包括具体使用哪种语言。面向过程或者说结构化程序设计同样也是一种方法。
5、过程
试读中说“过程解决的是工程中角色的关系问题”,我不同意。软件过程是我们生产软件采取的一系列顺序执行的步骤,就像食谱,告诉你什么时候该做什么。它将方法和工具结合起来。瀑布模型、螺旋模型和敏捷方法都属于过程。
6、工程
试读中说“工程是描述做什么和做到什么,也就是对目标的描述和对成果的检验”,我还是不同意。维基百科中描述软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。简要来说,就是采用过程化方法(管理技术+技术方法)开发软件。很明显是讲如何做的过程。
7、组织
将组织或管理与工程分离开这是本书才有的吧。试读中所说的组织包括资源、资金、人员协调等非技术因素的管理,后面组织者的工作列表里又包括了阶段计划和阶段目标、评审和复查等。在我看来,前者属于PM的工作,后者属于PSM的工作。
8、Boss
这不属于软件工程的范畴,不提也罢。
9、上帝之手
试读上说"实现,是软件开发的本质需求",软件项目的三要素是时间、成本和质量。这里的实现应该是指质量吧。
试读上又说实现如同上帝之手,推动了软件工程理论体系的完成,真不知道这些结论如何得来。软件工程有实践派和学院派之分,前者主要关注构造高质量的产品完成某些功能,后者寻求各种办法改进产品质量以及提高开发人员生产效率。
在《软件工程 实践者的研究方法》中,软件工程的根基是质量关注点,是评审、测试、度量的基础,这和牛屎图中的实现对象是两码事,作者为两个层次结构图相似而沾沾自喜,实在是如有雷同,纯属巧合。不同的知识背景和项目经验会让个人对软件工程有不同的理解,但软件工程作为一门严谨的科学,背后是实践验证和统计总结,而不是臆想。思想可以是自由的,但思考应当遵循常识。
分享到:
相关推荐
本试读样章的标题“Node.js项目实践:构建可扩展的Web应用”点明了Node.js在构建现代Web应用时的强大能力,特别是其扩展性。扩展性是指系统在需要时能灵活地增加计算能力、存储容量等资源,而不会造成性能上的显著...
《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》试读版的前146页,涵盖了数据库系统中至关重要的SQL查询优化和调优主题。Oracle数据库是全球广泛使用的数据库管理系统之一,其高效的SQL执行引擎是其核心竞争力...
在书的序言部分,作者茵曼方建华作序推荐,表明此书凝聚了电商零售学的最新观点和实践经验,对于电商人来说是不可多得的读物。作者以个性鲜明和直白的语言,突破了传统零售学的束缚,提出了许多独到的见解,使得这...
通过阅读《软件测试工程师成长之路:掌握软件测试九大技术主题试读样章》这本书,你将能够深入理解这些关键领域,并逐步成长为一名精通软件测试的专业人士。书中实例丰富的讲解和实际项目的应用指导,将使你更好地将...
通过阅读《软件性能测试与LoadRunner实战试读》,读者不仅可以掌握LoadRunner的基本操作,还能了解到性能测试的策略和最佳实践。此外,它还可能包含了LoadRunner与其他性能测试工具的对比,以及如何将LoadRunner集成...
文档中的内容涉及的是学生在遇到学业困难,如挂科过多,需要进行留级或试读时,需要提交的申请书样本。留级和试读是高等教育中对学生学业表现不佳的一种处理方式,通常根据学校的学籍管理制度执行。以下是相关知识点...
这包括但不限于遵循软件工程的最佳实践、模式和架构风格。 - **设计的自然面貌**:强调设计应该简洁、直观且易于理解和维护。这意味着在设计过程中要避免不必要的复杂性,并尽可能地让代码和架构反映问题域的真实...
《软件工程师书第三版》是一本专为软件工程师量身打造的专业书籍,旨在全面深入地探讨软件工程领域的核心知识和实践技巧。此书反复提及,表明其内容的重要性以及对读者的持续价值。从标签“软件工程师书”我们可以...
深入理解Android内核设计思想(第2版)(上下册)-试读版.pdf
### 极简设计:苹果崛起之道试读样章 #### 关键知识点概述 本文档主要围绕苹果公司的设计理念和发展历程展开,特别聚焦于乔布斯与“工业设计教父”哈特穆特·艾斯林格的合作,以及他们如何共同塑造了苹果独特的...
### 人月神话—软件工程项目管理的核心理念 #### 背景介绍 《人月神话》一书由Frederick P. Brooks Jr.撰写,首次出版于1975年,至今仍然是软件工程领域的经典之作。Brooks因其在IBM 360系统项目中的杰出贡献而闻名...
《UNIX编程艺术》的作者将Unix三十年中未见纸端的艰难胜利的软件工程智慧熔入文字。使Unix家庭成为最最具创新软件的哲学、设计模式、工具、文化和传统,Raymond将之第一次带给我们,并向我们展示它们如何影响当今的...
本书记录了斯托曼从一名黑客成为自由软件的倡导者,并发起自由软件运动的成长经历。作者通过接触斯托曼本人、他的家庭、追随他的程序高手以及IT产业界,以全新的视角和丰富的笔触,塑造了这位软件产业界的“罗宾汉”...