第7章中讲的是现实中的软件工程,以IBM为例 讲了ibm为何购并rational,为何在语言方面选择支持java,以及出于同样的理由选择亲近开源软件界。同样borland也从开发工具场上的位置跳出来,在语言上寻求中立,作为工具开发商,borlan拥有了实现alm所需的绝大多数软件产品,并且开始并购与实现alm体系相关的公司迅速不全了alm作为一个工程体系在理论方面的不足。而微软在工具方法和过程方面并非都停留在理论阶段而是都有具体的实现。
在文中作者向我们介绍了IBM,Borland和Microsoft等体系,各大公司想通过理论体系,语言工具等方面来占据软件工程行业的主导地位,以在这个体系中获得全胜。可能他们会采取各种手段,比如兼并其他公司等,还有些公司利用在市场中的中间位置,权衡两侧,使对手相互制约来获得控制权,但是无论是采取什么方法,左不过工具、方法、过程这些要素。他们在标准、理论、语言上争来争去,未必全然出于“软件实现”的考虑。在他们这张算盘上的人只是用于计算胜负的一枚棋子罢了。
评论方法好坏的唯一标准就是:节约成本。作者提出观点:“不计成本的项目计划不会得到经营者的支持,毫无目的地消耗成本是项目中的慢性毒药,最致命的风险是成本的枯竭。”而所说的成本包括时间、人类、资金和客户成本。但是我们经常会忽略客户的数量和耐心,也就是不把它们当成成本进行计算。
AOP 不是语言。 AOP 首先是方法论,这就象 OOP 是“面向对象的编程方法”是方法论一样。而C++才是语言,是对这个方法论的一个实现工具。学习任何一种新的编程方法,你需要做的仅仅是回到工程最核心的环节:程序= 算法+结构+方法。
“项目管理要不要考虑成本问题”作者以一个小例子提出评价完成一个工程方法的好坏标准只有一个:节约成本。不计成本的项目计划是不会得到经营者的支持,毫无目的消耗成本是项目中的慢性毒药,最致命的风险是成本的枯竭。项目的关键问题,那就是成本和效率。无论团队多么优秀,最终成本也有可能成为失败的原因,所以一定要着重考虑成本方面,当资本没有了,就没了运作,团队的存在就没有了必要性和可能性,项目也就死亡了。
第八章中作者提出了软件工程的三个要素的价值:工具,方法和过程这三者相互作用,例如过程问题既有实施过程的工具也有相关的过程方法理论。
作者提出“敏捷”一词想表达的是对人主观能动性、创造力的尊重,也是对工程目标的尊重。而“传统工程”代表的是规范和规模化。无论多么地敏捷,如果方法不能运用在团队化的工程中,那么敏捷就失去了工程的价值。所以,敏捷的前提是:团队认可敏捷的价值并且遵循敏捷的价值观和基本原则。由此看来,敏捷所体现的核心想法是以实现、事实、实践为主要手段、体现人本位主要内涵的行为准则。极限实质上是使团队遵循这些“行为准则”的一些“形式化方法”,在对一些工程要素的权衡上,极限给出了建议和实践成果。
一个很重要的问题,就是目标的实现和质量的保障。可能在做工程中,开发人员会和需求人员有质量上的矛盾,可能在一开始开发人员就没有和需求人员在同一频道,所以说无论是开发人员还是项目经理都应该更加注重项目的实现和功能的健全,与此同时平衡时间,资源和功能三者的关系,尽力的向理想的工程方向前行。
在对待目标和质量的问题是我们应学会平衡二者,平衡时间资源和功能三者的关系。這是就是一个实施过程的细节或者说它是一个具体的方法而不是目的我们不能将二者混淆,直接是事实发展的次要分支,细节是事物做的何种程度的问题。