赞
踩
某个软件或计算系统的软件架构是该系统的一个或多个结构,它们由软件元素、这些元素的外部可见属性以及这些元素之间的关系组成。
(架构是设计的一部分,是设计的最早期的阶段最重要的决定)
架构师的工作不是创造性的一种设计,更多的是在和不同的stakeholder去交流沟通各方面的需求、限制、约束的,最终达成妥协的结果。在技术方面,他对于实现的技术要有所了解;在工程管理方面,也要有一定的经验。
视图是架构元素的内聚集的表示,由系统涉众编写和阅读。它由一个元素集的表示和元素之间的关系组成。
结构是元素本身的集合,它们存在于软件或硬件中。
例如,模块结构是系统的模块和其组织的集合。模块视图时该结构的表示,由某些系统涉众编档和使用。
这四类视图从不同的角度看系统,同时都在描述一个使用案例场景场景(Use case scenarios)
每一个场景都会涉及到这四类视图
课程主要关心架构设计阶段的相关活动
主要由以下四个活动串联起来:
要知道为谁、为什么去设计,找到设计依据,并不是所有需求都要在架构阶段完成设计,只是一少部分需求,那么就要把这些需求从很多需求中挑选出来,形成ASR。
识别出ASR后,把它作为输入,进行架构设计,采用ADD方法。输入除了ASR之外,还有跟这些ASR相关Pattern和tactics成了候选考虑。
完成设计后,生成一系列视图。
生成的文档作为输入Evaluation,进行评估。除了架构文档之外,还有Stakeholders参与,因为他们是最初的需求来源。此外,这其中还会存在迭代,即如果没有通过评估,还会再回到架构设计,进行进一步的设计和改进。
以上就是课堂所关注的架构设计
功能化需求 Software Requirements
质量属性 Quality Attributes
架构攸关需求 Architecturally Significant Requirements
往往交替互换使用上述三个名词,把它们看作近似等价
使用刺激—响应方式,对每一个质量属性由以下6个元素组成描述:
场景的组成部分 | 可能的值 |
---|---|
源 | 系统内部、系统外部 |
刺激 | 错误;疏忽、崩溃、时间、响应 |
制品 | 系统的处理器、通信信道、持久存储器、进程 |
环境 | 正常操作、降级模式(也就是更少的特性,这是一种后退(fall back)的解决方案) |
响应 | 系统应该检测到事件,并进行如下一个或多个活动: 1. 将其记录下来 2. 通知适当的各方,包括用户和其他系统 3. 根据已定义的规则禁止导致错误或故障的事件源 4. 在一段预先指定的时间间隔内不可用,其中,时间间隔取决于系统的关键程度 5. 继续在正常或降级模式下运行 |
响应度量 | 1. 系统必须可用的时间间隔 2. 可用时间 3. 系统可以在降级模式下运行的时间 4. 修复时间 |
场景的组成部分 | 可能的值 |
---|---|
源 | 最终用户、开发人员、系统管理员 |
刺激 | 希望增加/删除/修改/改变功能、质量属性、容量 |
制品 | 系统用户界面、平台、环境或与目标系统交互的系统 |
环境 | 在运行时、编译时、构建时、设计时 |
响应 | 查找架构中需要修改的位置,进行修改且不会影响其他功能,对所做的修改进行测试,部署所做的修改 |
响应度量 | 根据所影响的元素数量度量的成本、努力、资金;该修改对其他功能或质量属性所造成影响的程度 |
场景的组成部分 | 可能的值 |
---|---|
源 | 大量的独立源中的一个,可能来自系统内部 |
刺激 | 定期事件到达;随机事件到达;偶然事件到达 |
制品 | 系统 |
环境 | 正常模式;超载模式 |
响应 | 处理刺激;改变服务级别 |
响应度量 | 等待事件、期限、吞吐量、抖动、缺失率、数据丢失 |
场景的组成部分 | 可能的值 |
---|---|
源 | 正确识别、非正确识别或身份未知的个人或系统它来自内部/外部; 经过了授权/未经授权 |
刺激 | 试图显示数据、改变/删除数据、访问系统服务、降低系统服务的可用性 |
制品 | 系统服务、系统中的数据 |
环境 | 在线或离线、联网或断网、连接有防火墙或直接连接到了网络上 |
响应 | 对用户进行身份验证 隐藏用户的身份 阻止对数据和/或服务的访问 允许对数据和/或服务的访问 授予或收回对访问数据和/或服务的许可 根据身份记录访问/修改或试图访问/修改数据/服务 通知用户或另外一个系统,并限制服务的可用性 |
响应度量 | 用成功的概率表示避开安全防范措施所需要的时间/努力/资源 检测到攻击的可能性 确定攻击或访问/修改数据和/或服务的个人的可能性 在拒绝服务攻击的情况下仍然可以获得的服务的百分比 恢复数据/服务 被破坏的数据/服务和/或拒绝的合法访问的范围 |
场景的组成部分 | 可能的值 |
---|---|
源 | 单元开发人员 增量集成人员 系统验证人员 客户验收测试人员 系统用户 |
刺激 | 已完成的分析、架构、设计、类和子系统集成 所交付的系统 |
制品 | 设计、代码段、完整的应用 |
环境 | 设计时、开发时、编译时、部署时 |
响应 | 提供对状态值的访问 提供所计算的值} 准备测试环境 |
响应度量 | 已执行的可执行语句的百分比 如果存在缺陷出现故障的概率 执行测试的时间 测试中最长依赖链的长度 准备测试环境的时间 |
略
设计的时候主要使用具体场景
任何模式都会实现几个战术,它们通常与不同的质量属性有关;并且该模式的任何实现都对战术做出了选择
一个架构模式是用来解决在某一个具体的上下文环境(context)中所出现的问题,对于这个问题的一个解决方案构成了架构模式。(Solution:元素之间的关系满足什么样的约束)
模块看的是在设计时系统的分解,分成不同的模块。一旦完成设计模块,就变成了架构的component
从动态的、运行时的角度去观察系统
软件映射到什么硬件的元素上
ADD是一种定义软件架构的方法,该方法将分解过程建立在软件必须满足的质量属性之上。它是一个递归分解的过程,其中在每个阶段都选择战术和架构模式来满足一组质量属性场景,然后对功能进行分配,以实例化由该模式所提供的模块类型
Views and Beyond 视图并超越视图
大部分架构的决定通过视图反映出来
我们通不过不同的视角会生成不一样的视图
放在架构文档里的是最重要的视图,能反映出架构信息
在视图部分,生成的都是单独的;缺少的是跨越不同视图的部分,即系统间的视图关系
ATAM: Architecture Tradeoff Analysis Method 体系结构权衡分析方法
ATAM一种进行构架评估的综合方法,ATAM是评估软件构架的一个健壮的方法。在该方法中,项目决策者和涉众要清晰地阐述一个准确的质量属性需求列表(以场景的方式),并说明与实现每个高优先场景相关的构架决策。然后,把这些决策确定为有风险决策或无风险决策,以找到构架中任何存在问题的地方。
ATAM不是需求评估。
ATAM不是代码评估。
ATAM不包括实际的系统测试。
ATAM不是一个准确的手段,但它识别了构架中可能存在风险的区域。这些风险包含在敏感点和权衡中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。