1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,成都信息工程学院,*,2.2,从需求定义到软件体系结构,10/26/2025,1,成都信息工程学院,什么是“工程”?,定义有很多,通常来说:,用最少的代价解决问题,.,.,目的是处理实际的难题,.,.,以科学知识为手段,.,.,建造工具,.,.,服务于人类,目标:使普通人能做以前只有专家圣手才能做的事情,10/26/2025,2,成都信息工程学院,工程的进化,10/26/2025,3,成都信息工程学院,工程化的步伐,手工,(Craft),商业,(,Commerical,),工程,(Professional
2、 Engineering),行家里手和业余天才,熟练的工匠,受过系统教育的专业人员,直觉与强力,既定程序,分析与理论,偶然的进步,注重实效地优化,以科学为指导地升级换代,不经意的推广,言传身教,专业教育课程,奢侈地使用原料,注重成本与原料利用,原料多次利用,生产是为了使用而不是出售,为销售而生产,市场份额,10/26/2025,4,成都信息工程学院,规范化循环,专门的解决方法,土方法,规范化,模型与理论,新的问题,实践提高,10/26/2025,5,成都信息工程学院,构建一个小狗屋,10/26/2025,6,成都信息工程学院,构造一栋房屋,10/26/2025,7,成都信息工程学院,构建一个高
3、层建筑,10/26/2025,8,成都信息工程学院,软件中的影响因素,技术混合,性能,吞吐量,容量,可用性,失败安全,出错容忍程度,功能,成本,兼容性,恢复能力,10/26/2025,9,成都信息工程学院,软件设计的目标和目的,软件需求:解决,“,做什么,”,软件设计:解决,“,怎么做,”,软件结构设计的任务,问题结构,(,软件需求,),软件结构,映射,10/26/2025,10,成都信息工程学院,2.2.1,什么叫软件的体系结构,软件体系结构,又常被称为架构。,“软件体系结构”你早就知道,Client/Server,Three-tier,P2P,Distributed,10/26/2025,
4、11,成都信息工程学院,架构不是框框,应用架构的基本思想,一个架构是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程。,10/26/2025,12,成都信息工程学院,“建筑体系结构”,10/26/2025,13,成都信息工程学院,“建筑体系结构”,10/26/2025,14,成都信息工程学院,SA,的定义,后人精简,Garlan,and Shaw,的定义为:,体系结构,=,组件,+,连接件,+,约束,Architecture=Components+Connectors+,Constrains,10/26/2025,15,成都信息工程学院,
5、除了构件,连接件和约束,3,个最基本的组成元素,软件体系结构还包括,端口(,port,),和,角色(,role,),两种元素。,构件的接口由一组端口组成,,每个端口表示了构件和外部环境的交互点。连接件作为建模软件体系结构的主要实体,同样也有接口。连接件的接口由一组角色组成,连接的每个角色定义了该连接表示的交互的参与者。,10/26/2025,16,成都信息工程学院,SA,之重要,最早指出,SA,的重要性的是大师,Edsger,Dijkstra(1930-2002)“.,the larger the project,the more essential the structuring!”,(19
6、68),10/26/2025,17,成都信息工程学院,程序,=,?,程序,=,算法,+,数据结构(,1960s,),程序,=,子程序,+,子程序(,1970s,),对象,=,算法,+,数据结构程序,=,对象,+,对象(,1980s,),程序,=,组件,+,连接件(,1990s,),10/26/2025,18,成都信息工程学院,软件,体系结构学习主要内容,软件体系,结构,的有关概念,软件体系,结构,的层次性,软件体系,结构,的设计原理,10/26/2025,19,成都信息工程学院,什么是,软件,体系结构,软件体系,结构,定义了软件局部和总体部件的构成,以及这些部件之间的相互作用关系。,10/26
7、/2025,20,成都信息工程学院,技术进步,每个新的体系结构的诞生,都给技术的进步带来深远影响,WWW,三层结构,CORBA,J2EE,.NET,10/26/2025,21,成都信息工程学院,软件体系结构,软件体系结构包括两部分,:,(1),过程构件,(,模块,),的层次结构,(2),数据构件,软件的架构主要回答的问题,软件的组成部分,软件的层次关系,模块的内部处理逻辑,模块之间的界面,10/26/2025,23,成都信息工程学院,软件体系结构可分为四种不同的体系:,概念结构,包括部件、互连、原则和性能等,代码结构,包括软件的配置管理、系统建造等,模块结构,包括模块界面、模块管理、模块控制和
8、一致性等,执行结构,包括性能分析、调度分析、动态配置和不同的执行系统之间的接口等,10/26/2025,24,成都信息工程学院,与软件体系结构有关的研究:,体系结构风格,(Architecture Styles),表示软件系统的一种特别的基本结构,以及相关的构造方法,设计模式,(Design Patterns),构造型模式、结构型模式、行为型模式,框架,(Framework),另一种研究和构造软件体系结构的方法,更多的是关于应用领域问题的已建立的系统结构。,10/26/2025,25,成都信息工程学院,框架和设计模式,构件通常是代码重用,而设计模式是设计重用,框架则介于两者之间,部分代码重用,
9、部分设计重用,有时分析也可重用。,有三种级别的重用:,(1),内部重用,,即在同一应用中能公共使用的抽象块,;,(2),代码重用,,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;,(3),应用框架的重用,,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。,10/26/2025,26,成都信息工程学院,设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;,架构可以用代码表示,,也能直接执行或复用,而对模式而言只有实例才能用代码表示,;,设计模式是比架构更小的元素,,一个架构中往往含有一个或多个设计模式,架构总是针对某一特定应用领域,但同
10、一模式却可适用于各种应用。,10/26/2025,27,成都信息工程学院,成功的架构开发需要确定领域专用的,“热点”,(Hot spot),。,应用开发者在框架的基础上进行开发,只须扩展架构的某些部分,“热点”就是在应用领域的一种扩展槽,开发者根据自己的需要填充这些扩展槽,“食谱”,(Cookbook),就是描述如何使用架构方法的文档。在“食谱”中包含了许多“烹饪”方法,这些“烹饪”方法相当于一些具体的操作步骤,描述了为解决某一专门问题如何使用架构的详细方法。架构的内部设计和实现细节通常不出现在“食谱”中。,10/26/2025,28,成都信息工程学院,为什么要进行体系结构开发,?,领域内的软
11、件结构一致性好;,建立更加开放的系统;,重用代码大大增加,;,软件设计人员要专注于对领域的了解,使需求分析更充分;,存储了经验,;,允许采用快速原型技术;,有利于在一个项目内多人协同工作;,大粒度的重用使得平均开发费用降低,;,10/26/2025,29,成都信息工程学院,好的开始相当于成功一半,设计模式是支撑架构的重要组件,架构设计是骨架,设计模式就是肉,时刻牢记架构设计的目标,1.,最大化的重用:,2.,尽可能的简单明了:,3.,最灵活的拓展性:,10/26/2025,30,成都信息工程学院,好的体系结构,与大多数好的设计一样,是一系列相容的原理和技术的产物,在项目的各个阶段保持一致,在各
12、种变化面前表现出弹性,在产品的整个生命周期中充当向导,重用成熟的工程知识,10/26/2025,31,成都信息工程学院,2.3,软件体系结构的风格,软件体系结构风格主要分为两类。,固定术语类:,包括全局组织结构,如分层系统,管道过滤器系统,客户,/,服务系统,黑板系统等,还包括局部化的模式,如模型视图控制等其他面向对象开发的模式。全局化的模式是在软件全局上提供设计方式;而局部化的模式则侧重于软件系统的一小部分,是针对特定问题提供解决方案。,10/26/2025,32,成都信息工程学院,参数化模型类,:,这一类别的风格包括对特定应用领域的特定系统组织,它指定了构件及其交互的配置,如词法分析器,类
13、型分析器,优化器和代码生产器,还有一些参考模型,如人机交互框架,通信参考模型,以及在航空、移动机器人等领域的大量特定领域方法。,10/26/2025,33,成都信息工程学院,体系结构风格的最关键四个要素,提供一个设计的词汇表,定义一套配置规则,定义一套解释原则,定义基于这种风格的系统所进行的分析,10/26/2025,34,成都信息工程学院,2.3.2,常用的软件体系结构风格,1,、,管道和过滤器风格,在管道,/,过滤器风格的软件体系结构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流,。,10/26/2025,35,成都信息工程学院,管道,管道,管道,管道
14、过滤器,过滤器,过滤器,过滤器,过滤器,过滤器,10/26/2025,36,成都信息工程学院,2,、仓库风格和黑板风格,仓库(,Repositories,),风格的体系结构有两种不同的构件组成:,(,1,),中央数据结构,,它说明当前状态;,(,2,),独立构件的集合,,它对中央数据结构进行操作。,10/26/2025,37,成都信息工程学院,对于系统中数据和状态的控制方法有两种。,(,1,)输入事务选择进行某种处理,并把执行结果作为当前状态存储到中央数据结构中,这时,仓库是一个传统的数据库体系结构,(,2,)另一种方法是,由中央数据结构的当前状态决定进行某种处理,这时,仓库是一个黑板(,b
15、lackboard,),体系结构,。,10/26/2025,38,成都信息工程学院,存储器,直接存取,黑板,(共享数据),知识源,知识源,知识源,知识源,知识源,知识源,计算,10/26/2025,39,成都信息工程学院,仓库和黑板,仓库在计算机应用中几乎无处不在,信息共享系统在很多领域有相似的发展趋势,因为有相似的技术和商业压力的激励,黑板是一种特别的仓库,主要用于需要对凌乱的信息进行处理的领域,其控制策略必须是,机会主义的,10/26/2025,40,成都信息工程学院,3,、,数据抽象和面向对象风格,面向对象的风格主要是利用对象的,3,个特性,即,封装特性、继承和多态特性,,建立构件对象。
16、对象是一种被称作管理者的构件,因为它负责保持资源的完整性。对象是通过函数和过程的调用来交互的,。,10/26/2025,41,成都信息工程学院,抽象数据类型,过程调用,对象,对象,对象,对象,对象,10/26/2025,42,成都信息工程学院,4,、客户,/,服务器风格,(,C/S,结构),三部分组成:,中心服务数据系统,客户应用程序,网络,客户端通过网络直接连接到数据库服务器,由二者分担业务处理。,10/26/2025,43,成都信息工程学院,客户机,/,服务器体系结构,10/26/2025,44,成都信息工程学院,C/S,体系结构的处理流程,10/26/2025,45,成都信息工程学院,客
17、户机,/,服务器体系结构,应用系统的组成:,显示逻辑部分,(,表示层,):,实现与用户交互,应用处理部分,(,功能层,):,进行具体运算和数据处理,数据管理部分,(,数据层,):,对数据库中数据进行查询、,修改、更新等任务,应用分层,表示层,功能层,数据层,三层明确分割,逻辑上独立,10/26/2025,46,成都信息工程学院,胖客户机和瘦客户机,客户机,“胖”,客户机,应用,处理,逻辑,显,示,逻,辑,服务器,数据,管理,逻辑,数据库,“瘦”,客户机,表示,显,示,逻,辑,数据,管理,逻辑,数据库,表示,应用处理,应用,处理,逻辑,客户机,服务器,10/26/2025,47,成都信息工程学院
18、三层,C/S,的基本硬件结构,将三层功能装载到硬件的三种基本方法,表示层,表示层,表示层,功能层,数据层,数据层,功能层,功能层,数据层,客,户,机,服,务,器,(1),将数据层和,功能层放在,一台服务器上,(2),将数据层和,功能层放在,不同服务器上,服,务,器,(3),将功能层放,在客户机上,10/26/2025,48,成都信息工程学院,体系结构,3.4,三层客户,/,服务器风格,第三章 软件体系结构风格,表示层,数据层,功能层,三层客户机,/,服务器体系结构,10/26/2025,49,成都信息工程学院,处理流程,3.4,三层客户,/,服务器风格,第三章 软件体系结构风格,三层,C/S
19、体系结构的处理流程,10/26/2025,50,成都信息工程学院,5,、浏览器,/,服务器风格(,B/S,结构),具体结构为:,浏览器,/Web,服务器,/,数据库服务器,。,B/S,体系结构主要是利用不断成熟的,WWW,浏览技术,结合浏览器的多种脚本语言,用通用浏览器实现原来需要复杂的专用软件才能实现的功能。,10/26/2025,51,成都信息工程学院,浏览器,/,服务器体系结构,10/26/2025,52,成都信息工程学院,结合三,层,C/S,的,B/S,结构(四层),数据库,数据库,客户端,数据库,驱动,应用,服务,中间服务器,客户端,(Browser),Web,App.,Web S
20、erver,客户端,远程,连接,客户机,10/26/2025,53,成都信息工程学院,6,、分层系统风格,分层,(,layered,),系统组织成一个层次结构,,每一层为上层服务,并作为下层客户,。在一些层次系统中,除了一些精心挑选的输出函数外,,内部的层次对相邻的层可见,。,这种风格支持基于可增加抽象层的设计。这样,允许将一个复杂问题分解成一个增量步骤序列的实现。,由于每一层最多只影响两层,同时只要给相邻层提供相同的接口。,10/26/2025,54,成都信息工程学院,过程调用,构件元素,可用系统,基本功能,核心层,用户,10/26/2025,55,成都信息工程学院,层次模型的结构关系,客户
21、层N,层N-1,层1,使用,抽象的最高层,抽象的最低层,10/26/2025,56,成都信息工程学院,层次风格特点,每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层,适当时候,(,必不得已的时候,),,可以允许一定的越层操作,大的问题分解为若干个渐进的小问题,逐步解决,隐藏了很多复杂度,修改一层,,最多影响两层,,而通常只能影响上层。接口稳固,则谁都不影响,10/26/2025,57,成都信息工程学院,使用层,,不需要去了解层的实现细节,可以使用另一种技术来改变基础的层,而不会影响上面的层的应用。,可以减少不同层之间的依赖。,容易制定出层标准。,底下的层可以用来建立顶上的层的多
22、项服务。,层不可能封装所有的功能,一旦有功能变动,势必要波及所有的层。,效率降低。,10/26/2025,58,成都信息工程学院,应用层协议,表示层协议,会晤层协议,传输层协议,物 理 介 质,应用层,表示层,会晤层,传输层,网络层,数据链路层,物理层,应用层,表示层,会晤层,传输层,网络层,数据链路层,物理层,网络层,数据链路层,物理层,网络层,数据链路层,物理层,中继系统 中继系统,主机系统,主机系统,ISO/OSI,开放系统互连参考模型,10/26/2025,59,成都信息工程学院,.NET,框架分层模型,10/26/2025,60,成都信息工程学院,7,、基于事件的隐式调用风格,基于事
23、件的隐式调用风格的思想是构件,不直接调用一个过程,,,而是触发或广播一个或多个事件,。,系统中的其它构件可以把某一过程注册为与它所关心的事件相关联。当一个事件被触发时,系统自动调用在这个事件中注册的过程,这样,一个事件的触发就导致了另一模块中的过程的调用。,10/26/2025,61,成都信息工程学院,从体系结构上说,这种,风格的构件是一些模块,,这些模块既可以是一些过程,又可以是一些事件的集合。过程可以用通用的方式调用,也可以在系统事件中注册一些过程,当发生这些事件时,过程被调用。,10/26/2025,62,成都信息工程学院,基于事件的隐式调用风格的主要特点是事件的,触发者并不知道哪些构件
24、会被这些事件影响,。这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用,因此,许多隐式调用的系统也包含显式调用作为构件相互的补充形式,10/26/2025,63,成都信息工程学院,8,、模型视图控制器风格,MVC,模式把涉及数据管理和显示的功能分散到不同的对象上,降低对象间的耦合,。,MVC,是一个设计模式,它强制性地使应用程序的输入、处理和输出分开。使用,MVC,应用程序被分成三个核心部件:,模型、视图、控制器,。它们各自处理自己的任务,,并且尽量降低部分间的耦合。每一部分处理特定的任务,并负责完成与其它部分的通信。,10/26/2025,64,成都信息工程学院,Model-View-C
25、ontroller,模式,10/26/2025,65,成都信息工程学院,MVC,模式,MVC,模式的目的就是实现,Web,系统的职能分工。,Model,层实现系统中的业务逻辑,通常可以用,JavaBean,或,EJB,来实现。,View,层用于与用户的交互,通常用,JSP,来实现。,Controller,层是,Model,与,View,之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。,10/26/2025,66,成都信息工程学院,MVC,的优点,:,各施其职,互不干涉,有利于开发中的分工,有利于组件的重用,10/26/
26、2025,67,成都信息工程学院,MVC,的缺点:,MVC,的缺点是由于它没有明确的定义,所以完全理解,MVC,并不是很容易。,如何,将,MVC,运用到应用程序中没有准确的解决方案,需要设计者认真考虑。,由于将一个应用程序分成了三个部件,所以使用,MVC,同时也意味着你将要管理比以前更多的文件,意味着代码文件增多,因此,对于文件的管理需要费点心思,开发的工作量也要增加了。,模型和视图的严格分离可能使得调试困难一些,但比较容易发现错误。,10/26/2025,68,成都信息工程学院,9,、,C2,风格,C2,体系结构风格可以概括为:,通过连接件绑定在一起的按照一组规则运作的并行构件网络,。,10
27、/26/2025,69,成都信息工程学院,C2,风格中的系统组织规则,系统中的构件和连接件都有一个顶部和一个底部;,构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的;,一个连接件可以和任意数目的其它构件和连接件连接;,当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部,10/26/2025,70,成都信息工程学院,对体系结构风格的理解,结构风格以,结构组织为特性,定义了一个软件系统族,表达了部件以及部件之间的关系。,体系结构风格通过组件应用的限制及其与构建有关的组成和设计规则来,表现组件和组件之间的关系,。,体系结构风格表示
28、了软件系统的一种,特别的基本结构,,以及相关的构造方法。,体系结构风格应该使一些对软件,构成带有整体性、普遍性、一般性的结构和结构关系的方法,。在设计中,遵循这些风格的构成原则,对软件的开发和维护十分有益。,10/26/2025,71,成都信息工程学院,体系结构软件设计的问题,工具,如何描述软件的总体结构,方法,用什么方法由问题结构导出,软件结构,评估准则,什么样的软件结构是,“最优的,”,10/26/2025,72,成都信息工程学院,体系结构文档的用处,软件开发过程中各种角色之间交流设计思想的媒介,进行上层分析的基础。此基础上可以验证体系结构设计方案,精炼或改变必要的方案,让别人理解系统的第
29、一手资料,10/26/2025,73,成都信息工程学院,有利于软件开发者之间交流,基本想法是什么?,我该做什么,(,如,实现哪些需求,),?,我该在哪做,(,如,这项功能实现在哪里,),?,我和谁交互?接口是什么?,有什么可以重用的代码?,必须遵从什么约定,(,质量目标、旧体系,/,接口、预算,等,),?,有哪些硬性规定,(,设计、接口、约束等,),?,10/26/2025,74,成都信息工程学院,2.4,软件体系结构描述方法,2.4.1,软件体系结构描述方法概述,1,、软件体系结构描述方法,图形表达工具:使用较多,的,UML,中的“,4,1”,视图,模块内连接语言,基于构件的系统描述语言,软
30、件体系结构的描述语言,(,ADL,),2,、,软件体系结构描述语言(,ADL,),10/26/2025,75,成都信息工程学院,2,、,软件体系结构描述语言(,ADL,),UniCon,语言,C2,语言,Wright,语言,Aesop,语言,其他语言,10/26/2025,76,成都信息工程学院,2.4.2,软件体系结构与,UML,它在每一层都递归地定义语义结构,从而使语义更精确、更正规。,它可用来定义重量级和轻量级扩展机制,如定义新的元类和构造型,.,它在体系结构上将,UML,元模型与其他基于,4,层元模型体系结构的标准(比如,MOF,和用于模型交换的,XMI Facility,),统一起来
31、10/26/2025,77,成都信息工程学院,2.5,从软件体系结构过渡到系统设计时的准备,工作量,开发计划,质量规划,功能点故障率,质量(验收时的故障率),生产率,进度计划,质量成本,故障在各阶段的分布,实现质量目标的策略,10/26/2025,78,成都信息工程学院,风险策略,开发规范,配置管理:命名规则、目录结构、权限等;,设计文挡模板:详细设计、数据库设计等;,程序编写规范:命名规则、模块大小、注释等;,测试规范。,10/26/2025,79,成都信息工程学院,掌握可用性规则,1.,为实际工作设计,2.,不要急于具体化,3.,避免为创新而创新,不要成为时尚的奴隶,4.,努力建立有效的交互,5.,为实际工作试用界面,10/26/2025,80,成都信息工程学院,练习题,1,、需求所包含的内容有哪些?,2,、需求获取的基本原则有哪些?,3,、需求分析所包含的内容有哪些?,4,、需求规格说明书的质量标准是什么?,5,、什么叫软件的体系结构?,6,、软件体系结构设计的目标?,7,、软件体系结构的意义?,8,、软件体系结构风格的含义是什么?,9,、软件体系结构设计与需求分析描述模型有什么关系?,10/26/2025,81,成都信息工程学院,






