1、四川大学软件架构重点概念(考试重点在第4,第5章,没来的及复习的同学可以尽量背课文的黑体字就ok)第一章:架构商业周期1.Software Structure(软件架构):一个程序和计算系统的架构是这个系统的结构,它包括了软件元素以及元素的外部可见属性和它们之间的关系。2.Architecture Business Cycle(ABC):架构商业周期:软件架构是技术、商业和社会的影响的结果。它的存在反过来又影响技术、商业和社会环境,这种环境还会继续影响将来的架构。我们将这种从环境到架构,然后又从架构到环境的影响周期称为架构商业周期。3.Stakeholder涉众是一些对软件系统的构建感兴趣的人
2、和组织,比如:消费者,最终用户,开发者,项目经理,维护者,甚至是市场营销人员。第二章:什么是软件架构1.Architecture Pattern:架构模型:一个架构模型是元素和相关类型以及一系列关于怎么使用这些元素的限制的描述。2.Reference Model:参考模块:一个参考模块是根据各部件之间的数据流向的功能分解。3.Reference Architecture参考架构:一个参考架构是映射到软件元素(它们相互协作共同实现参考模型中定义的功能)及元素之间数据流上的参考模型。4.View视图是构架元素的内聚集的表示,由系统涉众编写和阅读。5.Structure结构是元素本身的集合,它们存在
3、于软件和硬件中。为什么软件架构是重要的(软件架构的重要性)?1.架构是涉众者进行交流的手段2.架构是早期决策的体现(1)架构定义了关于实现的约束(2)架构决定了开发组织的组织结构(3)架构支持和阻碍系统质量属性的实现。(4)通过研究系统构架来研究系统质量(5)构架使推理判断和控制更改变得简单(6)构架有助于循序渐进的原型设计(7)可以通过构架进行更加准确的成本和进度评估3.架构是可传递,可重用的模型(1)软件唱片线共享共同的构架(2)系统可以使用大型的,由其他组织开发的元素(3)少就是多:限制选择范围是值得的(4)构架是基于模块开发成为可能(5)构架可以作为培训的基础构架有哪几种结构?三种,一
4、、模块结构 二、组件-连接器结构 三、分配结构基于模块的结构包括哪些内容1、分解 2、使用 3、分层 4、类或泛化组件连接器的就够包括哪些内容:并发,共享数据或存储库,客户机-服务端分配模块包括哪些结构1、部署 2、实现 3、工作分配第三章:A-7E案例分析1.需求和质量2.A-7E航空电子系统的架构分解模块结构:硬件隐藏模块 行为隐藏模块软件决策模块使用模块结构:使用关系:如果过程A的运行必须以过程B的正确运行为前提,我们就说过程A使用过程B。进程组建和连接器结构:第四章:理解质量属性1.Functionality:功能性:功能性是指系统能够完成所期望工作的能力。2. 没有一个质量属性是完全
5、依赖于设计的。3.在复杂的系统中,决不可能一孤立的方式实现质量属性。任何一个质量属性的实现都会对其他质量属性带来积极和消极的影响。功能性和结构的关系:功能性可能通过大量可能结构的使用来获得功能性很大程度上依赖于结构当其他质量属性很重要的时候,软件构架会限制对结构的功能分配质量属性场景由哪六部分构成1、刺激源 2、刺激 3、环境 4、制品 5、响应 6、响应度量列出质量属性可用性 可修改性 性能 安全性 可测试性 易用性 可用性场景刺激源:系统内部或外部刺激:疏忽、崩溃、时间、响应制品:通信通道、持久存储器、进程环境:正常模式,降级模式响应:系统应该检测部件,并作出如下一个或多个活动:将其记录下
6、来通知适当的各方,包括用户和其他系统根据已定义的规则,禁止导致错误的事件源在一段预先指定的时间内不可用,其中时间间隔取决于系统关键程度继续在正常或降级模式下运行。响应度量:系统必须可用的时间间隔可用时间系统可以在降级模式下运行的时间间隔修复时间可修改性场景:刺激源(由谁来进行变更):开发人员、系统管理员或最终用户刺激(要进行的改变):增加、删除、修改现有的功能制品(可修改什么):系统用户界面、平台、环境、与目标系统交互的系统环境(何时进行变更以及由谁进行变更):在运行时,构建时,编译时,设计时响应:查找架构中需要修改的位置,进行修改且不会影响其他功能,对所做的修改进行测试,部署所做的修改响应度
7、量:根据所影响的元素数量,度量成本,努力,资金,该修改对其他功能或质量属性所造成的影响性能场景:刺激源:系统内部和外部刺激(事件到达):定期时间到达,随机事件到达,偶然事件到达制品:系统环境(系统处于的各种模式):正常模式,超载模式响应:处理刺激,改变服务级别响应度量:等待时间,期限,吞吐量,抖动,缺失率,数据丢失安全性场景:刺激源:正确识别,非正确识别或未知的个人和系统它来自内部/外部;经过授权/未经过授权,它访问了有限的资源或大量资源刺激:试图显示、修改、删除数据,访问系统服务,减低系统服务的可用性制品:系统服务,系统中的数据环境:在线或离线、联网或断网,连接有防火墙或直接连接到网络上响应
8、:对用户进行身份验证,阻止或允许用户对数据或服务的访问,审核踪迹(恢复)响应度量(用成功的概率来表示):避开安全防范所需要的时间/努力/资源,确定攻击、访问、修改数据或服务的可能性,在拒绝服务的情况下任然能够获得服务的百分比;恢复数据、服务;可测试性场景:刺激源:单元测试人员,集成测试人员,系统个测试人员,或客户执行刺激:完成的设计,构架,分析,类和子系统集成,所交付的系统制品:设计,代码段,完整的应用环境:设计时,开发时,编译时,部署时响应:可以控制系统执行所期望的测试响应度量:已执行的可执行语句的百分比,如果存在缺陷出现故障的概率,执行测试的时间,测试中最长依赖链的长度,准备测试环境的时间
9、易用性场景:刺激源:最终用户永远是刺激源刺激:最终用户想要有效地使用系统,学习使用系统,把错误的影响降到最低,适配系统或对系统感到满意。制品:系统环境:系统运行时或配置时响应:系统为用户提供需要的特性,或预计用户的需要:上下文相关的帮助系统,导航,撤销、取消操作,从系统故障中恢复,国际化,定制能力响应度量:任务时间,错误数量,用户满意度商业质量属性:上市时间,成本和收益,所希望的系统生命期的长短,目标市场(通用市场还是专用市场) ,推出计划,与老系统的集成。构架的质量属性:概念完整性,正确性和完整性,可构建性第五章:实现质量属性1.Tactic战术:战术就是影响质量属性响应控制的决策,我们把战
10、术的集合称为“构架策略“。1.主要用于可用性的战术有哪些:错误检测:命令/响应(ping/echo) 心跳(dead man计时器) 异常 (命令/响应和心跳主要在不同的进程中操作,异常在同一个进程中操作。异常处理通常将错误在语义上转换为可以被处理的形式)错误恢复:表决 主动冗余(热启动) 被动冗余(暖启动 /双冗余/三冗余) 备件 shadow操作 状态再同步 检查点/回滚错误预防:从服务中删除 事务 进程监视器2.主要用于可修改性的战术有哪些:局部化修改:语义一致性 预期期望的变更 泛化模块 限制可能的选择 抽象通用服务防止连锁反应:隐藏信息 维持现有的接口(添加接口 添加适配器 提供一个
11、占位程序A) 限制通信路径 使用仲裁者推迟绑定时间:运行时注册 配置文件 多态 组件更换 遵守已定义的协议3.模块之间的依赖性有哪几种:8种,语法 语义 顺序 A的一个接口的身份 A的位置(运行时) A提供的服务/数据的质量 A的存在 A的资源行为4.主要用于性能的战术有哪些:资源需求:提高计算效率 减少计算的开销 减少事件率 控制采样频率资源管理:引入并发 维持多个副本 增加可用资源 资源仲裁:调度策略(先进/先出 固定优先级 动态优先级 静态调度)5.主要用于安全性的战术有哪些:抵抗攻击:身份验证 用户授权 数据加密 数据完整性 限制暴露 限制访问检测攻击:入侵检测从攻击中恢复:冗余(恢复
12、) 审计追踪(识别)6.可测试性主要有哪些战术:管理输入输出:记录/回收 将接口与实现分离 特化访问路线/接口内部监视:内置监视器7.主要用于易用性的战术有哪些:分离用户接口支持用户主动:取消 撤销 聚合用户模型:用户模型 系统模型 任务模型8.战术与构建模式的关系:战术用于响应某个特定的系统质量属性;构架模式是将战术以某种方式进行打包,以一个战术的集合来支持某种构架。比如,一个系统支持可用性和性能,那么我们可能会考虑冗余战术,同步战术,并发战术等等,这些特定于一类系统的战术集合我们称之为构架模式。第七章 设计构架构架驱动因素:功能、质量和商业需求的某个集合塑造了构架,我们把这种塑造成为架构驱
13、动因素(属性驱动设计)ADD:Add把一组质量属性场景作为输入,并使用对质量属性和构架之间关系的了解,对构架进行设计。ADD设计的结果是构架的模块视图和其他视图的几个最初的层次。什么时候开始构架设计:在完成了初步需求分析后就可以开始构架设计了。ADD的方法步骤:1、选择要分解的模块2、根据下面的步骤对模块进行求精:a 从具体的质量场景和功能需求中选择构架驱动因素,进一步确定出对该分解很重要的事物。b 选择满足构架驱动因素的构架模式。根据可以用来实现驱动因素的战术创建(选择)模式。确定实现这些战术所需要的子模块。c 实例化模块并根据用例分配功能,使用多个视图进行表示。d 定义子模块接口。该分解提
14、供了模块和对模块交互类型的限制。对于每个模块,将该信息编写在接口文档中。e 验证用例和质量场景并对其进行求精,是它们成为子模块的限制3、对需要进一步分解的每一个模块重复上述步骤。在工作分配中,分配任务的原则:1、开发小组内部是高内聚,外部是松耦合2、根据开发小组特产进行分配3、尽量与模块的分界原则一致第九章:构架编档1、构架编档(Documenting Software Architecture):就是将相关视图编写成文档,然后对其添加适合多个视图的文件。它是对构架的描述,构架编存在,构架编档不一定存在。2、视图(View):就是构架元素的内聚集合的表示,由系统涉众编写和阅读3、接口:是两个独
15、立的实体相遇并进行交互的边界。4、文档的不同涉众具有不同的需要,编写技术文档最重要的原则就是从读者的角度进行编写。5、不同的视图支持不同的目标和用途,这是我们为什么不采用特定的视图或视图集的原因。1、选择视图的三个步骤:(1)产生一个候选视图列表(2)组合视图(3)划分优先等级2、视图编档包括哪7个部分内容:(1)展示视图中元素与元素之间关系的主要表示。(2)元素目录中至少详述了主要表示中所描述的元素和他们之间的关系,大概还有其它内容。(3)展示了视图中描述的系统如何与其环境相关的上下文图。(4)可变性指南展示了如何应用视图中所展示的构架的一部分的任何变化点。(5)解释了视图中所反映的设计合理
16、性的构架背景。(6)视图中所用的术语表。(7)其它信息3、接口编档的模板(1)接口身份(2)所提供的资源(资源语法,资源语义,资源使用的限制)(3)数据类型定义(4)异常定义(5)该接口提供的可变性(6)接口的质量属性特征(7)元素需求(8)基本原理和设计问题(9)使用指南4、跨视图文档组织的3个部分:(1)如何安排和组织构架的文档视图目录视图模板(2)构架是什么系统概述视图之间的映射元素列表项目词汇(3)为什么构架会是这样的第十一章:ATAM构架评估方法ATAM(构架权衡分析方法):这种方法不仅可以揭示出构架满足特定质量目标的情况,而且可以是我们更清楚的认识到质量目标直接之间的联系,即如何全
17、很多个质量目标。敏感点:与某个质量属性相关的构架决策权衡点:与多个质量属性相关的构架决策有风险决策:根据所陈述的质量属性需求,可能导致不期望结果的构架决策。无风险决策:根据分析被认为是安全的构架决策一、评估人员由哪些组成:1、评估小组2、项目决策者3、构架涉众二、ATAM构架评估的结果有哪些?1、一个简洁的构架表述2、表述清楚的业务目标3、用场景集合捕获的质量属性4、所确定的敏感点和权衡点的集合5、有风险决策和无风险决策6、风险主题的集合三、ATAM构架评估的过程:4阶段:第一阶段:活动:关系和准备参与人员:评估小组负责人和组要的项目决策者一般需要的时间:大约需要几周时间第二阶段:活动:部分评
18、估参与人员:评估小组和决策者时间:1周,然后中断2-3周第三阶段:活动:全体评估参与人员:评估小组、项目决策者以及涉众时间:2天第四阶段:活动:后续工作参与人员:评估小组和客户时间:1周四、ATAM评估的具体步骤有哪些?(1)ATAM方法的表述(2)商业动机的表述(3)架构的表述(4)对构架方法进行分类(5)生成质量属性效用树(6)分析构架方法(7)集体讨论,并确定场景的优先级(8)分析构架方法(9)结果的表述五、什么不是ATAMATAM不是需求评估ATAM不是代码评估ATAM不包括时间的系统测试ATAM不是一个准确的手段第十二章:CBAM构架评估方法(针对构架的经济效益)CBAM操作的9步(1)整理场景(2)对场景进行求精(3)确定场景的优先级(4)分配效用(5)为场景开发构架策略,并确定其期望的质量属性的响应级别(6)使用内插法确定“期望的”质量属性响应级别的效用(7)计算从某个构架策略中获得的总收益(8)根据受成本和进度限制影响的ROI选择构架策略(9)运用直觉来确认所得的结果Good luck!