




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件体系结构论文 年级院系: 专业班级: 姓名: 学号: 指导老师: 2014年12月28日目录:1、 软件体系结构概论.12、 体系结构风格.33、 UML 语言.54、 XML 语言 .85、 动态软件体系结构.106、 基于体系结构的软件开发.127、 软件体系结构的评估.128、 软件产品线体系结构.129、 软件体系结构的发展方向.1310、 参考书籍.14软件体系结构概论:软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。1、 软件体系结构的定义:虽然软件体系结构已经在软件工程领域中有着广泛的应用,但迄今为止还没有一个被大家所公认的定义。许多专家学者从不同角度和不同侧面对软件体系结构进行了刻画,较为典型的定义有:(1)软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。软件体系结构处理算法与数据结构之上关于整体系统结构设计和描述方面的一些问题,如全局组织和全局控制结构、关于通讯、同步与数据存取的协议,设计构件功能定义,物理分布与合成,设计方案的选择、评估与实现等(2)软件体系结构有四个角度,它们从不同方面对系统进行描述:概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码和库函数在开发环境中的组织。(3)软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。(4)一个程序或计算机系统的软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系。其中,软件外部的可见特性是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。2、软件体系结构的发展历史:与最初的大型中央主机相适应,最初的软件结构体系也是Mainframe结构,该结构下客户、数据和程序被集中在主机上,通常只有少量的GUI界面,对远程数据库的访问比较困难。随着PC的广泛应用,该结构逐渐在应用中被淘汰。软件体系结构在80年代中期出现了Client/Server分布式计算结构,应用程序的处理在客户(PC机)和服务器(Mainframe或Server)之间分担;请求通常被关系型数据库处理,PC机在接受到被处理的数据后实现显示和业务逻辑;系统支持模块化开发,通常有GUI界面。Client/Server结构因为其灵活性得到了极其广泛的应用。但对于大型软件系统而言,这种结构在系统的部署和扩展性方面还是存在着不足。Internet的发展给传统应用软件的开发带来了深刻的影响。基于Internet和Web的软件和应用系统无疑需要更为开放和灵活的体系结构。随着越来越多的商业系统被搬上Internet,一种新的、更具生命力的体系结构被广泛采用,这就是为我们所知的“三层/多层计算”。客户层(client tier) 用户接口和用户请求的发出地,典型应用是网络浏览器和胖客户(如Java程序)。服务器层(server tier) 典型应用是Web服务器和运行业务代码的应用程序服务器。数据层(data tier) 典型应用是关系型数据库和其他后端(back-end)数据资源, 如 Oracle和SAP、 R/3等兴起六十年代的软件危机使得人们开始重视软件工程的研究。起初,人们把软件设计的重点放在数据结构和算法的选择上,随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明显得越来越重要。软件危机的程度日益加剧,现有的软件工程方法对此显得力不从心。对于大规模的复杂软件系统来说,对总体的系统结构设计和规格说明比起对计算的算法和数据结构的选择已经变得明显重要得多。在此种背景下,人们认识到软件体系结构的重要性,并认为对软件体系结构的系统、深入的研究将会成为提高软件生产率和解决软件维护问题的新的最有希望的途径。3、应用现状: 自20世纪90年代后期以来,软件体系结构的研究成为一个热点。广大软件工作者已经认识到软件体系结构研究的重大意义和它对软件系统设计开发的重要性,开展了很多研究和实践工作。从软件体系结构研究的现状来看,当前的研究和对软件体系结构的描述,在很大程度上来说还停留在非形式化的基础上。软件构架师仍然缺乏必要的工具,这种工具应该是显式描述的、有独立性的形式化工具。在目前通用的软件开发方法中,其描述通常是用非形式化的图和文本,不能描述系统期望的存在于构件之间的接口,不能描述不同的组成系统的组合关系的意义。难以被开发人员理解C2风格的体系结构,更不能用来分析其一致性和完整性等特性。当一个软件系统中的构件之间几乎以一种非形式化的方法描述时,系统的重用性也会受到影响,在设计一个系统结构过程中的努力很难移植到另一个系统中去。对系统构件和连接关系的结构化假设没有得到显式的、形式化的描述时,把这样的系统构件移植到另一个系统中去将是有风险的,甚至是不可能的。体系结构风格:对软件体系结构风格的研究和实践促进了对设计的复用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。体系结构风格的不变部分使不同的系统可以共享同一个实现代码。只要系统是使用常用的、规范的方法来组织,就可使别的设计者很容易地理解系统的体系结构。例如,如果某人把系统描述为客户/服务器模式,则不必给出设计细节,我们立刻就会明白系统是如何组织和工作的。通用体系结构风格的分类:(1)数据流风格:批处理序列;管道/过滤器(2)调用/返回风格:主程序/子程序;面向对象风格;层次结构(3)独立构件风格:进程通讯;事件系统(4)虚拟机风格:解释器;基于规则的系统(5)仓库风格:数据库系统;超文本系统;黑板系统C2体系C2体系结构风格可以概括为:通过连接件绑定在一起的按照一组规则运作的并行构件网络。C2风格中的系统组织规则如下:(1)系统中的构件和连接件都有一个顶部和一个底部;(2)构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的;层次系统风格的体系结构(3)一个连接件可以和任意数目的其它构件和连接件连接;(4)当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。上图是C2风格的示意图。图中构件与连接件之间的连接体现了C2风格中构建系统的规则。上图3C2风格的体系结构C2风格是最常用的一种软件体系结构风格。从C2风格的组织规则和结构图中,我们可以得出,C2风格具有以下特点:(1)系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起;(2)所有构件之间的通讯是通过以连接件为中介的异步消息交换机制来实现的;(3)构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。UML 语言:Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。 面向对象的分析与设计(OOA&D,OOAD)方法的发展在80年代末至90年代中出现了一个高潮,UML是这个高潮的产物。它不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且对其作了进一步的发展,并最终统一为大众所接受的标准建模语言。1、 UML论述:UML是在Booch、OMT、OOSE等面向对象的方法及其它许多方法与资料的基础上发展起来的。UML表示法集中了不同的图形表示方法,剔除了其中容易引起的混淆、冗余或者很少使用的符号,同时添加了一些新的符号。其中的概念来自于面向对象技术领域中众多专家的思想。UML从考虑系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、序列图、协作图、构件图、部署图等9种图。这些图从不同的侧面对系统进行描述。系统模型将这些不同的侧面综合成一致的整体,便于系统的分析和构造。尽管UML和其它开发工具还会设计出许多派生的视图,但上述这些图和其它辅助性的文档是软件开发人员所见的最基本的构造。其中:UML用例图与OOSE中的用例图类似。UML的类图综合了OMT、Booch等面向对象方法中的类图。UML状态图是对David Harel所提出状态图的改进。UML活动图的基本语义和状态图大致相同,它类似于许多方法(包括面向对象技术之前的一些方法)中的工作流图。UML的协作图是通过对Booch方法的对象图、Fusion方法的对象交互图以及其它一些方法中的相关图表改造而成的。UML的构建图和部署图是在Booch方法中的模块和进程图(处理关系图、处理器图)的基础上发展起来的。UML简化了建模方法,它扬弃了Booch、OMT或OOSE等方法中的糟粕,而代之以其它方法中的精华。UML一般不引入新的概念和符号,只有在没有现有的解决方法可以借鉴时,UML的开发者们才考虑加入新的概念。UML的开发者们是在设计一种语言(尽管只是一种图形化语言),因此必须在简明(所有元素一律用方框和文字表示)和繁琐(为每个元素设计单独的符号)之间权衡。尽管如此,UML中还是增添了衍型和扩展机制等一些新的元素,因为这些元素在其它建模语言的实践中已经被证明是非常有用的。2用例图主要用来描述 用户、需求、系统功能单元 之间的关系。它展示了一个外部用户能够观察到的系统功能模型图。【用途】:帮助开发团队以一种可视化的方式理解系统的功能需求。3类图显示了一组类、接口、协作以及他们之间的关系。在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统。类加上他们之间的关系就构成了类图,类图中还可以包含接口、包等元素,也可以包括对象、链等实例。4对象图(Object Diagram) 是显示了一组对象和他们之间的关系。使用对象图来说明数据结构,类图中的类或组件等的实例的静态快照。对象图和类图一样反映系统的静态过程,但它是从实际的或原型化的情景来表达的。对象图显示某时刻对象和对象之间的关系。一个对象图可看成一个类图的特殊用例,实例和类可在其中显示。对象也和合作图相联系,合作图显示处于语境中的对象原型(类元角色)。对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。2、 分类:UML定义了5类,10种模型图五种类图定义:1.用例图:从用户角度描述系统功能,并指各功能的操作者。2.静态图:包括类图,包图,对象图。类图:描述系统中类的静态结构包图:是包和类组成的,表示包与包之间的关系,包图描述系统的分层结构对象图:是类图的实例3.行为图:描述系统动态模型和对象组成的交换关系。包括状态图和活动图活动图:描述了业务实现用例的工作流程状态图:是描述状态到状态控制流,常用于动态特性建模4.交互图:描述对象之间的交互关系顺序图:对象之间的动态合作关系,强调对象发送消息的顺序,同时显示对象之间的交互合作图:描述对象之间的协助关系5.实现图:配置图:定义系统中软硬件的物理体系结构十种模型图定义:(1)、用例图:展示系统外部的各类执行者与系统提供的各种用例之间的关系(2)、类图:展示系统中类的静态结构(3)、对象图:是类图的一种实例化图(对象图是对类图的一种实例化)(4)、包图:是一种分组机制。在UML1.1版本中,包图不再看作一种独立的模型图)3、 特点:(1)UML统一了各种方法对不同类型的系统、不同开发阶段以及不同内部概念的不同观点,从而有效的消除了各种建模语言之间不必要的差异。它实际上是一种通用的建模语言,可以为许多面向对象建模方法的用户广泛使用。(2)UML建模能力比其它面向对象建模方法更强。它不仅适合于一般系统的开发,而且对并行、分布式系统的建模尤为适宜。(3)UML是一种建模语言,而不是一个开发过程。XML 语言可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。1、 基本概念:1998年2月,W3C正式批准了可扩展标记语言的标准定义,可扩展标记语言可以对文档和数据进行结构化处理,从而能够在部门、客户和供应商之间进行交换,实现动态内容生成,企业集成和应用开发。可扩展标记语言可以使我们能够更准确的搜索,更方便的传送软件组件,更好的描述一些事物。例如电子商务交易等。它被设计用来传输和存储数据;1超文本标记语言被设计用来显示数据。它们都是标准通用标记语言的子集。一、什么是可扩展标记语言?可扩展标记语言是一种很像超文本标记语言的标记语言。它的设计宗旨是传输数据,而不是显示数据。它的标签没有被预定义。您需要自行定义标签。它被设计为具有自我描述性。它是W3C的推荐标准。二、可扩展标记语言和超文本标记语言之间的差异它不是超文本标记语言的替代。它是对超文本标记语言的补充。它和超文本标记语言为不同的目的而设计:它被设计用来传输和存储数据,其焦点是数据的内容。超文本标记语言被设计用来显示数据,其焦点是数据的外观。超文本标记语言旨在显示信息,而它旨在传输信息。对它最好的描述是:它是独立于软件和硬件的信息传输工具。3、可扩展标记语言是W3C的推荐标准XML 于 1998 年 2 月 10 日成为W3C的推荐标准。4、可扩展标记语言无所不在超文本标记语言。XML 是各种应用程序之间进行数据传输的最常用的工具。2、 语法:标准通用标记语言常用来定义针对HTML的文档类型定义(DTD),同时它也常用于编写XML的DTD。标准通用标记语言的问题就在于它允许出现一些奇怪的语法,这让创建HTML的解析器成为一个大难题:1、 某些起始标签可以选择性出现结束标签或者隐含了结束标签。2、某些起始标签要求必须出现结束标签,例如HTML中“脚本”标签。3、标签可以以任何顺序嵌套。即使结束标签不按照起始标签的逆序出现也是允许的,例如,This is asamplestring是正确的。3、某些特性要求必须包含值,例如中的源特性。4、某些特性不要求一定有值,例如中的“不换行”(外语:nowrap)特性。5、定义特性的两边有没有加上双引号都是可以的,所以都是允许的。在XML中,采用了如下的语法:一、任何的起始标签都必须有一个结束标签。二、可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。三、标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。四、所有的特性都必须有值。五、所有的特性都必须在值的周围加上双引号。3、 应用:可扩展标记语言是一种元标记语言,即定义了用于定义其他特定领域有关语义的、结构化的标记语言,这些标记语言将文档分成许多部件并对这些部件加以标识。XML 文档定义方式有:文档类型定义(DTD)和XML Schema。DTD定义了文档的整体结构以及文档的语法,应用广泛并有丰富工具支持。XML Schema用于定义管理信息等更强大、更丰富的特征。XML能够更精确地声明内容,方便跨越多种平台的更有意义的搜索结果。它提供了一种描述结构数据的格式,简化了网络中数据交换和表示,使得代码、数据和表示分离,并作为数据交换的标准格式,因此它常被称为智能数据文档。XML技术已经广泛应用于e-Learning应用系统的开发,大多数的商用e-Learning平台都支持XML标准。一些主要的网络设备制造商,如CISCO、JUNIPER等,生产的网络设备也已提供了对XML的支持,以利于今后基于XML的网络管理。动态软件体系结构:动态体系结构的描述与静态体系结构的描述一样,动态体系结构的描述既可以使用描述语言,也可以使用形式化的描述;既可以使用UML建模机制,也可以使用XML建模机制。由于软件系统会在运行时刻发生动态变化,这就给体系结构的研究提出了很多新的问题.如何在设计阶段捕获体系结构的这种动态性,并进一步指导软件系统在运行时刻实施这些变化,从而达到系统的在线演化或自适应甚至自主计算,是动态体系结构99所要研究的内容.现阶段,动态软件体系结构研究可分为两个部分:1)体系结构设计阶段的支持.主要包括变化的描述、根据变化如何生成修改策略、描述修改过程、在高抽象层次保证修改的可行性以及分析、推理修改所带来的影响等;2)运行时刻基础设施的支持.主要包括系统体系结构的维护、保证体系结构修改在约束范围内、提供系统的运行时刻信息、分析修改后的体系结构符合指定的属性、正确映射体系结构构造元素的变化到实现模块、保证系统的重要子系统的连续执行并保持状态、分析和测试运行系统等.DSA的描述语言软件体系结构描述语言(ArchitectureDescriptionLanguage,简称:ADL)是SA领域的一个重要研究成果,ADL从较高抽象层次上描述构件接口的语法和语义、系统中的构件和连接子以及它们之间的交互关系、构件的非功能属性以及构件间协议,从而建立系统的体系结构模型。但是大多数ADL只描述系统的静态结构,不支持对体系结构动态性的描述。UML作为体系结构建模工具,它不是一种体系结构的描述语言,而是一种设计语言。因此开发动态软件ADL是很有必要的。近年来,已经开发出了很多动态体系结构描述语言,如Darwin、DynamicACMED、DynamicWright、Rapide等。(1)DynamicWrightDynamicWright是体系结构描述语言Wright的一个扩展,DynamicWright的主要目的是试图模拟或标记已解决软件系统的动态性。采用DynamicWright具有较多的良好特性,其中之一就是能够很容易地描述软件的动态环境。 DSA的形式化描述动态软件系统的形式化描述包括软件体系结构的描述、体系结构的重新配置和系统行为的描述。对DSA的形式化描述,通常可以采用图形化方法、进程代数方法、逻辑方法等。(1)图形化方法由于图能够直观地描述系统体系结构及其风格,所以用图形化方法描述软件体系结构是很自然的事情,用图的重写规则来描述DSA的配置也是一种很自然的方法。采用图形化方法描述DSA的主要有LeMetayer的描述方法、CHAM方法、Hirsh等的描述方法等。(2)进程代数方法进程代数方法通常用于研究并发系统,在并发系统中进程通常用代数方法描述,用微分方法对描述进行验证。多进程代数应用于CCS,CSP和演算。常用的进程代数方法有DynamicWright、Darwin、LEDA和PiLar等(3)逻辑化描述方法逻辑化描述方法是DSA描述的形式化基础,常用的逻辑描述方法有Gerel、Aguirre-Maibaum方法和ZCL方法等基于体系结构的软件开发:1、基于体系结构的软件开发方法学.软件的开发涉及多方面的问题,通过发挥SA在软件生命周期中的核心作用,能够有效地组织软件的开发、部署、维护与演化.我们目前正致力于这方面的工作,并初步提出了一个以SA为核心的软件开发过程123,即以SA描述为系统蓝图,以特征模型为设计起点,以中间件技术为构件组装、部署的运行时支撑,使用一系列的映射规则和工具来缩短需求、设计和实现间的距离,使相应的转换过程自动化,给出了一组需求特征模型到SA的映射和转换规则,将SA引入基于中间件的应用部署和维护;2、体系结构对实际软件开发的支持.如何将学术研究成果应用于实际的软件开发一直是困扰研究者的问题.现阶段,虽然体系结构实践已经取得了初步成果,但在实际产品开发中,仍然主要依靠软件架构师的个人经验,而系统化地使用SA来指导开发,尚缺乏行之有效的方法和案例.所以,还需要进一步探讨将体系结构应用到实际软件开发中的方法,如将体系结构相关的概念与流程集成到软件开发环境中去、研究体系结构与现有的软件开发方法的融合与集成、开展与体系结构相关的教育培训等软件体系结构的评估: 所谓软件体系结构的分析评估,就是事先通过代价低廉的评估活动来识别软件结构中存在的潜在风险,找出软件体系结构中影响系统质量的主要因素及改进措施,并在此基础上检验软件的质量需求是否在具体设计中得到体现,并预测未来软件质量。软件体系结构在软件开发和管理中扮演着越来越重要的角色。软件体系结构设计是对软件质量有着至关重要的影响,对于确保最终系统的质量有重要的意义。软件体系结构评估,是对系统的某些值得关心的属性(性能、可靠性等)进行评价和判断。评估的结果可用于确认潜在的风险,并检查设计阶段系统需求的质量,在系统被实际构造之前,预测其质量属性。软件体系结构评估中,评估人员关注的是软件系统质量,这些质量可用性能、可靠性、可用性、安全性、功能性、可变性、集成性、互操作性等相关属性来表示。评估人员首先提出具体质量指标,并以这些质量指标作为软件体系结构优劣的评估标准。软件产品线体系结构:软件体系结构的开发是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化工分析室安全培训课件
- 抵押贷款合同(委托担保)6篇
- 农业农村局安全培训制度课件
- 委托金融居间协议7篇
- 兴趣指引多彩生涯路课件
- 兴平市消防安全培训课件
- 内部船员安全培训课件
- 内部审计具体准则课件
- 第一季度营销方案(3篇)
- 黄石银行线上营销方案(3篇)
- 2025年煤矿企业主要负责人安全生产理论考试笔试试题含答案
- 苗族舞蹈课件
- 监狱公选面试题库及答案
- 具有法律效应的还款协议书6篇
- 2025年中国铁建集团招聘面试模拟题及答案详解
- T-AOPA0062-2024电动航空器电推进系统动力电机控制器技术规范
- 2025特种设备(电梯)安全管理人员A证考试试卷(200道)及答案
- 2024年一级建造师《民航机场工程管理与实务》真题及答案
- 2025年全国企业员工全面质量管理知识竞赛题及参考答案
- 2025年广东省中考英语试卷深度评析及2026年备考策略
- (2025年标准)买月饼协议书
评论
0/150
提交评论