第5部分 软件架构设计.ppt_第1页
第5部分 软件架构设计.ppt_第2页
第5部分 软件架构设计.ppt_第3页
第5部分 软件架构设计.ppt_第4页
第5部分 软件架构设计.ppt_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2020/12/8,成都信息工程学院,1,2.2从需求定义到软件体系结构,2020/12/8,成都信息工程学院,2,什么是“工程”?,定义有很多,通常来说: 用最少的代价解决问题 . . 目的是处理实际的难题 . . 以科学知识为手段 . . 建造工具 . . 服务于人类 目标:使普通人能做以前只有专家圣手才能做的事情,2020/12/8,成都信息工程学院,3,工程的进化,2020/12/8,成都信息工程学院,4,工程化的步伐,2020/12/8,成都信息工程学院,5,规范化循环,专门的解决方法,土方法,规范化,模型与理论,新的问题,实践提高,2020/12/8,成都信息工程学院,6,构建一个

2、小狗屋,2020/12/8,成都信息工程学院,7,构造一栋房屋,2020/12/8,成都信息工程学院,8,构建一个高层建筑,2020/12/8,成都信息工程学院,9,软件中的影响因素,功能,成本,兼容性,2020/12/8,成都信息工程学院,10,软件设计的目标和目的,软件需求:解决“做什么” 软件设计:解决“怎么做” 软件结构设计的任务 问题结构(软件需求) 软件结构,映射,2020/12/8,成都信息工程学院,11,2.2.1 什么叫软件的体系结构,软件体系结构,又常被称为架构。 “软件体系结构”你早就知道 Client/Server Three-tier P2P Distributed

3、,2020/12/8,成都信息工程学院,12,架构不是框框应用架构的基本思想,一个架构是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程。,2020/12/8,成都信息工程学院,13,“建筑体系结构”,2020/12/8,成都信息工程学院,14,“建筑体系结构”,2020/12/8,成都信息工程学院,15,SA的定义,后人精简Garlan and Shaw的定义为:体系结构 = 组件 + 连接件 + 约束Architecture = Components + Connectors + Constrains,2020/12/8,成都信息工程

4、学院,16,除了构件,连接件和约束3个最基本的组成元素,软件体系结构还包括端口(port)和角色(role)两种元素。 构件的接口由一组端口组成,每个端口表示了构件和外部环境的交互点。连接件作为建模软件体系结构的主要实体,同样也有接口。连接件的接口由一组角色组成,连接的每个角色定义了该连接表示的交互的参与者。,2020/12/8,成都信息工程学院,17,SA之重要,最早指出SA的重要性的是大师Edsger Dijkstra(1930-2002)“.the larger the project, the more essential the structuring!”(1968),2020/12

5、/8,成都信息工程学院,18,程序=?,程序 = 算法 + 数据结构(1960s ) 程序 = 子程序 + 子程序(1970s ) 对象 = 算法 + 数据结构程序 = 对象 + 对象(1980s) 程序 = 组件 + 连接件(1990s),2020/12/8,成都信息工程学院,19,软件体系结构学习主要内容,软件体系结构的有关概念 软件体系结构的层次性 软件体系结构的设计原理,2020/12/8,成都信息工程学院,20,什么是软件体系结构,软件体系结构定义了软件局部和总体部件的构成,以及这些部件之间的相互作用关系。,2020/12/8,成都信息工程学院,21,技术进步,每个新的体系结构的诞生

6、,都给技术的进步带来深远影响 WWW 三层结构 CORBA J2EE .NET,软件体系结构,软件体系结构包括两部分: (1)过程构件(模块)的层次结构 (2)数据构件,2020/12/8,成都信息工程学院,23,软件的架构主要回答的问题,软件的组成部分 软件的层次关系 模块的内部处理逻辑 模块之间的界面,软件体系结构可分为四种不同的体系: 概念结构 包括部件、互连、原则和性能等 代码结构 包括软件的配置管理、系统建造等 模块结构 包括模块界面、模块管理、模块控制和一致性等 执行结构 包括性能分析、调度分析、动态配置和不同的执行系统之间的接口等,与软件体系结构有关的研究: 体系结构风格(Arc

7、hitecture Styles) 表示软件系统的一种特别的基本结构,以及相关的构造方法 设计模式(Design Patterns) 构造型模式、结构型模式、行为型模式 框架(Framework) 另一种研究和构造软件体系结构的方法,更多的是关于应用领域问题的已建立的系统结构。,框架和设计模式,构件通常是代码重用,而设计模式是设计重用,框架则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。 有三种级别的重用: (1)内部重用,即在同一应用中能公共使用的抽象块; (2)代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用; (3)应用框架的重用,即为专用领域提供通用的

8、或现成的基础结构,以获得最高级别的重用性。,设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象; 架构可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示; 设计模式是比架构更小的元素,一个架构中往往含有一个或多个设计模式,架构总是针对某一特定应用领域,但同一模式却可适用于各种应用。,2020/12/8,成都信息工程学院,28,成功的架构开发需要确定领域专用的“热点” (Hot spot)。应用开发者在框架的基础上进行开发,只须扩展架构的某些部分,“热点”就是在应用领域的一种扩展槽,开发者根据自己的需要填充这些扩展槽 “食谱” (Cookbook

9、)就是描述如何使用架构方法的文档。在“食谱”中包含了许多“烹饪”方法,这些“烹饪”方法相当于一些具体的操作步骤,描述了为解决某一专门问题如何使用架构的详细方法。架构的内部设计和实现细节通常不出现在“食谱”中。,2020/12/8,成都信息工程学院,29,为什么要进行体系结构开发?,领域内的软件结构一致性好; 建立更加开放的系统; 重用代码大大增加; 软件设计人员要专注于对领域的了解,使需求分析更充分; 存储了经验; 允许采用快速原型技术; 有利于在一个项目内多人协同工作; 大粒度的重用使得平均开发费用降低;,2020/12/8,成都信息工程学院,30,好的开始相当于成功一半 设计模式是支撑架构

10、的重要组件 架构设计是骨架,设计模式就是肉 时刻牢记架构设计的目标 1. 最大化的重用: 2. 尽可能的简单明了: 3. 最灵活的拓展性:,2020/12/8,成都信息工程学院,31,好的体系结构,与大多数好的设计一样 是一系列相容的原理和技术的产物,在项目的各个阶段保持一致 在各种变化面前表现出弹性 在产品的整个生命周期中充当向导 重用成熟的工程知识,2020/12/8,成都信息工程学院,32,2.3 软件体系结构的风格,软件体系结构风格主要分为两类。 固定术语类:包括全局组织结构,如分层系统,管道过滤器系统,客户/服务系统,黑板系统等,还包括局部化的模式,如模型视图控制等其他面向对象开发的

11、模式。全局化的模式是在软件全局上提供设计方式;而局部化的模式则侧重于软件系统的一小部分,是针对特定问题提供解决方案。,2020/12/8,成都信息工程学院,33, 参数化模型类:这一类别的风格包括对特定应用领域的特定系统组织,它指定了构件及其交互的配置,如词法分析器,类型分析器,优化器和代码生产器,还有一些参考模型,如人机交互框架,通信参考模型,以及在航空、移动机器人等领域的大量特定领域方法。,2020/12/8,成都信息工程学院,34,体系结构风格的最关键四个要素,提供一个设计的词汇表 定义一套配置规则 定义一套解释原则 定义基于这种风格的系统所进行的分析,2020/12/8,成都信息工程学

12、院,35,2.3.2 常用的软件体系结构风格,1、 管道和过滤器风格 在管道/过滤器风格的软件体系结构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。,2020/12/8,成都信息工程学院,37,2、仓库风格和黑板风格,仓库(Repositories)风格的体系结构有两种不同的构件组成: (1)中央数据结构,它说明当前状态; (2)独立构件的集合,它对中央数据结构进行操作。,2020/12/8,成都信息工程学院,38,对于系统中数据和状态的控制方法有两种。 (1)输入事务选择进行某种处理,并把执行结果作为当前状态存储到中央数据结构中,这时,仓库是一个传统的

13、数据库体系结构 (2)另一种方法是,由中央数据结构的当前状态决定进行某种处理,这时,仓库是一个黑板(blackboard)体系结构。,2020/12/8,成都信息工程学院,39,2020/12/8,成都信息工程学院,40,仓库和黑板,仓库在计算机应用中几乎无处不在 信息共享系统在很多领域有相似的发展趋势,因为有相似的技术和商业压力的激励 黑板是一种特别的仓库,主要用于需要对凌乱的信息进行处理的领域,其控制策略必须是机会主义的,2020/12/8,成都信息工程学院,41,3、数据抽象和面向对象风格,面向对象的风格主要是利用对象的3个特性,即封装特性、继承和多态特性,建立构件对象。对象是一种被称作

14、管理者的构件,因为它负责保持资源的完整性。对象是通过函数和过程的调用来交互的。,2020/12/8,成都信息工程学院,43,4、客户/服务器风格(C/S结构),三部分组成: 中心服务数据系统 客户应用程序 网络 客户端通过网络直接连接到数据库服务器,由二者分担业务处理。,2020/12/8,成都信息工程学院,44,客户机/服务器体系结构,2020/12/8,成都信息工程学院,45,C/S体系结构的处理流程,客户机/服务器体系结构,应用系统的组成: 显示逻辑部分(表示层):实现与用户交互 应用处理部分(功能层):进行具体运算和数据处理 数据管理部分(数据层):对数据库中数据进行查询、 修改、更新

15、等任务,应用分层,胖客户机和瘦客户机,客户机,“胖” 客户机,应用 处理 逻辑,显 示 逻 辑,服务器,数据 管理 逻辑,数据库,“瘦” 客户机,表示,显 示 逻 辑,数据 管理 逻辑,数据库,表示 应用处理,应用 处理 逻辑,客户机,服务器,三层C/S的基本硬件结构,将三层功能装载到硬件的三种基本方法,表示层,表示层,表示层,功能层,数据层,数据层,功能层,功能层,数据层,客 户 机,服 务 器,(1)将数据层和 功能层放在 一台服务器上,(2)将数据层和 功能层放在 不同服务器上,服 务 器,(3)将功能层放 在客户机上,2020/12/8,成都信息工程学院,49, 体系结构,3.4 三层

16、客户/服务器风格,第三章 软件体系结构风格,三层客户机/服务器体系结构,2020/12/8,成都信息工程学院,50, 处理流程,3.4 三层客户/服务器风格,第三章 软件体系结构风格,三层C/S体系结构的处理流程,2020/12/8,成都信息工程学院,51,5、浏览器/服务器风格(B/S结构),具体结构为:浏览器/Web服务器/数据库服务器。B/S体系结构主要是利用不断成熟的WWW浏览技术,结合浏览器的多种脚本语言,用通用浏览器实现原来需要复杂的专用软件才能实现的功能。,2020/12/8,成都信息工程学院,52,浏览器/服务器体系结构,2020/12/8,成都信息工程学院,53,结合三层C/

17、S的B/S结构(四层),数据库,2020/12/8,成都信息工程学院,54,6、分层系统风格,分层(layered)系统组织成一个层次结构,每一层为上层服务,并作为下层客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层次对相邻的层可见。 这种风格支持基于可增加抽象层的设计。这样,允许将一个复杂问题分解成一个增量步骤序列的实现。由于每一层最多只影响两层,同时只要给相邻层提供相同的接口。,2020/12/8,成都信息工程学院,55,2020/12/8,成都信息工程学院,56,层次模型的结构关系,客户,层N,层N-1,层1,使用,抽象的最高层,抽象的最低层,2020/12/8,成都信息工

18、程学院,57,层次风格特点,每层为上一层提供服务,使用下一层的服务,只能见到与自己邻接的层 适当时候(必不得已的时候),可以允许一定的越层操作 大的问题分解为若干个渐进的小问题,逐步解决,隐藏了很多复杂度 修改一层,最多影响两层,而通常只能影响上层。接口稳固,则谁都不影响,2020/12/8,成都信息工程学院,58, 使用层,不需要去了解层的实现细节 可以使用另一种技术来改变基础的层,而不会影响上面的层的应用。 可以减少不同层之间的依赖。 容易制定出层标准。 底下的层可以用来建立顶上的层的多项服务。 层不可能封装所有的功能,一旦有功能变动,势必要波及所有的层。 效率降低。,2020/12/8,

19、成都信息工程学院,59,ISO/OSI 开放系统互连参考模型,2020/12/8,成都信息工程学院,60,.NET框架分层模型,2020/12/8,成都信息工程学院,61,7、基于事件的隐式调用风格,基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其它构件可以把某一过程注册为与它所关心的事件相关联。当一个事件被触发时,系统自动调用在这个事件中注册的过程,这样,一个事件的触发就导致了另一模块中的过程的调用。,2020/12/8,成都信息工程学院,62,从体系结构上说,这种风格的构件是一些模块,这些模块既可以是一些过程,又可以是一些事件的集合。过程可以用

20、通用的方式调用,也可以在系统事件中注册一些过程,当发生这些事件时,过程被调用。,2020/12/8,成都信息工程学院,63,基于事件的隐式调用风格的主要特点是事件的触发者并不知道哪些构件会被这些事件影响。这样不能假定构件的处理顺序,甚至不知道哪些过程会被调用,因此,许多隐式调用的系统也包含显式调用作为构件相互的补充形式,2020/12/8,成都信息工程学院,64,8、模型视图控制器风格,MVC模式把涉及数据管理和显示的功能分散到不同的对象上,降低对象间的耦合。MVC是一个设计模式,它强制性地使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理

21、自己的任务,并且尽量降低部分间的耦合。每一部分处理特定的任务,并负责完成与其它部分的通信。,2020/12/8,成都信息工程学院,65,Model-View-Controller模式,2020/12/8,成都信息工程学院,66,MVC模式,MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。,2020/12

22、/8,成都信息工程学院,67,MVC的优点:, 各施其职,互不干涉 有利于开发中的分工 有利于组件的重用,2020/12/8,成都信息工程学院,68,MVC的缺点:, MVC的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易。 如何将MVC运用到应用程序中没有准确的解决方案,需要设计者认真考虑。 由于将一个应用程序分成了三个部件,所以使用MVC同时也意味着你将要管理比以前更多的文件,意味着代码文件增多,因此,对于文件的管理需要费点心思,开发的工作量也要增加了。 模型和视图的严格分离可能使得调试困难一些,但比较容易发现错误。,2020/12/8,成都信息工程学院,69,9、C2风格,C

23、2体系结构风格可以概括为:通过连接件绑定在一起的按照一组规则运作的并行构件网络。,2020/12/8,成都信息工程学院,70,C2风格中的系统组织规则, 系统中的构件和连接件都有一个顶部和一个底部; 构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的; 一个连接件可以和任意数目的其它构件和连接件连接; 当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部,对体系结构风格的理解 结构风格以结构组织为特性定义了一个软件系统族,表达了部件以及部件之间的关系。 体系结构风格通过组件应用的限制及其与构建有关的组成和设计规则来表现组件和组件

24、之间的关系。 体系结构风格表示了软件系统的一种特别的基本结构,以及相关的构造方法。 体系结构风格应该使一些对软件构成带有整体性、普遍性、一般性的结构和结构关系的方法。在设计中,遵循这些风格的构成原则,对软件的开发和维护十分有益。,2020/12/8,成都信息工程学院,72,体系结构软件设计的问题,工具 如何描述软件的总体结构 方法 用什么方法由问题结构导出 软件结构 评估准则 什么样的软件结构是 “最优的”,2020/12/8,成都信息工程学院,73,体系结构文档的用处,软件开发过程中各种角色之间交流设计思想的媒介 进行上层分析的基础。此基础上可以验证体系结构设计方案,精炼或改变必要的方案 让别人理解系统的第一手资料,2020/12/8,成都信息工程学院,74,有利于软件开发者之间交流,基本想法是什么? 我该做什么 (如,实现哪些需求) ? 我该在哪做 (如,这项功能实现在哪里) ? 我和谁交互?接口是什么? 有什么可以重用的代码? 必须遵从什么约定(质量目标、旧体系/接口、预算等)? 有哪些硬性规定(设计、接口、约束等)?,2020/12/8,成都信息工程学院,75,2.4 软件体系结构描述方法,2.4.1 软件体系结构描述方法概述 1、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论