`

《大道至简:软件工程实践者的思想(典藏版)》 试读

 
阅读更多

    在我想来,一本书出到了第4版,说明获得了大量读者的赞同,也证明了作者的优秀,作者在delphi和javascript方面写的几本书也证明了他在编程领域的深入思考。但此书我读来却是十分难受,读完第7章就读不下去,为何如此?


第七章 从编程到工程
1、语言只是工具
从软件工程的角度来说这是正确的,但要注意的是这么说并不是抹平语言之间的差异,不同的语言有不同的适用场景,不同的语言背后有它特定的编程范式。
2、关注点
作者的软件工程层次模型(EHM)的关注点分为实现、团队和经营,这不是同一抽象级别的东西。实现不是一个工程角色,而后两者项目团队本身就设定了PM(项目经理)和PSM(项目软件经理)这两个不同的角色,关注点的内容属于它们的工作范围。
3、程序=算法+结构
Pascal之父——Nicklaus Wirth提出的著名公式“算法+数据结构=程序”使得他在1984年获得图灵奖。简单说,程序运行的过程就是数据流的处理过程,如何处理那是算法问题,数据怎么组织,那就是数据结构了。他的结构化程序设计概念完全改变了人们对程序设计的思维方式,不过,在软件日益复杂的今天,采用的大多是面向对象方法,如果要用公式表达的话,那就是“程序=对象+交互”,当然,你硬要说对象属性是结构,对象方法和对象之间的交互是算法那我也没辙。
4、方法
作者把模式算作方法,我不同意。模式只是一种设计经验,在特定场景下效果不错。就像现成的感冒药丸,可以用于下次感冒。那么,什么是方法?方法是一种形式化过程,告诉你如何做。面向对象是一种方法,它包括以对象定义和对象交互为导向的需求描述、分析、设计和程序开发,但不包括具体使用哪种语言。面向过程或者说结构化程序设计同样也是一种方法。
5、过程
试读中说“过程解决的是工程中角色的关系问题”,我不同意。软件过程是我们生产软件采取的一系列顺序执行的步骤,就像食谱,告诉你什么时候该做什么。它将方法和工具结合起来。瀑布模型、螺旋模型和敏捷方法都属于过程。
6、工程
试读中说“工程是描述做什么和做到什么,也就是对目标的描述和对成果的检验”,我还是不同意。维基百科中描述软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。简要来说,就是采用过程化方法(管理技术+技术方法)开发软件。很明显是讲如何做的过程。
7、组织
将组织或管理与工程分离开这是本书才有的吧。试读中所说的组织包括资源、资金、人员协调等非技术因素的管理,后面组织者的工作列表里又包括了阶段计划和阶段目标、评审和复查等。在我看来,前者属于PM的工作,后者属于PSM的工作。
8、Boss
这不属于软件工程的范畴,不提也罢。
9、上帝之手
试读上说"实现,是软件开发的本质需求",软件项目的三要素是时间、成本和质量。这里的实现应该是指质量吧。
试读上又说实现如同上帝之手,推动了软件工程理论体系的完成,真不知道这些结论如何得来。软件工程有实践派和学院派之分,前者主要关注构造高质量的产品完成某些功能,后者寻求各种办法改进产品质量以及提高开发人员生产效率。

 

    在《软件工程 实践者的研究方法》中,软件工程的根基是质量关注点,是评审、测试、度量的基础,这和牛屎图中的实现对象是两码事,作者为两个层次结构图相似而沾沾自喜,实在是如有雷同,纯属巧合。不同的知识背景和项目经验会让个人对软件工程有不同的理解,但软件工程作为一门严谨的科学,背后是实践验证和统计总结,而不是臆想。思想可以是自由的,但思考应当遵循常识。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics