版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件体系结构(SA)概论陈虔mrchenq@126.com1/4/20231软件体系结构(SA)软件体系结构(SA)概论陈虔12/30/20221软件体系结1、SA基础SA基础;SA的地位;SA技术现状及发展趋势;SA建模;1/4/20232软件体系结构(SA)1、SA基础SA基础;12/30/20222软件体系结构(S研究背景20世纪60年代末开始出现的“软件危机”软件组件和软件重用的推动关于SA研究的兴起1/4/20233软件体系结构(SA)研究背景20世纪60年代末开始出现的“软件危机”12/30/关于软件危机软件的先天不足1968年在原西德加密施(Garmish)召开的国际软件工程会议上被人们普遍认识到。软件工程的尴尬1/4/20234软件体系结构(SA)关于软件危机软件的先天不足12/30/20224软件体系结构从软件危机谈起软件危机的表现软件成本日益增长开发进度难以控制软件质量差软件维护困难1/4/20235软件体系结构(SA)从软件危机谈起软件危机的表现12/30/20225软件体系结软件危机的原因用户需求不明确缺乏正确的理论指导软件规模越来越大软件复杂度越来越高1/4/20236软件体系结构(SA)软件危机的原因用户需求不明确12/30/20226软件体系结如何克服软件危机人们面临的不光是技术问题,更重要的是管理问题。管理不善必然导致失败。用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理和维护。软件工程因此而诞生。它在软件开发方法、工具、管理等方面的应用大大缓解了软件危机造成的被动局面。1/4/20237软件体系结构(SA)如何克服软件危机人们面临的不光是技术问题,更重要的是管理问题软件工程软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。包括三个要素:方法。软件工程方法为软件开发提供了"如何做"的技术,是完成软件工程项目的技术手段;工具。软件工具是人类在开发软件的活动中智力和体力的扩展和延伸,为软件工程方法提供了自动的或半自动的软件支撑环境;过程。软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。1/4/20238软件体系结构(SA)软件工程软件工程是用工程、科学和数学的原则与方法研制、维护计组件与软件重用软件重用指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。这种可重用的元素称作软组件,可重用的软件元素越大,其重用的粒度就越大。1/4/20239软件体系结构(SA)组件与软件重用软件重用12/30/20229软件体系结构(S软件重用的好处可以减少软件开发活动中大量的重复性工作,从而:提高软件生产率降低开发成本缩短开发周期由于软组件大都经过严格的质量认证,并在实际运行环境中得到校验,因此,重用软组件有助于改善软件质量。大量使用软组件,软件的灵活性和标准化程度也可望得到提高。1/4/202310软件体系结构(SA)软件重用的好处可以减少软件开发活动中大量的重复性工作,从而:软件组件直观的理解组件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辩识的系统;是语义描述、通讯接口和实现代码的复合体。是具有一定的功能,能够独立工作或能同其它组件装配起来协调工作的程序体,组件的使用同他的开发、生产无关。1/4/202311软件体系结构(SA)软件组件直观的理解组件12/30/202211软件体系结构(软件组件与类从抽象程度来看面向对象技术已达到了类级重用(代码重用),是类封装。重用粒度太小,不足以解决异构互操作和效率更高的重用。组件将抽象的程度提到一个更高的层次,它对一组类的组合进行封装,并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。组件隐藏了具体的实现,只用接口提供服务。1/4/202312软件体系结构(SA)软件组件与类从抽象程度来看12/30/202212软件体系结组件技术的三个主流组件技术发展迅速,已形成三个主要流派:IBM支持的CORBASun的Java平台Microsoft的COM+。1/4/202313软件体系结构(SA)组件技术的三个主流组件技术发展迅速,已形成三个主要流派:12组件的分类如果把软件系统看成是组件的集合,那么从组件的外部形态来看,构成一个系统的组件可分为5类:独立而成熟的组件有限制的组件适应性组件装配的组件可修改的组件1/4/202314软件体系结构(SA)组件的分类如果把软件系统看成是组件的集合,那么从组件的外部形组件的分类独立而成熟的组件得到了实际运行环境的多次检验,它们隐藏了所有接口,用户只需用规定好的命令进行使用。如数据库管理系统和操作系统等。有限制的组件它们提供了接口,指出了使用的条件和前提,这种组件在装配时,会产生资源冲突、覆盖等影响,在使用时需要加以测试。例如,各种面向对象对象程序设计语言中的基础类库等。1/4/202315软件体系结构(SA)组件的分类独立而成熟的组件12/30/202215软件体系结组件的分类适应性组件用封装和接口技术,把不兼容性、资源冲突等进行了处理,可直接使用在各种环境中。例如ActiveX等。装配的组件已经装配在操作系统、数据库管理系统或信息系统不同层次上,使用胶水代码(BlueCode)就可以进行连接使用。软件商提供的多数软件产品都属这一类。1/4/202316软件体系结构(SA)组件的分类适应性组件12/30/202216软件体系结构(S组件的分类可修改的组件可修改的组件可以进行版本替换。如果对原组件修改错误、增加新功能,可以利用重新“包装”或写接口来实现组件的替换。这种组件在应用系统开发中使用得比较多。1/4/202317软件体系结构(SA)组件的分类可修改的组件12/30/202217软件体系结构(组件的获取组件获取可以有多种不同的途径:从现有组件中获得符合要求的组件,直接使用或作适应性修改,得到可重用的组件;通过遗传工程,将具有潜在重用价值的组件提取出来,得到可重用的组件;从市场上购买现成的商业组件,即COTS组件;开发新的符合要求的组件。1/4/202318软件体系结构(SA)组件的获取组件获取可以有多种不同的途径:12/30/2022SA的兴起1960’s的软件危机引发了软件工程的研究。早期的软件工程将软件设计的重点放在数据结构和算法的选择上。如今,系统的结构和规格说明显得更重要软件危机的程度日益加剧,现有的软件工程方法显得力不从心。对于大规模复杂软件系统来说,系统结构设计和规格说明比算法和数据结构的选择更重要。对SA的系统和深入的研究将会成为提高软件生产率和解决软件维护问题的最有希望的途径之一。1/4/202319软件体系结构(SA)SA的兴起1960’s的软件危机引发了软件工程的研究。12/SA不是空穴来风自从软件系统首次被分成许多模块,模块之间有相互作用,组合起来有整体的属性,就具有了体系结构。好的开发者常常会使用一些体系结构模式作为软件系统结构设计策略,但他们并没有规范地、明确地表达出来,这样就无法将他们的知识与别人交流。SA是设计抽象的进一步发展,满足了更好地理解软件系统,更方便地开发更大、更复杂的软件系统的需要。1/4/202320软件体系结构(SA)SA不是空穴来风自从软件系统首次被分成许多模块,模块之间有相软件与建筑的类比软件总是有体系结构的,不存在没有体系结构的软件。如同一座建筑物,软件也有它的:基础(操作系统之上的基础设施软件)主体(实现计算逻辑的主体应用程序)装饰(方便使用的用户界面程序)等。1/4/202321软件体系结构(SA)软件与建筑的类比软件总是有体系结构的,不存在没有体系结构的软对应于建筑的软件构建过程预设计阶段-初步了解+设计轮廓域分析阶段-详细了解+明确的需求图解设计阶段-外观设计(GUI等)+原型设计开发阶段-完善设计+用户证实项目文档阶段-技术文档+技术路线的确定人员配合域合约签订阶段-确定标的+招标构件阶段-监督项目实施+需求的变更设计后构建阶段-培训+维护1/4/202322软件体系结构(SA)对应于建筑的软件构建过程预设计阶段-初步了解+设计轮廓12/软件与结构化程序设计从细节上来看,每一个程序也是有结构的。早期的结构化程序就是以语句组成模块,模块的聚集和嵌套形成层层调用的程序结构,这也是SA的表现形式之一。结构化程序的程序(表达)结构和(计算的)逻辑结构的一致性及自顶向下开发方法自然而然地形成了体系结构。由于结构化程序设计时代程序规模不大,通过强调结构化程序设计方法学,自顶向下、逐步求精,并注意模块的耦合性就可以得到相对良好的结构,所以,并未特别研究SA。1/4/202323软件体系结构(SA)软件与结构化程序设计从细节上来看,每一个程序也是有结构的。1SA、建筑、结构化程序设计结构化程序设计时代是以砖、瓦、灰、沙、石、预制梁、柱、屋面板盖平房和小楼面向对象时代以整面墙、整间房、一层楼梯的预制件盖高楼大厦。这些大粒度的框架设计与复用就成为SA的基本特征之一;1/4/202324软件体系结构(SA)SA、建筑、结构化程序设计结构化程序设计时代是以砖、瓦、灰、SA—现代软件工程的发展组件怎样搭配才合理?体系结构怎样构造容易?重要组件有了更改后,如何保证整栋高楼不倒?每种应用领域需要什么组件(医院、工厂、旅馆)?有哪些实用、美观、强度、造价合理的组件骨架使建造出来的建筑(即体系结构)更能满足用户的需求?软件从传统的软件工程进入到现代面向对象的软件工程,研究整个软件系统的体系结构,寻求建构最快、成本最低、质量最好的构造过程。1/4/202325软件体系结构(SA)SA—现代软件工程的发展组件怎样搭配才合理?12/30/20对SA的研究SA虽脱胎于软件工程,但其形成同时借鉴了计算机体系结构和网络体系结构中很多宝贵的思想和方法,最近几年SA研究已完全独立于软件工程的研究,成为计算机科学的一个最新的研究方向和独立学科分支。SA研究的主要内容涉及SA描述、SA风格、SA评价和SA的形式化方法等。解决好软件的重用、质量和维护问题,是研究SA的根本目的。1/4/202326软件体系结构(SA)对SA的研究SA虽脱胎于软件工程,但其形成同时借鉴了计算机体SA的定义虽然SA已经在软件工程领域中有着广泛的应用,但迄今为止还没有一个被大家所公认的定义。许多专家学者从不同角度和不同侧面对SA进行了刻画,较为典型的定义有:1/4/202327软件体系结构(SA)SA的定义虽然SA已经在软件工程领域中有着广泛的应用,但迄今Booch、Rumbaugh和Jacobson的定义SA={组织,元素,子系统,风格}SA是一系列重要决策的集合即:SA与软件组织、系统的结构元素、接口的选择、元素的行为及子系统及风格密切相关1/4/202328软件体系结构(SA)Booch、Rumbaugh和Jacobson的定义SA={Perry和Wolf的定义SA={元素,形式,准则}SA是具有一定形式的结构化元素的集合,包括处理组件、数据组件和连接组件。处理组件负责对数据进行加工,数据组件是被加工的信息,连接组件把体系结构的不同部分组组合连接起来。这一定义注重区分处理组件、数据组件和连接组件,这一方法在其他的定义和方法中基本上得到保持。1/4/202329软件体系结构(SA)Perry和Wolf的定义SA={元素,形式,准则}12/3Shaw和Garlan的定义SA={构件,连接件,约束}SA是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。SA处理算法与数据结构之上的关于整体系统结构设计和描述方面的一些问题,如:全局组织和全局控制结构、关于通讯、同步与数据存取的协议,设计组件功能定义,物理分布与合成,设计方案的选择、评估与实现等。1/4/202330软件体系结构(SA)Shaw和Garlan的定义SA={构件,连接件,约束}12Kruchten的定义SA有四个角度,它们从不同方面对系统进行描述:概念角度:描述系统的主要组件及它们之间的关系模块角度:包含功能分解与层次结构;运行角度:描述了一个系统的动态结构;代码角度:描述了各种代码和库函数在开发环境中的组织。1/4/202331软件体系结构(SA)Kruchten的定义SA有四个角度,它们从不同方面对系统进HayesRoth的定义SA是一个抽象的系统规范,主要包括用其行为来描述的功能组件和组件之间的相互连接、接口和关系。1/4/202332软件体系结构(SA)HayesRoth的定义SA是一个抽象的系统规范,主要包括Garlan和Perry的定义1995年,在IEEE软件工程学报上,DavidGarlan和DewnePerry定义:SA是一个程序/系统各组件的结构、它们之间的相互关系以及进行设计的原则和随时间进化的指导方针。1/4/202333软件体系结构(SA)Garlan和Perry的定义1995年,在IEEE软件工程Boehm的定义SA={构件,连接件,约束、不同人员的需求、准则}BarryBoehm和他的学生的定义:一个SA包括:一个软件和系统组件,互联及约束的集合;一个系统需求说明的集合;一个基本原理用以说明这一组件,互联和约束能够满足系统需求。1/4/202334软件体系结构(SA)Boehm的定义SA={构件,连接件,约束、不同人员的需求、Bass的定义1997年,Bass,Ctements和Kazman在《使用SA》一书中给出如下的定义:一个程序或计算机系统的SA包括一个或一组软件组件、软件组件的外部的可见特性及其相互关系。其中,"软件外部的可见特性"是指软件组件提供的服务、性能、特性、错误处理、共享资源使用等。1/4/202335软件体系结构(SA)Bass的定义1997年,Bass,Ctements和KazIEEE610.12-1990定义SA={构件,连接件,环境、原理}1/4/202336软件体系结构(SA)IEEE610.12-1990定义SA={构件,连接件,环境我们的定义(理解)SA是软件系统的一个结构、行为和属性的高级抽象,它由构成系统的元素的描述、元素间的相互作用、指导元素集成的模式以及这些模式的约束所组成。SA不仅指定了系统的组织结构和拓扑结构,也显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。1/4/202337软件体系结构(SA)我们的定义(理解)SA是软件系统的一个结构、行为和属性的高级SA的基本概念图软件体系结构构件连接件约束端口角色通用风格管道/过滤器分层解释器1~*1~*1~*…1/4/202338软件体系结构(SA)SA的基本概念图软件体系结构构件连接件约束端口角色通用风格管SA的基本概念图SA::=软件体系模型|软件体系风格软件体系模型::=(构件,连接件,约束构件::={端口1,端口2…端口n}连接件::={角色1,角色2…角色m}约束::={(端口i,角色j)…}软件体系风格::={管道过滤器、客户服务器…解释器}1/4/202339软件体系结构(SA)SA的基本概念图SA::=软件体系模型|软件体系风格12/3SA的发展与现状SA尚处在迅速发展之中,越来越多的研究人员正在把注意力投向SA的研究。用于对SA进行规格描述的模型、标记法和工具仍很不正规。为使之更为精确和健壮,很多的研究工作都在进行中。1/4/202340软件体系结构(SA)SA的发展与现状SA尚处在迅速发展之中,越来越多的研究人员正SA的发展历程无体系结构设计阶段萌芽阶段初级阶段高级阶段综合阶段1/4/202341软件体系结构(SA)SA的发展历程无体系结构设计阶段12/30/202241软件SA的发展历程『无体系结构』设计阶段1946年的ENIAC,软件问世1950‘s的Fortran、COBOL出现、1960’sALGOL出现以汇编语言为基本的设计语言系统规模很小,很少考虑SA,也基本不存在软件系统建模问题1/4/202342软件体系结构(SA)SA的发展历程『无体系结构』设计阶段12/30/202242SA的萌芽阶段标志事件1968年的NATO会议上,软件工程的概念首次出现软件开发方法、开发模型、开发工具等研究开始1970‘s的PASCAL语言出现结构化软件开发技术围绕项目提出了费用估算、文档复审等方法和工具数据结构、程序模块化等特征出现软件工程方法及CASE工具出现SA已经成为系统开发的一个明确概念由于软件规模不大,结构化程序设计方法基本能满足要求,SA的问题不是主要问题1/4/202343软件体系结构(SA)SA的萌芽阶段标志事件12/30/202243软件体系结构(SA的初级阶段标志事件1980’s,面向对象技术出现Booch、Coad/Yourdon、OMT及Jacobson等方法得到广泛的认可Booch方法提出:类视图、对象视图、状态迁移图、交互作用图、模块图、进程图等UML提出:功能模型、静态模型、动态模型、配置模型等1994年的UML,综合了Booch、OMT和Jacobson等方法的特点,统一了符号体系OMG于1997年正式采纳UML1.1作为建模语言规范抽象数据类型和面相对象技术使SA研究得到重视类库的构造、分布式应用系统的设计规模、复杂性高的系统等,对SA的研究都提出了要求1/4/202344软件体系结构(SA)SA的初级阶段标志事件12/30/202244软件体系结构(SA的高级阶段标志事件1990’s基于构件的软件开发出现软件开发目标强调:自适应性、互操作性、可扩展性和可重用性强调采用构件化技术和体系结构技术构件的实现与语言无关以Kruchten的“4+1”模型为标志基于构件和SA的开发方法中,开发模式也发生了相应的变化软件开发=算法+体系结构=》软件开发=构件开发+基于构件的构件组装SA的研究成为软件工程的重要研究领域,并最终成为一门学科1/4/202345软件体系结构(SA)SA的高级阶段标志事件12/30/202245软件体系结构(国内外研究现状关于SA的研究工作主要在国外国内对SA的研究尚处在起步阶段原因主要有两点:SA表面上看起来是一个老话题,似乎没有新东西。与国外相比,国内对大型和超大型复杂软件系统开发的经历相对较少,对软件危机的灾难性体会没有国外深刻,对SA研究的重要性和必要性认识不足。1/4/202346软件体系结构(SA)国内外研究现状关于SA的研究工作主要在国外12/30/202应用现状形成研究热点,仍处于非形式化水平自20世纪90’后期以来,SA的研究成为一个热点。从SA研究的现状来看,当前的研究还停留在非形式化的基础上。软件构架师仍然缺乏必要的工具,这种工具应该是显式描述的、有独立性的形式化工具。在目前通用的软件开发方法中,描述通常是用非形式化的图和文本不能描述系统期望的存在于组件之间的接口,不能描述不同的组成系统的组合关系的意义。难以被开发人员理解,更不能用来分析其一致性和完整性等特性。1/4/202347软件体系结构(SA)应用现状形成研究热点,仍处于非形式化水平12/30/2022SA的非形式化描述在目前通用的软件开发方法中,描述通常是用非形式化的图和文本不能描述系统期望的存在于组件之间的接口,不能描述不同的组成系统的组合关系的意义。难以被开发人员理解,更不能用来分析其一致性和完整性等特性。当一个软件系统中的组件之间几乎以一种非形式化的方法描述时,系统的重用性也会受到影响,在设计一个系统结构过程中的努力很难移植到另一个系统中去。对系统组件和连接关系的结构化假设没有得到显式的、形式化的描述时,把这样的系统组件移植到另一个系统中去将是有风险的,甚至是不可能的。1/4/202348软件体系结构(SA)SA的非形式化描述在目前通用的软件开发方法中,描述通常是用非SA的形式化方法研究SA研究如果仅仅停留在非形式化的框图阶段,已经难以适应进一步发展的需要。为支持基于体系结构的开发,需要有形式化建模符号、体系结构说明的分析与开发工具。1/4/202349软件体系结构(SA)SA的形式化方法研究SA研究如果仅仅停留在非形式化的框图阶段SA的形式化描述系统Wright美国卡耐基梅隆大学的RobertJ.A11en于l997年提出的Wright系统。Wright是-种结构描述语言,该语言基于一种形式化的、抽象的系统模型,为描述和分析SA和结构化方法提供了一种实用的工具。Wright主要侧重于描述系统的软件组件和连接的结构、配置和方法。它使用显式的、独立的连接模型来作为交互的方式,这使得该系统可以用逻辑谓词符号系统,而不依赖特定的系统实例来描述系统的抽象行为。Wright系统还可以通过一组静态检查来判断系统结构规格说明的一致性和完整性。Wright系统的确适用于对大型系统的描述和分析。1/4/202350软件体系结构(SA)SA的形式化描述系统Wright美国卡耐基梅隆大学的RobeSA的建模研究研究SA的首要问题是如何表示SA,即如何对SA建模。根据建模的侧重点的不同,可以将SA的模型分为5种:结构模型框架模型动态模型过程模型功能模型。在这5个模型中,最常用的是结构模型和动态模型。1/4/202351软件体系结构(SA)SA的建模研究研究SA的首要问题是如何表示SA,即如何对SASA的结构模型是一个最直观、最普遍的建模方法。以体系结构的组件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质。研究结构模型的核心是体系结构描述语言。1/4/202352软件体系结构(SA)SA的结构模型是一个最直观、最普遍的建模方法。12/30/2SA的框架模型框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。1/4/202353软件体系结构(SA)SA的框架模型框架模型与结构模型类似,但它不太侧重描述结构的SA的动态模型动态模型是对结构或框架模型的补充,研究系统的“大颗粒”的行为性质。例如:描述系统的重新配置或演化。动态可能指系统总体结构的配置、建立或拆除通信通道或计算的过程。这类系统常是激励型的。1/4/202354软件体系结构(SA)SA的动态模型动态模型是对结构或框架模型的补充,研究系统的“SA过程模型过程模型研究构造系统的步骤和过程。结构是遵循某些过程脚本的结果。1/4/202355软件体系结构(SA)SA过程模型过程模型研究构造系统的步骤和过程。12/30/2SA的功能模型该模型认为体系结构是由一组功能组件按层次组成,下层向上层提供服务。它可以看作是一种特殊的框架模型。
1/4/202356软件体系结构(SA)SA的功能模型该模型认为体系结构是由一组功能组件按层次组成,SA的“4+1”视角模型这5种模型各有所长,也许将5种模型有机地统一在一起,形成一个完整的模型来刻画SA更合适。Kruchten在1995年提出了一个“4+1”的视角模型。“4+1”模型从5个不同的视角包括逻辑视角、过程视角、物理视角、开发视角和场景视角来描述SA。每一个视角只关心系统的一个侧面,5个视角结合在一起才能够反映系统的SA的全部内容。1/4/202357软件体系结构(SA)SA的“4+1”视角模型这5种模型各有所长,也许将5种模SA的"4+1"模型图1/4/202358软件体系结构(SA)SA的"4+1"模型图12/30/202258软件体系结构(基于SA的软件开发模型研究软件开发模型是跨越整个软件生存周期的系统开发、运行、维护所实施的全部工作和任务的结构框架,给出了软件开发活动各阶段之间的关系。常见的软件开发模型大致可分为三种类型:以软件需求完全确定为前提的瀑布模型。在软件开发初始阶段只能提供基本需求时采用的渐进式开发模型,如螺旋模型等。以形式化开发方法为基础的变换模型。1/4/202359软件体系结构(SA)基于SA的软件开发模型研究软件开发模型是跨越整个软件生存周期SA与软件开发模型所有开发方法都要解决需求与实现之间的差距。这三种类型的软件开发模型都存在这样或那样的缺陷,不能很好地支持基于SA的开发过程。需要在基于SA的软件开发模型方面做研究,例如:为了形象地表示体系结构的生命周期,北邮的周莹新博士建立了一个SA的生命周期模型。1/4/202360软件体系结构(SA)SA与软件开发模型所有开发方法都要解决需求与实现之间的差距。SA的生命周期模型SA的终结SA提供评价和度量需要演化或扩展?SA的演化SA的非形式化描述SA的性质分析SA的规范描述SA的实施需要求精否?SA的求精SA求精的验证SA的形式化基础(数学模型)NOYESYESNOSA的生命周期模型1/4/202361软件体系结构(SA)SA的生命周期模型SA的终结SA提供评价和度量需要演化或扩展软件产品线体系结构的研究SA的研究是大型软件系统开发的关键环节。SA在软件生产线的开发中至关重要:基于同一个SA,可以创建不同功能的多个系统。在软件产品族之间共享体系结构和一组可重用的组件,可提高效率并降低开发和维护成本。一个产品线代表着一组具有公共的系统需求集的软件系统,它们都是根据基本的用户需求对标准的产品线构架进行定制,将可重用组件与系统独有的部分集成而得到的。采用软件生产线式模式进行软件生产,将产生巨型编程企业(?)。1/4/202362软件体系结构(SA)软件产品线体系结构的研究SA的研究是大型软件系统开发的关键环SA的研究热点关于SA的研究很新,其概念还相当模糊。作为软件工程研究的一个组成部分,对SA的研究已经取得了长足的发展。对SA的研究包括如下几个方面:SA形式基础的研究;针对SA描述中特有的问题研究新的专门的高级语言;建立用于度量和评价SA的模型和方法;建立面向专门领域的SA范型库。把SA从目前的直觉和经验状态过渡到理论。1/4/202363软件体系结构(SA)SA的研究热点关于SA的研究很新,其概念还相当模糊。12/3提供新的SA描述语言在提高软件工程师对软件系统的描述和理解能力中,虽然SA描述起着重要作用,但这些抽象的描述通常是非形式化的和随意的。体系结构设计经常难以理解,难以适于进行形式化分析和模拟,缺乏相应的支持工具帮助构架师完成设计工作。为了解决这个问题,用于描述和推理的形式化语言得以发展,这些语言就叫做体系结构描述语言
ADL(ArchitectureDescriptionLanguage)1/4/202364软件体系结构(SA)提供新的SA描述语言在提高软件工程师对软件系统的描述和理解能关于ADLsADL是这样一种语言,系统构架师可以利用它所提供的特性进行软件系统概念体系结构建模。ADL提供了具体的语法与刻画体系结构的概念框架。ADLs使得系统开发者能够很好地描述他们设计的体系结构,以便与人交流,能够用提供的工具对许多实例进行分析。1/4/202365软件体系结构(SA)关于ADLsADL是这样一种语言,系统构架师可以利用它所提供关于ADLsADLs寻求增加SA设计的可理解性和重用性。ADLs的目的就是提供一种规范化的体系结构描述,使体系结构的自动化分析变得可能。目前近二十种ADLs,比较有影响力的有C2、UniCon、MetaH、Aesop、SADL、Rapide、Wright等。这些语言能对体系结构连接器进行第一级抽象,能描述模型的结构和内部组件之间的交互作用,也引入了一些新的系统分析模式。1/4/202366软件体系结构(SA)关于ADLsADLs寻求增加SA设计的可理解性和重用性。12对SA的专门知识的整理主要是对软件工程师在软件开发实践中得来的各种体系结构的原则、模式的整理和分类。对SA风格的分类和比较对体系结构描述语言的综合分析等目前,国内对SA的研究主要集中在对SA的专门知识的整理上。1/4/202367软件体系结构(SA)对SA的专门知识的整理主要是对软件工程师在软件开发实践中得来提供特定领域的体系结构框架开发特定的领域,为产品提供可重用框架日益受到关注。在特定的领域中可以提取相关系统中的共同方面,以便可以通过低成本地把这些共同的设计实例化来构筑新系统。例如:编译器的标准分解。这个方法可以使一个本科生在一个学期时间内构造一个新的语言编译系统。标准化的通讯协议。这个可以使厂家通过在不同层次的抽象上提供服务来互相操纵。第四代语言。利用4GL开发出商务信息处理的通用范式。用户界面工具和框架。这个方法为开发者提供了一个可重用框架以及象菜单、对话框这样的可重用组件的集合。1/4/202368软件体系结构(SA)提供特定领域的体系结构框架开发特定的领域,为产品提供可重用框提供特定领域的体系结构框架在这里,SA充当一个理解系统组件和它们之间关系的框架,特别是那些始终跨越时间和实现的属性。这对于现在系统的分析和未来系统的综合很有必要。在分析的支持下,体系结构抓住领域知识和实际的一致,促进设计的评估和组件的实施,减少模拟和构造原型。在综合的支持下,体系结构提供了建立系列产品的基础,以可预测的方式利用领域知识构造和维护模块、子系统和系统。1/4/202369软件体系结构(SA)提供特定领域的体系结构框架在这里,SA充当一个理解系统组件和提供SA的形式化基础对体系结构设计的推理的形式化表示使得体系结构级的设计更好地被理解、被实现。其目的是对体系结构设计人员在实践过程中总结出来的一些设计的经验和方法加以总结、概括,从而形成一个形式化的描述,形成一定的理论基础(以代替当前的不精确的研究)。现有的一些形式化机制:如过程代数、偏序集合、化学抽象机等。希望对系统的非功能特性如性能、可维护性等给出形式特征,同时给出SA的理论。1/4/202370软件体系结构(SA)提供SA的形式化基础对体系结构设计的推理的形式化表示使得体系建立评价SA的方法通过分析来预见软件的质量,通过分析来创建、选择、评估与比较不同的体系结构。例如,Kazman等人在2000年提出的ATAM(ArchitecturalTradeoffAnalysisMethod)方法。ATAM方法不但能够揭示体系结构如何满足特定的质量需求(例如性能和可修改性),而且还提供了分析这些质量需求之间交互作用的方法。使用ATAM方法评价一个SA的目的是理解体系结构设计满足系统质量需求的结果。1/4/202371软件体系结构(SA)建立评价SA的方法通过分析来预见软件的质量,通过分析来创建、ATAM方法1/4/202372软件体系结构(SA)ATAM方法12/30/202272软件体系结构(SA)发展方向各种ADLs之间的信息互换设计工具和环境体系结构再工程1/4/202373软件体系结构(SA)发展方向各种ADLs之间的信息互换12/30/202273软各种ADLs之间的信息互换大多数ADLs具有一系列的共同概念。现有的ADLs大多是与领域相关的,所以不利于对不同领域体系结构的说明。但这些针对不同领域的ADLs在某些方面又大同小异,造成资源的冗余。如何用一种公共形式把各种语言综合起来,使得能够交换各种体系结构描述信息,将是今后SA研究和实践的重点之一。1/4/202374软件体系结构(SA)各种ADLs之间的信息互换大多数ADLs具有一系列的共同概念设计工具和环境SA设计既然作为软件工程的一部分,它的计算机辅助实现手段是相当重要的。我们应当开发出一些软件工具来实现体系结构的描述和分析,开发阶段转换工具,以实现阶段成果的自动转换,例如,把需求规格说明自动转换为组件等。目前关于这方面的研究成果很少,特别是可以应用到实际项目开发中的工具和环境就更少。1/4/202375软件体系结构(SA)设计工具和环境SA设计既然作为软件工程的一部分,它的计算机辅体系结构再工程软件系统的规模变得越来越大,结构也越来越复杂,同时从头开始构建的大系统数量在急剧地减少,因而很多遗留系统正在被逐步地利用。从遗留系统软件代码和系统中抽取结构信息,经过描述、统一、抽象、一般化与实例化等处理,可总结出系统的体系结构。软件再工程变得越来越重要,因为它提供了一条把遗留系统转换为可进化系统的现实可行的途径,是一种可以改进人们对软件的理解和改进软件本身的活动。这类研究的目的是为一些特定的应用领域的软件系统提供一些体系结构框架,如控制系统、移动机器人和用户接口界面等。通过这些框架可以很方便地构造一个新的软件系统。1/4/202376软件体系结构(SA)体系结构再工程软件系统的规模变得越来越大,结构也越来越复杂,小结1/4/202377软件体系结构(SA)小结12/30/202277软件体系结构(SA)讨论软件体系结构与建筑中的体系结构类比共同之处类比的意义对我们认识软件体系结构有何帮助?有何局限性试着用自己的语言描述构件、连接件何约束(配置)的概念和特点结合自己参与开发过程或正在开发的软件项目,思考构件、连接件和约束(配置)的概念查阅相关文献,比较各种软件体系结构定义,进一步讨论它们的联系与区别1/4/202378软件体系结构(SA)讨论软件体系结构与建筑中的体系结构类比12/30/20227软件体系结构(SA)概论陈虔mrchenq@126.com1/4/202379软件体系结构(SA)软件体系结构(SA)概论陈虔12/30/20221软件体系结1、SA基础SA基础;SA的地位;SA技术现状及发展趋势;SA建模;1/4/202380软件体系结构(SA)1、SA基础SA基础;12/30/20222软件体系结构(S研究背景20世纪60年代末开始出现的“软件危机”软件组件和软件重用的推动关于SA研究的兴起1/4/202381软件体系结构(SA)研究背景20世纪60年代末开始出现的“软件危机”12/30/关于软件危机软件的先天不足1968年在原西德加密施(Garmish)召开的国际软件工程会议上被人们普遍认识到。软件工程的尴尬1/4/202382软件体系结构(SA)关于软件危机软件的先天不足12/30/20224软件体系结构从软件危机谈起软件危机的表现软件成本日益增长开发进度难以控制软件质量差软件维护困难1/4/202383软件体系结构(SA)从软件危机谈起软件危机的表现12/30/20225软件体系结软件危机的原因用户需求不明确缺乏正确的理论指导软件规模越来越大软件复杂度越来越高1/4/202384软件体系结构(SA)软件危机的原因用户需求不明确12/30/20226软件体系结如何克服软件危机人们面临的不光是技术问题,更重要的是管理问题。管理不善必然导致失败。用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理和维护。软件工程因此而诞生。它在软件开发方法、工具、管理等方面的应用大大缓解了软件危机造成的被动局面。1/4/202385软件体系结构(SA)如何克服软件危机人们面临的不光是技术问题,更重要的是管理问题软件工程软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。包括三个要素:方法。软件工程方法为软件开发提供了"如何做"的技术,是完成软件工程项目的技术手段;工具。软件工具是人类在开发软件的活动中智力和体力的扩展和延伸,为软件工程方法提供了自动的或半自动的软件支撑环境;过程。软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。1/4/202386软件体系结构(SA)软件工程软件工程是用工程、科学和数学的原则与方法研制、维护计组件与软件重用软件重用指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。这种可重用的元素称作软组件,可重用的软件元素越大,其重用的粒度就越大。1/4/202387软件体系结构(SA)组件与软件重用软件重用12/30/20229软件体系结构(S软件重用的好处可以减少软件开发活动中大量的重复性工作,从而:提高软件生产率降低开发成本缩短开发周期由于软组件大都经过严格的质量认证,并在实际运行环境中得到校验,因此,重用软组件有助于改善软件质量。大量使用软组件,软件的灵活性和标准化程度也可望得到提高。1/4/202388软件体系结构(SA)软件重用的好处可以减少软件开发活动中大量的重复性工作,从而:软件组件直观的理解组件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辩识的系统;是语义描述、通讯接口和实现代码的复合体。是具有一定的功能,能够独立工作或能同其它组件装配起来协调工作的程序体,组件的使用同他的开发、生产无关。1/4/202389软件体系结构(SA)软件组件直观的理解组件12/30/202211软件体系结构(软件组件与类从抽象程度来看面向对象技术已达到了类级重用(代码重用),是类封装。重用粒度太小,不足以解决异构互操作和效率更高的重用。组件将抽象的程度提到一个更高的层次,它对一组类的组合进行封装,并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。组件隐藏了具体的实现,只用接口提供服务。1/4/202390软件体系结构(SA)软件组件与类从抽象程度来看12/30/202212软件体系结组件技术的三个主流组件技术发展迅速,已形成三个主要流派:IBM支持的CORBASun的Java平台Microsoft的COM+。1/4/202391软件体系结构(SA)组件技术的三个主流组件技术发展迅速,已形成三个主要流派:12组件的分类如果把软件系统看成是组件的集合,那么从组件的外部形态来看,构成一个系统的组件可分为5类:独立而成熟的组件有限制的组件适应性组件装配的组件可修改的组件1/4/202392软件体系结构(SA)组件的分类如果把软件系统看成是组件的集合,那么从组件的外部形组件的分类独立而成熟的组件得到了实际运行环境的多次检验,它们隐藏了所有接口,用户只需用规定好的命令进行使用。如数据库管理系统和操作系统等。有限制的组件它们提供了接口,指出了使用的条件和前提,这种组件在装配时,会产生资源冲突、覆盖等影响,在使用时需要加以测试。例如,各种面向对象对象程序设计语言中的基础类库等。1/4/202393软件体系结构(SA)组件的分类独立而成熟的组件12/30/202215软件体系结组件的分类适应性组件用封装和接口技术,把不兼容性、资源冲突等进行了处理,可直接使用在各种环境中。例如ActiveX等。装配的组件已经装配在操作系统、数据库管理系统或信息系统不同层次上,使用胶水代码(BlueCode)就可以进行连接使用。软件商提供的多数软件产品都属这一类。1/4/202394软件体系结构(SA)组件的分类适应性组件12/30/202216软件体系结构(S组件的分类可修改的组件可修改的组件可以进行版本替换。如果对原组件修改错误、增加新功能,可以利用重新“包装”或写接口来实现组件的替换。这种组件在应用系统开发中使用得比较多。1/4/202395软件体系结构(SA)组件的分类可修改的组件12/30/202217软件体系结构(组件的获取组件获取可以有多种不同的途径:从现有组件中获得符合要求的组件,直接使用或作适应性修改,得到可重用的组件;通过遗传工程,将具有潜在重用价值的组件提取出来,得到可重用的组件;从市场上购买现成的商业组件,即COTS组件;开发新的符合要求的组件。1/4/202396软件体系结构(SA)组件的获取组件获取可以有多种不同的途径:12/30/2022SA的兴起1960’s的软件危机引发了软件工程的研究。早期的软件工程将软件设计的重点放在数据结构和算法的选择上。如今,系统的结构和规格说明显得更重要软件危机的程度日益加剧,现有的软件工程方法显得力不从心。对于大规模复杂软件系统来说,系统结构设计和规格说明比算法和数据结构的选择更重要。对SA的系统和深入的研究将会成为提高软件生产率和解决软件维护问题的最有希望的途径之一。1/4/202397软件体系结构(SA)SA的兴起1960’s的软件危机引发了软件工程的研究。12/SA不是空穴来风自从软件系统首次被分成许多模块,模块之间有相互作用,组合起来有整体的属性,就具有了体系结构。好的开发者常常会使用一些体系结构模式作为软件系统结构设计策略,但他们并没有规范地、明确地表达出来,这样就无法将他们的知识与别人交流。SA是设计抽象的进一步发展,满足了更好地理解软件系统,更方便地开发更大、更复杂的软件系统的需要。1/4/202398软件体系结构(SA)SA不是空穴来风自从软件系统首次被分成许多模块,模块之间有相软件与建筑的类比软件总是有体系结构的,不存在没有体系结构的软件。如同一座建筑物,软件也有它的:基础(操作系统之上的基础设施软件)主体(实现计算逻辑的主体应用程序)装饰(方便使用的用户界面程序)等。1/4/202399软件体系结构(SA)软件与建筑的类比软件总是有体系结构的,不存在没有体系结构的软对应于建筑的软件构建过程预设计阶段-初步了解+设计轮廓域分析阶段-详细了解+明确的需求图解设计阶段-外观设计(GUI等)+原型设计开发阶段-完善设计+用户证实项目文档阶段-技术文档+技术路线的确定人员配合域合约签订阶段-确定标的+招标构件阶段-监督项目实施+需求的变更设计后构建阶段-培训+维护1/4/2023100软件体系结构(SA)对应于建筑的软件构建过程预设计阶段-初步了解+设计轮廓12/软件与结构化程序设计从细节上来看,每一个程序也是有结构的。早期的结构化程序就是以语句组成模块,模块的聚集和嵌套形成层层调用的程序结构,这也是SA的表现形式之一。结构化程序的程序(表达)结构和(计算的)逻辑结构的一致性及自顶向下开发方法自然而然地形成了体系结构。由于结构化程序设计时代程序规模不大,通过强调结构化程序设计方法学,自顶向下、逐步求精,并注意模块的耦合性就可以得到相对良好的结构,所以,并未特别研究SA。1/4/2023101软件体系结构(SA)软件与结构化程序设计从细节上来看,每一个程序也是有结构的。1SA、建筑、结构化程序设计结构化程序设计时代是以砖、瓦、灰、沙、石、预制梁、柱、屋面板盖平房和小楼面向对象时代以整面墙、整间房、一层楼梯的预制件盖高楼大厦。这些大粒度的框架设计与复用就成为SA的基本特征之一;1/4/2023102软件体系结构(SA)SA、建筑、结构化程序设计结构化程序设计时代是以砖、瓦、灰、SA—现代软件工程的发展组件怎样搭配才合理?体系结构怎样构造容易?重要组件有了更改后,如何保证整栋高楼不倒?每种应用领域需要什么组件(医院、工厂、旅馆)?有哪些实用、美观、强度、造价合理的组件骨架使建造出来的建筑(即体系结构)更能满足用户的需求?软件从传统的软件工程进入到现代面向对象的软件工程,研究整个软件系统的体系结构,寻求建构最快、成本最低、质量最好的构造过程。1/4/2023103软件体系结构(SA)SA—现代软件工程的发展组件怎样搭配才合理?12/30/20对SA的研究SA虽脱胎于软件工程,但其形成同时借鉴了计算机体系结构和网络体系结构中很多宝贵的思想和方法,最近几年SA研究已完全独立于软件工程的研究,成为计算机科学的一个最新的研究方向和独立学科分支。SA研究的主要内容涉及SA描述、SA风格、SA评价和SA的形式化方法等。解决好软件的重用、质量和维护问题,是研究SA的根本目的。1/4/2023104软件体系结构(SA)对SA的研究SA虽脱胎于软件工程,但其形成同时借鉴了计算机体SA的定义虽然SA已经在软件工程领域中有着广泛的应用,但迄今为止还没有一个被大家所公认的定义。许多专家学者从不同角度和不同侧面对SA进行了刻画,较为典型的定义有:1/4/2023105软件体系结构(SA)SA的定义虽然SA已经在软件工程领域中有着广泛的应用,但迄今Booch、Rumbaugh和Jacobson的定义SA={组织,元素,子系统,风格}SA是一系列重要决策的集合即:SA与软件组织、系统的结构元素、接口的选择、元素的行为及子系统及风格密切相关1/4/2023106软件体系结构(SA)Booch、Rumbaugh和Jacobson的定义SA={Perry和Wolf的定义SA={元素,形式,准则}SA是具有一定形式的结构化元素的集合,包括处理组件、数据组件和连接组件。处理组件负责对数据进行加工,数据组件是被加工的信息,连接组件把体系结构的不同部分组组合连接起来。这一定义注重区分处理组件、数据组件和连接组件,这一方法在其他的定义和方法中基本上得到保持。1/4/2023107软件体系结构(SA)Perry和Wolf的定义SA={元素,形式,准则}12/3Shaw和Garlan的定义SA={构件,连接件,约束}SA是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。SA处理算法与数据结构之上的关于整体系统结构设计和描述方面的一些问题,如:全局组织和全局控制结构、关于通讯、同步与数据存取的协议,设计组件功能定义,物理分布与合成,设计方案的选择、评估与实现等。1/4/2023108软件体系结构(SA)Shaw和Garlan的定义SA={构件,连接件,约束}12Kruchten的定义SA有四个角度,它们从不同方面对系统进行描述:概念角度:描述系统的主要组件及它们之间的关系模块角度:包含功能分解与层次结构;运行角度:描述了一个系统的动态结构;代码角度:描述了各种代码和库函数在开发环境中的组织。1/4/2023109软件体系结构(SA)Kruchten的定义SA有四个角度,它们从不同方面对系统进HayesRoth的定义SA是一个抽象的系统规范,主要包括用其行为来描述的功能组件和组件之间的相互连接、接口和关系。1/4/2023110软件体系结构(SA)HayesRoth的定义SA是一个抽象的系统规范,主要包括Garlan和Perry的定义1995年,在IEEE软件工程学报上,DavidGarlan和DewnePerry定义:SA是一个程序/系统各组件的结构、它们之间的相互关系以及进行设计的原则和随时间进化的指导方针。1/4/2023111软件体系结构(SA)Garlan和Perry的定义1995年,在IEEE软件工程Boehm的定义SA={构件,连接件,约束、不同人员的需求、准则}BarryBoehm和他的学生的定义:一个SA包括:一个软件和系统组件,互联及约束的集合;一个系统需求说明的集合;一个基本原理用以说明这一组件,互联和约束能够满足系统需求。1/4/2023112软件体系结构(SA)Boehm的定义SA={构件,连接件,约束、不同人员的需求、Bass的定义1997年,Bass,Ctements和Kazman在《使用SA》一书中给出如下的定义:一个程序或计算机系统的SA包括一个或一组软件组件、软件组件的外部的可见特性及其相互关系。其中,"软件外部的可见特性"是指软件组件提供的服务、性能、特性、错误处理、共享资源使用等。1/4/2023113软件体系结构(SA)Bass的定义1997年,Bass,Ctements和KazIEEE610.12-1990定义SA={构件,连接件,环境、原理}1/4/2023114软件体系结构(SA)IEEE610.12-1990定义SA={构件,连接件,环境我们的定义(理解)SA是软件系统的一个结构、行为和属性的高级抽象,它由构成系统的元素的描述、元素间的相互作用、指导元素集成的模式以及这些模式的约束所组成。SA不仅指定了系统的组织结构和拓扑结构,也显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。1/4/2023115软件体系结构(SA)我们的定义(理解)SA是软件系统的一个结构、行为和属性的高级SA的基本概念图软件体系结构构件连接件约束端口角色通用风格管道/过滤器分层解释器1~*1~*1~*…1/4/2023116软件体系结构(SA)SA的基本概念图软件体系结构构件连接件约束端口角色通用风格管SA的基本概念图SA::=软件体系模型|软件体系风格软件体系模型::=(构件,连接件,约束构件::={端口1,端口2…端口n}连接件::={角色1,角色2…角色m}约束::={(端口i,角色j)…}软件体系风格::={管道过滤器、客户服务器…解释器}1/4/2023117软件体系结构(SA)SA的基本概念图SA::=软件体系模型|软件体系风格12/3SA的发展与现状SA尚处在迅速发展之中,越来越多的研究人员正在把注意力投向SA的研究。用于对SA进行规格描述的模型、标记法和工具仍很不正规。为使之更为精确和健壮,很多的研究工作都在进行中。1/4/2023118软件体系结构(SA)SA的发展与现状SA尚处在迅速发展之中,越来越多的研究人员正SA的发展历程无体系结构设计阶段萌芽阶段初级阶段高级阶段综合阶段1/4/2023119软件体系结构(SA)SA的发展历程无体系结构设计阶段12/30/202241软件SA的发展历程『无体系结构』设计阶段1946年的ENIAC,软件问世1950‘s的Fortran、COBOL出现、1960’sALGOL出现以汇编语言为基本的设计语言系统规模很小,很少考虑SA,也基本不存在软件系统建模问题1/4/2023120软件体系结构(SA)SA的发展历程『无体系结构』设计阶段12/30/202242SA的萌芽阶段标志事件1968年的NATO会议上,软件工程的概念首次出现软件开发方法、开发模型、开发工具等研究开始1970‘s的PASCAL语言出现结构化软件开发技术围绕项目提出了费用估算、文档复审等方法和工具数据结构、程序模块化等特征出现软件工程方法及CASE工具出现SA已经成为系统开发的一个明确概念由于软件规模不大,结构化程序设计方法基本能满足要求,SA的问题不是主要问题1/4/2023121软件体系结构(SA)SA的萌芽阶段标志事件12/30/202243软件体系结构(SA的初级阶段标志事件1980’s,面向对象技术出现Booch、Coad/Yourdon、OMT及Jacobson等方法得到广泛的认可Booch方法提出:类视图、对象视图、状态迁移图、交互作用图、模块图、进程图等UML提出:功能模型、静态模型、动态模型、配置模型等1994年的UML,综合了Booch、OMT和Jacobson等方法的特点,统一了符号体系OMG于1997年正式采纳UML1.1作为建模语言规范抽象数据类型和面相对象技术使SA研究得到重视类库的构造、分布式应用系统的设计规模、复杂性高的系统等,对SA的研究都提出了要求1/4/2023122软件体系结构(SA)SA的初级阶段标志事件12/30/202244软件体系结构(SA的高级阶段标志事件1990’s基于构件的软件开发出现软件开发目标强调:自适应性、互操作性、可扩展性和可重用性强调采用构件化技术和体系结构技术构件的实现与语言无关以Kruchten的“4+1”模型为标志基于构件和SA的开发方法中,开发模式也发生了相应的变化软件开发=算法+体系结构=》软件开发=构件开发+基于构件的构件组装SA的研究成为软件工程的重要研究领域,并最终成为一门学科1/4/2023123软件体系结构(SA)SA的高级阶段标志事件12/30/202245软件体系结构(国内外研究现状关于SA的研究工作主要在国外国内对SA的研究尚处在起步阶段原因主要有两点:SA表面上看起来是一个老话题,似乎没有新东西。与国外相比,国内对大型和超大型复杂软件系统开发的经历相对较少,对软件危机的灾难性体会没有国外深刻,对SA研究的重要性和必要性认识不足。1/4/2023124软件体系结构(SA)国内外研究现状关于SA的研究工作主要在国外12/30/202应用现状形成研究热点,仍处于非形式化水平自20世纪90’后期以来,SA的研究成为一个热点。从SA研究的现状来看,当前的研究还停留在非形式化的基础上。软件构架师仍然缺乏必要的工具,这种工具应该是显式描述的、有独立性的形式化工具。在目前通用的软件开发方法中,描述通常是用非形式化的图和文本不能描述系统期望的存在于组件之间的接口,不能描述不同的组成系统的组合关系的意义。难以被开发人员理解,更不能用来分析其一致性和完整性等特性。1/4/2023125软件体系结构(SA)应用现状形成研究热点,仍处于非形式化水平12/30/2022SA的非形式化描述在目前通用的软件开发方法中,描述通常是用非形式化的图和文本不能描述系统期望的存在于组件之间的接口,不能描述不同的组成系统的组合关系的意义。难以被开发人员理解,更不能用来分析其一致性和完整性等特性。当一个软件系统中的组件之间几乎以一种非形式化的方法描述时,系统的重用性也会受到影响,在设计一个系统结构过程中的努力很难移植到另一个系统中去。对系统组件和连接关系的结构化假设没有得到显式的、形式化的描述时,把这样的系统组件移植到另一个系统中去将是有风险的,甚至是不可能的。1/4/2023126软件体系结构(SA)SA的非形式化描述在目前通用的软件开发方法中,描述通常是用非SA的形式化方法研究SA研究如果仅仅停留在非形式化的框图阶段,已经难以适应进一步发展的需要。为支持基于体系结构的开发,需要有形式化建模符号、体系结构说明的分析与开发工具。1/4/2023127软件体系结构(SA)SA的形式化方法研究SA研究如果仅仅停留在非形式化的框图阶段SA的形式化描述系统Wright美国卡耐基梅隆大学的RobertJ.A11en于l997年提出的Wright系统。Wright是-种结构描述语言,该语言基于一种形式化的、抽象的系统模型,为描述和分析SA和结构化方法提供了一种实用的工具。Wright主要侧重于描述系统的软件组件和连接的结构、配置和方法。它使用显式的、独立的连接模型来作为交互的方式,这使得该系统可以用逻辑谓词符号系统,而不依赖特定的系统实例来描述系统的抽象行为。Wright系统还可以通过一组静态检查来判断系统结构规格说明的一致性和完整性。Wright系统的确适用于对大型系统的描述和分析。1/4/2023128软件体系结构(SA)SA的形式化描述系统Wright美国卡耐基梅隆大学的RobeSA的建模研究研究SA的首要问题是如何表示SA,即如何对SA建模。根据建模的侧重点的不同,可以将SA的模型分为5种:结构模型框架模型动态模型过程模型功能模型。在这5个模型中,最常用的是结构模型和动态模型。1/4/2023129软件体系结构(SA)SA的建模研究研究SA的首要问题是如何表示SA,即如何对SASA的结构模型是一个最直观、最普遍的建模方法。以体系结构的组件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质。研究结构模型的核心是体系结构描述语言。1/4/2023130软件体系结构(SA)SA的结构模型是一个最直观、最普遍的建模方法。12/30/2SA的框架模型框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。1/4/2023131软件体系结构(SA)SA的框架模型框架模型与结构模型类似,但它不太侧重描述结构的SA的动态模型动态模型是对结构或框架模型的补充,研究系统的“大颗粒”的行为性质。例如:描述系统的重新配置或演化。动态可能指系统总体结构的配置、建立或拆除通信通道或计算的过程。这类系统常是激励型的。1/4/2023132软件体系结构(SA)SA的动态模型动态模型是对结构或框架模型的补充,研究系统的“SA过程模型过程模型研究构造系统的步骤和过程。结构是遵循某些过程脚本的结果。1/4/2023133软件体系结构(SA)SA过程模型过程模型研究构造系统的步骤和过程。12/30/2SA的功能模型该模型认为体系结构是由一组功能组件按层次组成,下层向上层提供服务。它可以看作是一种特殊的框架模型。
1/4/2023134软件体系结构(SA)SA的功能模型该模型认为体系结构是由一组功能组件按层次组成,SA的“4+1”视角模型这5种模型各有所长,也许将5种模型有机地统一在一起,形成一个完整的模型来刻画SA更合适。Kruchten在1995年提出了一个“4+1”的视角模型。“4+1”模型从5个不同的视角包括逻辑视角、过程视角、物理视角、开发视角和场景视角来描述SA。每一个视角只关心系统的一个侧面,5个视角结合在一起才能够反映系统的SA的全部内容。1/4/2023135软件体系结构(SA)SA的“4+1”视角模型这5种模型各有所长,也许将5种模SA的"4+1"模型图1/4/2023136软件体系结构(SA)SA的"4+1"模型图12/30/202258软件体系结构(基于SA的软件开发模型研究软件开发模型是跨越整个软件生存周期的系统开发、运行、维护所实施的全部工作和任务的结构框架,给出了软件开发活动各阶段之间的关系。常见的软件开发模型大致可分为三种类型:以软件需求完全确定为前提的瀑布模型。在软件开发初始阶段只能提供基本需求时采用的渐进式开发模型,如螺旋模型等。以形式化开发方法为基础的变换模型。1/4/2023137软件体系结构(SA)基于SA的软件开发模型研究软件开发模型是跨越整个软件生存周期SA与软件开发模型所有开发方法都要解决需求与实现之间的差距。这三种类型的软件开发模型都存在这样或那样的缺陷,不能很好地支持基于SA的开发过程。需要在基于SA的软件开发模型方面做研究,例如:为了形象地表示体系结构的生命周期,北邮的周莹新博士建立了一个SA的生命周期模型。1/4/2023138软件体系结构(SA)SA与软件开发模型所有开发方法都要解决需求与实现之间的差距。SA的生命周期模型SA的终结SA提供评价和度量需要演化或扩展?SA的演化SA的非形式化描述SA的性质分析SA的规范描述SA的实施需要求精否?SA的求精SA求精的验证SA的形式化基础(数学模型)NOYESYESNOSA的生命周期模型1/4/2023139软件体系结构(SA)SA的生命周期模型SA的终结SA提供评价和度量需要演化或扩展软件产品线体系结构的研究SA的研究是大型软件系统开发的关键环节。SA在软件生产线的开发中至关重要:基于同一个SA,可以创建不同功能的多个系统。在软件产品族之间共享体系结构和一组可重用的组件,可提高效率并降低开发和维护成本。一个产品线代表着一组具有公共的系统需求集的软件系统,它们都是根据基本的用户需求对标准的产品线构架进行定制,将可重用组件与系统独有的部分集成而得到的。采用软件生产线式模式进行软件生产,将产生巨型编程企业(?)。1/4/2023140软件体系结构(SA)软件产品线体系结构的研究SA的研究是大型软件系统开发的关键环SA的研究热点关于SA的研究很新,其概念还相当模糊。作为软件工程研究的一个组成部分,对SA的研究已经取得了长足的发展。对SA的研究包括如下几个方面:SA形式基础的研究;针对SA描述中特有的问题研究新的专门的高级语言;建立用于度量和评价SA的模型和方法;建立面向专门领域的SA范型库。把SA从目前的直觉和经验状态过渡到理论。1/4/2023141软件体系结构(SA)SA的研究热点关于SA的研究很新,其概念还相当模糊。12/3提供新的SA描述语言在提高软件工程师对软件系统的描述和理解能力中,虽然SA描述起着重要作用,但这些抽象的描述通常是非形式化的和随意的。体系结构设计经常难以理解,难以适于进行形式化分析和模拟,缺乏相应的支持工具帮助构架师完成设计工作。为了解决这个问题,用于描述和推理的形式化语言得以发展,这些语言就叫做体系结构描述语言
ADL(Arch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福建公务员面试模拟29
- 北京行政职业能力模拟67
- 2012年4月22日上午浙江省面试真题
- 24.4 解直角三角形 华师大版数学九年级上册教案
- 地方公务员西藏申论52
- 2024年房地产中介佣金协议正式
- 2024年全新60岁离婚协议书范文
- 河南面试模拟56
- 2024年停车场管理系统升级合同
- 2017年4月24日广州单考区公务员考试面试真题
- 小学语文四年级上册《习作:推荐一个好地方》课件
- 学术论文的写作与规范课件
- 第三章__组织培养ppt课件
- 高标准基本农田建设项目初步设计报告
- PPT课件:《春分》
- 易飞ERP月底存货财务成本一体化操作流程
- 2017年新版初一英语语法知识点总结复习(超详细)
- 抗菌药物分级管理目录2017年版
- 自控专业工程设计用标准及规范
- 农村小学英语口语教学研究课题结题报告ppt课件
- 外骨骼下肢助力机器人技术研究
评论
0/150
提交评论