软件体系结构综述.docx
- 文档编号:158416
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:13
- 大小:27.21KB
软件体系结构综述.docx
《软件体系结构综述.docx》由会员分享,可在线阅读,更多相关《软件体系结构综述.docx(13页珍藏版)》请在冰豆网上搜索。
软件体系结构研究综述
班级:
软件092 学号:
17 姓名:
陈世华
摘要:
近年来,软件体系结构逐渐成为软件工程领域的研究热点以及大型软件系统与软件产品线开发中的关键技术之一.归纳了软件体系结构技术发展过程及其主要研究方向.在分析了典型的软件体系结构概念之后,给出了软件体系结构的定义.通过总结软件体系结构领域的若干研究活动,提出了软件体系结构研究的两大思路,并从7个方面介绍了软件体系结构研究进展.探讨了软件体系结构研究中的不足之处,并分析其原因.作为总结,给出了软件体系结构领域最有前途的发展趋势.
关键词:
软件体系结构;基于体系结构的软件开发;软件体系结构描述语言;软件体系结构描述方法;软件体系结构演化;软件体系结构发现;软件体系结构分析;软件体系结构验证;特定域软件体系结构(DSSA)
Abstract:
Softwarearchitecture(SA)isemergingasoneoftheprimaryresearchareasinsoftwareengineeringrecentlyandoneofthekeytechnologiestothedevelopmentoflarge-scalesoftware-intensivesystemandsoftwareproductlinesystem.ThehistoryandthemajordirectionofSAaresummarized,andtheconceptofSAisbroughtupbasedonanalyzingandcomparingtheseveralclassicaldefinitionsaboutSA.BasedonsumminguptheactivitiesaboutSA,twocategoriesofstudyaboutSAareextractedout,andtheadvancementsofresearchesonSAaresubsequentlyintroducedfromsevenaspects.Additionally,somedisadvantagesofstudyonSAarediscussed,andthecausesareexplainedatthesametime.Finally,itisconcludedwithsomesignificantlypromisingtendencyaboutresearchonSA.
Keywords:
softwarearchitecture;architecture-baseddevelopment;architecturedescriptionlanguage;architecturalrepresentationanddescription;architecturalevolutionandreuse;architecturaldiscovery;architecturalanalysis;architecturalverificationandevaluation;domain-specificsoftwarearchitecture(DSSA)
1软件体系结构起源与发展
1.1软件体系结构研究的必要性和重要意义
自NATO于1968年提出软件工程概念以来,软件工程界已经提出了一系列的理论、方法、语言和工具,解决了软件开发过程中的若干问题.但是,软件固有的复杂性、易变性和不可见性,使得软件开发周期长、代价高和质量低的问题依然存在.大量实践统计表明:
大系统软件开发中70%的错误是由需求和软件设计阶段引入的;而且错误在系统中存在的时间愈长则愈难发现,解决这些错误的代价也愈高.
为了提高软件需求和软件设计的质量,软件工程界提出了需求分析工程技术和各种软件建模技术.但是在需求与设计之间仍存在一条很难逾越的鸿沟,即缺乏能够反映做决策的中间过程,从而很难有效地将需求转换为相应的设计.为此,软件体系结构概念应运而生,并试图在软件需求与软件设计之间架起一座桥梁,着重解决软件系统的结构和需求向实现平坦地过渡的问题.
从机器语言、汇编语言、过程式程序设计语言、面向对象程序设计语言、形式化(半形式化)规格说明语言(如体系结构描述语言)发展过程中,可以发现:
计算机语言越来越适合于开发人员的思维活动模型,代码复用的级别也在不断地提升,如图1所示.体系结构技术的研究,使软件复用从代码复用发展到设计复用和过程复用.
鉴于软件体系结构的重要性,D.E.Perry将软件体系结构视为软件开发中第1类重要的设计对象,而BarryBoehm明确指出:
“在没有设计出体系结构及其规则时,那么整个项目不能继续下去,而且体系结构应该看做是软件开发中可交付的中间产品”.由此可见,体系结构在软件开发中为不同的人员提供了共同交流的语言,体现并尝试了系统早期的设计决策,并作为系统设计的抽象,为实现框架和构件的共享与复用、基于体系结构的软件开发提供了有力的支持.
1.2软件体系结构的发展史
软件系统的规模在迅速增大的同时,软件开发方法也经历了一系列的变革.在此过程中,软件体系结构也由最初模糊的概念发展到一个渐趋成熟的技术.
20世纪70年代以前,尤其是在以ALGOL68为代表的高级语言出现以前,软件
开发基本上都是汇编程序设计.此阶段系统规模较小,很少明确考虑系统结构,一般不存在系统建模工作.70年代中后期,由于结构化开发方法的出现与广泛应用,软件开发中出现了概要设计与详细设计,而且主要任务是数据流设计与控制流设计.因此,此时软件结构已作为一个明确的概念出现在系统的开发中.
20世纪80年代初到90年代中期,是面向对象开发方法兴起与成熟阶段.由于对象是数据与基于数据之上操作的封装,因而在面向对象开发方法下,数据流设计与控制流设计则统一为对象建模,同时,面向对象方法还提出了一些其他的结构视图.如在OMT方法中提出了功能视图、对象视图与动态视图(包括状态图和事件追踪图);而BOOCH方法中则提出了类视图、对象视图、状态迁移图、交互作用图、模块图、进程图;而1997年出现的统一建模语言UML则从功能模型(用例视图)、静态模型(包括类图、对象图、构件图、包图)、动态模型(协作图、顺序图、状态图和活动图)、配置模型(配置图)描述应用系统的结构.
90年代以后则是基于构件的软件开发阶段,该阶段以过程为中心,强调软件开发采用构件化技术和体系结构技术,要求开发出的软件具备很强的自适应性、互操作性、可扩展性和可重用性.此阶段中,软件体系结构已经作为一个明确的文档和中间产品存在于软件开发过程中,同时,软件体系结构作为一门学科逐渐得到人们的重视,并成为软件工程领域的研究热点,因而Perry和Wolf认为,“未来的年代将是研究软件体系结构的时代!
”.
纵观软件体系结构技术发展过程,从最初的“无结构”设计到现行的基于体系结构软件开发,可以认为经历了4个阶段:
(1)“无体系结构”设计阶段:
以汇编语言进行小规模应用程序开发为特征;
(2)萌芽阶段:
出现了程序结构设计主题,以控制流图和数据流图构成软件结构为特征;(3)初期阶段:
出现了从不同侧面描述系统的结构模型,以UML为典型代表;(4)高级阶段:
以描述系统的高层抽象结构为中心,不关心具体的建模细节,划分了体系结构模型与传统的软件结构的界限,该阶段以Kruchten提出的“4+1”模型为标志.由于概念尚不统一、描述规范也不能达成一致认识、在软件开发实践中软件体系结构尚不能发挥重要作用,因此,我们认为软件体系结构技术达到成熟还需一段时日.
1.3体系结构的主要研究方向
在基于构件和体系结构的软件开发方法下,程序开发模式也相应地发生了根
本变化.软件开发不再是“算法+数据结构”,而是“构件开发+基于体系结构的构件组装”.那么,如何描述、表示、设计体系结构?
如何验证一个体系结构是否符合期望的系统需求?
如何基于体系结构开发实例化的软件系统?
将是基于构件和体系结构的软件开发方法所必须研究和解决的核心问题.归纳现有体系结构的研究活动,主要包括如下几个方面:
(1)体系结构理论模型的研究;
(2)体系结构描述研究,主要研究体系结构描述语言及其支持环境、体系结构描述规范;(3)体系结构设计研究:
包括体系结构设计方法、体系结构风格、体系结构设计空间等内容;
(4)体系结构分析与验证:
研究如何将软件的非功能特性转化为体系结构的需求,如何分析体系结构满足期望的需求的属性,对体系结构的语法、语义、类型失配等进行检查与验证的研究;
(5)体系结构演化与复用研究:
研究产品线中软件体系结构演进的理论与方法,
从已有文档、系统设计和代码中逆向提取软件体系结构、体系结构复用等;
(6)动态体系结构研究:
研究软件系统由于特殊需要必须在连续运营情况下的体系结构变化与支撑平台;
(7)基于体系结构的软件开发:
研究引入体系结构后的软件开发过程、基于体系结构开发与中间技术集成、基于体系结构的程序框架自动生成技术等.
2软件体系结构的研究现状
2.1软件体系结构的有关定义
若干软件体系结构学者提出了自己的概念与定义,我们将介绍几个具有代表性的定义,并分析其共同点.然后,根据我们对软件体系结构的理解,给出能够反映软件体系结构基本特征的定义.
定义1.Garlan&Shaw模型:
SA={components,connectors,constrains}.
构件(component)可以是一组代码,如程序的模块;也可以是一个独立的程序,如数据库的SQL服务器.连接器(connector)表示构件之间的相互作用.它可以是过程调用、管道、远程过程调用等.一个软件体系结构还包括某些限制(constrain).该模
型视角是程序设计语言,构件主要是代码模块.定义2.Perry&Wolf模型:
SA={elements,form,rational}.
软件体系结构是由一组元素(elements)构成.这组元素分成3类:
处理元素(processingelements)、数据元素(dataelements)和连接元素(connectingelements).软件体系结构形式(form)是由专有特性(properties)和关系(relationship)组成.专有特性用于限制软件体系结构元素的选择,关系用于限制软件体系结构元素组合的拓扑结构.而在多个体系结构方案中选择合适的体系结构方案往往基于一组准则(rational).
定义3.CFRP模型:
SA={elements,interfaces,connections,connectionsemantics}.
软件系统由一组元素构成(elements).这组元素分成处理元素和数据元素.每个元素有一个接口(interface),一组元素的互连(connection)构成系统的拓扑.元素互连的语义是:
静态互连语义(如数据元素的互连),描述动态连接的信息转换的协议(如过程调用,管道等).
定义4.Vestal模型:
SA={component,idioms/styles,commonpatternsofinteraction}.
软件由构件(component)组成,构件之间通过通用的互操作模式相连.体系结构风格(style)描述了一种通用的设计模式,可满足特定系列的应用需求.
定义5.IEEE610.12-1990软件工程标准词汇中的定义:
Architecture={compon
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 体系结构 综述