一、软件体系结构描述方法
描述方法的种类:
非形式化→形式化→ 标准化
- 图形表达工具
采用由矩形框和有向线段组合而成的图形表达工具。
矩形表示抽象构件
框内文字为抽象构件的名称
有向线段代表辅助各构件进行通信、控制或关联的连接件。
简洁易懂容易使用使用广泛不规范不精确
- 模块内连接语言
- 采用将一种或几种传统程序设计语言的模块连接起来的模块内连接语言。由于程序设计语言和模块内连接语言具有严格的语义基础,因此它们能支持对较大的软件单元进行描述,诸如定义/使用和扇入/扇出等操作。例如,Ada语言采用use实现包的重用,Pasca I语言采用过程(函数)模块的交互等。
- MIL方式对模块化的程序设计和分段编译等程序设计与开发技术确实发挥了很大的作用。但是由于这些语言处理和描述的软件设计开发层次过于依赖程序设计语言,因此限制了它们处理和描述比程序设计语言元素更为抽象的高层次软件体系结构元素的能力。
- 基于软构件的系统描述语言
- 基于软构件的系统描述语言将软件系统描述成一种是由许多以特定形式相互作用的特殊软件实体构造组成的组织或系统。
- 例如,一种多变配置语言(PCL) 就可以用来在一个较高的抽象层次上对系统的体系结构建模,Darwin最 初用作设计和构造复杂分布式系统的配置说明语言,因具有动态特性,也可用来描述动态体系结构。
- 这种表达和描述方式虽然也是较好的一种以构件为单位的软件系统描述方法,但是他们所面向和针对的系统元素仍然是一些 层次较低的以程序设计为基础的通信协作软件实体单元,而且这些语言所描述和表达的系统一般而言都是面向特定应用的特殊系统,这些特性使得基于软构件的系统描述仍然不是十分适合软件体系结构的描述和表达。
- 软件体系结构描述语言-ADL
- 软件体系结构的第四种描述和表达方法是参照传统程序设计语言的设计和开发经验,重新设计、开发和使用针对软件体系结构特点的专的软件体系结构描述语言。
- 由于ADL是在吸收了传统程序设计中的语义严格精确的特点基础上,针对软件体系结构的整体性和抽象性特点,定义和确定适合于软件体系结构表达与描述的有关抽象元素,因此,ADL是当前软件开发和设计方法学中一种发展很快的软件体系结构描述方法,目前,已经有几种常见的ADL。
二、软件体系结构描述框架标准
lEEE P1471
- lEEE P1471于2000年9月21日通过IEEE- SA标准委员会评审。
- 1EEE P1471适用于软件密集的系统,其目标在于:便于体系结构的表达与交流,并通过体系结构要素及其实践标准化,奠定质量与成本的基础。
- IEEEP1471详细介绍了一套体系结构描述的概念框架,并给出建立框架的思路。但如何描述以及具体的描述技术等方面缺乏更进一步的指导。
IEEE P1471软件体系结构描述的标准
- 体系结构设计的标识、版本、总体信息。
- 系统参与者的标识、以及在体系结构中他们所关注方面的标识。
- 组织体系结构表示所选择的视点的规格说明,以及这种选择的基本原理。
- 一个或多个体系结构视图。
- 体系结构描述所需的成分之间不-致的记录。
- 体系结构选择的基本原理。
Rational
- Rat ional起草了可重用的软件资产规格说明,专门讨论了体系结构描述的规格说明,提出了一套易于重用的体系结构描述规范。该建议草案已经提交0MG。
- 基于RUP (Rational United Process, 统一软件过程) 、采用UML模型描述软件的体系结构,认为体系结构描述的关键是定义视点、视图以及建模元素之间的映射关系。
- 与IEEE P1471相比,该建议标准的体系结构描述方案涉及面比较窄,所注重的层次比较低,因而更具体。由于将体系结构的描述限于UML和RUP,具有一定的局限性,但该建议标准结合了业界已经广泛采用的建模语言和开发过程,因而易于推广,可以有效实现在跨组织之间重用体系结构描述结果。
三、软件体系结构描述语言
ADL是在底层语义模型的支持下,为软件系统的概念体系结构建模提供了具体语法和概念框架。基于底层语义的工具为体系结构的表示、分析、演化、细化、设计过程等提供支持。
其三个基本元素是:
- 构件:计算或数据存储单元
- 连接件:用于构件之间交互建模的体系结构构造块及其支配这些交互的规则
- 体系结构配置:描述体系结构的构件与连接件的连接图
主要的体系结构描述语言有Aesop、MetaH、C2、Rapide、SADL、Unicon和Wr ight等,尽管它们都描述软件体系结构,却有不同的特点。
- Aesop支持体系结构风格的应用。
- MetaH为设计者提供了关于实时电子控制软件系统的设计指导。
- C2支持基于消息传递风格的用户界面系统的描述。
- Rapide支持体系结构设计的模拟并提供了分析模拟结果的工具。
- SADL提供了关于体系结构加细的形式化基础。
- UniCon支持异构的构件和连接类型并提供了关于体系结构的高层编译器。
- Wright支持体系结构构件之间交互的说明和分析。
ADL与其他语言的比较
- 构造能力:ADL能够使用较小的独立体系结构元素来建造大型软件系统;
- 抽象能力: ADL使得软件体系结构中的构件和连接件描述可以只关注它们的抽象特性,而不管其具体的实现细节;
- 重用能力: ADL使得组成软件系统的构件、连接件甚至是软件体系结构都成为软件系统开发和设计的可重用部件;
- 组合能力: ADL使得其描述的每系统元素都有其自己的局部结构,这种描述局部结构的特点使得ADL支持软件系统的动态变化组合;
- 异构能力: ADL 允许多个不同的体系结构描述关联存在;
- 分析和推理能力: ADL 允许对其描述的体系结构进行多种不同的性能和功能上的多种推理分析。
根据这些特点,将下面这样的语言排除在ADL之外:
- 高层设计符号语言
- MIL
- 编程语言
- 面向对象的建模符号
- 形式化说明语言
ADL与需求语言:需求语言描述问题空间,ADL 根植于解空间
ADL与建模语言:建模语言对整体行为的关注大于对部分的关注,ADL集中在构件的表示上
ADL与传统的程序设计语言:求同存异
典型元素含义比较
常见的软件体系结构元素
ADL构成要素: