软件构架实践教案课程终审稿).pdf
《软件构架实践教案课程终审稿).pdf》由会员分享,可在线阅读,更多相关《软件构架实践教案课程终审稿).pdf(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 软件构架实践教案课程 文稿归稿存档编号:KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-软件构架实践教案 本课程上课时间为 16 周,每周讲解一个主题 第一周 构架商业周期 学生开课的第一周,除了讲解专业知识之外,首先要简单介绍关于这本书的背景知识,让学生对这门课有所了解,增强其学习的兴趣;然后说明学习这门功课的意义以及教学安排;最后讲解构架商业周期的概念。第一堂课直接涉及的专业知识不要太多,否则学生会囫囵吞枣,也达不到教学的目的 软件构架实践这本书是 CMU/SEI(卡内基.梅隆大学/软件工程研究所)编写的软件工程系列丛书之一,SEI(Software Eng
2、ineering Institute)于 1984 年由美国国防部出资建立,其主要工作是研究软件过程能力成熟度模型(Capability Maturity Model,CMM),其目的使开发组织开发“正确的”和“无缺陷”的程序。CMM 已经成为衡量软件公司开发管理水平的重要参考因素,并成为软件过程改进的事实标准。学习本书的目的是:1、了解构架的基本概念 2、了解保证软件构架正确的各种质量属性(Quality Attributes)和实现这些质量属性的战术(Tactics)3、学会创建软件构架的方法和评估的方法 4、把学到的知识运用到将来的开发中去构架商业周期软件构架是技术、商业和社会诸多因素作
3、用的结果,而软件构架的存在反过来又会影响技术、商业和社会环境,从而影响到未来的构架。我们把这种相互影响的周期从环境到构架又返回环境称为构架商业周期(Architecture Business Cycle,ABC),商业构架周期是本书的核心内容,所有的例子都围绕 ABC 展开。从构架商业周期的概念我们可以看出,构架与之交互的外界环境之间存在着密切的关系,他们相互影响,相互作用,相互促进。一方面构架受到多种因素的影响:1、涉众的影响;2、构架开发组织的影响;3、构架设计师素质和经验的影响;4、技术环境的影响;5、其他影响因素。另一方面,环境反过来又会对构架的形成和发展产生影响:1、影响着开发组织的
4、结构;2、影响着开发组织的目标;3、影响客户对下一个系统的要求;4、影响着构架设计师;5、构架影响着软件工程的发展 第二周 什么是软件构架 首先简单介绍软件构架形成的背景和过程,然后通过一个简单线框图的例子引入软件构架的概念:某个软件或计算机系统的软件构架是该系统的一个或多个结构,他们由软件元素,这些元素之间的外部可见属性和这些元素之间的关系组成。我们要得到最终的构架需要一个循序渐进的过程,在最粗略的线框图和构架之间有很多中间步骤,逐步求精得到真正意义上的构架,这些中间步骤包括:1、构架模式是对元素和关系类型以及一组对其使用方式的限制的描述,我们可以把它看作是对构架的一组制约条件即对各元素类型
5、及其交互模式的限制条件,而这些制约条件确定了一组或一系列能满足他们要求的构架,比如,客户机/服务器构架模式。构架模式最重要的作用是它们展示了已知的质量属性。2、参考模型是一种考虑数据流的功能划分,它对已知问题进行分解,分解得到的各个部分相互协作,构成问题的解决方案 3、参考构架是映射到软件元素及元素之间数据流上的参考模型三者之间的关系是:图 软件构架及其中间过程之间的关系 软件构架对于一个系统而言,具有极其重要的意义,包括:1、软件构架是涉众之间交流的手段 参考模型 构架模式 参考构架 软件构架 2、软件构架是系统的早期设计决策 3、软件构架是可传递的系统抽象 为了能够清晰的表达构架,我们引入
6、了如下两个概念:视图视图是构架元素内聚集的表述,由系统涉众编写和阅读,它由一个元素集合表示和元素之间的关系组成,用于表示构架中的某个结构 结构结构是元素本身的集合,他们存在于软件和硬件中,比如,模块结构是系统的模块和其组织的结构,模块视图是该结构的表示 我们使用视图和结构来表示系统的构架,构架结构根据元素的主要特性可以分为三类:1、模块结构:表示一种考虑系统的基于代码的表示方法 2、组件连接器结构:展示了软件运行是各个部分之间的交互 3、分配结构:展示了软件元素和创建并执行软件的一个或多个外部环境中的元素之间的关系 图 常见的软件构架结构 第三周 A-7E 案例分析各种构架结构的运用 A-7E
7、 航空电子系统项目的开发主要展示了 3 种不同构架结构在一个系统中的作用和表述。该项目的目的:通过该项目的开发证实软件工程的理论研究成果适用于需求灵活、内存占用少、开发时间短的软件系统,其指导思想:留下一个完整的工程模型,把相关的文档、设计方案、代码、方法和原则都公之于众,供相关人员模仿使用。从该项目的开发中获得了以下两条经验:1、信息隐藏是软件开发中可行的和明智的设计准则 模块 分解 类 使用 分层 组件-连接客户机共并发 进程 模块 工作实现 部署 2、从实现系统质量指标的角度看,认真设计构架层次上的各种结构可以达到事半功倍的效果 图 A-7E 航空电子系统的构架商业周期 构建 A-7E
8、系统构架时,设计并确定了构架层次上的 3 个结构 结构 元素 元素间的关系 影响对象 分解结构 模块 是一个子模块,共享秘密 更改容易程度 使用结构 过程 要求正确出现 实现子集和增量式开发的能力 进程结构 进程、线程 同步、互斥,共享CPU 可调度性;可并行实现性能目标 A-7E 软件所满足的质量目标包括:1、实时性能,软件系统每秒钟显示内容的更新次数和武器投放的计算速度 2、针对期望更改的可修改性,对武器、平台、显示屏上符号的变更,以及通过键盘数据新的内容容易更改 A-7E 软件的三个结构 分解结构将系统的功能划分为可以独立实现的模块,模块划分的具体目标:1、每个模块结构应足够简单,能够被
9、充分理解 2、应该能够在无需了解其他模块的具体实现,并且不影响其它模块的行为的情况下修改某个模块的实现 3、对设计进行修改的容易程度应该与该修改可能发生的程度有合理的对应关系 4、应该能够把要对软件系统做的比较大的改动分解成对各个模块的一组独立的修改 A-7E 软件的一级模块结构包括:硬件隐藏模块、行为隐藏模块和软件决策模块。使用结构的思想是建立在使用关系的基础上的。如果过程 A 的运行必须以过程 B 的正确运行为前提,则我们说过程 A 使用过程 B FD:功能驱动模 图 使用结构的分层图 进程结构是以一组协同顺序的进程来实现的,这些协同顺序进程保持同步关系、以协调对共享资源的使用 第四周 理
10、解构架质量属性(上)我们开发一个系统是为了给用户使用,因此系统的质量好坏最终要由用户来评判。评判的依据:1、系统是否能够满足客户的功能需求(直接)2、系统是否能够满足一定的质量需求(间接,长期的影响)功能性(functionality)是指系统能够完成所期望的工作的能力 质量属性(quality attributes)是高于系统功能基本要求的,它是对多种更高层次需求的抽象描述,如安全、可靠、易用及易于修改等,显然它适用于多个特定系统而非一个。构架是实现质量需求的软件创建中的第一阶段,软件构架确定了该构架对特定质量属性的支持,比如实时性,安全性等。构架和质量属性的关系:1、对我们关心的许多系统质
11、量属性的实现而言,构架具有重要意义 2、对一个构架而言,往往只支持某些质量属性 3、构架并不能独立实现质量属性,它为质量属性的实现提供了基础,但不是全部实际上,构架之所以重要,就是因为它能够保证设计系统的质量属性。质量属性是一个较为抽象的概念,为了能够清晰的表达质量属性,我们使用了质量属性场景的概念。质量属性场景(scenarios)是描述质量属性的手段,是一种面向特定的质量属性的需求,质量属性场景由以下 6 个部分组成:1、刺激源(Source of stimulus):生成刺激的实体(人、计算机或其他)2、刺激(Stimulus):当刺激源产生的刺激达到系统后需要考虑的条件,或指可能对系统
12、的影响 3、环境(Environment):刺激到达时系统的状态,或指刺激在系统的某些条件内发生 4、制品(Artifact):被刺激的部分,可能是整个系统,也可能是其中的一部分 5、响应(Response):刺激到达后系统所采取的措施 6、响应度量(Response measure):当响应发生时,我们以某种方式对其进行度量,便于我们对需求进行测试 一般质量属性场景是指那些独立于系统,很可能适合任何系统的场景,一般场景的集合描述了质量属性 具体质量属性场景是指适合正在考虑的某个特定系统的场景 图 质量属性、质量属性场景和系统的关系 本书主要讨论 6 个质量属性及其一般场景:1、可用性(Ava
13、ilability),2、可修改性(Modifiability),3、性能(Performance),4、安全性(Security),5、可测试性(Testability),6、易用性(Usability)1、可用性(Availability)可用性与系统故障及其相关后果有关。当系统不再提供其规范中所说明的服务时,就出现了系统故障。可用性关注的问题:如何检测故障,发生故障的频度,出现故障时的现象,系统故障排除的时限,如何防止故障的发生以及发生故障时的处理 图 可用性的一般场景 2、可修改性(Modifiability)可修改性是关于变更的成本问题,可修改性包括两个关注点:1、可以修改什么?如修
14、改系统功能、系统运行的平台和环境、系统容量、质量属性等 2、何时进行变更以及由谁进行变更?修改时间包括设计时修改(源代码)、编译时修改(编译条件),部署时修改(系统配置)等 通用质量属性 可修改性 性能 安全性 一 般质 量 特定系统抽特定组 刺激刺制响应:响应度环境:内部、外(错误)忽略、崩进程、存正常、记录、通知、禁修复时间、可用性、可 第五周 理解构架质量属性(下)3、性能(Performance)性能与事件发生时,将要耗费系统多长时间做出响应有关。影响性能的因素包括:事件源的数量和达到模式,到达系统的事件包括:周期性事件、随机事件或偶然事件 性能的一般性场景 场景部分 可用的值 刺激源
15、 大量独立源中的一个,可能来自系统内部 刺激 定期、随机或偶然事件到达 制品 环境 正常模式;超载模式 响应 处理刺激;改变服务级别 相应度量 等待时间、时间期限、吞吐量、抖动、缺失率、数据丢失 4、安全性(Security)安全性是衡量系统在向合法用户提供服务的同时,阻止非授权使用的能力 安全性被刻画为一个提供认可(交易不能被交易的任何一方拒绝)、机密性(未经授权不能访问数据或服务)、完整性(根据计划来提交数据或服务)、保证(交易各方是所声称的人)、可用性(系统可用于合法用途)和审核(在系统内部跟踪系统活动)的系统 安全性的一般性场景 场景部分 可用的值 刺激源 授权或非授权用户;访问了有限
16、的资源/大量资源 刺激 试图修改数据,访问系统服务 制品 系统服务、系统中的数据 环境 在线或离线、直接或通过防火墙入网 响应 对用户验证,阻止或允许访问数据或服务 相应度量 避开安全措施所需要的时间或资源;恢复数据/服务 5、可测试性(Testability)可测试性是指通过测试揭示软件缺陷的容易程度。如果要对系统进行正确的测试,那么必须能够“控制”每个组件的内部状态及其输入,然后“观察”其输出,测试可以由开发人员、测试人员、验证人员或用户进行;可以对代码、设计以及整个系统进行测试 可测试性的一般性场景 场景部分 可用的值 刺激源 单元开发人员、系统集成人员、系统验证人员、测试人员、用户 刺
17、激 已完成的一个阶段,如分析、构架、类和子系统的集成,所交付的系统 制品 设计、代码段、完整的应用 环境 设计时、开发时、编译时、部署时 响应 可以控制系统执行所期望的测试 相应度量 已执行的可执行语句的百分比;最长测试链的长度,执行测试的时间,准备测试环境的时间 6、易用性(Usability)易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持种类。包括如下几个方面:1、学习系统的特性,2、有效地使用系统,提高用户操作效率,3、将错误的影响降到最低,4、使系统适应用户的需要,5、提高自信和满意度。易用性的一般性场景 场景部分 可用的值 刺激源 最终用户 刺激 想要学习系
18、统特性、有效使用系统、使错误的影响最低,适配系统等 制品 系统 环境 在运行时或配置时 响应 上下文相关的帮助系统,导航,撤销、取消操作,从系统故障中恢复,国际化,定制能力 相应度量 任务时间,错误数量,用户满意度等 本章除了讲述上面 6 种质量属性之外,还对商业质量属性和构架本身的质量属性作了介绍,以下是我们所关心的商业目标:1、上市时间 2、成本和收益 3、所希望的系统生命期的长短 4、目标市场,通用市场还是专用市场 5、推出计划 6、与老系统的集成 构架的质量属性包括:1、概念完整性,在各个层次上统一系统设计的根本指导思想 2、正确性和完整性,这是构架能够满足系统的各种需求及运行时的资源
19、要求的必要条件 3、可构建性,保证能够由指定的开发小组在规定的时间里及时开发系统,并允许在开发过程中做某些更改,其目的是最大程度地实现并行开发 第六周 实现质量属性(上)质量属性对于一个软件系统而言至关重要,那么我们如何来实现这些质量属性呢?首先我们来了解一些基本概念 战术(tactics)影响质量属性响应的设计决策 构架策略(architectural strategy)战术的集合 构架模式(architectural pattern)以某种方式将战术打包在一起 战术是帮助我们实现质量属性的策略,下面我们就对每一种质量属性所采用的战术进行讨论 1、可用性(Availability)可用性战术
20、将会阻止错误发展为故障,或者至少能够把错误的影响限制在一定范围内,从而使修改成为可能。维持可用性的方法包括:1、错误预防某种类型的冗余 2、错误检测用来检测故障的某种类型的健康监视 3、自动恢复检测到故障时某种类型的恢复 图 可用性战术 2、可修改性(Modifiability)可修改性战术的目标是控制实现、测试和部署变更的时间和成本。根据其实现目标可以分为 3 组:1、局部化修改目标是减少由某个变更直接影响的模块的数量 2、防止连锁反应目标是限制对局部化的模块的修改,以防止对某个模块的修改间接地影响到其他模块 3、延迟绑定时间目标是控制部署时间并允许非开发人员进行修改 图 可修改性战术 第七
21、周 实现质量属性(下)3、性能(Performance)性能战术的目标是对一定的时间限制内到达系统的事件生成一个响应,这些事件可以使消息到达、定时器到时,系统状态的变化。性能战术包括 3 个分类:可用错所 屏 蔽的 错 误错误检恢复:预防 命令/响应 表决 主动冗Shadow 状态再同从服务中删除恢复:可修改变更在时间和预算内实现、局部化变防止连锁反语义一致性 预期期望的变更 隐藏信息 维持现有的接口 运行时注册 配置文件 多态 推迟绑定时 1、资源需求分析影响性能的资源因素 2、资源管理提高资源的应用效率 3、资源仲裁解决资源的争用 图 性能战术 4、安全性(Security)安全性战术包括
22、抵抗攻击的战术、检测攻击的战术和从攻击从恢复的战术 图 安全性战术 5、可测试性(Testability)可测试性战术的目标是允许在完成软件开发的一个增量后,轻松地对软件进行测试。测试的目标是发现错误 图 可测试性战术 6、易用性(Usability)易用性与用户完成期望任务的难易程度以及系统为用户提供的支持种类有关 图 易用性战术 战术与构架模式的关系:战术用于响应某个特定的系统质量属性;构架模式是将战术以某种方式进行打包,以一个战术的集合来支持某种构架。比如,一个系统支持可用性和性能,那么我们可能会考虑冗余战术、同步战术、并发战术等等,这些特定于一类系统的战术集合我们称之为构架模式 第八周
23、 空中交通管制系统高可用性设计方案首先向同学介绍空中交通管制系统(Air Traffic Control)的背景知识,空中交通管制(ATC)是指由人通过一定的设备来对民航系统的各航班进行必要的规划、指挥和管理;空中交通管制系统是辅助空中交通管制的一事件在时间限性能 资源需资源管提高计算效率 引入并发 维持多个副调度策略:先进/先资源仲攻系统检测、抵抗安全性 抵抗攻检测攻击 身份验证 用户授权 数据加密 入侵检从攻击中恢恢识冗审计追一个增检测出错可测试性 管理输入/记录/回放 将接口与实现分内部监内置监视用户请为用户提供适当的易用分离用户支持用户主取消 用户模用户模型 整套设备,包括雷达、雷达显
24、示,数据通讯、数据记录等等,其中最重要的是雷达数据处理和雷达显示终端 图 空中交通管制系统的构架商业周期 本节讨论的构架为初始区段组系统(Initial Sector Suite System,ISSS),它是对美国 22 个中途中心的软硬件升级系统。ISSS 系统的质量属性要求:1、极高的可用性:保证系统不能正常工作的状态只延续极短的时间(全年 5 分钟)2、高性能:系统必须在不“丢失”任何数据的情况下对大量数据(2440 架飞机)进行处理 其他需求:1、开放性:系统必须能够与按商业运作开发出来的其它软件进行集成,比如航图显示系统,2、可提交的子系统,3、能够更改功能和处理软硬件的升级,4、
25、能够与众多的外部系统相接并协同工作 为了实现 ATC 系统极高的可用性,在构架中大量的采样了冗余战术,包括硬件冗余和软件冗余。为了实现高性能,采用了并发和资源调度等战术 图 ISSS 系统的物理视图(采用了大量冗余设计战术)图 ISSS 系统的一级模块分解视图 第九周设计构架构架和质量属性之间是相互相成的,我们学习质量属性是为了更好地设计我们的构架,构架反过来又保证质量属性的实现。任何一个好的系统都具有的两个特性:1、存在一个强大的构架构想 2、应用管理良好的迭代式增量开发周期 演变交付生命期模型使开发的软件系统具有上述两个特征 ISSS系通用控制通用全国空记录、IBM 功能、质量和商业需求的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 构架 实践 教案 课程 终审
限制150内