知识卡片

架构设计与详细设计的"合作契约"分工

普通读书笔记卡

内容

架构设计关注的是如何构建软件的最重要设计决策,这些决策往往围绕”系统分成哪些部分”以及”各部分之间如何交互”展开;详细设计则是针对每个部分的内部进行设计,是对架构设计的精化。架构设计解决的是全局性的、涉及不同”局部”之间交互的设计问题,一般由架构师负责;不同”局部”的设计则由后续的详细设计人员负责——在架构提供的”合作契约”指导下,众多局部问题可以按问题广度分而治之,对局部的详细设计完全可以并行进行。这个”合作契约”的说法揭示了架构真正的组织学价值:它不只是一份技术蓝图,更是团队协作时彼此都必须遵守的约定,一旦架构确定了模块间如何交互,各个开发小组就能在不互相干扰的前提下独立展开各自的详细设计。为了填补高层架构模型和底层实现之间的鸿沟,架构映射到详细设计通常有三类方法:软件架构模型中引入实现阶段的概念(如在架构描述语言中加入程序设计语言元素);通过模型转换技术把高层架构模型逐步精化为可支持实现的模型(如基于MDA区分计算独立模型CIM、平台独立模型PIM、平台特定模型PSM三层,通过PIM到PSM再到代码的两步转换逐步引入平台相关细节);封装底层实现细节使之成为较大粒度组件、在架构指导下通过组件组装方式实现系统(这往往需要底层中间件平台支持)。此外还存在从架构描述直接映射到目标语言的机制,例如C2架构描述语言允许把组件、连接件分别映射到面向对象程序中的类和类间关联,ACME向CORBA IDL的映射规则把系统映射成模块、组件端口映射成接口——这类直接映射方法门槛更低,但生成的往往只是简单的代码框架,无法替代对实现细节的进一步设计。

参考来源

- 位置:《软件架构理论与实践》第8章《软件架构设计和实现》"8.2 从软件架构到详细设计"及"8.2.2 从软件架构映射到详细设计"节(源文件:_epub-src/OEBPS/text00065.html) - 结论依据:原文说明"在软件架构所提供的'合作契约'的指导下,众多局部问题被很好地按问题广度分而治之,对局部的详细设计完全可以并行进行",并列出软件架构模型向详细设计过渡的三类典型方法及MDA的CIM/PIM/PSM三层区分,直接支撑本卡片结论。 - 原始内容:软件架构设计应当解决的是全局性的、涉及不同"局部"之间交互的设计问题,一般由软件架构师负责,而不同"局部"的设计由后续的详细设计人员负责。因此,在软件架构所提供的"合作契约"的指导下,众多局部问题被很好地按问题广度分而治之。