为什么说软件构架非常重要?
主要有一下3个基本原因:(1)涉众之间的交流。软件构架是一种常见的对系统的抽象,绝大多数(如果不是全部的话)系统的涉众都以此作为彼此理解、协商、达成共识或相互沟通的基础。(2)早期设计决策。软件构架是所开发系统的最早设计决策的体现,而这些早期决策对系统的后续开发、部署和维护具有重要影响。这也是能够对所开发系统进行分析的最早时间点。(3)可传递的系统抽象。软件构架是关于系统构造及系统各元素工作机制的相对较小,却又能突出反映问题的模型。这种模型可以在多个系统之间传递,特别是可以应用到具有相似质量属性和功能需求的系统中,并能够促进大规模的重用。
架构结构和视图
大体上可将架构结构分为3组,这取决于它们所展示的元素的主要特性。
1、模块结构。此处的元素是模块,它们是实现单元。模块表示一种考虑系统的基于代码的方法。模块被分配功能责任区域。这不怎么强调所开发出来的软件如何在运行时表现自己。模块结构能够使我们回答诸如此类的问题:分配给每个模块的主要功能责任是什么?允许模块使用的其他软件元素是什么?它实际使用的其他软件是什么?什么模块通过泛化或特化(也就是继承)关系与其他模块相关?
2、组件-连接器结构。此处的元素为运行时组件(它们是计算的主要单元)和连接器(它们是组件间通信的工具)。组件-连接器结构帮助回答了诸如此类的问题:什么事主要的执行组件,他们如何交互?什么事主要的共享数据存储?复制系统的哪些部分?数据在系统中经过了哪些地方?系统的哪些部分可以并行运行?在系统执行时,其结构可能会发生怎样的变化?
3、分配结构。分配结构展示了软件元素和创建并执行软件的一个或多个外部环境中的元素之间的关系。它们回答了诸如此类的问题:每个软件元素在什么处理器上执行?在开发、测试和系统构建期间,每个元素都存储在什么文件中?分配给开发小组的软件元素是什么?
这3中结构与构架设计所涉及的3大类决策一致:
1、系统如何被组织为一个代码单元集合(模块)的?
2、系统如何被组织为一个具有运行时行为(组件)和交互(连接器)的元素集合的?
3、系统如何与其环境中的非软件结构相关(也就是CPU、文件系统、网络和开发小组等)?