知识卡片
十二种典型ADL的设计侧重对比
内容
书中详细介绍的12种ADL,各自的设计侧重印证了[[ADL的定义边界与统一化困境]]中”每种ADL只在某个具体侧面做到局部最优”的判断。Aesop(CMU)目的是为特定领域快速搭建架构设计环境,架构风格信息内嵌在C++类实现中。C2 SADL(南加州大学)专为C2风格的用户界面密集系统服务,组件间只能通过连接件相连、具有”受限的可见性”,异步通知/请求消息是唯一通信方式,但没有严密形式化基础,无法对动态行为做严格分析推演。UniCon(CMU)是通用型ADL,组件和连接件类型以枚举方式预定义,重点在于统一访问大量组件连接件类型、支持进程调度分析。Wright(CMU)是全书唯一”完全形式化”的ADL:把连接件定义为明确的语义实体,用协议集合描述交互参与角色及相互作用,以CSP为语义基础,因此能做死锁分析、模型一致性完整性检查——这是Wright区别于其他ADL的核心差异化能力:别的ADL大多只能描述结构,Wright能验证行为是否会死锁。XYZ/ADL(中科院软件所)是可视化ADL,结合XYZ/E文本描述与时序逻辑语义,能同时刻画静态和动态语义。ACME(CMU)严格来说不是真正意义上的ADL,而是一种”架构交换语言”——目的是让不同ADL之间的规格说明能够相互转换,为工具间的信息共享提供公共集成架构,这个定位本身就说明ADL领域的碎片化问题已经严重到需要专门发明一种”翻译层”语言。XBA(复旦大学)用XML Schema定义架构元素,靠XML的可扩展性去描述和统一各种现有ADL。ABC/ADL(北京大学)以面向对象方法为主导,突出支持架构描述向详细设计和实现的映射。MetaH(Honeywell)是特定领域ADL,专注实时容错安全的多处理器嵌入式系统,在航空领域已成为架构规格说明的标准语言。Rapide(Stanford)用事件的偏序集合刻画系统行为,组件计算由接收到的事件触发、进一步产生事件传给其他组件,模拟执行结果是一组满足因果或时序关系的事件集合,但不支持单独描述和分析连接件。Darwin(Imperial College)专注基于消息传递的分布式系统,没有对连接件提供显式描述,以π-calculus为语义基础,是Philips公司Koala语言的基础。xADL 2.0(加州大学欧文分校)具有高可扩展性,组件/连接件的接口数量都不受限制。这12种ADL没有一种能同时兼顾”通用性、形式化验证能力、易用性、领域专属深度”这四个维度,选择哪种ADL本质上是在这四个维度里做取舍。