大公司们经常在标准、理论、语言上争来争去,这并不全部是考虑到软件的实现。要知道统一理论、工具、过程的最终目的,都是为了能够在整个软件工程体系中全面完胜!
在理想条件下,软件工程=过程+方法+工具,这在前面章节有讨论过。但是软件工程成功的真正关键不在于团队的表现。
评论方法好坏的唯一标准就是:节约成本。作者提出观点:“不计成本的项目计划不会得到经营者的支持,毫无目的地消耗成本是项目中的慢性毒药,最致命的风险是成本的枯竭。”而所说的成本包括时间、人类、资金和客户成本。但是我们经常会忽略客户的数量和耐心,也就是不把它们当成成本进行计算。
AOP 不是语言。 AOP 首先是方法论,这就象 OOP 是“面向对象的编程方法”是方法论一样。而 Delphi/ C++才是语言,是对这个方法论的一个实现工具。学习任何一种新的编程方法,你需要做的仅仅是回到工程最核心的环节:程序= 算法+结构+方法。
撇开实现的技术细节,在软件工程中,“以什么驱动开发”是过程的问题。工程的需要、它在相关应用领域的适用性、过程工具的充备性和这个过程理论的完善程度才能决定过程的选择和制定,而不是取决于大公司的鼓吹炒作。但是目前的软件业界局面都是大公司们相互制约的结果。
作者提出“敏捷”一词想表达的是对人主观能动性、创造力的尊重,也是对工程目标的尊重。而“传统工程”代表的是规范和规模化。无论多么地敏捷,如果方法不能运用在团队化的工程中,那么敏捷就失去了工程的价值。所以,敏捷的前提是:团队认可敏捷的价值并且遵循敏捷的价值观和基本原则。由此看来,敏捷所体现的核心想法是以实现、事实、实践为主要手段、体现人本位主要内涵的行为准则。极限实质上是使团队遵循这些“行为准则”的一些“形式化方法”,在对一些工程要素的权衡上,极限给出了建议和实践成果。
作为一个合格的项目经理、工程决策者,必须做到的是,透彻了解各种工程方法的应用环境和代价、明白团队的实力,找到团队的长处和短处在哪。
其实RUP是一个杂物箱。确定工程的本质需求是实现。无论什么时候,一定要记住“实现”是第一要务,应对假想或理论设想的探索放下一个版本,远离去空想它。首先要确定具体工程的具体目标。一定要保证目标是可叙述、回归和表现为具体软件产品的。广义工程考虑的是对工程问题的“统治”,而具体工程则考虑的是“分治”。也就是要找到造成混乱的问题之间的关系,以及分类出无关的问题,把问题放到界面上去讨论,而不是放在里面讨论。
项目经理如果可以把“我们要有什么方法,向着什么目标前进”这一件事情说明白,那么工程相当于成功了一半。