在第七章的开头,作者便引用了IBM的事例,大公司是如何在软件工程中进行运作。Rational 被 IBM 购并的真实原因在于 IBM 需要构建一个完整的软件工程体系,对于 IBM 来说,Rational 有着 UML 语言的非常丰富的实践经验, 还有着 RUP 作为理论框架的创立者和领导者的地位,这些对 IBM 在确立大型软件工程应用方案提供商的行业形象,都是极大的支持。而另一个开发商:Borland 没有在 ALM 作为工程理论方面的任何优势。于是 Borland 开始购并与实现 ALM 体系相关的公司,其中收购过程改进咨询公司 TeraQuest 并组建流程优化实部,以及收购 TogetherSoft 为开发工具来强化模型构建能力,都是相当大的一些举措。通过这些努力,Borland 快速地补全了 ALM 作为一个工程体系在理论方面的不足。而处于风口浪尖的Microsoft 与 Borland 和 IBM 通购并来达到目的的方式并不相同,Microsoft 有足够的力量全方位出击。所以如今的软件界是大公司之间相互制约的结果。大公司们在标准、理论、语言上的争来夺去,未必全然出于“软件实现”的考虑。对统一理论、统一工具、统一过程的企图,其最终目的是在整个软件工程体系中的全面胜出。
软件工程体系的发展是由两方面推动的,一是软件的本质力量,二就是商业因素的推动。商业因素的推动把软件工程从原始的“自生演进”状态,逐渐推进到“它激发展”的状态上了。虽然它激发展可能会影响到软件工程发展的速度, 然而在各个工程层面上的关注点并不会发生变化。从软件工程层状模型中可以看到,在“程序”与“方法”层面,是关注于“(具体的)实现”的;而在“过程”和“工程”层面,更首要考虑的是团队问题。从角色的角度上来说:开发经理思考项目的实施方案和管理具体的开发行为; 而项目经理则保障团队的稳定性和一致性。
过程伴随工程而出现,工程又是如何出现的呢?根本的原因是软件规模的不断增大所导致的。随着软件规模的的增大,仅仅一个人的话花费的时间是巨大的,在现实中不会有软件公司给这样的机会的。项目的“复杂”可能可能需要不同知识领域的角色参与,而“庞大”则要求更多的资源。“团队”作为开发行为的模式,是软件规模和复杂度渐次累积的结果。团队越来越庞大,因为软件规模越来越复杂。没有团队意识的软件公司将在高度过程化,通晓方法理论,拥有大量工具的集团军面前一触即溃。
方法、过程、工具是软件工程的三个要素,但是这三者并不是孤立的三个层面,而是相互作用的,就像太极图一样,阴阳交汇,所以我们不应该将这三个要素割裂开来,而是应该回归到软件工程的本体思考问题。RUP就像一个杂物箱,里面的东西都是可以利用的,但是,关键在于你怎么看待一件东西的价值。
语言作为沟通的工具,在开发过程中是非常重要的,简洁易懂的语言可以为开发解决很多问题。虽然说如果你可以理解的话就算是用甲骨文开发也行,但是毕竟软件开发和维护不是你一个人的事情,所以,大家都可以理解的语言才是真正的主流,但是,毕竟语言只是工具,是连接你与计算机之间的桥梁,所以其并没有好坏之分,有的只是适用范围的区别。矛盾是无处不在的,开发中也是如此。实现目标与保障质量之间的矛盾是不可避免的,时间、资源和功能永远是软件开发过程中的矛盾根源,无论在什么时候,这三者都是很难调和的问题。如果有一个好的项目经理,可能会减少矛盾的发生。其实软件开发并不是一成不变的死板的工程,有的细枝末节的问题是可以忽略的,灵活的忽略一些不重要的问题,不会影响软件的质量,相反,还会加快开发的速度,为自己赢得更好的机会。