软件架构是一种思想,一个系统蓝图,对软件结构组成的规划和职责设定。而软件框架是一个实现,一个半成品,是针对一个特定问题的解决方案和辅助工具。
这一篇讲软件架构和软件框架在UML设计过程中所起的作用。本系列文章不是专门讨论软件架构和软件框架的,所以不会深入讲怎么做软件架构和软件框架。另一个原因是笔者尚无这个自信能够在这里班门弄斧讲软件架构。之所以要讲,是因为在设计过程中,设计类必然会受到软件架构和框架的约束。从分析类到设计类,软件架构和框架是不得不考虑的一个重要因素。
软件架构和软件框架是一回事儿吗?相信有相当一部分人搞不清楚这个问题,也会有相当一部分人认为是一回事儿,只是不同的叫法而已。架构的英文原文是Architecture,而框架呢,则是Framwork。显然这是两个完全不同的词儿。从技术上讲,IT有一个职业是架构师,架构师代表了软件技术人员最高的职业顶峰,却从没有听说过有软件框架师的。所以肯定的说,软件架构和软件框架是两回事儿。
那么什么是软件架构,什么又是软件框架呢?软件架构是一种思想,一个系统蓝图,对软件结构组成的规划和职责设定。而软件框架是一个实现,一个半成品,是针对一个特定问题的解决方案和辅助工具。因此,架构是一个逻辑的构成,而框架是一个可用的半成品。比如说,J2EE规范描述了一系列逻辑部件,描述了这些部件的职责和它们的规范,约定了这些部件之间交互的接口和协议、标准,规划出一个如何利用这些逻辑部件来实现一个应用系统的蓝图。J2EE是一个软件架构。而根据这一设想,各产商开发出了各自的产品,包括开发工具和应用容器,开发者利用这些工具和容器就能方便的开发出符合J2EE规范的应用程序。这些工具和容器就是软件框架。再比如,MVC是一个设