知识卡片
ADL的定义边界与统一化困境
内容
软件架构描述语言(ADL)按ISO/IEC/IEEE 42010标准,是任何用于表示软件架构的表示形式;但该标准同时划出了ADL的边界——高层设计符号语言、MIL(模块互联语言)、编程语言、面向对象建模符号、形式化说明语言都不应被算作ADL。ADL与相邻语言类别的区别是理解这个边界的关键:ADL与需求语言的区别在于,需求语言描述的是”问题空间”(要解决什么问题),ADL扎根于”解空间”(已经决定怎么解决);ADL与建模语言(如UML)的区别在于,建模语言对整体行为的关注大于对部分的关注,而ADL集中在组件本身的表示上;ADL与传统程序设计语言构成元素有相似之处(都有类型、接口等概念),但语义目标完全不同,程序设计语言描述”如何执行”,ADL描述”系统如何组织”。目前主流ADL(Aesop、MetaH、C2 SADL、Rapide、SADL、UniCon、Wright等)各自都描述软件架构,却强调不同侧面:例如Aesop支持架构风格的应用,MetaH面向实时电子控制软件系统的设计指导,Rapide支持架构设计的模拟。这种”百花齐放”造成了实际的负面影响:每种ADL独立存在、语法互不兼容,设计人员很难在众多共同特征相近的ADL中做选择;若要描述一个特定领域的软件架构,往往只能从头开始描述,无法直接复用已有ADL的成果——这正是ADL领域至今没有一种统一语言的根本困境:不是没人尝试统一,而是每种ADL都在某个具体侧面(风格支持/实时性/演化/形式化验证)上做到了局部最优,牺牲了成为通用标准所需要的普适性。
参考来源
- 位置:《软件架构理论与实践》第5章《软件架构描述语言》"5.1 引言"节(源文件:_epub-src/OEBPS/text00040.html)
- 结论依据:原文说明"每一种ADL都以独立的形式存在,描述语法不同且互不兼容,同时又有许多共同的特征,这使得设计人员很难选择一种合适的ADL",并分别说明ADL与需求语言、建模语言、程序设计语言的区别,直接支撑本卡片结论。
- 原始内容:ADL与需求语言的区别在于后者描述的是问题空间,而前者扎根于解空间。ADL与建模语言的区别在于后者对整体行为的关注要大于对部分的关注,而ADL集中在组件的表示上。