软件设计与体系结构知识总结——第十三章 Designing an Architecture

目录

0.前言

1.Introduction

2.Design Strategy

2.1 Decomposition Strategy

2.2 Designing to ASR

2.3 Generate and Test

3.The Attribute-Driven Design Method

3.2 ADD的输入

3.3 ADD的输出

4.The Steps of ADD


0.前言

        本系列文章旨在软件设计与体系结构的知识点,资料来源四川大学授课内容,可用于期末复习,笔者理解尚浅,文中不正之处静待批正。加粗部分为重点。

第十三章整体框架

1.Introduction

设计软件架构的过程:①定位具有重要架构意义的需求(ASR)②捕捉质量属性需求③选择、生成、调整和分析实现这些需求的设计决策。

设计过程中缺少的是一种将各个部分整合在一起的方法。

这种方法应包括:设计架构的设计策略;属性驱动设计(ADD)方法:设计策略思想的包装

2.Design Strategy

设计策略三个理念:分解;根据架构重大需求(ASR)进行设计;生成和测试

2.1 Decomposition Strategy

分解是设计的起点;随着设计的分解,质量属性要求(包括约束条件)也可以分解并分配给分解的元素

2.2 Designing to ASR

ASR 驱动架构设计;具有重要架构意义的需求(ASR)是指会对架构产生深远影响的需求

未满足ASR的三个选择:如果快达到要求了,可以看看是否可以放宽要求;可以重新安排需求的优先级,并重新审视设计;可以报告无法满足需求

2.3 Generate and Test

将设计视为生成和测试过程的一种方法;这种方法将特定的设计视为一种假设:设计满足了需求

三个来源提供了对假设进行的测试:质量属性分析技术;质量属性设计检查表;具有建筑意义的需求 (ASR)。当设计满足 ASR 时,当您耗尽设计预算时就完成生成和测试流程

设计解决方案是利用项目可用的辅助材料创建的,辅助材料可包括:现有系统;项目可用的框架;已知的架构模式;设计清单;领域分解

3.The Attribute-Driven Design Method

属性驱动设计(ADD)方法是架构设计策略的一个组合

ADD 是一种迭代方法,在每次迭代时,都会帮助架构师完成以下工作:选择系统的一部分进行设计;汇集该部分的所有ASR;创建并测试该部分的设计

ADD原则:以质量属性为基础进行分解的软件架构

3.2 ADD的输入

当已知一组 ASR 时,即可开始 ADD;如果 ASR 开始后发生变化,则很可能需要重新设计;除 ASR 外,ADD 的输入还应包括上下文描述

Context:背景描述提供了两个重要信息:①所设计系统的边界是什么;②设计中的系统必须与哪些外部系统、设备、用户和环境条件进行交互

3.3 ADD的输出

ADD 的输出是一组建筑视图草图;这些视图将共同确定一系列建筑元素及其关系或互动关系;分解视图、C&C 视图和分配视图

4.The Steps of ADD

ADD方法分为五个步骤:①选择要设计的系统元素②确定所选元素的ASR③为所选元素生成设计方案④清点剩余需求,为下一次迭代选择输入内容⑤重复步骤1-4,直至完成

①ADD从尚未设计的系统部分开始工作;对于 "新领域 "设计,要从整个系统的元素入手;通过ADD步骤的第一次旅行,将产生一个广泛而浅显的设计,产生一组新确定的架构元素。

ADD 的第一次迭代将创建一个元素集合,共同构成整个系统;第二次迭代将获取一个元素并对其进行设计,从而产生更细粒度的元素;第三次迭代将提取另一个元素,即整个系统的后代之一,以此类推。

影响迭代的因素:人员可用性可能决定改进策略;降低风险可能决定了改进策略;对某些功能或质量属性的关注可能会要求采用混合方法。

ADD有两种主要的细化策略:广度优先、深度优先

例子:

②使用效用树Utility Tree

质量属性构成中间层

情景构成效用树的树叶

用于确定效用树中ASR优先级的两个因素是业务价值和架构影响,我们关心(H,H)(H,M)或(M,H)

③是生成和测试策略的应用。它是 ADD 的核心

④ADD 的第四步是一个测试步骤,将应用于您在本次迭代的第一步中选择的元素的设计中;第四步的可能结果之一是回溯,这意味着一个重要的要求没有得到满足

未满足的 ASR 可能与以下内容有关:分配给父元素的质量属性要求;父元素的功能责任;父元素上的一个或多个限制条件

为实现功能性责任,可在现有模块或新创建的模块中添加责任:将责任分配给包含类似责任的模块;当模块过于复杂时,将其分成若干部分;将责任分配给包含具有类似质量属性特征的责任的模块

针对约束,修改设计或尝试放宽约束:修改设计以适应约束;放宽限制

⑤如果所有要求都得到了满足,那么 ADD 流程就结束了;终止 ADD 的另一个条件是项目的设计预算已经用完;团队之间信任度较高的项目中,可以在仅有架构草图的情况下终止 ADD 流程

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

五倍子的代码空间

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

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

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

打赏作者

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

抵扣说明:

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

余额充值