软件构架实践教案课程.docx

上传人:b****6 文档编号:4412200 上传时间:2022-12-01 格式:DOCX 页数:23 大小:211.72KB
下载 相关 举报
软件构架实践教案课程.docx_第1页
第1页 / 共23页
软件构架实践教案课程.docx_第2页
第2页 / 共23页
软件构架实践教案课程.docx_第3页
第3页 / 共23页
软件构架实践教案课程.docx_第4页
第4页 / 共23页
软件构架实践教案课程.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

软件构架实践教案课程.docx

《软件构架实践教案课程.docx》由会员分享,可在线阅读,更多相关《软件构架实践教案课程.docx(23页珍藏版)》请在冰豆网上搜索。

软件构架实践教案课程.docx

软件构架实践教案课程

软件构架实践教案

本课程上课时间为16周,每周讲解一个主题

第一周构架商业周期

学生开课的第一周,除了讲解专业知识之外,首先要简单介绍关于这本书的背景知识,让学生对这门课有所了解,增强其学习的兴趣;然后说明学习这门功课的意义以及教学安排;最后讲解构架商业周期的概念。

第一堂课直接涉及的专业知识不要太多,否则学生会囫囵吞枣,也达不到教学的目的

《软件构架实践》这本书是CMU/SEI(卡内基.梅隆大学/软件工程研究所)编写的软件工程系列丛书之一,SEI(SoftwareEngineeringInstitute)于1984年由美国国防部出资建立,其主要工作是研究软件过程能力成熟度模型(CapabilityMaturityModel,CMM),其目的使开发组织开发“正确的”和“无缺陷”的程序。

CMM已经成为衡量软件公司开发管理水平的重要参考因素,并成为软件过程改进的事实标准。

学习本书的目的是:

1、了解构架的基本概念

2、了解保证软件构架正确的各种质量属性(QualityAttributes)和实现这些质量属性的战术(Tactics)

3、学会创建软件构架的方法和评估的方法

4、把学到的知识运用到将来的开发中去

构架商业周期——软件构架是技术、商业和社会诸多因素作用的结果,而软件构架的存在反过来又会影响技术、商业和社会环境,从而影响到未来的构架。

我们把这种相互影响的周期——从环境到构架又返回环境称为构架商业周期(ArchitectureBusinessCycle,ABC),商业构架周期是本书的核心内容,所有的例子都围绕ABC展开。

从构架商业周期的概念我们可以看出,构架与之交互的外界环境之间存在着密切的关系,他们相互影响,相互作用,相互促进。

一方面构架受到多种因素的影响:

1、涉众的影响;2、构架开发组织的影响;3、构架设计师素质和经验的影响;4、技术环境的影响;5、其他影响因素。

另一方面,环境反过来又会对构架的形成和发展产生影响:

1、影响着开发组织的结构;2、影响着开发组织的目标;3、影响客户对下一个系统的要求;4、影响着构架设计师;5、构架影响着软件工程的发展

第二周什么是软件构架

首先简单介绍软件构架形成的背景和过程,然后通过一个简单线框图的例子引入软件构架的概念:

某个软件或计算机系统的软件构架是该系统的一个或多个结构,他们由软件元素,这些元素之间的外部可见属性和这些元素之间的关系组成。

我们要得到最终的构架需要一个循序渐进的过程,在最粗略的线框图和构架之间有很多中间步骤,逐步求精得到真正意义上的构架,这些中间步骤包括:

1、构架模式是对元素和关系类型以及一组对其使用方式的限制的描述,我们可以把它看作是对构架的一组制约条件——即对各元素类型及其交互模式的限制条件,而这些制约条件确定了一组或一系列能满足他们要求的构架,比如,客户机/服务器构架模式。

构架模式最重要的作用是它们展示了已知的质量属性。

2、参考模型是一种考虑数据流的功能划分,它对已知问题进行分解,分解得到的各个部分相互协作,构成问题的解决方案

3、参考构架是映射到软件元素及元素之间数据流上的参考模型

三者之间的关系是:

图软件构架及其中间过程之间的关系

软件构架对于一个系统而言,具有极其重要的意义,包括:

1、软件构架是涉众之间交流的手段

2、软件构架是系统的早期设计决策

3、软件构架是可传递的系统抽象

为了能够清晰的表达构架,我们引入了如下两个概念:

视图——视图是构架元素内聚集的表述,由系统涉众编写和阅读,它由一个元素集合表示和元素之间的关系组成,用于表示构架中的某个结构

结构——结构是元素本身的集合,他们存在于软件和硬件中,比如,模块结构是系统的模块和其组织的结构,模块视图是该结构的表示

我们使用视图和结构来表示系统的构架,构架结构根据元素的主要特性可以分为三类:

1、模块结构:

表示一种考虑系统的基于代码的表示方法

2、组件—连接器结构:

展示了软件运行是各个部分之间的交互

3、分配结构:

展示了软件元素和创建并执行软件的一个或多个外部环境中的元素之间的关系

图常见的软件构架结构

第三周A-7E案例分析各种构架结构的运用

A-7E航空电子系统项目的开发主要展示了3种不同构架结构在一个系统中的作用和表述。

该项目的目的:

通过该项目的开发证实软件工程的理论研究成果适用于需求灵活、内存占用少、开发时间短的软件系统,其指导思想:

留下一个完整的工程模型,把相关的文档、设计方案、代码、方法和原则都公之于众,供相关人员模仿使用。

从该项目的开发中获得了以下两条经验:

1、信息隐藏是软件开发中可行的和明智的设计准则

2、从实现系统质量指标的角度看,认真设计构架层次上的各种结构可以达到事半功倍的效果

图A-7E航空电子系统的构架商业周期

构建A-7E系统构架时,设计并确定了构架层次上的3个结构

结构

元素

元素间的关系

影响对象

分解结构

模块

是一个子模块,共享秘密

更改容易程度

使用结构

过程

要求正确出现

实现子集和增量式开发的能力

进程结构

进程、线程

同步、互斥,共享CPU

可调度性;可并行实现性能目标

A-7E软件所满足的质量目标包括:

1、实时性能,软件系统每秒钟显示内容的更新次数和武器投放的计算速度

2、针对期望更改的可修改性,对武器、平台、显示屏上符号的变更,以及通过键盘数据新的内容容易更改

A-7E软件的三个结构

分解结构将系统的功能划分为可以独立实现的模块,模块划分的具体目标:

1、每个模块结构应足够简单,能够被充分理解

2、应该能够在无需了解其他模块的具体实现,并且不影响其它模块的行为的情况下修改某个模块的实现

3、对设计进行修改的容易程度应该与该修改可能发生的程度有合理的对应关系

4、应该能够把要对软件系统做的比较大的改动分解成对各个模块的一组独立的修改

A-7E软件的一级模块结构包括:

硬件隐藏模块、行为隐藏模块和软件决策模块。

使用结构的思想是建立在使用关系的基础上的。

如果过程A的运行必须以过程B的正确运行为前提,则我们说过程A使用过程B

图使用结构的分层图

进程结构是以一组协同顺序的进程来实现的,这些协同顺序进程保持同步关系、以协调对共享资源的使用

第四周理解构架质量属性(上)

我们开发一个系统是为了给用户使用,因此系统的质量好坏最终要由用户来评判。

评判的依据:

1、系统是否能够满足客户的功能需求(直接)

2、系统是否能够满足一定的质量需求(间接,长期的影响)

功能性(functionality)是指系统能够完成所期望的工作的能力

质量属性(qualityattributes)是高于系统功能基本要求的,它是对多种更高层次需求的抽象描述,如安全、可靠、易用及易于修改等,显然它适用于多个特定系统而非一个。

构架是实现质量需求的软件创建中的第一阶段,软件构架确定了该构架对特定质量属性的支持,比如实时性,安全性等。

构架和质量属性的关系:

1、对我们关心的许多系统质量属性的实现而言,构架具有重要意义

2、对一个构架而言,往往只支持某些质量属性

3、构架并不能独立实现质量属性,它为质量属性的实现提供了基础,但不是全部

实际上,构架之所以重要,就是因为它能够保证设计系统的质量属性。

质量属性是一个较为抽象的概念,为了能够清晰的表达质量属性,我们使用了质量属性场景的概念。

质量属性场景(scenarios)是描述质量属性的手段,是一种面向特定的质量属性的需求,质量属性场景由以下6个部分组成:

1、刺激源(Sourceofstimulus):

生成刺激的实体(人、计算机或其他)

2、刺激(Stimulus):

当刺激源产生的刺激达到系统后需要考虑的条件,或指可能对系统的影响

3、环境(Environment):

刺激到达时系统的状态,或指刺激在系统的某些条件内发生

4、制品(Artifact):

被刺激的部分,可能是整个系统,也可能是其中的一部分

5、响应(Response):

刺激到达后系统所采取的措施

6、响应度量(Responsemeasure):

当响应发生时,我们以某种方式对其进行度量,便于我们对需求进行测试

一般质量属性场景是指那些独立于系统,很可能适合任何系统的场景,一般场景的集合描述了质量属性

具体质量属性场景是指适合正在考虑的某个特定系统的场景

图质量属性、质量属性场景和系统的关系

本书主要讨论6个质量属性及其一般场景:

1、可用性(Availability),2、可修改性(Modifiability),3、性能(Performance),4、安全性(Security),5、可测试性(Testability),6、易用性(Usability)

1、可用性(Availability)

可用性与系统故障及其相关后果有关。

当系统不再提供其规范中所说明的服务时,就出现了系统故障。

可用性关注的问题:

如何检测故障,发生故障的频度,出现故障时的现象,系统故障排除的时限,如何防止故障的发生以及发生故障时的处理

图可用性的一般场景

2、可修改性(Modifiability)

可修改性是关于变更的成本问题,可修改性包括两个关注点:

1、可以修改什么?

如修改系统功能、系统运行的平台和环境、系统容量、质量属性等

2、何时进行变更以及由谁进行变更?

修改时间包括设计时修改(源代码)、编译时修改(编译条件),部署时修改(系统配置)等

第五周理解构架质量属性(下)

3、性能(Performance)

性能与事件发生时,将要耗费系统多长时间做出响应有关。

影响性能的因素包括:

事件源的数量和达到模式,到达系统的事件包括:

周期性事件、随机事件或偶然事件

性能的一般性场景

场景部分

可用的值

刺激源

大量独立源中的一个,可能来自系统内部

刺激

定期、随机或偶然事件到达

制品

环境

正常模式;超载模式

响应

处理刺激;改变服务级别

相应度量

等待时间、时间期限、吞吐量、抖动、缺失率、数据丢失

4、安全性(Security)

安全性是衡量系统在向合法用户提供服务的同时,阻止非授权使用的能力

安全性被刻画为一个提供认可(交易不能被交易的任何一方拒绝)、机密性(XX不能访问数据或服务)、完整性(根据计划来提交数据或服务)、保证(交易各方是所声称的人)、可用性(系统可用于合法用途)和审核(在系统内部跟踪系统活动)的系统

安全性的一般性场景

场景部分

可用的值

刺激源

授权或非授权用户;访问了有限的资源/大量资源

刺激

试图修改数据,访问系统服务

制品

系统服务、系统中的数据

环境

在线或离线、直接或通过防火墙入网

响应

对用户验证,阻止或允许访问数据或服务

相应度量

避开安全措施所需要的时间或资源;恢复数据/服务

5、可测试性(Testability)

可测试性是指通过测试揭示软件缺陷的容易程度。

如果要对系统进行正确的测试,那么必须能够“控制”每个组件的内部状态及其输入,然后“观察”其输出,测试可以由开发人员、测试人员、验证人员或用户进行;可以对代码、设计以及整个系统进行测试

可测试性的一般性场景

场景部分

可用的值

刺激源

单元开发人员、系统集成人员、系统验证人员、测试人员、用户

刺激

已完成的一个阶段,如分析、构架、类和子系统的集成,所交付的系统

制品

设计、代码段、完整的应用

环境

设计时、开发时、编译时、部署时

响应

可以控制系统执行所期望的测试

相应度量

已执行的可执行语句的百分比;最长测试链的长度,执行测试的时间,准备测试环境的时间

6、易用性(Usability)

易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持种类。

包括如下几个方面:

1、学习系统的特性,2、有效地使用系统,提高用户操作效率,3、将错误的影响降到最低,4、使系统适应用户的需要,5、提高自信和满意度。

易用性的一般性场景

场景部分

可用的值

刺激源

最终用户

刺激

想要学习系统特性、有效使用系统、使错误的影响最低,适配系统等

制品

系统

环境

在运行时或配置时

响应

上下文相关的帮助系统,导航,撤销、取消操作,从系统故障中恢复,国际化,定制能力

相应度量

任务时间,错误数量,用户满意度等

本章除了讲述上面6种质量属性之外,还对商业质量属性和构架本身的质量属性作了介绍,以下是我们所关心的商业目标:

1、上市时间

2、成本和收益

3、所希望的系统生命期的长短

4、目标市场,通用市场还是专用市场

5、推出计划

6、与老系统的集成

构架的质量属性包括:

1、概念完整性,在各个层次上统一系统设计的根本指导思想

2、正确性和完整性,这是构架能够满足系统的各种需求及运行时的资源要求的必要条件

3、可构建性,保证能够由指定的开发小组在规定的时间里及时开发系统,并允许在开发过程中做某些更改,其目的是最大程度地实现并行开发

第六周实现质量属性(上)

质量属性对于一个软件系统而言至关重要,那么我们如何来实现这些质量属性呢?

首先我们来了解一些基本概念

战术(tactics)——影响质量属性响应的设计决策

构架策略(architecturalstrategy)——战术的集合

构架模式(architecturalpattern)——以某种方式将战术打包在一起

战术是帮助我们实现质量属性的策略,下面我们就对每一种质量属性所采用的战术进行讨论

1、可用性(Availability)

可用性战术将会阻止错误发展为故障,或者至少能够把错误的影响限制在一定范围内,从而使修改成为可能。

维持可用性的方法包括:

1、错误预防——某种类型的冗余

2、错误检测——用来检测故障的某种类型的健康监视

3、自动恢复——检测到故障时某种类型的恢复

图可用性战术

2、可修改性(Modifiability)

可修改性战术的目标是控制实现、测试和部署变更的时间和成本。

根据其实现目标可以分为3组:

1、局部化修改——目标是减少由某个变更直接影响的模块的数量

2、防止连锁反应——目标是限制对局部化的模块的修改,以防止对某个模块的修改间接地影响到其他模块

3、延迟绑定时间——目标是控制部署时间并允许非开发人员进行修改

图可修改性战术

第七周实现质量属性(下)

3、性能(Performance)

性能战术的目标是对一定的时间限制内到达系统的事件生成一个响应,这些事件可以使消息到达、定时器到时,系统状态的变化。

性能战术包括3个分类:

1、资源需求——分析影响性能的资源因素

2、资源管理——提高资源的应用效率

3、资源仲裁——解决资源的争用

图性能战术

4、安全性(Security)

安全性战术包括抵抗攻击的战术、检测攻击的战术和从攻击从恢复的战术

图安全性战术

5、可测试性(Testability)

可测试性战术的目标是允许在完成软件开发的一个增量后,轻松地对软件进行测试。

测试的目标是发现错误

图可测试性战术

6、易用性(Usability)

易用性与用户完成期望任务的难易程度以及系统为用户提供的支持种类有关

图易用性战术

战术与构架模式的关系:

战术用于响应某个特定的系统质量属性;构架模式是将战术以某种方式进行打包,以一个战术的集合来支持某种构架。

比如,一个系统支持可用性和性能,那么我们可能会考虑冗余战术、同步战术、并发战术等等,这些特定于一类系统的战术集合我们称之为构架模式

第八周空中交通管制系统——高可用性设计方案

首先向同学介绍空中交通管制系统(AirTrafficControl)的背景知识,空中交通管制(ATC)是指由人通过一定的设备来对民航系统的各航班进行必要的规划、指挥和管理;空中交通管制系统是辅助空中交通管制的一整套设备,包括雷达、雷达显示,数据通讯、数据记录等等,其中最重要的是雷达数据处理和雷达显示终端

图空中交通管制系统的构架商业周期

本节讨论的构架为初始区段组系统(InitialSectorSuiteSystem,ISSS),它是对美国22个中途中心的软硬件升级系统。

ISSS系统的质量属性要求:

1、极高的可用性:

保证系统不能正常工作的状态只延续极短的时间(全年5分钟)

2、高性能:

系统必须在不“丢失”任何数据的情况下对大量数据(2440架飞机)进行处理

其他需求:

1、开放性:

系统必须能够与按商业运作开发出来的其它软件进行集成,比如航图显示系统,2、可提交的子系统,3、能够更改功能和处理软硬件的升级,4、能够与众多的外部系统相接并协同工作

为了实现ATC系统极高的可用性,在构架中大量的采样了冗余战术,包括硬件冗余和软件冗余。

为了实现高性能,采用了并发和资源调度等战术

图ISSS系统的物理视图(采用了大量冗余设计战术)

图ISSS系统的一级模块分解视图

第九周设计构架

构架和质量属性之间是相互相成的,我们学习质量属性是为了更好地设计我们的构架,构架反过来又保证质量属性的实现。

任何一个好的系统都具有的两个特性:

1、存在一个强大的构架构想

2、应用管理良好的迭代式增量开发周期

演变交付生命期模型使开发的软件系统具有上述两个特征

功能、质量和商业需求的某个集合塑造了构架。

我们把这些塑造需求称为构架驱动因素

我们这里讲解的构架设计方法就是属性驱动的设计方法(AttributeDrivenDesign,ADD),该方法可以用于设计一个满足一定质量需求和功能需求的构架

ADD把一组质量属性场景作为输入,并使用对质量属性实现和构架之间的关系的了解,对构架进行设计。

ADD设计的结果是构架的模块分解视图和其他视图的最初几个层次。

ADD方法的步骤

1、选择要分解的模块

2、根据下面的步骤对模块进行求精

a、从具体的质量场景和功能需求集合中选择构架驱动因素

b、选择满足构架驱动因素的构架模式,根据用来实现驱动因素的战术创建模式

c、实例化模块并根据用例分配功能,使用多个视图进行表示

d、定义子模块的接口。

该分解提供了模块和对模块交互类型的限制

e、验证用例和质量属性场景并对其进行求精,使它们成为子模块的限制

3、对需要进一步分解的每个模块重复上述步骤

在构架的模块分解结构的最初几个层次稳定后,就可以把这些模块分配给开发小组,这就是工作分配视图,分配任务的原则:

1、开发小组内部是高内聚,外部是松耦合

2、根据开发小组的特长进行分配

3、尽量与模块的分界原则一致

在使用ADD方法完成了系统的构架设计之后,就可以构建系统的骨架系统了。

本章通过一个车库门系统设计的例子来加强对ADD构架设计方法的理解。

第十周飞行模拟器:

构架可集成性案例分析

飞机飞行训练模拟器主要用于民用与军用飞机飞行员的飞行训练以及飞机制造工程模拟。

作为飞行员培养的主要手段。

飞行模拟器是当今世界上最复杂的软件系统之一。

它具有很强的分布性,有严格的时间要求,而且还必须能够经常更新,以保持与所模拟的不断变化的飞行器及环境的逼真性。

飞行模拟器具有以下4个特征:

1、实时性能要求严格——飞行模拟器必须保持非常高的显示帧频和响应速度,如果响应延迟会引发所谓的模拟厌倦症

2、连续的开发和修改——采用飞行模拟系统是为了在实际的飞机训练代价昂贵或非常危险时,用飞行模拟系统提供等效的训练环境,因此需要适应于不同的飞机和不同的环境状态

3、规模大、复杂程度高——飞行模拟软件一般需要上百万行的软件代码

4、在分散的地理位置上开发

根据上述特征,这里列举了飞行模拟器的质量属性要求:

1、性能,2、可修改性,3、可集成性——使单独开发的元素协同工作,以实现软件的需求,对于这个属性可以采用的战术有:

使接口简单、稳定;遵守已定义的协议;元素之间的依赖最小;使用组件框架;使用已有版本的接口等

图飞行模拟机的构架商业周期

飞行模拟系统中存在的两个严重问题:

1、调试、测试和修改代价很高,2、软件结构和飞机结构的对应关系不明确

为了解决飞行模拟系统中存在的这两个问题,我们采用结构化的模型构架方式,该构架方式强调:

1、系统子结构的简单性和相似性,2、将数据和控制信息的传递策略与运算分离开,3、模块类型数量最少,4、较少的系统及协调策略(性能),5、设计的透明性(信息隐藏)

飞行模拟器的结构化模型构架模式分为两部分:

1、管理部分

管理部分处理协调问题:

子系统的实时调度、处理器的同步、数据共享,数据完整性等。

管理部分由以下4个部分构成:

1、时间同步器:

它负责维持系统内部时钟

2、周期时序器:

用于完成模拟子系统所要做的周期性处理

3、事件处理器:

协调子系统所做的所有非周期性处理

4、代理:

负责完成飞行器模型和环境模型或教练台模型之间的系统级通信

2、应用部分

应用部分处理飞行模拟系统的运算,对飞行器建模,其功能由子系统和组件两部分完成。

尽管飞行模拟系统规模很大,但仅用6个模块类型就可以描述这个系统,包括:

组件、子系统、时间同步器、周期时序器、事件处理器和代理。

这使得构架容易构建、理解、集成、发展和修改。

图飞行模拟器的模块分解视图

第十一周构架编档

我们为系统设计的构架起到涉众之间交流的作用。

为了得到我们的最终构架以及方便涉众之间的交流,我们需要对设计的构架进行编档。

构架编档(DocumentingSoftwareArchitectures)是对构架的描述,构架必然存在,构架编档不一定存在;构架的建立源于系统的需求,构架文档的编写源于构架描述、交流的需求,构架编写的基本规则是:

从读者的角度进行编写

构架编档既然如此重要,我们该如何对构架进行编档呢?

构架编档包括如下三部分内容:

1、视图编档;2、接口编档;3、视图的组织

下面就分别对这三部分对容进行详细介绍

一、视图编档

视图(View)就是构架元素的内聚集合的表示,由系统涉众编写和阅读;

软件构架(SoftwareArchitecture)是由多个视图构成,并且表示了这些视图之间的关系。

构架编档就是将相关视图编成文档,然后向其中添加适合多个视图的文件。

我们需要对软件构架中的每一个视图进行编档,每个编档视图通常包含7部分的内容:

1、展示视图中的元素和元素间关系的主要表示

2、使用元素目录描述在主要表示中所描述的元素和他们之间的关系及其他。

在这一部分内容中我们将对元素的行为和元素接口进行描述

3、展示在视图中描述的系统的环境相关上下文

4、可变性指南展示了如何应用该视图中所展示的构架的一部分的任何变化点,应该包含每个变化点的文档

5、解释视图中所反映的设计合理性的构架背景,包括:

基本原理,分析结果,设计中所反映的假定

6、视图中所使用的术语表

7、其他信息,如管理信息等

二、、视图编档

接口(Interface)是两个独立的实体相遇并进行交互或通信的边界,由于接口展示了软件元素之间的交互关系,对于软件构架而言非常重要,因此需要对构架中的接口单独编档,接口编档属于视图编档的一部分内容。

对接口进行编档就是在暴露太少信息和太多信息之间达到一个平衡,经验就是把重点放在元素如何与其操作环境进行交互上,而非放在其实现方式上。

接口文档的模板包括9个部分的内容:

1、接口身份,通常是接口命名

2、所提供的资源,这是接口文档的核心,包括资源语法、语义和资源使用的限制

3、数据类型的定义

4、异常定义,描述可以由接口上资源引发的异常

5、该接口提供的可变性,可变性示例包括可见数据结构的容量以及基础算法的性能等

6、接口的质量属性特征,可以把接口元素的质量属性特征编成文档

7、元素需求,可能是具体的、由其它元素提供的已命名资源

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1