1、软件体系结构(SA)概论,陈虔 ,2018/10/14,软件体系结构(SA),2,1、SA基础,SA基础; SA的地位; SA技术现状及发展趋势; SA建模;,2018/10/14,软件体系结构(SA),3,研究背景,20世纪60年代末开始出现的“软件危机” 软件组件和软件重用的推动 关于SA研究的兴起,2018/10/14,软件体系结构(SA),4,关于软件危机,软件的先天不足 1968年在原西德加密施(Garmish)召开的国际软件工程会议上被人们普遍认识到。 软件工程的尴尬,2018/10/14,软件体系结构(SA),5,从软件危机谈起,软件危机的表现 软件成本日益增长 开发进度难以控制
2、 软件质量差 软件维护困难,2018/10/14,软件体系结构(SA),6,软件危机的原因,用户需求不明确 缺乏正确的理论指导 软件规模越来越大 软件复杂度越来越高,2018/10/14,软件体系结构(SA),7,如何克服软件危机,人们面临的不光是技术问题,更重要的是管理问题。管理不善必然导致失败。 用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理和维护。 软件工程因此而诞生。它在软件开发方法、工具、管理等方面的应用大大缓解了软件危机造成的被动局面。,2018/10/14,软件体系结构(SA),8,软件工程,软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管
3、理方法。包括三个要素: 方法。软件工程方法为软件开发提供了“如何做“的技术,是完成软件工程项目的技术手段; 工具。软件工具是人类在开发软件的活动中智力和体力的扩展和延伸,为软件工程方法提供了自动的或半自动的软件支撑环境; 过程。软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。,2018/10/14,软件体系结构(SA),9,组件与软件重用,软件重用 指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。 软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。 这种可重用的元素称作软组件,可重用的软件元素越大,其重
4、用的粒度就越大。,2018/10/14,软件体系结构(SA),10,软件重用的好处,可以减少软件开发活动中大量的重复性工作,从而: 提高软件生产率 降低开发成本 缩短开发周期 由于软组件大都经过严格的质量认证,并在实际运行环境中得到校验,因此, 重用软组件有助于改善软件质量。 大量使用软组件,软件的灵活性和标准化程度也可望得到提高。,2018/10/14,软件体系结构(SA),11,软件组件,直观的理解组件 是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确辩识的系统; 是语义描述、通讯接口和实现代码的复合体。 是具有一定的功能,能够独立工作或能同其它组件装配起来协调工作
5、的程序体,组件的使用同他的开发、生产无关。,2018/10/14,软件体系结构(SA),12,软件组件与类,从抽象程度来看 面向对象技术已达到了类级重用(代码重用),是类封装。重用粒度太小,不足以解决异构互操作和效率更高的重用。 组件将抽象的程度提到一个更高的层次,它对一组类的组合进行封装,并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。 组件隐藏了具体的实现,只用接口提供服务。,2018/10/14,软件体系结构(SA),13,组件技术的三个主流,组件技术发展迅速,已形成三个主要流派: IBM支持的CORBA Sun的Java平台 Microsoft的COM+。,2018/10/
6、14,软件体系结构(SA),14,组件的分类,如果把软件系统看成是组件的集合,那么从组件的外部形态来看,构成一个系统的组件可分为5类: 独立而成熟的组件 有限制的组件 适应性组件 装配的组件 可修改的组件,2018/10/14,软件体系结构(SA),15,组件的分类,独立而成熟的组件 得到了实际运行环境的多次检验,它们隐藏了所有接口,用户只需用规定好的命令进行使用。如数据库管理系统和操作系统等。 有限制的组件 它们提供了接口,指出了使用的条件和前提,这种组件在装配时,会产生资源冲突、覆盖等影响,在使用时需要加以测试。例如,各种面向对象对象程序设计语言中的基础类库等。,2018/10/14,软件
7、体系结构(SA),16,组件的分类,适应性组件 用封装和接口技术,把不兼容性、资源冲突等进行了处理,可直接使用在各种环境中。例如ActiveX等。 装配的组件 已经装配在操作系统、数据库管理系统或信息系统不同层次上,使用胶水代码(Blue Code)就可以进行连接使用。 软件商提供的多数软件产品都属这一类。,2018/10/14,软件体系结构(SA),17,组件的分类,可修改的组件 可修改的组件可以进行版本替换。如果对原组件修改错误、增加新功能,可以利用重新“包装”或写接口来实现组件的替换。 这种组件在应用系统开发中使用得比较多。,2018/10/14,软件体系结构(SA),18,组件的获取,
8、组件获取可以有多种不同的途径: 从现有组件中获得符合要求的组件,直接使用或作适应性修改,得到可重用的组件; 通过遗传工程,将具有潜在重用价值的组件提取出来,得到可重用的组件; 从市场上购买现成的商业组件,即COTS组件; 开发新的符合要求的组件。,2018/10/14,软件体系结构(SA),19,SA的兴起,1960s的软件危机引发了软件工程的研究。 早期的软件工程将软件设计的重点放在数据结构和算法的选择上。 如今,系统的结构和规格说明显得更重要 软件危机的程度日益加剧,现有的软件工程方法显得力不从心。 对于大规模复杂软件系统来说,系统结构设计和规格说明比算法和数据结构的选择更重要。 对SA的
9、系统和深入的研究将会成为提高软件生产率和解决软件维护问题的最有希望的途径之一。,2018/10/14,软件体系结构(SA),20,SA不是空穴来风,自从软件系统首次被分成许多模块,模块之间有相互作用,组合起来有整体的属性,就具有了体系结构。 好的开发者常常会使用一些体系结构模式作为软件系统结构设计策略,但他们并没有规范地、明确地表达出来,这样就无法将他们的知识与别人交流。 SA是设计抽象的进一步发展,满足了更好地理解软件系统,更方便地开发更大、更复杂的软件系统的需要。,2018/10/14,软件体系结构(SA),21,软件与建筑的类比,软件总是有体系结构的,不存在没有体系结构的软件。 如同一座
10、建筑物,软件也有它的: 基础(操作系统之上的基础设施软件) 主体(实现计算逻辑的主体应用程序) 装饰(方便使用的用户界面程序)等。,2018/10/14,软件体系结构(SA),22,对应于建筑的软件构建过程,预设计阶段初步了解设计轮廓 域分析阶段详细了解明确的需求 图解设计阶段外观设计(GUI等)原型 设计开发阶段完善设计用户证实 项目文档阶段技术文档技术路线的确定 人员配合域合约签订阶段确定标的招标 构件阶段监督项目实施需求的变更设计 后构建阶段培训维护,2018/10/14,软件体系结构(SA),23,软件与结构化程序设计,从细节上来看,每一个程序也是有结构的。 早期的结构化程序就是以语句
11、组成模块,模块的聚集和嵌套形成层层调用的程序结构,这也是SA的表现形式之一。 结构化程序的程序(表达)结构和(计算的)逻辑结构的一致性及自顶向下开发方法自然而然地形成了体系结构。 由于结构化程序设计时代程序规模不大,通过强调结构化程序设计方法学,自顶向下、逐步求精,并注意模块的耦合性就可以得到相对良好的结构,所以,并未特别研究SA。,2018/10/14,软件体系结构(SA),24,SA、建筑、结构化程序设计,结构化程序设计时代是以砖、瓦、灰、沙、石、预制梁、柱、屋面板盖平房和小楼 面向对象时代以整面墙、整间房、一层楼梯的预制件盖高楼大厦。 这些大粒度的框架设计与复用就成为SA的基本特征之一;
12、,2018/10/14,软件体系结构(SA),25,SA现代软件工程的发展,组件怎样搭配才合理? 体系结构怎样构造容易? 重要组件有了更改后,如何保证整栋高楼不倒?每种应用领域需要什么组件(医院、工厂、旅馆)? 有哪些实用、美观、强度、造价合理的组件骨架使建造出来的建筑(即体系结构)更能满足用户的需求? 软件从传统的软件工程进入到现代面向对象的软件工程,研究整个软件系统的体系结构,寻求建构最快、成本最低、质量最好的构造过程。,2018/10/14,软件体系结构(SA),26,对SA的研究,SA虽脱胎于软件工程,但其形成同时借鉴了计算机体系结构和网络体系结构中很多宝贵的思想和方法,最近几年SA研
13、究已完全独立于软件工程的研究,成为计算机科学的一个最新的研究方向和独立学科分支。 SA研究的主要内容涉及SA描述、SA风格、SA评价和SA的形式化方法等。 解决好软件的重用、质量和维护问题,是研究SA的根本目的。,2018/10/14,软件体系结构(SA),27,SA的定义,虽然SA已经在软件工程领域中有着广泛的应用,但迄今为止还没有一个被大家所公认的定义。许多专家学者从不同角度和不同侧面对SA进行了刻画,较为典型的定义有:,2018/10/14,软件体系结构(SA),28,Booch、Rumbaugh和Jacobson的定义,SA组织,元素,子系统,风格 SA是一系列重要决策的集合 即:SA
14、与软件组织、系统的结构元素、接口的选择、元素的行为及子系统及风格密切相关,2018/10/14,软件体系结构(SA),29,Perry和Wolf的定义,SA元素,形式,准则 SA是具有一定形式的结构化元素的集合,包括处理组件、数据组件和连接组件。处理组件负责对数据进行加工,数据组件是被加工的信息,连接组件把体系结构的不同部分组组合连接起来。 这一定义注重区分处理组件、数据组件和连接组件,这一方法在其他的定义和方法中基本上得到保持。,2018/10/14,软件体系结构(SA),30,Shaw和Garlan的定义,SA构件,连接件,约束 SA是软件设计过程中的一个层次,这一层次超越计算过程中的算法
15、设计和数据结构设计。体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。 SA处理算法与数据结构之上的关于整体系统结构设计和描述方面的一些问题,如:全局组织和全局控制结构、关于通讯、同步与数据存取的协议,设计组件功能定义,物理分布与合成,设计方案的选择、评估与实现等。,2018/10/14,软件体系结构(SA),31,Kruchten的定义,SA有四个角度,它们从不同方面对系统进行描述: 概念角度:描述系统的主要组件及它们之间的关系 模块角度:包含功能分解与层次结构; 运行角度:描述了一个系统的动态结构;
16、代码角度:描述了各种代码和库函数在开发环境中的组织。,2018/10/14,软件体系结构(SA),32,Hayes Roth的定义,SA是一个抽象的系统规范,主要包括用其行为来描述的功能组件和组件之间的相互连接、接口和关系。,2018/10/14,软件体系结构(SA),33,Garlan和Perry的定义,1995年,在IEEE软件工程学报上, David Garlan和Dewne Perry定义: SA是一个程序系统各组件的结构、它们之间的相互关系以及进行设计的原则和随时间进化的指导方针。,2018/10/14,软件体系结构(SA),34,Boehm的定义,SA构件,连接件,约束、不同人员的
17、需求、准则 Barry Boehm和他的学生的定义:一个SA包括: 一个软件和系统组件,互联及约束的集合; 一个系统需求说明的集合; 一个基本原理用以说明这一组件,互联和约束能够满足系统需求。,2018/10/14,软件体系结构(SA),35,Bass的定义,1997年,Bass,Ctements和Kazman在使用SA一书中给出如下的定义: 一个程序或计算机系统的SA包括一个或一组软件组件、软件组件的外部的可见特性及其相互关系。其中,“软件外部的可见特性“是指软件组件提供的服务、性能、特性、错误处理、共享资源使用等。,2018/10/14,软件体系结构(SA),36,IEEE610.12-1
18、990定义,SA构件,连接件,环境、原理,2018/10/14,软件体系结构(SA),37,我们的定义(理解),SA是软件系统的一个结构、行为和属性的高级抽象,它由构成系统的元素的描述、元素间的相互作用、指导元素集成的模式以及这些模式的约束所组成。 SA不仅指定了系统的组织结构和拓扑结构,也显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。,2018/10/14,软件体系结构(SA),38,SA的基本概念图,软件体系结构,构件,连接件,约束,端口,角色,通用风格,管道/过滤器,分层,解释器,1*,1*,1*,2018/10/14,软件体系结构(SA),39,SA的基本
19、概念图,SA:=软件体系模型|软件体系风格 软件体系模型:=(构件,连接件,约束 构件:=端口1,端口2端口n 连接件:=角色1,角色2角色m 约束:=(端口i,角色j) 软件体系风格:=管道过滤器、客户服务器解释器,2018/10/14,软件体系结构(SA),40,SA的发展与现状,SA尚处在迅速发展之中,越来越多的研究人员正在把注意力投向SA的研究。 用于对SA进行规格描述的模型、标记法和工具仍很不正规。为使之更为精确和健壮,很多的研究工作都在进行中。,2018/10/14,软件体系结构(SA),41,SA的发展历程,无体系结构设计阶段 萌芽阶段 初级阶段 高级阶段 综合阶段,2018/1
20、0/14,软件体系结构(SA),42,SA的发展历程,无体系结构设计阶段 1946年的ENIAC,软件问世 1950s的Fortran、COBOL出现、1960s ALGOL出现 以汇编语言为基本的设计语言 系统规模很小,很少考虑SA,也基本不存在软件系统建模问题,2018/10/14,软件体系结构(SA),43,SA的萌芽阶段,标志事件 1968年的NATO会议上,软件工程的概念首次出现 软件开发方法、开发模型、开发工具等研究开始 1970s的PASCAL语言出现 结构化软件开发技术围绕项目提出了费用估算、文档复审等方法和工具 数据结构、程序模块化等特征出现 软件工程方法及CASE工具出现
21、SA已经成为系统开发的一个明确概念 由于软件规模不大,结构化程序设计方法基本能满足要求,SA的问题不是主要问题,2018/10/14,软件体系结构(SA),44,SA的初级阶段,标志事件 1980s,面向对象技术出现 Booch、Coad/Yourdon、OMT及Jacobson等方法得到广泛的认可 Booch方法提出:类视图、对象视图、状态迁移图、交互作用图、模块图、进程图等 UML提出:功能模型、静态模型、动态模型、配置模型等 1994年的UML,综合了Booch、OMT和Jacobson等方法的特点,统一了符号体系 OMG于1997年正式采纳UML1.1作为建模语言规范 抽象数据类型和面
22、相对象技术使SA研究得到重视 类库的构造、分布式应用系统的设计规模、复杂性高的系统等,对SA的研究都提出了要求,2018/10/14,软件体系结构(SA),45,SA的高级阶段,标志事件 1990s基于构件的软件开发出现 软件开发目标强调:自适应性、互操作性、可扩展性和可重用性 强调采用构件化技术和体系结构技术 构件的实现与语言无关 以Kruchten的“41”模型为标志 基于构件和SA的开发方法中,开发模式也发生了相应的变化 软件开发算法体系结构软件开发构件开发基于构件的构件组装 SA的研究成为软件工程的重要研究领域,并最终成为一门学科,2018/10/14,软件体系结构(SA),46,国内
23、外研究现状,关于SA的研究工作主要在国外 国内对SA的研究尚处在起步阶段 原因主要有两点: SA表面上看起来是一个老话题,似乎没有新东西。 与国外相比,国内对大型和超大型复杂软件系统开发的经历相对较少,对软件危机的灾难性体会没有国外深刻,对SA研究的重要性和必要性认识不足。,2018/10/14,软件体系结构(SA),47,应用现状,形成研究热点,仍处于非形式化水平 自20世纪90后期以来,SA的研究成为一个热点。 从SA研究的现状来看,当前的研究还停留在非形式化的基础上。软件构架师仍然缺乏必要的工具,这种工具应该是显式描述的、有独立性的形式化工具。 在目前通用的软件开发方法中,描述通常是用非
24、形式化的图和文本 不能描述系统期望的存在于组件之间的接口, 不能描述不同的组成系统的组合关系的意义。 难以被开发人员理解,更不能用来分析其一致性和完整性等特性。,2018/10/14,软件体系结构(SA),48,SA的非形式化描述,在目前通用的软件开发方法中,描述通常是用非形式化的图和文本 不能描述系统期望的存在于组件之间的接口, 不能描述不同的组成系统的组合关系的意义。 难以被开发人员理解,更不能用来分析其一致性和完整性等特性。 当一个软件系统中的组件之间几乎以一种非形式化的方法描述时,系统的重用性也会受到影响,在设计一个系统结构过程中的努力很难移植到另一个系统中去。对系统组件和连接关系的结
25、构化假设没有得到显式的、形式化的描述时,把这样的系统组件移植到另一个系统中去将是有风险的,甚至是不可能的。,2018/10/14,软件体系结构(SA),49,SA的形式化方法研究,SA研究如果仅仅停留在非形式化的框图阶段,已经难以适应进一步发展的需要。 为支持基于体系结构的开发,需要有形式化建模符号、体系结构说明的分析与开发工具。,2018/10/14,软件体系结构(SA),50,SA的形式化描述系统Wright,美国卡耐基梅隆大学的Robert JA11en于l997年提出的Wright系统。 Wright是-种结构描述语言,该语言基于一种形式化的、抽象的系统模型,为描述和分析SA和结构化方
26、法提供了一种实用的工具。 Wright主要侧重于描述系统的软件组件和连接的结构、配置和方法。它使用显式的、独立的连接模型来作为交互的方式,这使得该系统可以用逻辑谓词符号系统,而不依赖特定的系统实例来描述系统的抽象行为。 Wright系统还可以通过一组静态检查来判断系统结构规格说明的一致性和完整性。 Wright系统的确适用于对大型系统的描述和分析。,2018/10/14,软件体系结构(SA),51,SA的建模研究,研究SA的首要问题是如何表示SA,即如何对SA建模。 根据建模的侧重点的不同,可以将SA的模型分为5种: 结构模型 框架模型 动态模型 过程模型 功能模型。 在这5个模型中,最常用的
27、是结构模型和动态模型。,2018/10/14,软件体系结构(SA),52,SA的结构模型,是一个最直观、最普遍的建模方法。 以体系结构的组件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质。 研究结构模型的核心是体系结构描述语言。,2018/10/14,软件体系结构(SA),53,SA的框架模型,框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。 框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。,2018/10/14,软件体系结构(SA),54,SA的动态模型,动态模型是对结构或框架模型
28、的补充,研究系统的“大颗粒”的行为性质。 例如:描述系统的重新配置或演化。 动态可能指系统总体结构的配置、建立或拆除通信通道或计算的过程。 这类系统常是激励型的。,2018/10/14,软件体系结构(SA),55,SA过程模型,过程模型研究构造系统的步骤和过程。 结构是遵循某些过程脚本的结果。,2018/10/14,软件体系结构(SA),56,SA的功能模型,该模型认为体系结构是由一组功能组件按层次组成,下层向上层提供服务。它可以看作是一种特殊的框架模型。,2018/10/14,软件体系结构(SA),57,SA的“ 4+1”视角模型,这5种模型各有所长,也许将5种模型有机地统一在一起,形成一个
29、完整的模型来刻画SA更合适。 Kruchten在1995年提出了一个“4+1”的视角模型。“4+1”模型从5个不同的视角包括逻辑视角、过程视角、物理视角、开发视角和场景视角来描述SA。 每一个视角只关心系统的一个侧面,5个视角结合在一起才能够反映系统的SA的全部内容。,2018/10/14,软件体系结构(SA),58,SA的“4+1“模型图,2018/10/14,软件体系结构(SA),59,基于SA的软件开发模型研究,软件开发模型是跨越整个软件生存周期的系统开发、运行、维护所实施的全部工作和任务的结构框架,给出了软件开发活动各阶段之间的关系。 常见的软件开发模型大致可分为三种类型: 以软件需求
30、完全确定为前提的瀑布模型。 在软件开发初始阶段只能提供基本需求时采用的渐进式开发模型,如螺旋模型等。 以形式化开发方法为基础的变换模型。,2018/10/14,软件体系结构(SA),60,SA与软件开发模型,所有开发方法都要解决需求与实现之间的差距。 这三种类型的软件开发模型都存在这样或那样的缺陷,不能很好地支持基于SA的开发过程。 需要在基于SA的软件开发模型方面做研究,例如: 为了形象地表示体系结构的生命周期,北邮的周莹新博士建立了一个SA的生命周期模型。,2018/10/14,软件体系结构(SA),61,SA的生命周期模型,SA的终结,SA提供评价和度量,需要演化或扩展?,SA的演化,S
31、A的非形式化描述,SA的性质分析,SA的规范描述,SA的实施,需要求精否?,SA的求精,SA求精的验证,SA的形式化基础 (数学模型),NO,YES,YES,NO,SA的生命周期模型,2018/10/14,软件体系结构(SA),62,软件产品线体系结构的研究,SA的研究是大型软件系统开发的关键环节。 SA在软件生产线的开发中至关重要: 基于同一个SA,可以创建不同功能的多个系统。 在软件产品族之间共享体系结构和一组可重用的组件,可提高效率并降低开发和维护成本。 一个产品线代表着一组具有公共的系统需求集的软件系统,它们都是根据基本的用户需求对标准的产品线构架进行定制,将可重用组件与系统独有的部分
32、集成而得到的。 采用软件生产线式模式进行软件生产,将产生巨型编程企业(?)。,2018/10/14,软件体系结构(SA),63,SA的研究热点,关于SA的研究很新,其概念还相当模糊。 作为软件工程研究的一个组成部分, 对SA的研究已经取得了长足的发展。 对SA的研究包括如下几个方面: SA形式基础的研究; 针对SA描述中特有的问题研究新的专门的高级语言; 建立用于度量和评价SA的模型和方法; 建立面向专门领域的SA范型库。 把SA从目前的直觉和经验状态过渡到理论。,2018/10/14,软件体系结构(SA),64,提供新的SA描述语言,在提高软件工程师对软件系统的描述和理解能力中,虽然SA描述
33、起着重要作用,但这些抽象的描述通常是非形式化的和随意的。 体系结构设计经常难以理解,难以适于进行形式化分析和模拟,缺乏相应的支持工具帮助构架师完成设计工作。 为了解决这个问题,用于描述和推理的形式化语言得以发展,这些语言就叫做体系结构描述语言 ADL(Architecture Description Language),2018/10/14,软件体系结构(SA),65,关于ADLs,ADL是这样一种语言,系统构架师可以利用它所提供的特性进行软件系统概念体系结构建模。 ADL提供了具体的语法与刻画体系结构的概念框架。 ADLs使得系统开发者能够很好地描述他们设计的体系结构,以便与人交流,能够用提
34、供的工具对许多实例进行分析。,2018/10/14,软件体系结构(SA),66,关于ADLs,ADLs寻求增加SA设计的可理解性和重用性。 ADLs的目的就是提供一种规范化的体系结构描述,使体系结构的自动化分析变得可能。 目前近二十种ADLs,比较有影响力的有C2、UniCon、MetaH、Aesop、SADL、Rapide、Wright等。 这些语言能对体系结构连接器进行第一级抽象,能描述模型的结构和内部组件之间的交互作用,也引入了一些新的系统分析模式。,2018/10/14,软件体系结构(SA),67,对SA的专门知识的整理,主要是对软件工程师在软件开发实践中得来的各种体系结构的原则、模式
35、的整理和分类。 对SA风格的分类和比较 对体系结构描述语言的综合分析等 目前,国内对SA的研究主要集中在对SA的专门知识的整理上。,2018/10/14,软件体系结构(SA),68,提供特定领域的体系结构框架,开发特定的领域,为产品提供可重用框架日益受到关注。在特定的领域中可以提取相关系统中的共同方面,以便可以通过低成本地把这些共同的设计实例化来构筑新系统。 例如: 编译器的标准分解。这个方法可以使一个本科生在一个学期时间内构造一个新的语言编译系统。 标准化的通讯协议。这个可以使厂家通过在不同层次的抽象上提供服务来互相操纵。 第四代语言。利用4GL开发出商务信息处理的通用范式。 用户界面工具和
36、框架。这个方法为开发者提供了一个可重用框架以及象菜单、对话框这样的可重用组件的集合。,2018/10/14,软件体系结构(SA),69,提供特定领域的体系结构框架,在这里,SA充当一个理解系统组件和它们之间关系的框架,特别是那些始终跨越时间和实现的属性。这对于现在系统的分析和未来系统的综合很有必要。 在分析的支持下,体系结构抓住领域知识和实际的一致,促进设计的评估和组件的实施,减少模拟和构造原型。 在综合的支持下,体系结构提供了建立系列产品的基础,以可预测的方式利用领域知识构造和维护模块、子系统和系统。,2018/10/14,软件体系结构(SA),70,提供SA的形式化基础,对体系结构设计的推
37、理的形式化表示使得体系结构级的设计更好地被理解、被实现。 其目的是对体系结构设计人员在实践过程中总结出来的一些设计的经验和方法加以总结、概括,从而形成一个形式化的描述,形成一定的理论基础(以代替当前的不精确的研究)。 现有的一些形式化机制: 如过程代数、偏序集合、化学抽象机等。 希望对系统的非功能特性如性能、可维护性等给出形式特征,同时给出SA的理论。,2018/10/14,软件体系结构(SA),71,建立评价SA的方法,通过分析来预见软件的质量,通过分析来创建、选择、评估与比较不同的体系结构。 例如,Kazman等人在2000年提出的ATAM(Architectural Tradeoff A
38、nalysis Method)方法。 ATAM方法不但能够揭示体系结构如何满足特定的质量需求(例如性能和可修改性),而且还提供了分析这些质量需求之间交互作用的方法。 使用ATAM方法评价一个SA的目的是理解体系结构设计满足系统质量需求的结果。,2018/10/14,软件体系结构(SA),72,ATAM方法,2018/10/14,软件体系结构(SA),73,发展方向,各种ADLs之间的信息互换 设计工具和环境 体系结构再工程,2018/10/14,软件体系结构(SA),74,各种ADLs之间的信息互换,大多数ADLs具有一系列的共同概念。现有的ADLs大多是与领域相关的,所以不利于对不同领域体系
39、结构的说明。但这些针对不同领域的ADLs在某些方面又大同小异,造成资源的冗余。 如何用一种公共形式把各种语言综合起来,使得能够交换各种体系结构描述信息,将是今后SA研究和实践的重点之一。,2018/10/14,软件体系结构(SA),75,设计工具和环境,SA设计既然作为软件工程的一部分,它的计算机辅助实现手段是相当重要的。我们应当开发出一些软件工具来实现体系结构的描述和分析,开发阶段转换工具,以实现阶段成果的自动转换,例如,把需求规格说明自动转换为组件等。 目前关于这方面的研究成果很少,特别是可以应用到实际项目开发中的工具和环境就更少。,2018/10/14,软件体系结构(SA),76,体系结
40、构再工程,软件系统的规模变得越来越大,结构也越来越复杂,同时从头开始构建的大系统数量在急剧地减少,因而很多遗留系统正在被逐步地利用。 从遗留系统软件代码和系统中抽取结构信息,经过描述、统一、抽象、一般化与实例化等处理,可总结出系统的体系结构。 软件再工程变得越来越重要,因为它提供了一条把遗留系统转换为可进化系统的现实可行的途径,是一种可以改进人们对软件的理解和改进软件本身的活动。 这类研究的目的是为一些特定的应用领域的软件系统提供一些体系结构框架,如控制系统、移动机器人和用户接口界面等。通过这些框架可以很方便地构造一个新的软件系统。,2018/10/14,软件体系结构(SA),77,小结,2018/10/14,软件体系结构(SA),78,讨论,软件体系结构与建筑中的体系结构类比 共同之处 类比的意义 对我们认识软件体系结构有何帮助? 有何局限性 试着用自己的语言描述构件、连接件何约束(配置)的概念和特点 结合自己参与开发过程或正在开发的软件项目,思考构件、连接件和约束(配置)的概念 查阅相关文献,比较各种软件体系结构定义,进一步讨论它们的联系与区别,
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1