第七章 现实中的软件工程 第八章 是思考还是思想
作为大的软件公司,不能只是关注与软件的开发工具,更应该完善公司的理论体系和实作工具,为了与行业的巨头相抗争,就该把握住自身拥有的一切力量,这甚至比创造力量来的更快。想要打压对手发展自己,也需要记住,敌人的敌人就是朋友,借助其他对手和同盟的力量来削弱自己的劣势或者补充实力也不失为一种好的方法。为什么大公司会在标准、理论、语言上踱来踱去呢?其实未必出于“软件实现”的考虑,对同一理论、统一工具、统一过程的企图最终的目的还是在整个软件工程体系中的全面胜出。
软件工程体系的发展是由两方面推动的,一是软件的本质力量,二就是商业因素的推动。商业因素的推动把软件工程从原始的“自生演进”状态,逐渐推进到“它激发展”的状态上了。虽然它激发展可能会影响到软件工程发展的速度, 然而在各个工程层面上的关注点并不会发生变化。从软件工程层状模型中可以看到,在“程序”与“方法”层面,是关注于“(具体的)实现”的;而在“过程”和“工程”层面,更首要考虑的是团队问题。从角色的角度上来说:开发经理思考项目的实施方案和管理具体的开发行为; 而项目经理则保障团队的稳定性和一致性。
虽然说,“软件工程=过程+方法+工具” 。然而工程成功的真正关键,并不在于你把你的团队“组织”得有多好。成本才是关键。不计成本的项目计划不会得到经营者的支持,毫无目的地消耗成本是项目中的慢性毒药,最致命的风险是成本的枯竭。这些都是关键,是经理不得不考虑的问题。 而作为开发人员,你需要做的是:回到工程最核心的环节,即 “软件工程=过程+方法+工具”而方法之中,无论是AOP还是MDA或MDD,这些都是方法论,工具才是语言,千万别弄混。无论是那种方法论,过程模型决定了工程的实施步骤和组织方式,只要深刻地理解了方法论,开发就会变得更加有条理性。
方法、过程、工具是软件工程的三个要素,但是这三者并不是孤立的三个层面,而是相互作用的,就像太极图一样,阴阳交汇,所以我们不应该将这三个要素割裂开来,而是应该回归到软件工程的本体思考问题。RUP就像一个杂物箱,里面的东西都是可以利用的,但是,关键在于你怎么看待一件东西的价值。而语言作为沟通的工具,在开发过程中是非常重要的,简洁易懂的语言可以为开发解决很多问题。虽然说如果你可以理解的话就算是用甲骨文开发也行,但是毕竟软件开发和维护不是你一个人的事情,所以,大家都可以理解的语言才是真正的主流,但是,毕竟语言只是工具,是连接你与计算机之间的桥梁,所以其并没有好坏之分,有的只是适用范围的区别。矛盾是无处不在的,开发中也是如此。实现目标与保障质量之间的矛盾是不可避免的,时间、资源和功能永远是软件开发过程中的矛盾根源,无论在什么时候,这三者都是很难调和的问题。如果有一个好的项目经理,可能会减少矛盾的发生。其实软件开发并不是一成不变的死板的工程,有的细枝末节的问题是可以忽略的,灵活的忽略一些不重要的问题,不会影响软件的质量,相反,还会加快开发的速度,为自己赢得更好的机会。
未蕴而变,自欺也。知律而变,智者之道也