




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大家好18 体系结构设计(Architectural Design )Welcome to Software EngineeringZhang S回顾 软件设计工程设计模型的构成数据/类设计:将分析类模型转化为设计类的实现以及软件实现所要求的数据结构体系结构设计:定义了软件的主要结构元素之间的联系,也用于达到系统所定义需求的体系结构风格和设计模式以及影响体系结构实现方式的约束接口设计:描述了软件和协作系统之间、软件和使用人员之间是如何通信的构件级设计:将软件体系结构的结构元素变换为对软件构件的过程性描述软件设计的不同视图从工程管理的角度看,软件设计包括:(软件设计的两大阶段)概要设计:将软件需
2、求转化为数据结构和软件的系统结构详细设计:即构件设计,通过对软件结构表示进行细化,得到软件的详细的数据结构和算法数据设计体系结构级数据设计确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据库完整性和安全性的设计确定输入、输出文件的详细的数据结构构件级数据设计结合算法设计,确定算法所必需的逻辑数据结构及其操作确定对逻辑数据结构所必需的那些操作的程序模块体系结构设计选择适合于需求的软件体系结构风格;基于功能层次结构建立系统:采用某种设计方法,将系统按功能划分成模块的层次结构确定每个模块的功能建立与已确定的软件需求的对应关系确定模块间的调用关系确定模块间的接口评估模块划分的质量接口设计接
3、口设计有3个重要的元素:用户界面(UI)和其他系统、设备、网络或其他信息生成者或使用者的外部接口各种设计构件之间的内部接口构件级设计构件是面向软件体系结构的可复用的软件模块完整地描述了每个软件构件的内部细节为本地数据对象定义数据结构为构件内的处理定义算法细节定义允许访问构件所有操作的接口8. 体系结构设计体系结构(architecture,又称架构)设计的任务是要识别出组成系统的子系统并建立子系统的控制和通信框架。体系结构设计的输出是软件体系结构的描述。体系结构设计是联系需求描述与其他设计活动的桥梁。软件体系结构和软件架构()关键词IBM开发者微软Google百度中国知网软件体系结构1779,
4、04179,500123,000368软件架构23310,478236,000462,00056为了找到两者的区别,得先从应用的环境入手。我们利用网站搜索引擎对关键词进行了检索,搜索区域分为开发网站、学术网站,结果如下结果表明,在软件开发者和软件应用者来说,倾向于使用“软件架构”,在一定程度上接受“软件体系结构”。大家对软件架构的设计人员 “架构师”得到广泛的认同。对于学术界,普遍使用“软件体系结构”,对架构师几乎没有关注。Software Architecture是一个实践性非常强的领域,统计表明理论和实践的鸿沟还是存在的。进行体系结构设计的好处有利于Stakeholders之间进行沟通Ar
5、chitecture may be used as a focus of discussion by system stakeholders.有利于系统分析Means that analysis of whether the system can meet its non-functional requirements is possible.有利于大规模复用The architecture may be reusable across a range of systems.办公室里的争论办公室里,关于如何描述软件架构,争论正酣: 程序员说,软件架构就是要决定需要编写哪些类、使用那些现成的框架
6、。 程序经理笑了,他说,软件架构就是模块的划分和接口的定义。 系统分析员笑了,他说软件架构就是为业务领域对象的关系建模。 配置管理员笑了,他说软件架构就是开发出来以及编译后的软件到底是个啥结构。 数据库工程师笑了,他说软件架构规定了持久化数据的结构。 部署工程师笑了,他说软件架构规定了软件部署到硬件的策略。 用户笑了,他说软件架构规定了一个个功能子系统如何划分。 大家想了想说,这些架构视图好像我们都需要啊! 软件架构师哭了软件架构为谁设计客户用户开发人员管理人员软件架构师业务目标约束条件功能和运行期质量开发期质量管理的基础8.1 软件架构的4+1视图法 (软件架构的描述)逻辑视图(包图)开发视
7、图(组件图)场景视图(用例)过程视图或处理视图或运行期视图(包图和组件图)配置视图或物理视图(部署图)用户功能需求程序员 软件管理人员分析员/测试员用户非功能需求 - 性能 - 可扩展性 - 吞吐量系统工程师 - 系统拓扑结构 - 发布和安装 - 通讯例:设备调试系统案例用例图:设备调试员通过使用该系统,可以察看设备状态(设备的状态信息由专用的数据采集器定时采集)、向设备发送调试命令。逻辑视图:设计满足功能需求的架构首先根据功能需求进行初步设计,进行功能划分。应用层负责设备状态的显示,并提供模拟控制台供用户发送调试命令。应用层使用通讯层与嵌入层进行交互,但应用层不知道通讯的细节。通讯层负责在R
8、S232协议之上实现一套专用的“应用协议”。当应用层发送来包含调试指令的协议包,由通讯层负责按RS232协议将之传递给嵌入层。当嵌入层发送来原始数据,由通讯层将之解释成应用协议包发送给应用层。嵌入层负责对调试设备的具体控制,以及高频度地从数据采集器读取设备状态数据。设备控制指令的物理规格被封装在嵌入层内部,读取数采器的具体细节也被封装在嵌入层内部。逻辑架构应用层负责设备状态的显示,并提供模拟控制台供用户发送调试命令;通讯层负责在RS232协议之上实现一套专用的应用协议;负责对调试设备的具体控制。开发视图:设计满足开发期质量属性的架构MFC(Microsoft Foundation Classe
9、s)微软基础类库SDK(Software Development Kit)软件开发工具包下图展示了整个系统的桌面部分(应用层和通讯层)的目标程序pc-moduel.exe、以及嵌入式模块(控制层)rom-module.hex是如何编译而来的。这个全局性的描述无疑对没有经验的开发人员提供了实感,利于更全面地理解系统的软件架构。过程视图:设计满足运行期质量属性的架构物理视图:和部署相关的架构决策软件架构的物理视图关注“目标程序及其依赖的运行库和系统软件”最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性等要求。逻辑视图到物理视图的映射如果需要,通过物理架构视图可以
10、更明确地表达具体模块及其通讯结构物理视图:和部署相关的架构决策图书管理系统的逻辑视图图书馆信息管理系统的配置图中国古典建筑风格江南建筑风格8.2 软件体系结构风格软件系统同建筑一样,也具有若干特定的“风格”(software architectural style) 这些风格在实践中被多次设计、应用,已被证明具有良好的性能、可行性和广泛的应用场景,可以被重复使用;实现“软件体系结构级”的复用。8.2.1 数据中心体系结构构成系统的子系统之间交换信息通常可以采用以下两种方式:所有共享数据放到一个中心数据库(仓库或黑板)中,所有子系统都能从中存取数据;每一个子系统维持自己的一个数据库,子系统之间的
11、数据交互通过消息传递来实现。当系统中存在大量的数据共享时,数据中心模型是最为常用的体系结构风格。8.2.1 数据中心体系结构例:注册表注册表的结构最初,硬件/软件系统的配置信息均被各自保存在一个配置文件中;这些文件散落在系统的各个角落,很难对其进行维护;为此,引入注册表的思想,将所有配置文件集中起来,形成共享仓库,为系统运行起到了集中的资源配置管理和控制调度的作用。数据中心模型的特点优点共享大量数据的有效方式,不同子系统间无需数据转换;子系统无需去考虑数据如何被集中管理的;共享数据模型是以容器模式发布的。缺点子系统必须与容器数据模型相一致才能共享数据;数据进化会比较困难而且代价较高;将容器分布
12、到多台机器上比较困难。8.2.2 客户/服务器体系结构客户/服务器模型是一个分布式系统模型,数据和加工过程在多个处理器之间分配;这种模型的主要组成:一组为其它子系统提供服务的服务器;一组向服务器请求服务的客户机;连接客户机与服务器的网络。B/S体系结构基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决,系统维护成本低8.2.3 层次体系结构这种模型把系统组织成一系列的层次,每一层提供一组服务;这种模型支持增量式的开发,不同层次的服务可以单独交付;层与层之间以接口相联系,一个接口发生改变,只有毗邻的层会受到影响;例:版本管理系统经典的三层结构数据库销售组件支付组件表示层业务逻辑层数据
13、访问层数据库访问组件8.2.3 数据流体系结构(管道-过滤器)语境:数据源源不断的产生,系统需要对这些数据进行若干处理(分析、计算、转换等)。解决方案:把系统分解为几个处理步骤,这些步骤之间通过数据流连接,一个步骤地输出是另一个步骤地输入;每个处理步骤由一个过滤器构件实现;处理步骤之间的数据传输由管道负责。每个过滤器都有一组输入和输出,过滤器从管道中读取输入的数据流,经过内部处理,然后产生输出数据流并写入管道中。管道过滤器风格顺序批处理风格(批序列)现实中的典型应用领域:编译器、Unix管道、图像处理、信号处理、网络监控与管理等。8.3 使用数据流进行体系结构映射面向数据流的设计也称结构化设计
14、,提供了从数据流图到软件体系结构的便捷的转化。用结构图(Structure Chart,SC)来描述软件体系结构。8.3.1 系统结构图结构图(Structure Chart)用来表达软件的组成模块及其之间的调用关系。结构图(SC)的直观印象系统结构图中功能模块的分类:传入模块:从下属模块取得数据,经过某些处理,再将其传送给上级模块。传出模块:从上级模块获得数据,进行某些处理,再将其传送给下属模块。变换模块:即加工模块。它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。协调(控制)模块:对所有下属模块进行协调和管理的模块。 协调模块应在较高层出现。源模块:不调用其他模块的
15、传入模块,只适用于传入部分的开始端,特殊的传入模块。漏模块:不调用其它模块的传出模块,只适用于传出部分的末端,特殊的传出模块。在系统结构图(SC)中的功能模块 在系统结构图(SC)中的模块 在系统结构图(SC)中的模块 越底层的模块,越接近系统边界(软件使用者、其他软件、其他硬件等等),模块的粒度越小。越高层的模块,越接近系统的核心处理逻辑,模块的粒度越大。在系统结构图(SC)中的模块调用简单调用选择调用循环调用如何从需求分析阶段的DFD出发,进行SC设计?8.3.2 从数据流图映射到结构图“变换流” “事务流” 精化数据流图流类型区分事务中心和数据接收通路区分输入和 输出分支 映射成事务结构
16、 映射成变换结构用启发式设计规则精化软件结构导出接口描述和 全程数据结构复 查详细设计变换分析事务分析 如何从需求分析阶段的DFD出发,进行SC设计?数据流可以分成变换型数据流和事务性数据流,相应得到的系统结构也分为变换型系统结构和事务型系统结构。为了实现从DFD到SC的映射,需要仔细区分DFD中数据流的类型,并分别学习相应的映射方法。变换型数据流与变换型映射变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。变换数据是数据处理过程的核心工作,而取得数据只不过是为它做准备,给出数据则是对变换后的数据进行后处理工作。 典型的变换型数据流图具有如下结构特点:信息外部表示内部表
17、示时间输入流输出流变换中心变换型数据流图例子:1:输入A2:A-B6:输出E3:B-C5:D-EABC(逻辑输入)ED(逻辑输出)加工1取得系统物理输入数据A ,加工2和3对输入数据进行简单处理,得到系统逻辑输入C。加工4作为系统核心处理模块,进行C-D数据变换,获得系统逻辑输出D。加工5对系统逻辑输出数据进行格式转换等,加工6进行系统数据物理输出。设计时,需要区分输入流、输出流和中心变换部分,即标明流的边界。首先设计主模块,用程序名字为它命名,做为系统的顶层,它调用下层模块,完成系统所要做的各项工作。在系统结构的第一层,为每一个逻辑输入设计一个输入模块,它为主模块提供数据;为每一个逻辑输出设
18、计一个输出模块,它将主模块提供的数据输出;为中心变换设计一个变换模块,它将逻辑输入转换成逻辑输出,画在主模块的下方。第一层模块与主模块之间传送的数据应与数据流图相对应。变换型分析的映射步骤系统结构第一层主模块(程序名称)输入模块主加工模块输出模块传入传入部分变换中心传出部分传出变换系统结构第一层变换型系统结构图然后自顶向下,逐层细化,设计中、下层模块。这一步工作是为每一个输入模块、输出模块、变换模块设计它们的从属模块。输入模块要向调用它的上级模块提供数据,因而它一般有两个下属模块:一个是接收数据;另一个是把这些数据变换成它的上级模块所需的数据。输出模块是从调用它的上级模块接收数据用以输出,因而
19、一般有两个下属模块:一个是将上级模块提供的数据变换成输出的形式;另一个是将它们输出。中心变换模块的下层模块没有通用的设计方法,一般应参照数据流图的中心变换部分和功能分解的原则来考虑如何对中心变换模块进行分解。 变换型分析的映射步骤系统的结构图由输入、中心变换和输出等三部分组成。 变换型系统结构图系统结构第一层系统结构第二层系统结构第三层变换型系统结构图以SafeHome为例说明如何进行变换映射(步骤)步骤一 评审基本系统模型(分析模型) 传感器检测子系统步骤二 评审和精化数据流图 精化数据流图,使其足够详细。每个变换对应一个独立的功能,用一个具有较高内聚度的模块实现。以SafeHome为例说明
20、如何进行变换映射(步骤)“传感器监测子系统”的第三级DFD63步骤三 确定为变换流还是事务流。 系统内部的信息流总可以用变换流表示,倘若具有明显的事务特性,还应该采用针对事务流的映射方法。设计人员首先要判定 中占主导地位的信息流,并确定其特性,然后孤立出具有变换特性或事务特性的支流,这些支流将用于精化由主导数据流推出的程序结构。步骤四 如果DFD是变换流。 划定输入流和输出流边界孤立变换中心。 输入、输出流边界的划分可能因人而异,不同的设计人员可能把边界沿着数据通道向前推进或后退一个加工框,这对最后的软件结构影响不大。以SafeHome为例说明如何进行变换映射(步骤)“传感器监测子系统”65步
21、骤五 执行“一级分解”导出具有三个层次的程序结构。“一级分解”的原则是在完成控制功能并保持低耦合度、高内聚度的前提下尽可能减少模块数。顶层为总控模块;底层模块执行输入、变换和输出功能;中层模块控制、协调底层的工作。以SafeHome为例说明如何进行变换映射(步骤)步骤六 二级分解的处理框与程序结构模块一一对应按照软件设计原则,可能需要几个处理框聚合为一个模块,或者把一个处理框细分为几个模块。应根据“良好”设计的标准,进行二级分解。以SafeHome为例说明如何进行变换映射(步骤)传感器监测子系统输出流部分的SC68传感器监测子系统的程序结构“雏形”69步骤七 采用启发式设计策略,精化所得程序结
22、构雏形,改良软件质量。 对于程序结构的雏形,以“功能独立”为指导思想,对模块或合或拆,旨在追求高内聚、低耦合,易实现、易测试、易维护的软件结构。以SafeHome为例说明如何进行变换映射(分析)“传感器监测子系统”的程序结构71 事务型数据流与事务型系统结构事务型数据处理问题的工作机理是接受一项事务,根据事务处理的特点和性质,从若干个操作序列中选择分派一个适当的,然后给出结果。我们把完成选择分派任务的部分叫做事务处理中心。事务型数据流图事务流应映射为包含一个输入分支和一个分类事务处理分支的程序结构。输入分支结构的开发与变换流的方法类似。分类事务处理分支结构包含一个调度模块,它调度和控制下属的操
23、作模块。事务型系统结构图在数据处理中经常遇到,但是更多的是变换型与事务型系统结构图的结合。例如,事务型系统结构中的某个分支本身又具有变换型的特点。 事务型分析的映射方式事务型分析的映射方式DGFE接收通路C通路B通路A通路总控E调度DGA-CTLB-CTLC-CTLF用户交互子系统的二级数据流图以SafeHome为例说明如何进行事务映射(分析)76事务分析法可分为七个步骤步骤一: 评审基本系统模型;步骤二: 评审并精化软件数据流图;步骤三: 确定数据流图的类型;步骤四: 找出数条动作路径的公共源头,即为事务中心,确定由事务中心发出的每一动作路径的数据流类型。以SafeHome为例说明如何进行事
24、务映射(分析)确定流界78步骤五:把数据流图映射为事务处理型的程序结构。事务处理型的程序结构由“ 输入”和“调度”两部分组成,输入部分的构成方法如变换分析法,即从事务处理中心开始,沿输入通路向外推进,每个处理(加工)映射为一个模块。“调度”部分顶层为一“调度”模块,它总控所有对应于每一动作路径的控制模块,每条动作路径都根据它的信息流特征映射为一个程序子结构。以SafeHome为例说明如何进行事务映射(分析)事务流映射调度80用户交互子系统的一级分解81步骤六:分解并精化事务结构以及每条动作路径所对应的结构。步骤七: 使用启发式设计策略,精化所得程序结构雏形,改良软件质量。 这一步骤与变换分析法
25、相同。以SafeHome为例说明如何进行事务映射(分析)用户交互子系统的程序结构雏形83例:还书数据流程图还书子系统结构图“变换流” “事务流” 精化数据流图流类型区分事务中心和数据接收通路区分输入和 输出分支 映射成事务结构 映射成变换结构用启发式设计规则精化软件结构导出接口描述和 全程数据结构复 查详细设计变换分析事务分析 启发式设计策略(design heuristic )变换分析法和事务分析法的最后步骤都是运用启发式策略对软件结构的雏形进行改进和优化,以提高软件的整体质量。启发式策略是人们在长期的大量软件实践过程中积累的宝贵经验。一、改造程序结构,降低耦合度,提高内聚度 得到程序结构的
26、雏形后,应该从增强模块的独立性的角度,对模块进行分解或者合并,力求降低耦合度,提高内聚度。二 、改造程序结构,降低界面的复杂性和冗余度,提高协调性 界面的复杂是引起软件错误的一个基本因素。界面上传递的数据应尽可能简单并与模块的功能相协调,界面不协调本身就是模块低内聚的表征。启发式设计策略(design heuristic )89三、 改造程序结构,减少扇出,在增加程序深度的前提下追求高扇入。 1.扇出越大,设计该模块时需要考虑的问题就越多,因而复杂性越高。 2.扇入大些,一般不会影响问题的复杂性,而且扇入越大,说明该模块的复用性越好。1层2层ABCDEFGHIJKLMN深度扇入为2扇出为3扇入为33层宽度宽度宽度 软件结构示意图启发式设计策略(design heuristic )为了控制模块的复杂性,一个模块的扇出(34)一般认为不要超过9。如果发现某个模块的扇出较大,而该模块又不是公共模块,可以考虑重新分解。经验证明一个好的软件结构的形态准则是: 顶部宽度小,中部宽度大,底部宽度次之; 在上层扇出比较高,中层扇出较少,在底部扇入到有高扇入到公共模块中。启发式设计策略(design heuristic )四.改造程序结构,使得任意模块的作用域在其控制域内模块的控制范围包括它本身及其所有的从属模块。 模块的作用范围是指模块内一个判定的作用范围,凡是受这个判定影响
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025货车驾驶员劳动合同范本
- 《下消化道出血培训》课件
- (12)-专题06 感悟作文(练习)
- 《新冠病毒防护指南》课件
- 九年级拓展活动式主题班会别让指尖划破我们的梦想 教学设计及反思
- 西安交通工程学院《自动控制原理》2023-2024学年第二学期期末试卷
- 信阳涉外职业技术学院《物理化学实验1》2023-2024学年第二学期期末试卷
- 山东文化产业职业学院《中国哲学概论》2023-2024学年第一学期期末试卷
- 南京师范大学中北学院《社会体育指导员一级》2023-2024学年第二学期期末试卷
- 皖北卫生职业学院《地理信息系统导论实验》2023-2024学年第二学期期末试卷
- 全国青年教师观摩大赛数学赛课一等奖作品教学设计模板(三)
- 蒙特利尔认知评估量表北京版
- 幼儿一日活动安排(大、中、小)
- TSXDZ 052-2020 煤矿矿图管理办法
- YY/T 1778.1-2021医疗应用中呼吸气体通路生物相容性评价第1部分:风险管理过程中的评价与试验
- GB/T 28734-2012固体生物质燃料中碳氢测定方法
- GB/T 19363.2-2006翻译服务规范第2部分:口译
- GB/T 11865-2008船用离心通风机
- GA/T 652-2006公安交通管理外场设备基础施工通用要求
- 高考语文一轮复习:作文素材《长津湖》 课件(53张PPT)
- 《课程与教学论》形考二答案
评论
0/150
提交评论