在我想来,一本书出到了第4版,说明获得了大量读者的赞同,也证明了作者的优秀,作者在delphi和javascript方面写的几本书也证明了他在编程领域的深入思考。但此书我读来却是十分难受,读完第7章就读不下去,为何如此?
第七章 从编程到工程
1、语言只是工具
从软件工程的角度来说这是正确的,但要注意的是这么说并不是抹平语言之间的差异,不同的语言有不同的适用场景,不同的语言背后有它特定的编程范式。
2、关注点
作者的软件工程层次模型(EHM)的关注点分为实现、团队和经营,这不是同一抽象级别的东西。实现不是一个工程角色,而后两者项目团队本身就设定了PM(项目经理)和PSM(项目软件经理)这两个不同的角色,关注点的内容属于它们的工作范围。
3、程序=算法+结构
Pascal之父——Nicklaus Wirth提出的著名公式“算法+数据结构=程序”使得他在1984年获得图灵奖。简单说,程序运行的过程就是数据流的处理过程,如何处理那是算法问题,数据怎么组织,那就是数据结构了。他的结构化程序设计概念完全改变了人们对程序设计的思维方式,不过,在软件日益复杂的今天,采用的大多是面向对象方法,如果要用公式表达的话,那就是“程序=对象+交互”,当然,你硬要说对象属性是结构,对象方法和对象之间的交互是算法那我也没辙。
4、方法
作者把模式算作方法,我不同意。模式只是一种设计经验,在特定场景下效果不错。就像现成的感冒药丸,可以用于下次感冒。那么,什么是方法?方法是一种形式化过程,告诉你如何做。面向对象是一种方法,它包括以对象定义和对象交互为导向的需求描述、分析、设计和程序开发,但不包括具体使用哪种语言。面向过程或者说结构化程序设计同样也是一种方法。
5、过程
试读中说“过程解决的是工程中角色的关系问题”,我不同意。软件过程是我们生产软件采取的一系列顺序执行的步骤,就像食谱,告诉你什么时候该做什么。它将方法和工具结合起来。瀑布模型、螺旋模型和敏捷方法都属于过程。
6、工程
试读中说“工程是描述做什么和做到什么,也就是对目标的描述和对成果的检验”,我还是不同意。维基百科中描述软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。简要来说,就是采用过程化方法(管理技术+技术方法)开发软件。很明显是讲如何做的过程。
7、组织
将组织或管理与工程分离开这是本书才有的吧。试读中所说的组织包括资源、资金、人员协调等非技术因素的管理,后面组织者的工作列表里又包括了阶段计划和阶段目标、评审和复查等。在我看来,前者属于PM的工作,后者属于PSM的工作。
8、Boss
这不属于软件工程的范畴,不提也罢。
9、上帝之手
试读上说"实现,是软件开发的本质需求",软件项目的三要素是时间、成本和质量。这里的实现应该是指质量吧。
试读上又说实现如同上帝之手,推动了软件工程理论体系的完成,真不知道这些结论如何得来。软件工程有实践派和学院派之分,前者主要关注构造高质量的产品完成某些功能,后者寻求各种办法改进产品质量以及提高开发人员生产效率。
在《软件工程 实践者的研究方法》中,软件工程的根基是质量关注点,是评审、测试、度量的基础,这和牛屎图中的实现对象是两码事,作者为两个层次结构图相似而沾沾自喜,实在是如有雷同,纯属巧合。不同的知识背景和项目经验会让个人对软件工程有不同的理解,但软件工程作为一门严谨的科学,背后是实践验证和统计总结,而不是臆想。思想可以是自由的,但思考应当遵循常识。
分享到:
相关推荐
Oracle高性能SQL引擎剖析:SQL优化与调优机制详解 试读版前146页
云计算:大数据时代的系统工程试读
Node实战|组件|工具|模块库大全 搞定最复杂应用 全面提升代码质量与开发效率
本书从最切实可行的大数据方案选择方法着手,面向不懂大数据相关概念、不知道如何将大数据项目引入何种领域的IT团队和实际经营团队,以自己的实际经验为基础,创立并介绍了大数据项目构建方法。...
茵曼方建华作序推荐!迄今最个性、最直白的电商零售学箴言!从细节到思想,彻底突破零售困局,电商人必读!/京东:迄今最个性、最直白的电商零售学箴言!
大规模|可扩展|低成本|高效率解决之道,大规模分布式|多线程应用程序|消息传递架构构建利器
本书以实际项目为原型、以关键理论与丰富实践为指导,贯彻了先进的项目管理理念与全程质量管理思想。
本书介绍了软件项目行为的86 个模式,基本上概括了软件项目生命周期的方方面面,揭示了软件项目最常遇到的困境,反省了行业内种种不良习惯... 本书适合所有软件项目的管理者阅读,也适合有志于成为软件管理者的人参考。
以此作为出发点,作者精心构思了 8 个故事,以情景代入的方式邀请读者思考代码之外的关键问题:软件开发工作如何从以技术为中心转为以人为本?透过故事主人公的视角,读者能比较自己与书中角色的差异,发现决策过程...
网上下载的试读版本,自己去掉了水印,看着清爽一点。目前还没有全版的放出来。
本书分为准备篇、基础篇和应用篇三大部分,借助在线评测系统Aizu Online Judge以及大量例题,详细讲解了算法与复杂度、初等和高等排序、...本书适合所有程序设计人员、程序设计竞赛爱好者以及高校计算机专业师生阅读。
测试人员可以看看,对LoadRunner性能测试工具想了解下的朋友,看看吧?这是一个很好的文档,不是一个是多个文档在里面哦!看看,不会让你失望的!
软件架构专家温昱老师新作——《一线架构师实践指南》试读样章 本书致力于为一线架构师,以及软件企业提供务实有效的架构设计方法指导。 本书从架构师经常遇到的困惑出发,总结软件架构设计中经常遇到的问题,提出...
深入理解Android内核设计思想(第2版)(上下册)-试读版.pdf
C语言进阶:重点、难点与疑点解析 试读版的
本书是一本关于设计原则、编程实践、测试驱动开发的指南,旨在帮助C++ 程序员用测试驱动开发方法构建高性能解决方案。全书共11 章,涵盖测试驱动开发的基本工作方式、潜在好处、怎样利用测试驱动开发解决设计缺陷、...
《UNIX编程艺术》的作者将Unix三十年中未见纸端的艰难胜利的软件工程智慧熔入文字。使Unix家庭成为最最具创新软件的哲学、设计模式、工具、文化和传统,Raymond将之第一次带给我们,并向我们展示它们如何影响当今的...
本书记录了斯托曼从一名黑客成为自由软件的倡导者,并发起自由软件运动的成长经历。作者通过接触斯托曼本人、他的家庭、追随他的程序高手以及IT产业界,以全新的视角和丰富的笔触,塑造了这位软件产业界的“罗宾汉”...
Linux多线程服务端编程:使用muduo+C++网络库 试读样章 153页