软件体系结构(SA)概论.ppt
《软件体系结构(SA)概论.ppt》由会员分享,可在线阅读,更多相关《软件体系结构(SA)概论.ppt(78页珍藏版)》请在三一办公上搜索。
1、软件体系结构(SA)概论,陈虔,2023/6/25,2,1、SA基础,SA基础;SA的地位;SA技术现状及发展趋势;SA建模;,2023/6/25,3,研究背景,20世纪60年代末开始出现的“软件危机”软件组件和软件重用的推动关于SA研究的兴起,2023/6/25,4,关于软件危机,软件的先天不足1968年在原西德加密施(Garmish)召开的国际软件工程会议上被人们普遍认识到。软件工程的尴尬,2023/6/25,5,从软件危机谈起,软件危机的表现软件成本日益增长开发进度难以控制软件质量差软件维护困难,2023/6/25,6,软件危机的原因,用户需求不明确缺乏正确的理论指导软件规模越来越大软件
2、复杂度越来越高,2023/6/25,7,如何克服软件危机,人们面临的不光是技术问题,更重要的是管理问题。管理不善必然导致失败。用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理和维护。软件工程因此而诞生。它在软件开发方法、工具、管理等方面的应用大大缓解了软件危机造成的被动局面。,2023/6/25,8,软件工程,软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。包括三个要素:方法。软件工程方法为软件开发提供了如何做的技术,是完成软件工程项目的技术手段;工具。软件工具是人类在开发软件的活动中智力和体力的扩展和延伸,为软件工程方法提供了自动的或半自动的软件
3、支撑环境;过程。软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。,2023/6/25,9,组件与软件重用,软件重用指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。这种可重用的元素称作软组件,可重用的软件元素越大,其重用的粒度就越大。,2023/6/25,10,软件重用的好处,可以减少软件开发活动中大量的重复性工作,从而:提高软件生产率降低开发成本缩短开发周期由于软组件大都经过严格的质量认证,并在实际运行环境中得到校验,因此,重用软组件有助于改善软件质量。
4、大量使用软组件,软件的灵活性和标准化程度也可望得到提高。,2023/6/25,11,软件组件,直观的理解组件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辩识的系统;是语义描述、通讯接口和实现代码的复合体。是具有一定的功能,能够独立工作或能同其它组件装配起来协调工作的程序体,组件的使用同他的开发、生产无关。,2023/6/25,12,软件组件与类,从抽象程度来看面向对象技术已达到了类级重用(代码重用),是类封装。重用粒度太小,不足以解决异构互操作和效率更高的重用。组件将抽象的程度提到一个更高的层次,它对一组类的组合进行封装,并代表完成一个或多个功能的特定服务,也为用户
5、提供了多个接口。组件隐藏了具体的实现,只用接口提供服务。,2023/6/25,13,组件技术的三个主流,组件技术发展迅速,已形成三个主要流派:IBM支持的CORBA Sun的Java平台Microsoft的COM+。,2023/6/25,14,组件的分类,如果把软件系统看成是组件的集合,那么从组件的外部形态来看,构成一个系统的组件可分为5类:独立而成熟的组件有限制的组件适应性组件装配的组件可修改的组件,2023/6/25,15,组件的分类,独立而成熟的组件得到了实际运行环境的多次检验,它们隐藏了所有接口,用户只需用规定好的命令进行使用。如数据库管理系统和操作系统等。有限制的组件它们提供了接口,
6、指出了使用的条件和前提,这种组件在装配时,会产生资源冲突、覆盖等影响,在使用时需要加以测试。例如,各种面向对象对象程序设计语言中的基础类库等。,2023/6/25,16,组件的分类,适应性组件用封装和接口技术,把不兼容性、资源冲突等进行了处理,可直接使用在各种环境中。例如ActiveX等。装配的组件已经装配在操作系统、数据库管理系统或信息系统不同层次上,使用胶水代码(Blue Code)就可以进行连接使用。软件商提供的多数软件产品都属这一类。,2023/6/25,17,组件的分类,可修改的组件可修改的组件可以进行版本替换。如果对原组件修改错误、增加新功能,可以利用重新“包装”或写接口来实现组件
7、的替换。这种组件在应用系统开发中使用得比较多。,2023/6/25,18,组件的获取,组件获取可以有多种不同的途径:从现有组件中获得符合要求的组件,直接使用或作适应性修改,得到可重用的组件;通过遗传工程,将具有潜在重用价值的组件提取出来,得到可重用的组件;从市场上购买现成的商业组件,即COTS组件;开发新的符合要求的组件。,2023/6/25,19,SA的兴起,1960s的软件危机引发了软件工程的研究。早期的软件工程将软件设计的重点放在数据结构和算法的选择上。如今,系统的结构和规格说明显得更重要软件危机的程度日益加剧,现有的软件工程方法显得力不从心。对于大规模复杂软件系统来说,系统结构设计和规
8、格说明比算法和数据结构的选择更重要。对SA的系统和深入的研究将会成为提高软件生产率和解决软件维护问题的最有希望的途径之一。,2023/6/25,20,SA不是空穴来风,自从软件系统首次被分成许多模块,模块之间有相互作用,组合起来有整体的属性,就具有了体系结构。好的开发者常常会使用一些体系结构模式作为软件系统结构设计策略,但他们并没有规范地、明确地表达出来,这样就无法将他们的知识与别人交流。SA是设计抽象的进一步发展,满足了更好地理解软件系统,更方便地开发更大、更复杂的软件系统的需要。,2023/6/25,21,软件与建筑的类比,软件总是有体系结构的,不存在没有体系结构的软件。如同一座建筑物,软
9、件也有它的:基础(操作系统之上的基础设施软件)主体(实现计算逻辑的主体应用程序)装饰(方便使用的用户界面程序)等。,2023/6/25,22,对应于建筑的软件构建过程,预设计阶段初步了解设计轮廓域分析阶段详细了解明确的需求图解设计阶段外观设计(GUI等)原型设计开发阶段完善设计用户证实项目文档阶段技术文档技术路线的确定人员配合域合约签订阶段确定标的招标构件阶段监督项目实施需求的变更设计后构建阶段培训维护,2023/6/25,23,软件与结构化程序设计,从细节上来看,每一个程序也是有结构的。早期的结构化程序就是以语句组成模块,模块的聚集和嵌套形成层层调用的程序结构,这也是SA的表现形式之一。结构
10、化程序的程序(表达)结构和(计算的)逻辑结构的一致性及自顶向下开发方法自然而然地形成了体系结构。由于结构化程序设计时代程序规模不大,通过强调结构化程序设计方法学,自顶向下、逐步求精,并注意模块的耦合性就可以得到相对良好的结构,所以,并未特别研究SA。,2023/6/25,24,SA、建筑、结构化程序设计,结构化程序设计时代是以砖、瓦、灰、沙、石、预制梁、柱、屋面板盖平房和小楼面向对象时代以整面墙、整间房、一层楼梯的预制件盖高楼大厦。这些大粒度的框架设计与复用就成为SA的基本特征之一;,2023/6/25,25,SA现代软件工程的发展,组件怎样搭配才合理?体系结构怎样构造容易?重要组件有了更改后
11、,如何保证整栋高楼不倒?每种应用领域需要什么组件(医院、工厂、旅馆)?有哪些实用、美观、强度、造价合理的组件骨架使建造出来的建筑(即体系结构)更能满足用户的需求?软件从传统的软件工程进入到现代面向对象的软件工程,研究整个软件系统的体系结构,寻求建构最快、成本最低、质量最好的构造过程。,2023/6/25,26,对SA的研究,SA虽脱胎于软件工程,但其形成同时借鉴了计算机体系结构和网络体系结构中很多宝贵的思想和方法,最近几年SA研究已完全独立于软件工程的研究,成为计算机科学的一个最新的研究方向和独立学科分支。SA研究的主要内容涉及SA描述、SA风格、SA评价和SA的形式化方法等。解决好软件的重用
12、、质量和维护问题,是研究SA的根本目的。,2023/6/25,27,SA的定义,虽然SA已经在软件工程领域中有着广泛的应用,但迄今为止还没有一个被大家所公认的定义。许多专家学者从不同角度和不同侧面对SA进行了刻画,较为典型的定义有:,2023/6/25,28,Booch、Rumbaugh和Jacobson的定义,SA组织,元素,子系统,风格SA是一系列重要决策的集合即:SA与软件组织、系统的结构元素、接口的选择、元素的行为及子系统及风格密切相关,2023/6/25,29,Perry和Wolf的定义,SA元素,形式,准则SA是具有一定形式的结构化元素的集合,包括处理组件、数据组件和连接组件。处理
13、组件负责对数据进行加工,数据组件是被加工的信息,连接组件把体系结构的不同部分组组合连接起来。这一定义注重区分处理组件、数据组件和连接组件,这一方法在其他的定义和方法中基本上得到保持。,2023/6/25,30,Shaw和Garlan的定义,SA构件,连接件,约束SA是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。SA处理算法与数据结构之上的关于整体系统结构设计和描述方面的一些问题,如:全局组织和全局控制结构、关于通讯、同步与数据
14、存取的协议,设计组件功能定义,物理分布与合成,设计方案的选择、评估与实现等。,2023/6/25,31,Kruchten的定义,SA有四个角度,它们从不同方面对系统进行描述:概念角度:描述系统的主要组件及它们之间的关系模块角度:包含功能分解与层次结构;运行角度:描述了一个系统的动态结构;代码角度:描述了各种代码和库函数在开发环境中的组织。,2023/6/25,32,Hayes Roth的定义,SA是一个抽象的系统规范,主要包括用其行为来描述的功能组件和组件之间的相互连接、接口和关系。,2023/6/25,33,Garlan和Perry的定义,1995年,在IEEE软件工程学报上,David G
15、arlan和Dewne Perry定义:SA是一个程序系统各组件的结构、它们之间的相互关系以及进行设计的原则和随时间进化的指导方针。,2023/6/25,34,Boehm的定义,SA构件,连接件,约束、不同人员的需求、准则Barry Boehm和他的学生的定义:一个SA包括:一个软件和系统组件,互联及约束的集合;一个系统需求说明的集合;一个基本原理用以说明这一组件,互联和约束能够满足系统需求。,2023/6/25,35,Bass的定义,1997年,Bass,Ctements和Kazman在使用SA一书中给出如下的定义:一个程序或计算机系统的SA包括一个或一组软件组件、软件组件的外部的可见特性及
16、其相互关系。其中,软件外部的可见特性是指软件组件提供的服务、性能、特性、错误处理、共享资源使用等。,2023/6/25,36,IEEE610.12-1990定义,SA构件,连接件,环境、原理,2023/6/25,37,我们的定义(理解),SA是软件系统的一个结构、行为和属性的高级抽象,它由构成系统的元素的描述、元素间的相互作用、指导元素集成的模式以及这些模式的约束所组成。SA不仅指定了系统的组织结构和拓扑结构,也显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。,2023/6/25,38,SA的基本概念图,软件体系结构,构件,连接件,约束,端口,角色,通用风格,管道/
17、过滤器,分层,解释器,1*,1*,1*,2023/6/25,39,SA的基本概念图,SA:=软件体系模型|软件体系风格软件体系模型:=(构件,连接件,约束构件:=端口1,端口2端口n连接件:=角色1,角色2角色m约束:=(端口i,角色j)软件体系风格:=管道过滤器、客户服务器解释器,2023/6/25,40,SA的发展与现状,SA尚处在迅速发展之中,越来越多的研究人员正在把注意力投向SA的研究。用于对SA进行规格描述的模型、标记法和工具仍很不正规。为使之更为精确和健壮,很多的研究工作都在进行中。,2023/6/25,41,SA的发展历程,无体系结构设计阶段萌芽阶段初级阶段高级阶段综合阶段,20
18、23/6/25,42,SA的发展历程,无体系结构设计阶段1946年的ENIAC,软件问世1950s的Fortran、COBOL出现、1960s ALGOL出现以汇编语言为基本的设计语言系统规模很小,很少考虑SA,也基本不存在软件系统建模问题,2023/6/25,43,SA的萌芽阶段,标志事件1968年的NATO会议上,软件工程的概念首次出现软件开发方法、开发模型、开发工具等研究开始1970s的PASCAL语言出现结构化软件开发技术围绕项目提出了费用估算、文档复审等方法和工具数据结构、程序模块化等特征出现软件工程方法及CASE工具出现SA已经成为系统开发的一个明确概念由于软件规模不大,结构化程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 体系结构 SA 概论
链接地址:https://www.31ppt.com/p-5319365.html