面向对象的编程思想已经深入到了当今软件开发的方方面面,而我们一直鼓吹的OO的最终目标是什么?或许说最终目标有些过头,那OO带来的最大好处是什么?我们张口而出:软件复用!
真的是这样吗?
“Grady Booch:我一般不相信广告宣传。或许我是那种愤世嫉俗的人--世上不存在万能药!不带虚假的。正如前面提到过的,软件开发过去是、现在是、将来也仍然是很艰难的,并且我没有预见到任何事情能改变这一点。就对象而言,其广告宣传声称它会增加重用。是的,它确实如此,不过不是是以我们不曾经期望的方式,因为OO编程语言导致了设计模式的产生。结果,我们在与编程语言不相关的层面上看到了重用,也就是在设计本身这一层面。我们实现了对重用的承诺吗?是的,不过不是我们最初期望的那种方式--对许多技术来说,这都是不变的真理。”
“Grady Booch:我对OO编程的目标从来就不是复用。相反,对我来说,对象提供了一种处理复杂性的方式。这个问题可以追溯到亚里士多德:您把这个世界视为过程还是对象?在OO兴起运动之前,编程以过程为中心--例如结构化设计方法。然而,系统已经到达了超越其处理能力的复杂性极点。有了对象,我们能够通过提升抽象级别来构建更大的、更复杂的系统--我认为,这才是面向对象编程运动的真正胜利。”
“Grady Booch:我看到了诸如J2EE(Java 2平台)以及Microsoft的.NET等平台的成熟。虽然两个平台都会继续主宰中间件市场,但是它们只能逐渐地成熟。例如,人们将对其中任一个平台付出如此大的投资,以致他们无法承担这些平台发生根本变化。因此,我们将会看到一定程度的稳定--这对整个行业来讲是有利的,因为技术剧变会给公司带来极大压力和矛盾。
此外,如果让我预测未来,我预见面向方面编程(aspect oriented programming)的崛起。今天的大型软件系统和高性价比的系统包括数万个移动部分,因此我们倾向于从来不关闭它们。所以,面对随之而来的挑战就是如何在不关闭系统的前提下对系统进行改进变这样的系统而又不关闭它们,使之通过包容众多的利益相关人的解决方案来提供附加价值。同时还要利用众多风险投资者来增加价值,用以作为解决方案的一部分。利益相关人风险投资者可以是包括图形艺术家、网络人员、安全人员和业务专家。在这样的情况下,您不能把这个问题看成是传统的编程问题。事实上,您不再构建一个程序,而是在不断对 -- 程序是某个大型系统的可变部件,那些部件彼此相互关联的部件进行改变连接。在这种环境中,通过使用方面(aspect),您将基于横切(cross-cut)那些部分的线程来构建系统,让领域专家从那些特定视角"表达一个方面(aspect)"。我认为在接下来的两年左右,面向方面编程(aspect-oriented programming,AOP)将在测试、部署和业务规则方面取得成果。”