软件体系结构设计与评估

文章详细阐述了软件体系结构在开发过程中的关键作用,包括架构需求分析、设计、文档编制、分析、实现和维护。提到了属性驱动的设计方法(ADD),强调了质量属性如可用性、互操作性和安全性在设计策略中的重要性。此外,还讨论了基于模式的架构设计和模块化设计的原则,如类设计、包聚合和包耦合。
摘要由CSDN通过智能技术生成


软件体系结构是系统集成的蓝本

架构为中心的软件开发过程

软件体系结构生命周期模型

在这里插入图片描述

软件体系结构开发核心活动

架构需求

软件体系结构需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望,受技术环境和架构师经验的影响
在这里插入图片描述

架构设计

首先制定许多设计策略,再根据这些决策考虑不同的体系结构和架构视图推理,以确定最佳软件体系结构
在这里插入图片描述

架构编档

软件架构文档通常按照多视图方式加以组织,其核心是一系列满足不同涉众要求的视图
在这里插入图片描述

架构分析

该阶段需要外来的审查人员参与主要架构的评估
评估的主要目的是通过分析来识别架构中潜在的风险以及验证已完成的质量属性需求
在这里插入图片描述

架构实现

当架构转换为代码时,必须考虑所有常规的软件工程和项目管理中的注意事项,如详细设计、实现、测试、配置管理等

架构维护

架构维护是架构生命周期中的重要一步,架构必须像其他被维护的系统制品一样编档和维护

架构中心方法与常见软件过程模型融合

画竖线来确定每个阶段有几个工作流
在这里插入图片描述
RUP(Rational统一软件开发过程)是一种以用例驱动、以架构为中心、以增量式迭代为开发模式的面向对象开发框架
RUP定义了四个阶段:初始、细化、构建、提交

初始阶段:主要确定项目的范围和目标,在这个阶段结束时形成生命周期目标里程碑,除了确定系统功能范围和目标外,同时确定
细化阶段:细化阶段的焦点转到构架风险上,主要开展项目风险、设计架构、制定项目计划等活动。在这个阶段结束的时候形成生命周期架构里程碑
构建阶段:进行软件详细设计、实现和测试,包括软件体系结构的实现和维护(其实就是编码)。在这个阶段结束时形成初步运行的系统里程碑
提交阶段:主要对系统功能、性能、质量进行完善,在这个阶段结束时形成发布产品里程碑

属性驱动的软件架构设计方法

方法概述与设计步骤

属性驱动的设计方法(attribute-driven design,ADD)是定义软件架构的一种方法,可根据软件质量属性需求实施架构设计过程
ADD通过一个分解系统或者系统元素的循环过程,使用架构模式和策略来满足系统质量属性需求,以完成分解操作和模式
ADD设计步骤如下:
在这里插入图片描述
在步骤1中,首先需要搜集足够多的系统需求,并将其作为ADD的输入。按照需求对涉众的重要程度,考虑需求及其对架构的潜在影响,对于没有被列为优先考虑的需求应该将其标记出来,并返回给涉众进行排序(所以在步骤1中,需求是经过排序的)
在步骤3中,涉众之前已经对需求进行了排序,但第二次排序是根据需求对架构的影响力,按照(**需求对于涉众的重要程度,需求对架构的潜在影响力)**对需求进行排序,例如某个需求表示为(H,H),则该需求对于涉众非常重要,同时也会对架构的设计产生很大的影响(H:高影响力、M:中等影响力、L:低影响力)

常见质量属性设计策略

质量属性设计策略能够直接影响系统对一些刺激的响应,不同的设计策略往往对应着不同的质量属性
刺激、质量属性设计策略和响应之间的联系如下图所示:
在这里插入图片描述
几种常见质量属性设计策略
①可用性

  • 错误检测
  • 错误恢复
  • 错误预防
    在这里插入图片描述
    ②互操作性
  • 定位
  • 管理接口
    在这里插入图片描述

③可维护性

  • 降低模块大小
  • 增加聚合性
  • 减少耦合性
  • 延迟绑定
    在这里插入图片描述
    ④性能
  • 控制资源需求
  • 管理资源
    在这里插入图片描述
    ⑤安全性
  • 检测攻击
  • 抵御攻击
  • 攻击反应
  • 从攻击中恢复
    在这里插入图片描述
    ⑥可测试性
  • 控制和观察系统状态
  • 限制复杂性
    在这里插入图片描述
    ⑦易用性
  • 支持用户主动
  • 支持系统主动
    在这里插入图片描述
    ⑧其他质量属性设计策略(了解)
  • 概念完整性
  • 可重用性
  • 可管理性
  • 可靠性
  • 可伸缩性
  • 可支持性

基于模式的软件架构设计方法

模式是属性驱动设计方法(ADD)中构造高质量软件体系结构的一个重要工具,不但如此基于模式还可独立开展软件体系结构的设计
基于模式的设计步骤
1.选择一个需要细化设计的构件
2.为该构件定义需求:
分析系统的其他部分或者外部系统如何与该构件交互
考虑该构件的哪些部分将对架构的不同部分产生影响
3.针对步骤2中定义的需求和交互,找出最适合的架构风格或模式
7个步骤:
步骤1:指定问题
步骤2:选择模式类别
步骤3:选择问题类别
步骤4:比较问题描述
步骤5:比较优点与不足
步骤6:选择最佳模式变种
步骤7:选择其他的问题类别
4.使用与问题相匹配的模式来指导类和构件的设计
使用步骤3中的成熟的软件解决方案作为额外的信息,来进一步完善在步骤2中定义的类和构件
5.在构件中进行迭代,为每个构件重复步骤2-4步

模块设计与评估方法

模块化是指在软件设计中解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程
软件模块一般可分为函数、对象与类、构件、服务以及包
在对系统进行模块化设计时,需将系统分解为一组模块并描述每一个模块的功能,还需要确定各模块之间的关系
在确定模块间关系时,首先需要识别它们的依赖关系,然后决定模块之间的通信机制,最后需要确定模块提供的接口

模块化的核心技术是分解,它能够将复杂的大问题分解成小问题,从而使用分而治之的方法解决该问题

针对模块化设计的评价标准

  • 可分解性
  • 可组合性
  • 可理解性
  • 连续性
  • 可保护性

模块化设计的基本原则

1.类设计原则

2.包聚合设计原则

3.包耦合设计原则

后续完善~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

so.far_away

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值