第4章 软件体系结构描述
从体系结构的研究和应用的现状来看,当前对软件体系结构的描述,在很大程度上还停留在非形式化的基础上,很大程度上依赖于体系结构设计师个人的经验和技巧。因此,形式化的,规范化的体系结构描述对于体系结构的设计和理解非常重要。
4.1 软件体系结构描述方法
◇ 描述方法的种类
从本质上来说,软件体系结构的描述方法可以分为文字表达工具,数学表达工具和图形表达工具。其中,在产业界用的最多的是图形表达方式,学术界更偏向于使用数学表达工具。
Ø图形表达工具
一种简洁易懂且使用最广泛的方法,采用由矩形框和有向线段组合而成的图形表达工具。其中,矩形框代表构件,框内标注的文字为抽象构件的名称,有向线段代表辅助各构件进行通信、控制或关联的连接件
Ø模块内连接语言
采用将一种或几种传统程序设计语言的模块连接起来的模块内连接语言(MIL)。由于程序设计语言和模块内连接语言具有严格的语义基础,因此它们能支持对较大的软件单元进行描述,诸如定义/使用和扇入/扇出等操作。例如,Ada语言采用use实现包的重用,Pascal语言采用过程(函数)模块的交互等。
MIL方式对模块化的程序设计和分段编译等程序设计与开发技术确实发挥了很大的作用。但是由于这些语言处理和描述的软件设计开发层次过于依赖程序设计语言,因此限制了它们处理和描述比程序设计语言元素更为抽象的高层次软件体系结构元素的能力。
Ø基于软构件的系统描述语言
基于软构件的系统描述语言将软件系统描述成一种是由许多以特定形式相互作用的特殊软件实体构造组成的组织或系统。
这种表达和描述方式虽然也是较好的一种以构件为单位的软件系统描述方法,但是他们所面向和针对的系统元素仍然是一些层次较低的以程序设计为基础的通信协作软件实体单元,而且这些语言所描述和表达的系统一般而言都是面向特定应用的特殊系统,这些特性使得基于软构件的系统描述仍然不是十分适合软件体系结构的描述和表达。
Ø软件体系结构描述语言
软件体系结构的第四种描述和表达方法是参照传统程序设计语言的设计和开发经验,重新设计、开发和使用针对软件体系结构特点的专门的软件体系结构描述语言。
4.2 软件体系结构描述框架标准
◇ IEEE P1471
◎ IEEE P1471适用于软件密集的系统,其目标在于:便于体系结构的表达与交流,并通过体系结构要素及其实践标准化,奠定质量与成本的基础。
◇ Rational
◎ Rational起草了可重用的软件资产规格说明,专门讨论了体系结构描述的规格说明,提出了一套易于重用的体系结构描述规范。该建议草案已经提交OMG。
◎ 基于RUP(Rational United Process)、采用UML模型描述软件的体系结构,认为体系结构描述的关键是定义视点、视图以及建模元素之间的映射关系。
◎ 与IEEE P1471相比,该建议标准的体系结构描述方案涉及面比较窄,所注重的层次比较低,因而更具体。由于将体系结构的描述限于UML和RUP,具有一定的局限性,但该建议标准结合了业界已经广泛采用的建模语言和开发过程,因而易于推广,可以有效实现在跨组织之间重用体系结构描述结果。
4.3 体系结构描述语言
ADL是在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。基于底层语义的工具为体系结构的表示、分析、演化、细化、设计过程等提供支持。其三个基本元素是:
Ø构件:计算或数据存储单元;
Ø连接件:用于构件之间交互建模的体系结构构造块及其支配这些交互的规则。
Ø体系结构配置:描述体系结构的构件与连接件的连接图。
主要的体系结构描述语言有Aesop、MetaH、C2、Rapide、SADL、Unicon和Wright等,尽管它们都描述软件体系结构,却有不同的特点。
这些ADL强调了体系结构不同的侧面,对体系结构的研究和应用起到了重要的作用,但也有负面的影响。每一种ADL都以独立的形式存在,描述语法不同且互不兼容,同时又有许多共同的特征,这使设计人员很难选择一种合适的ADL,若设计特定领域的软件体系结构又需要从头开始描述。
◇ ADL与其他语言的比较
典型的ADL在充分继承和吸收传统程序设计语言的精确性和严格性特点的同时,还具有一下能力和特性:
◎ 构造能力:ADL能够使用较小的独立体系结构元素来建造大型软件系统;
◎ 抽象能力:ADL使得软件体系结构中的构件和连接件描述可以只关注它们的抽象特性,而不管其具体的实现细节;
◎ 重用能力:ADL使得组成软件系统的构件、连接件甚至是软件体系结构都成为软件系统开发和设计的可重用部件;
◎ 组合能力:ADL使得其描述的每一系统元素都有其自己的局部结构,这种描述局部结构的特点使得ADL支持软件系统的动态变化组合;
◎ 异构能力:ADL允许多个不同的体系结构描述关联存在;
◎ 分析和推理能力:ADL允许对其描述的体系结构进行多种不同的性能和功能上的多种推理分析。
◇ 典型元素含义比较
◇ 典型元素含义比较
◇ 常见的软件体系结构元素