软件体系结构描述与建模
SA建模
下图为SA生命周期模型
针对某一具体的软件系统研发项目,需要以某种可视化/形式化的形式将SA的设计结果加以显式的表达出来
常用SA描述方法
1.线框描述法
采用由矩形框和有向线段组合而成的图形表达工具。在这种方法中矩形框代表抽象构件,框内注明的文字为抽象构件的名称,有向线段代表辅助各构件进行通信、控制或关联的连接件
2.形式化描述方法
软件体系结构描述语言(Architectural Description Language (ADL))
使用数学的符号标记把系统分解为构件和连接件,并说明这些元素如何连接在一起构成一个系统
ADL示例(ACME)
1)描述
ACME支持从四个方面对SA进行描述:
• 结构
• 属性
• 设计约束
• 类型与风格
ACME可描述某个具体系统的SA,也可描述某一种抽象的SA风格(管道、C/S、…)
2)结构
ACME定义了八种实体,分别是:
• 系统(system)
• 构件(component)
• 接口(port or interface)
• 连接件(connector)
• 角色(role)
• 构件与连接件之间的关 系(attachments)
• 表述(representations)
• 表述映射(map)
3.UML描述方法
Kruchten 4+1视图模型(重点)
1.逻辑视图
逻辑视图(logical view)主要支持系统的功能需求,即系统提供给最终用户的服务。常通过结构元素、核心抽象、关注点分离和职责的划分来实现系统的逻辑功能
系统被分解成一系列的功能抽象(如层、类、接口),这些抽象主要来自用户需求所在的问题领域,同时也表达了软件领域的相应概念
逻辑视图的UML表示:包图
2.开发视图
开发视图也称实现视图(implementation view)、模块视图(module view),主要侧重于软件模块的组织和管理。例如:一个构件的实现依赖于哪些其他构件、哪些源文件实现了哪些类,等等
在UML中,开发视图主要使用构件图、包图进行描述,并辅之以交互图、状态图、组合结构图
输入与输出的关系
3.进程视图
进程视图(process view)侧重于系统的运行特性,主要关注一些非功能性的需求,例如系统的性能和可用性
进程视图通常使用以下UML图来描述一个系统的运行时行为:
Activity diagrams (活动图)
Interaction diagrams (状态图)
Sequence diagrams (序列图)
Communication/Corporation diagrams (通讯/协作图)
Interaction overview diagrams (交互纵览图)
Timing diagrams (计时图)
主要是活动图和序列图
4.物理视图
物理视图(physical view)也称部署视图(Deployment view),主要考虑如何把软件映射到硬件上
通常使用部署图 具体样式可以参考软件体系风格的层次风格的物理分层
5.用例视图
用例视图(use-case view)用来捕获最终用户所需求的功能性,即“系统应该做什么”
用例视图主要包括用例图,然后使用若干个交互图来展示每个用例内部的细节
参与者、用例、参与者之间的关系、用例之间的关系、参与者与用例之间的关系