资源预览内容
第1页 / 共46页
第2页 / 共46页
第3页 / 共46页
第4页 / 共46页
第5页 / 共46页
第6页 / 共46页
第7页 / 共46页
第8页 / 共46页
第9页 / 共46页
第10页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
现代软件工程,第五部分软件体系结构与系统概要设计,体系结构的基本问题-1 软件系统的框架与体系结构-2 面向对象的设计模式-3 MVC结构与用户界面设计-4 基于构件的软件体系结构-5 从需求分析到系统设计过程-6 软件系统设计规范管理-7,第五部分 软件体系结构与系统概要设计,第五部分 软件体系结构与系统概要设计,第二节 软件系统的框架与体系结构框架与体系结构的概念-2.1 二个最典型的体系结构模型-2.2,体系结构构成的二个方面:部件和规则 构成系统的原始的或集成的部件:语句、程序模块、数据结构 由部件集成为系统的静态集成规则:模块划分、连接方式 为系统提供语义的动态行为规则:控制模式、并行/同步模式 软件设计发展过程中,对体系结构认识的三个层次 执行级 代码级 包括算法和数据结构的选择。在此,部件是程序设计语言的字符、指针、进程控制等,集成的是记录、数组和过程 结构级 包括与部件相关联的系统总体性能。在此,部件是模块、模块的相互关系,它指明从模块到子系统、到系统的集成 在上世纪80年代,软件开发者关注的是代码级的,如今关注的是结构级 体系结构的更高层次问题 设计模式、风格、框架、体系结构,2.1 框架与体系结构的概念,今天,模块的含义已经有了很大变化,设计模式(Design Patterns) 模式:一种趋于固定的结构方式 例如:悲剧-哈姆雷特、言情-台湾琼遥、武打动作片-成龙、惊险片-美国大片等 软件设计模式:是软件设计中总结出来的、广泛应用和成熟的结构和结构关系 成功的模式,能针对特定问题,采用成熟和成功的方法,比重新设计要好的多 建筑师C.Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。 与艺术不同,工程领域,对经多年的磨练、完善和提高而获得的成功模式,愿意加以反复使用,模式为重用提供了基础,2.1 框架与体系结构的概念,模式分类: 结构模型(Architectural Patterns) 表达了软件系统的基本结构组织形式或者结构方案 它包含一组预定义的子系统,规定了这些子系统的责任,同时还提供了用于组织和管理这些子系统的规则和向导 设计模式(Design Patterns) 为软件系统的子系统、组件或者组件之间的关系提供一个精炼之后的解决方案 它描述了在特定环境下,用于解决通用软件设计问题的组件以及这些组件相互通信时的可重现结构 惯用型(Idioms) 是一个与编程语言相关的低级模式 它描述了如何实现组件的某些功能,或者利用编程语言的特性来实现组件内部要素之间的通信功能,2.1 框架与体系结构的概念,风格(Architecture Styles) 风格是带有倾向性的模式 同一个问题,可以有不同的解决问题的模式,但我们根据经验,通常会采用特定的模式,这就是风格 软件风格是对软件构成带有整体性、普遍性、一般性的结构和结构关系的方法 因此,软件风格是一种特定的基本结构,表达了部件之间的特定的关系和应用约束(设计和集成规则) 广泛提到的风格包括: 管道和过滤器、数据抽象和对象、隐式调用/消息、层次、仓库、解释器、过程控制、分布式系统、客户/服务器、主程序/子程序、状态转换、专用领域等,体系结构的风格、设计模式和框架,框架(Framework) 随着应用的发展和完善,某些带有整体性的应用结构被逐步“固定”下来,形成了特定的框架,包括基本构成单元和关系 框架更多地关注于特定应用领域,其解决方案已经建立了一个比较成熟的体系结构,所以,也称为应用框架 因此,框架是一个特定应用领域问题的体系模式 从组成上看,框架是一个待实例化的完整系统,它定义了软件系统的族和关系、创建了基本的构建模块,定义了涉及功能更改和扩充的插件的位置 通俗地讲,框架就是一个舞台,要演什么样的戏,受舞台布景、道具、灯光等总体氛围的限制,但在此框架内,能演成什么样,那就看演员自己了,体系结构的风格、设计模式和框架,在面向对象的系统中,框架就是由多个抽象和具体类、或具有特定关系组成的类簇(集合) 框架的实例化,就是对现有类的组合、子类化 框架规定了应用体系结构,定义了它的构成、类、对象的分割、各部件的职能、类和对象的协作关系,以及控制流程 框架定义了这些设计参数后,开发者就可以集中精力解决自身必须解决的系统配置问题 为什么要用框架? 软件系统发展到今天已经很复杂了,涉及到的知识,内容,问题太多。使用成熟的框架,可以需要集中精力完成系统的业务逻辑设计。 框架一般是成熟,稳健的,可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。 框架一般都经过很多人使用,所以结构很好,扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。,体系结构的风格、设计模式和框架,风格、模式和框架的区别从讨论软件结构角度看,三者没有什么本质的区别。但从具体设计目的、背景看,还是有一定区别的: 从框架的应用看,设计模式是构建框架的建筑组件,模式解决的是软件系统局部的更细节化的东西 从设计模式的应用看,框架是某个应用领域中软件的整体系统模式,它解决软件的上层、全局的结构问题,也提供对中层和下层的支持 风格属于“喜好和习惯”这样偏向于抽象的概念,它独立于实际设计情形来表现设计技巧,而模式和框架更多地面向解决具体问题,体系结构的风格、设计模式和框架,模式支持软件结构和设计的重用 抓住了特定领域中问题的成功解决方案中的静态、动态结构和相互之间的协作关系 patterns与开发语言无关,但是建立在一定的环境基础上 例如:经典的MVC、Factory Method 框架支持细节设计和代码的重用 framework是一组组件的综合,这些组件相互协作,为一族相关应用提供了一个可重用的框架结构 例如:MMC、MS Script Engine 两者结合起来, 模式和框架的设计有助于提高软件的质量 比如:重用性,扩展性,性能,可维护性,软件系统的框架与体系结构,在现在的应用系统中,有很多用户图形界面(GUI)使用的非常普遍,而其中如:下拉菜单、帮助屏幕、对象拖放以及文件打开、存储、打印、甚至查找、排序和简单的文本编辑,是几乎所有系统都需要用到的 而且其基本用法已经延续了十几年,已经形成习惯(定式) 微软把涉及文件、数据库操作、网络I/O、图形、通用数据结构、用户界面对象等应用功能组件,组合在一起,构架了一个应用框架,这就是MFC(Microsoft Foundation Classes) 在应用层,这些功能是常用的、应用特性是相似的。在操作系统的服务层,这些功能的实现是相同的 所以,为了简化系统设计和重用,MS把它们封装在一起,提供了MFC的应用框架结构 程序员只要理解这个结构,就可以重用大量的类库程序,只需要添加或修改少量的代码,就可以快速地构建自己的应用系统,而不需要自己去编写复杂的与底层(操作系统、外部设备、网络等)打交道的代码,典型的对象框架:MFC,MFC类的框架结构,CObject 所有MFC类之父,CCmdTarget发送系统和窗口事件给相应对象,CWinThreadMFC线程控制,CWnd 基本GUI对象类,CDocument 文档和视图类,CWinApp 主线程和主程序,CFrameWnd标题菜单边框类,CView 文档的显示打印,CDialog 对话框类,CMDIChildWnd,CMinFrameWnd,CMDIFrameWnd,CObject类是所有对象的父类,它本身只封装了少量的功能,包括:程序在运行时获得类的信息、追踪错误的疹断输出等。 CCmdTarget是从CObject类派生出来的子类,它增加了一些允许对象对外部消息进行响应的功能(如:键盘输入、点击移动鼠标等)。 在学习经典体系结构案例的时候,我们应注意:它们对功能的层次性安排(体系结构布局) CWnd封装了用户显示设备的windows行为,它的方法实现了通常所有针对windows的功能,包括:窗口框架、窗口大小重定义、移动、最大/小化,应用程序还并不直接使用这个子类,而是使用它下面更具体定义的低层次的类,因为更方便。 更低层次的CWnd子类有对话框CDialog,对话框再深入有按扭,按扭再深入有文件按扭、帮助按扭等等 程序员要做的工作就是在已经有的类之下,创建具体的实例化对象,响应消息或事件,建立自己的应用系统,典型的对象框架:MFC,框架 MFC框架就是由多个抽象或具体类、及具有关联关系类组成的类簇(集合) MFC框架规定了应用体系结构,定义了它的构成、类、对象的分割、各部件的职能、类和对象的协作关系,以及控制流程 框架定义了这些设计参数后,开发者就可以集中精力解决自身必须解决的业务逻辑 对于MFC已经定义的类,程序员的工作就是框架的实例化,既对现有类的组合、子类化和对象实例化 因为框架是系统的模板,系统开发就是一个改写的过程,因此,基于既有框架的开发使得系统体系结构完全受既有框架的限制和约束,软件系统的框架与体系结构,MFC是一个通用的对象框架,它包括了 用户界面类:针对图形窗口的通用对象类 通用数据结构类:对链表等的查找、排序、插入、删除操作 数据库接口类:对数据库表的操作等 另一种框架,是针对特定领域和行业应用的 包含了大量的业务背景 针对特定应用和业务逻辑的 支持特定的软件应用产品系列,构成产品平台 通常由第三方开发 系统庞大、开发周期长、成本高 效益高、回报高,是发展方向,通用框架与特定应用框架,软件系统的体系结构,有了设计模式和框架,为什么还要讨论体系结构? 如果说软件系统的体系结构是棵树,那么 设计模式是树的节点的构成方法 框架是别人设计好的树 如果我们要自己设计我们自己的这棵树 或者,我们要在一棵树的基础上,嫁接我们需要的部分 我们需要研究体系结构这棵树,软件系统的体系结构,软件体系结构奠基于程序算法,数据结构和对象设计,它是系统实施的抽象描述。 体系结构概括了整体系统结构,功能部件分解,部件本质和特性,部件的界面和部件之间的通讯协议和整体性布局策略及法则。 良好的软件系统,必须有合理健全,内在一致的体系结构。 体系结构设计与程序设计之间的侧重点: 进行体系结构设计时,主要关心的是各部件的协作,系统的总体性能,伸缩扩展能力等。 而在程序设计时,则集中注意一个部件,界面或子系统内的详情。,2.2 二个最典型的体系结构模型,“分而治之”是人们解决复杂问题所采取的大而化小、复杂变简单的基本思想方法,也是行之有效的方法。社会问题如此、技术问题也是如此。 有二种分割方法:横向、纵向 在软件体系结构研究中,层次性一直是软件问题分析和设计的基本的、具有普遍适用性的思想方法 二个典型层次结构的例子: 计算机网络的体系结构 计算机操作系统的体系结构 二种层次结构方法的对比,ISO 于1978年提出了 OSI 模型(七层协议)。 OSI 模型是设计和描述计算机网络通信的基本框架。它描述了网络硬件和软件如何以层的方式协同工作,进行网络通信。OSI Open System Interconnection 生产厂商根据OSI 模型的标准设计自己的产品。,体系结构一:开放式系统互连参考模型(ISO/OSI),体系结构:开放式系统互连参考模型(ISO/OSI),网络参考模型,OSI环境,网络环境,数据通信网,计算机A,计算机B,网络系统环境,体系结构:开放式系统互连参考模型(ISO/OSI),ISO/OSI 模型是设计和描述计算机网络通信的基本框架,它描述了网络硬件和软件如何以层的方式协同工作,进行网络通信的 ISO/OSI 模型的最大贡献,是对以下三个概念,作出了明确的区分和定义: 服务:每一层都为它的上一层提供服务(原语操作),服务定义了这一层应该做什么,而不管上面的层如何访问它以及该层如何实现预定的服务工作 接口:接口(原语)告诉自己的上层应该如何访问自己,定义了访问的参数和预期的结果,这也和该层如何实现无关 协议:协议是端到端的对等协议(帧格式、信息定义),是该层的内部事物。因此,采用什么协议或协议的改变,是端与端之间的事,与上层(服务)无关 ISO/OSI 模型的分层思想,具有很好的面向对象性 属性(服务)、接口(层间接口)、封装(协议),
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号