12020/4/15体系结构描述方法软件开发过程中各种角色之间交流设计思想的媒介进行上层分析的基础。此基础上可以验证体系结构设计方案,精炼或改变必要的方案让别人理解系统的第一手资料22020/4/15假定你是ModuleDesigner你最近加盟一家公司,并被安排在一个新项目的开发组中。虽然你富有经验,但是对此项目所涉及的领域还是一个新手。系统的高层体系结构设计已经完成。你的老板(项目经理)让你预计你将要完成的几个模块的开发时间。你怎么办?32020/4/15假定你是ModuleDesigner你来开发A2和A3,怎么开始?42020/4/15与ModuleDesigner交流基本想法是什么?我该做什么(如,实现哪些需求)?我该在哪做(如,这项功能实现在哪里)?我和谁交互?接口是什么?有什么可以重用的代码?必须遵从什么约定(质量目标、旧体系/接口、预算等)?有哪些硬性规定(设计、接口、约束等)?52020/4/15与顾问交流体系结构的必要需求(drivingrequirement)是什么(如,performance,reliability,availability,security,modifiability,interoperability)?各种体系结构视图是如何描述的?抽象出来什么?功能怎样分解?功能怎样分配?使用什么硬件以及软件怎样布置在硬件上?采用了哪些体系结构风格?62020/4/15这是什么?72020/4/15上图的毛病很多事情没有说:组件类型连接件类型圆圈和箭头代表什么?这种布局的意义是什么?为什么CP要放在上层?只画出方框和线条不是体系结构,只是体系结构的开始82020/4/15好的体系结构描述的必要元素(1)需求陈述商业环境、产品的背景、领域描述环境必须和什么系统交互、外部接口使用体系结构图用恰当的线框简洁的说明92020/4/15好的体系结构描述的必要元素(2)考虑实现时的限制仅在它们能影响体系结构设计的范围内被限定的下层结构、处理器需求通常包含其他结构图体系结构设计的原理它怎样去符合需求与约束其他的设计102020/4/15其他方面风格/产品线问题设计可变的尺度体系结构的那个方面必须不被改变?管理问题暗含开发团队的组织结构体系结构评审情况其他设计问题代码重用、标准的运用风险分析运作、管理和维护112020/4/15好描述线和框有不同的形状/颜色,并有图例说明用表格总结方案选择等等各种问题图并不试图去表达很多信息:把信息分散到需要表达它的各个视图中每个体系结构视图必须在一页内完成清晰地区分出哪些是体系结构视图,哪些不是122020/4/15坏描述所有的线看起来都一样箭头不代表任何涵义箭头代表很多涵义实现与文档冲突没有图例太多的必要需求研究软件体系结构的首要问题是如何表示软件体系结构,即如何对软件体系结构建模。根据建模的侧重点不同,可以将软件体系结构的模型分为5种:第2章软件体系结构建模2.1软件体系结构建模概述◎结构模型◎框架模型◎动态模型◎过程模型◎功能模型132020/4/15◇软件体系结构建模的种类第2章软件体系结构建模2.1软件体系结构建模概述◎结构模型这是一个最直观、最普遍的建模方法。这种方法以体系结构的构件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质等。研究结构模型的核心是体系结构描述语言。142020/4/15◇软件体系结构建模的种类第2章软件体系结构建模2.1软件体系结构建模概述◎框架模型框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。152020/4/15◇软件体系结构建模的种类第2章软件体系结构建模2.1软件体系结构建模概述◎动态模型动态模型是对结构或框架模型的补充,研究系统的“大颗粒”的行为性质。例如,描述系统的重新配置或演化。动态可以指系统总体结构的配置、建立或拆除通信通道或计算的过程。162020/4/15◇软件体系结构建模的种类第2章软件体系结构建模2.1软件体系结构建模概述◎过程模型过程模型研究构造系统的步骤和过程。结构是遵循某些过程脚本的结果。172020/4/15◇软件体系结构建模的种类第2章软件体系结构建模2.1软件体系结构建模概述◎功能模型功能模型认为体系结构是由一组功能构件按层次组成,下层向上层提供服务。功能模型可以看作是一种特殊的框架模型。182020/4/15◇“4+1”模型概述第2章软件体系结构建模2.2“4+1”视图模型以上五种模型各有所长,将五种模型有机的统一在一起,形成一个完整的模型来刻画软件体系结构更加合适。19每个视图模型可看成对系统不同方面一个投影,一个构架的不同视图其实反映的是同一个系统。各个不同的视图是可以融合在一起的,而且也只有将不同的视图融合在一起才能获得关于一个系统构架的全面信息。◇“4+1”模型概述第2章软件体系结构建模2.2“4+1”视图模型Rational公司的PhilippeKruchten在1995年提出了用于体系结构描述的“4十l”模型。该模型建立在体系结构的Perry&Wolf定义和BerryBoehm定义的基础上。“4+1”视图模型从5个不同的视角包括逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件体系结构。每一个视图只关心系统的一个侧面,5个视图结合在一起才能够处理富于挑战性的、大规模的软件系统。202020/4/15212020/4/15u逻辑视图当采用面向对象的设计方法时,逻辑视图即是对象模型。u进程视图描述系统的并发和同步方面的设计。u物理视图描述软件到硬件之间的映射关系,反映系统在分布方面的设计。逻辑视图进程视图开发视图物理视图最终用户:功能需求场景编程人员:软件管理系统集成人员:性能可扩充性、吞吐量等系统工程人员:系统拓扑、安装、通信等22u开发视图描述软件在开发环境下的静态组织。u场景视图通过选择出地一些用例对体系结构加以说明。这些用例称作场景。四个视图反映的是同一个系统,所以用了第五个视图,“+1”视图,它是由一系列重要的案例组成。用这些重要的案例将前面的四个视图联系到一起,从而组成第五个视图。逻辑视图进程视图开发视图物理视图最终用户:功能需求场景编程人员:软件管理系统集成人员:性能可扩充性、吞吐量等系统工程人员:系统拓扑、安装、通信等232020/4/15对体系结构进行的描述是围绕着以上4个视图展开的。然后,通过选择出的一些用例对体系结构加以说明。这些用例被称作场景(scenarios),它们构成了第5个视图。实际上,体系结构在某种程度上是由场景演化而来的。逻辑视图进程视图开发视图物理视图最终用户:功能需求场景编程人员:软件管理系统集成人员:性能可扩充性、吞吐量等系统工程人员:系统拓扑、安装、通信等24体系结构的概念在每个视图里面都可以独立应用,即可以在每个视图里面定义体系结构的各种组成元素,如构件、连接件等。对于不同的视图,还可以选择不同的体系结构风格,因此在同一个系统结构中可以使用多种风格。在每一种视图里,我们使用该视图特定的符号。这避免了符号用法和意义的混乱。逻辑视图进程视图开发视图物理视图最终用户:功能需求场景编程人员:软件管理系统集成人员:性能可扩充性、吞吐量等系统工程人员:系统拓扑、安装、通信等252020/4/15“4十1”模型实际上使得有不同需求的人员能够得到他们对于软件体系结构想要了解的东西。系统工程师先从物理视图,然后从进程视图靠近体系结构。最终使用者、客户、数据专家从逻辑视图看体系结构;项目经理、软件配置人员从开发视图看体系结构。逻辑视图进程视图开发视图物理视图最终用户:功能需求场景编程人员:软件管理系统集成人员:性能可扩充性、吞吐量等系统工程人员:系统拓扑、安装、通信等262020/4/15不是所有的软件体系结构都需要完整的“4十1”视图。没有用的视图在体系结构描述中可以被省略。例如对于非常小的系统,逻辑视图和开发视图有可能非常相似以至于没有必要把它们分开描述。场景视图在各种环境下都是有用的。逻辑视图进程视图开发视图物理视图最终用户:功能需求场景编程人员:软件管理系统集成人员:性能可扩充性、吞吐量等系统工程人员:系统拓扑、安装、通信等272020/4/152.2逻辑视图:面向对象的分解逻辑视图主要支持系统的功能需求,即系统提供给最终用户的服务。在逻辑视图中,系统分解成一系列的功能抽象,这些抽象主要来自问题领域。这种分解不但可以用来进行功能分析,而且可用作标识在整个系统的各个不同部分的通用机制和设计元素。在面向对象技术中,通过抽象、封装和继承,可以用对象模型来代表逻辑视图,用类图来描述逻辑视图。282020/4/152.2.1逻辑视图的符号表示法可以从Booch标记法中导出逻辑视图的标记法,只是从体系结构级的范畴来考虑这些符号,用RationalRose进行体系结构设计。关联:表示两个类之间存在某种语义上的联系,真正含义由附加在横线上的短语说明。包含:实心圆一端表示整体,另一端表示部分。使用:空心圆一端连接在请求服务的类,另一端连接在提供服务的类。继承:箭头由子类指向基类。292020/4/152.2.2逻辑视图的风格逻辑视图也可以采用面向对象的风格。逻辑视图设计的主要准则是,要设法在整个系统中保持一个单一的、连贯的对象模型,避免类和相关机制出现按照场地或处理器过早的分化。302020/4/15会话终端控制器转换服务连接服务编号计划2.2.3逻辑视图的例子左图显示了一个专用自动交换分机(ACS)的例子。专用自动交换分机用于在通信终端之间建立连接。通信终端可能是电话机、中继线(连接到中心室的线路)、专用线(专用自动交换分机和一般的交换分机之间的线路)、数据线、ISDN线等。不同的线路需要不同的线路接口卡的支持。终端对象负责维护终端的状态,并代表所在的线路提供通信服务。线路控制器对象负责从线路接口卡接受信号,以及向它发送信号,并完成信号和一系列的事件(如开始、结束、计数等)之间的转换。控制器还必须受到严格的实时要求的约束。为了适应不同的接口,这个类有许多的子类。会话对象代表在一个对话中涉及的终端的集合。会话对象使用转换服务(逻辑地址和物理地址之间的映射、路由等)和连接服务建立两个终端之间的语音连接。312020/4/15对于规模更大的系统来说,体系结构级中包含数十甚至数百个类。左图是空中交通管制系统的顶级类图,该图包含了8个类种属(即类的分组)。显示及用户接口机械服务基本元素航空信息空中交通管理飞行管理外部接口网关仿真和培训2.2.3逻辑视图的例子322020/4/152.3进程视图:过程分解进程视图(processview,也称过程视图)侧重于系统的运行特性,主要考虑的是一些非功能性的需求,诸如性能、可用性等。它所要面对的问题有并发,分布,系统的完整性,容错能力等。它还要考虑怎样把进程体系结构与逻辑视图体系结构的要点相适应——对某个对象的某个操作实际上是在哪个控制线程上发生的。332020/4/152.3进程视图:过程分解可以把进程体系结构分为几个抽象层次来描述,每个层次关注不同的方面。在最高层次上,进程体系结构可以被视为是一个逻辑网络的集合。每个独立执行的逻辑网络都是由通信程序(即“过程”)构成的。这些逻辑网络分布在一个通过局域网或广域网连接起来的硬件资源集合上。多个逻辑网络可能同时存在,并共享同样的物理资源。342020/4/152.3进程视图:过程分解通过进程视图可以估计出消息流和过程负荷,也可以从过程测量一个目标系统最终执行情况。例如在以计算机网络作为运行环境的图书管理系统中,服务器对来自各个不同的客户机的过程管理,决定某个特定过程(如查询子过程、借还书子过程)的唤醒、启动、关闭等操作,从而控制整个网络协调有序地工作。2.3.1进程视图的符