软件架构设计的三个维度2011-04-01 软件世界 陈亮亮架构设计是一个非常大的话题,不管写几篇文章,接触到的始终只是冰山一角,更多 的是实践中去体会。这篇文章主要介绍面向对象OO、面向方面AOP和面向服务SOA这三个要 素在架构设计中的位置与作用。架构设计有三个维度,或者说是我们在考虑架构时需要思考三个方向。这三个维度分别为面向对象、面向方面、面向服务。这三个维度可以看作是正交的,但不同维度会互相印证,互相支撑,整个架构的示意 图如图所示。

图:架构三维度结构图面向对象面向对象技术最初是从面向对象的程序设计开始的,它的出现以上世纪60年代Simula 语言为标志,并在Smalltalk语言的完善和标准化过程中得到更多的扩展和对以前思想的 重新注解。上世纪80年代中后期,面向对象程序设计逐渐成熟,被计算机界理解和接受,人们又 开始进一步考虑面向对象的开发问题。直到现在,面向对象已经成为一种非常流行的编程 方式,以及软件设计的架构。面向对象提出有三个主要目标:重用性、灵活性和扩展性,强调对象的“抽象 ”、“封装”、“继承”和“多态”。它能让人 们以更加接近于现实世界的方式来思考程序,这点可以说是面向对象最大的进步。在OO思想的运用上,业界出现了很多好的经验与技巧,从而涌现出大量的设计模式, 可以说面向对象是系统分析与设计时的一个很重要的方面。面向方面面向方面最初来源于hook技术,本质上就是满足扩展的需求,可以在程序中自由扩展 功能。面向方面不仅仅是一门编程技术,同样也是一种架构设计的思路。如果说OO是纵向地 分析、切割整个系统,那么可以认为AOP是横向地对系统作切片。简单地理解,OO与AOP分别从两个不同的角度给我们提供了分析系统的思路。面向方面 可以弥补面向对象的缺陷,两种方式有机的结合在一起,可以更加有效地对系统进行分析 。我们认为OO是接近于人类认识自然的思维方式,但对于东方而言却并不一定是这样的 。当西方人看到一个复杂系统的时候,只会有一种思路,就是“分解”,将 系统分解成一块一块,然后每个部分进行研究。当东方人看到一个复杂系统的时候,更多地会关注系统中存在的关系,将系统作为一 个有机的整体进行研究,这也是东方和西方在事物看法上存在的差异。这两种思维方式都没有问题,如果结合起来分析问题,解决问题会更好。面向对象与 面向方面也同样如此,都能对应到人类认识自然的思维方式上。