软件架构基本概念
定义
- 软件架构是对软件系统的结构、行为和属性的高级抽象
- 软件架构风格是特定应用领域的惯用模式,架构定义了一个词汇表和一组约束。
- 架构设计就是需求分配,即将满足需求的职责分配到组件上。
软件架构的作用
- 是项目干系人的交流手段
- 是可传递和可复用的原型
- 有助于循序渐进的原型设计
架构的4+1视图与uml4+1视图的对比
主要区别在于它们的应用场景和目的不同。架构的4+1视图时为了从不同利益相关者的角度来描述系统, uml4+1视图则是通过uml工具和图表来实现这些视图。
架构的4+1视图
- 场景:用于描述系统的用例和场景,以验证架构设计。
- 逻辑视图:描述系统的功能需求(最终用户)
- 物理视图:描述硬件和软件模块的部署情况,解决系统的拓扑结构、系统安装、通信等问题(系统工程人员、部署人员)
- 开发视图:用于描述软件模块的组织和管理,侧重于静态(开发人员)
- 进程视图:![]https://i-blog.csdnimg.cn/direct/f503ab4dec1244f29881adec0eaab953.png)
关注于非功能需求(如系统并发性、分布性、吞吐量等动态特征)
UML 4+1 视图
1.逻辑视图:通常使用类图和对象图
2.进程视图:使用活动图、顺序图和状态图
3.开发视图:关注程序的组织和构件,用包图和组件图
4. 物理视图:部署图来表示系统的物理架构和部署情况(部署图、网络拓扑图)
5. 用例视图:系需求分析模型
软件架构描述语言ADL
ADL是一种形式化语言,有三个基本元素,构件、连接件、架构配置
- 构件:执行特定功能的独立单元,每个构件都封装一组功能,对外提供接口。
- 连接件:定义构件之间如何相互通信。
- 配置架构:描述了构件与连接件的组织方式。
基于架构的软件开发方法(ABSD)
基本概念
-
ABSD是架构驱动,强调由业务、质量和功能需求的组合驱动架构设计。
-
核心思想:将软件开发过程划分为多个层次,从高层抽象到底层实现。
-
三个基础:功能的分解(内聚和耦合技术)、通过选中架构风格来实现质量和业务需求、软件模板的重用。
-
从不同的视角来检查,所有有不同的视图
-
用例来捕获功能需求,特定场景(刺激、环境、响应)来捕获质量属性需求。
ABSD的开发过程
ABSD开发过程主要包括以下几个阶段:架构需求、设计、文档化、复审、实现和演化。
1、架构需求阶段:
主要目的是明确系统的需求,包括功能需求和质量需求。
① 获取需求:架构需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。(如果以前有类似的系统架构的需求,我们可以从需求库中取出,加以利用和修改,以节省获取需求的时间,减少重复劳动,提高开发效率。)
② 标识构件:生成类图、对类进行分组、把类打包成构件。
③ 架构需求评审:由分析人员、客户、设计人员、测试人员组成小组,检查需求是否真实,类的分组是否合理,构件的合并是否合理。
2、架构设计阶段:
提出架构模型、映射架构、分析架构的相互作用
① 提出架构模型:选择一个合适的架构风格,该模型为将来的实现和演化建立了目标。
② 映射架构:把已标识的构建映射到架构中,将产生一个中间结构,它只包含合适架构模型的构件。
③ 分析构件的相互作用
④ 产生架构:当决定了关键构件的相互作用后,就可以在中间结构的基础上进行精化,得到软件架构。
⑤ 设计评审:邀请独立于系统开发的外部人员对架构进行评审。
3、架构文档化
架构文档化过程的主要输出结果是架构规格说明书、测试架构需求的质量设计说明。
文档的完整性和质量是软件架构成功的关键因素。
关于文档的三大注意事项:
① 文档要从使用者的角度进行编写。
② 必须分发给所有与系统有关的开发人员。
③ 必须保证开发者手上的文档是最新的。
4、架构复审
架构复审(架构评估)的目的是标识潜在的风险,及早发现架构设计中的缺陷和错误。
5、架构实现
① 分析与设计:在架构说明书中,已经定义了系统中构件与构件之间的关系,构件接口约束对外唯一代表了构件,所以可以从构件库中直接查找符合接口约束的构件。
② 构件实现:必要时开发新的满足要求的构件。
③ 构件组装
④ 系统测试:包括单个构件的功能性测试和被组装应用的整理功能和性能测试。
6、架构演化
① 需求变化归类:对需求变化进行归类,使变化的需求与已有构架对应。对找不到对应构件的需求变动,在后续工作中将创建新的构件来对应。
② 制定架构演化计划
③ 构件变动:修改、增加或者删除构件,要对修改和增加的构件进行功能性测试。
④ 更新构件的相互作用
⑤ 构件组装与测试
⑥ 技术评审