6,从编程到工程
语言只是工具。
注重方法:有人在寺院扫了一辈子的落叶而得道,也有人因为一句话而得道。 GoF 因为无数次的代码回顾而得道。
过程中的问题,就是角色、沟通和环节的问题。角色的确定,以及角色间的沟通问题,在项目过程中同样重要。
最狭义的工程,是描述“做什么”和“做到什么”。没有团队意识的软件公司将在高度过程化、通晓方法理论拥有大量工具的集团军面前必将一触即溃。
实现,是软件开发的本质需求。方法,是对既有行为的归纳总结。
7,现实中的软件工程
把握力量总之比创造力量来得经济。竞争与合作同在。
理想模式中在“程序”与“方法”层面,是关注于“( 具体的) 实现”的;而在“过程”和“工程”层面,更首要考虑的是团队问题。从角色的角度上来说:开发经理思考项目的实施方案和管理具体的开发行为;而项目经理则保障团队的稳定性和一致性。
AOP的三个概念:指示(advice)/ 拦截器(interceptor) :考察这些对象以“达到什么样的目的”( 即需求) ; 引导(introduction):在目标上实现这些需求时,目标所需要表现出来的公共特性。引导特性可能需要配合编译器来实现。 元数据(metadata) :如果需要,为既有对象实体再补充一些参考数据。
审视。如果没有同样成熟的软件过程理论支持,那么它在工程中的实用价值也就有限。
8,是思考还是思想
思考问题的方法可以是由点及面的,也可以是统揽全局的。
工具、方法与过程也被称为软件工程的三个要素。它们实际上是相互作用的。
出于沟通的必要,沟通语言的象征意义在一个图中应当被表述得足够准确和详细,乃至于针对于不同的阅读者来说都能提供了充足的信息。
项目经理这个中间角色就有了一种使命:协调经营者与开发者之间的沟通。
角色的关注层面完全不同。
平衡时间、资源和功能三者的关系”。这其实是一个实施过程中的细节。或者说,它是一个具体的方法,而不是目的。
“知律”即“规律”即“知道原理”。不知道这些技巧、技术和方法的原理,因而不知道变通,也不知道回避错误。