软件体系结构概述课件.ppt
软件体系结构概述提纲n背景与发展历史n软件体系结构n软件体系结构的作用n体系结构风格n体系结构模式n设计模式n体系结构设计方法n体系结构描述语言3/83背景背景n软件危机的表现n成本、进度、质量n软件危机的原因n需求、规模、复杂度n如何克服软件危机 n软件工程:过程、方法与工具软件体系结构的出现 n软件体系结构是软件系统的新概念软件工程中一个新兴的研究课题为了应对日益复杂的系统的设计与构造问题,描述大型复杂系统结构的需要对于大规模的复杂软件系统来说,对总体的系统结构设计和规格说明比起对计算的算法和数据结构的选择已变得明显重要得多为了理解、构造大型、复杂的软件系统的更有效的方法,作为设计抽象的自然演化而出现并发展的。n软件体系结构在软件开发过程中的位置:需求分析之后,软件设计之前。5/83软件体系结构的定义n许多专家学者从不同角度和不同侧面对软件体系结构进行了刻画;n软件体系结构(Software Architecture)对子系统、软件系统组件以及他们之间关系的描述。子系统和组件一般定义在不同的视图内,以显示软件系统的相关功能属性和非功能属性。软件体系结构的定义nWiKiThe software architecture of a program or computing system is the structure or structures of the system,which comprise software components,the externally visible properties of those components,and the relationships between them.The term also refers to documentation of a systems software architecture.Documenting software architecture facilitates communication between stakeholders,documents early decisions about high-level design,and allows reuse of design components and patterns between projects.http:/en.wikipedia.org/wiki/Software_architecture7/83软件体系结构的定义nPerry and Wolf,1992:A set of architectural(or,if you will,design)elements that have a particular form.Perry and Wolf distinguish between processing elements,data elements,and connecting elements,and this taxonomy by and large persists through most other definitions and approaches.软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。8/83软件体系结构的定义nGarlan and Shaw,1993:.beyond the algorithms and data structures of the computation;designing and specifying the overall system structure emerges as a new kind of problem.Structural issues include gross organization and global control structure;protocols for communication,synchronization,and data access;assignment of functionality to design elements;physical distribution;composition of design elements;scaling and performance;and selection among design alternatives.软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织,规模和性能,在各设计方案间进行选择等。软件体系结构处理算法与数据结构之上关于整体系统结构设计和描述方面的一些问题,如全局组织和全局控制结构、关于通讯、同步与数据存取的协议,设计构件功能定义,物理分布与合成,设计方案的选择、评估与实现等。9/83软件体系结构的定义n西门子的Soni、Nord和Hofmeister指出,软件体系结构有四个角度,它们从不同方面对系统进行描述:概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码和库函数在开发环境中的组织。概念体系结构Conceptual Architecturen组件、连接器、性能n应用问题的分解和划分。模块体系结构Module Architecturen子系统、模块、引入(Import)、引出(Exports)、模块的界面、管理、控制和一致性等代码体系结构 Code Architecturen文件、目录、库、包含(includes)、软件的配置管理、系统建造等运行体系结构Execution Architecturen任务、线程、进程、性能、调度、动态分配和不同执行系统之间的接口等10/83软件体系结构的定义nHayes Roth则认为软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。nDavid Garlan和Dewne Perry于1995年在IEEE软件工程学报上又采用如下的定义:软件体系结构是一个程序系统各构件的结构、它们之间的相互关系以及进行设计的原则和随时间进化的指导方针。n1997年,Bass,Ctements和Kazman在软件构架实践一书中给出如下的定义:一个程序或计算机系统的软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系。其中,软件外部的可见特性是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。11/83软件体系结构的定义n软件体系结构的研究正在发展,软件体系结构的定义不断演化n精简Garlan and Shaw的定义为:体系结构=组件+连接(件)+设计约束Architecture=Components+Relationship(Connectors)+Constrains组件n组件(component)组件可以理解为软件系统的一个组成部分。组件通过一定接口组成复杂的软件系统。从系统构成角度:在系统运行中承担一定功能、发挥一定作用的软件体从程序设计角度:模块、类、对象、函数或者一个相关功能集合组件n组件分类(作用)控制组件:负责系统运行管理协调组件:负责组件间协作关系连接组件:负责组件间链接作用和转换服务提供组件:为其他组件提供特定服务功能信息控制组件:负责安全检查和信息转接传递构造组件:完成对象的产生和撤销14/83组件的实现形式n组件无行为能力简单数据有行为能力内部结构操作行为n组件的基本实现形式就是对象n层次模型中组件的概念是在基本的组件形式上经过复合和概念提升而产生的e.g.数组、树;注册表;浏览器15/83组件的表达形式n具有操作接口定义的抽象数据类型描述n组成内部数据结构及其操作对外提供的操作方法集合按照访问目的对操作方法进行划分,得到组件的多个操作接口接口:Interface(Java)16/83组件的类别n概念层次基础组件、中层组件、高层组件n应用通用组件、专用组件n功能 数据服务组件、功能服务组件、逻辑处理组件、界面组件、控制组件、连接组件、体系结构组件等n运行特性 调度和非调度组件、中断和非中断组件、多客户服务组件。17/83组件的特性n组件的接口特性完备性使用者可以用它完成组件应该能够完成的一切工作。最小性组件接口或界面中任一操作,都不能由其他操作组合而实现。正交性设法使两个不同的操作交叉重复部分达到最小。方便性提供用户欢迎的操作。可能会破坏最小性和正交性要求效率接口操作的执行效率18/83组件的特性n组件的运行特性中断处理实时系统:消息机制/中断处理并行调度考虑进程的产生、撤销、通信和调度管理多用户服务组件具有事件触发和多线程运行的能力19/83组件的特性n组件的远程服务特性提供数据和功能服务网络的分布计算环境的要求20/83组件的特性n组件的关联特性:组件与相关联组件所建立的联系和联系的方式e.g.向其他组件请求信息或服务动态/静态处理联系连接的实现形式影响组件的设计与实现e.g.同步调用/异步调用21/83组件的特性n组件的动态特性运行调度运行环境资源的分配和多任务的并行执行生存期管理组件运行实例的产生和撤销,包括由组件负责的其他类型组件的产生和撤销。22/83连接n连接(Relationship)组件与组件之间建立和维持行为关联和信息传递的途径连接的本质在于:实现机制和信息交换协议,简称机制和协议n机制连接得以发生和维持的机制e.g.参数调用方式/串口通讯n协议连接的规约,是正确进行信息交换的规则,是实现有意义连接的保证23/83连接的特性n连接的方向性n连接的角色连接双方的地位(调用方和被调用方)n连接的激发引起连接行为的方式n连接的响应特性“从动方”对连接请求的处理特性。实时性、时间、方式(同步/异步)、并发处理的能力。24/83连接件(Connector)n实现组件之间联系的特殊机制或特殊组件。n连接组件与一般组件一般组件:软件功能设计和实现的承载体连接件:负责完成组件之间信息交换和行为联系的专用组件属性约束n功能属性(functional property)用来处理系统功能性的特定方面,并且通常与特定的功能需求相关。n非功能属性(non-functional property)定义了没有被功能属性描述覆盖的系统特征。包括:易修改性,互操作性,效率,可靠性,可测试性,可重用性26/83软件体系结构的重要性n软件体系结构便于涉众交流 涉众包括客户、用户、项目经理、系统构架师、程序员、测试人员等;涉众分别关注应用系统体系结构的不同特征;软件体系结构便成为涉众表述自己的需求,协商找寻一个合理开方案的研究对象,并进行交流的手段。27/83软件体系结构的重要性n软件体系结构是软件开发过程中的管理明确了对系统实现的约束条件,能够支持系统的质量属性实现。可行性分析时避免方向性错误制定工程进度和投资计划的依据,决定了开发组织的组织结构,保障项目顺利进行的关键软件开发过程的关键里程碑软件体系结构的重要性n软件体系结构支持复用 产品线构件(库)软件框架n软件体系结构是需求和代码之间的桥梁,为开发提供了建设的蓝图,也是测试、维护和升级的依据。软件体系结构风格n软件体系结构风格(architectural style)定义了a vocabulary of components and connector typesa set of constraints on how they can be combined.Maybe one or more semantic models that specify how to determine a systems overall properties from the properties of its parts.e.g.Client/Server软件体系结构风格n主程序与子过程(Main Program/Subroutine)n数据抽象与面向对象组织(Data Abstraction and Object-Oriented Organization)n管道-过滤器(Pipes and Filters)n事件驱动与隐式调用(Event-Based,Implicit Invocation)n层次系统(Layered Systems)n黑板系统(Blackboard)n过程控制(Process Control)n解释器/虚拟机(Interpreters)n客户/服务器(Client/Server)n微核(MicroKernal)nCOM/DCOM组件软件体系结构模式n软件体系结构设计中,抽象出了许多常见的系统构建模式(Pattern),这些系统构建模式(也称为体系结构模式),是软件系统设计人员,在长期开发某类型软件过程中,摸索到该类软件的一些规律性的东西,经过提炼总结,得到的具有普遍性的构建模式。n通过对这些模式的分析讨论可以比较它们各自的优缺点,从而在开发软件系统时选择合适的体系结构。软件体系结构模式nMVC模式n管道过滤器模式nPAC模式n层次模式n元层次模式33/83软件体系结构的风格与模式n相同点:一个体系结构风格定义了一个由组件和连接类型描述的词汇集合,和一个如何将这些组件和连接类型结合的约束集合。体系结构模式也认为软件体系结构是由组件及它们之间的连接构成的,但更强调它是软件设计活动的产物。设计模式通常更关注两方面的问题:n一是每个模式规定了一个特定的结构,即构成组件的空间配置,也就是组件和它们关系的静态约束;n二是每个模式规定了它运行时的行为,即模式的参与者是如何协作、如何组织和如何通信的,它反映了模式的动态行为。34/83软件体系结构风格与模式n不同点:体系结构风格只描述应用系统的整体结构框架,而软件体系结构模式存在于规模不同的范畴中。体系结构风格之间相互独立,但模式依赖于它所包含的更小的模式,依赖于相互作用的模式以及包含它的更大的模式。和体系结构风格相比,模式更加面向具体问题。体系结构风格一般以不依赖于实际设计环境的观点来表现设计技巧;而模式则非常具体地表示了设计问题,并针对设计问题提出解决方案。设计模式(design pattern)nDescription of communicating objects and classes that are customized to solve a general design problem in a particular context.设计模式nCommand模式nBridge模式nComposite模式nDecorator模式nStrategy模式体系结构设计方法n框架(framework)可以看作是部分完整的子系统。为一个系统族定义体系结构并提供创建它们的基本构造块。它也定义了具体功能特性需要改进的地方。软件体系结构视图(view)n代表一个软件体系结构的某个方面,用以强调体系结构的特定属性。n如:全局视图,概念视图,模块视图,代码视图,执行视图39/83体系结构描述语言nADL(Architecture Description Language)早期主要使用非形式化的、用方框和连线描述体系结构的方法,不能清楚地表述设计的含义【即:没有通过理论抽象与统一的形式化描述】,因此不能形式化地分析一致性、完整性和正确性。对体系结构进行描述和规范的方法;对体系结构的理论认识的形式化描述。形式化理论的重点:通过形式化语言,对结构设计给出准确的描述。ADL为软件体系结构特征既提供了概念性框架,也提供了描述的具体语法,同时提供解析、显示、编译、分析或者仿真体系结构描述的工具。40/83体系结构文档化n只有对体系结构文档化,程序员和系统分析员等才能更好地理解体系结构,从而完成对体系结构地设计。n体系结构文档化的过程就是用一个或者多个视图来描述一个系统结构的过程。n文档化的好处:软件开发过程中各种角色之间交流设计思想的媒介进行上层分析的基础,在此基础上可以验证体系结构设计方案,精炼或改变必要的方案让别人理解系统的第一手资料41/83小结小结n软件体系结构概念n软件开发过程中的作用及重要性n软件体系结构风格n软件体系结构模式n设计模式n软件体系结构设计方法n软件体系结构描述语言