从最早仅仅关注于软件开发工具到现在,软件行业中的巨头们已经在层出不穷的思想中涅槃了一回又一回。大公司们在标准、理论、语言上的争来夺去,未必全然出于“软件实现”的考虑。对统一理论、统一工具、统一过程的企图,其最终目的是在整个软件工程体系中的全面胜出。算盘上的绝大多数人,只是用于计算胜负的一枚算子。
软件工程的发展除了软件本身以外,还需要商业因素。所以大公司们的争夺战的最终结果,已经开始把软件工程,从原始的“自生演进”状态,逐渐推进到“它激发展”的状态上了。在这个发展过程中,形成一个软件工程层状模型叫EHM。而这个模型只是一个基本模式,也就是说它是一个理想模型。
一个软基工程的背后,除了以技术人员以外还有项目经理,他需要做的就是管理整个团队,掌握团队的进程和效率。如果用于维护团队运作的“资本”在流失。如果资本没有了,就没了运作,团队的存在就没有了必要性和可能性。那么这项目就死亡了,那么就相当于什么都白做了。
AOP不是语言。AOP首先是方法论,这就象OOP是“面向对象的编程方法”是方法论一样。而Delphi/C++才是语言,是对这个方法论的一个实现工具。OOP所基于的数据结构是对象(Object),而AOP所基于的数据结构就是方面(Aspect),Delphi将Object表现为一组有(继承)关系的“记录(Record)”②。相对应的,Java将用类(Class)来实现Aspect。而无论用什么语言来编程,它都会有一个不变的定律那就是:编程=算法+结构+方法。
抛开实现的技术细节不论,在工程中,“以什么驱动开发”其实是一个过程问题。而这个过程的选择(或制定)取决于你的工程需要,以及它在相关应用领域的适用性、过程工具的充备性和这个过程理论的完善程度。所以在这过程中还是要靠自己,哪些公司还是不可靠。
工具、方法与过程被称为软件工程的三个要素,它们之间需要相互作用才能完成一个工程,但是不管这三要素你运用得多么完美,都会只有一个结果那就是将整个工程实现。
在项目中,项目经理这个中间角色就有了一种使命:协调经营者与开发者之间的沟通。因为很少的经营者会看懂编程语言,他们需要一个翻译来讲编程语言转换成他们所熟知的语言。有的时候当一个团队终于完成他们的项目要给客户的时候才发现自己所完成的与客户所要求的不一样,这只能归咎于我们把“目标”定错了,就算完成的再好又有什么用呢。
这只能说明我们再定制目标时,忽略了细节。“细节决定成败”但请注意一个前提:这是技术或方法的细部。所以在做程序是不仅要关注细节还要避免不必要的枝节。最后记住要掌握技巧、技术和方法的原理,还要知道变通,也知道回避错误。