版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软 件 工 程第四章 软件设计(1)任务1 构建软件体系结构软件设计概述体系结构风格结构化设计方法2任务1 构建软件体系结构在第三章中我们针对图书管理系统进行了功能模型的构建,理清了图书管理系统的业务规则和功能性需求,那么,我们是否已经准备好将功能转换成对应的代码了呢?我们知道,一个完整的应用程序,如果采用结构化语言进行编写,其主要的组成构件是函数,现在的问题是我们是否可以借助于得到的功能模型为合理设定函数模块提供帮助。31 软件设计概述软件设计的目的设计是一个建模活动,它使用分析阶段得出的信息(即需求模型)并把这些信息转换为叫做解决方案的模型。所以设计阶段的目标是定义、组织和构造将作为结构蓝
2、图的最终解决方案系统的各个组成部分。4抽象逐步求精模块化信息隐藏控制层次软件的体系结构软件设计的原理抽象“抽象”的心理学观念使人能够集中于某个一般性级别上的问题,而不去考虑无关的底层细节,这种解决问题的方式也应用于软件领域。抽象的思维方式应用软件开发领域 ,软件过程中的每一个步骤都是软件解决方案抽象级别上的求精。抽象的类型过程抽象是对特定和有限的功能命名的序列。例如:查询子系统,实现查询功能;进一步抽象层次降低,查询子系统分为:按书名查询,按作者查询,按出版社查询等;按书名查询过程步骤,输入关键字,进行查询,显示结果。数据抽象是数据命名的集合。例如:查询“书”,进一步详细定义其属性:书名、作者
3、、出版社、出版日期、ISBN等;书名,进一步定义为长度50个字符的字符串。控制抽象是程序控制机制内部细节的设计。例如:在操作系统中用以协调某些活动的同步信号。逐步求精逐步求精是由Niklaus Wirth最初提出的一种自顶向下设计策略,系统是通过过程细节的连续的精化层次开发的,层次结构通过逐步地分解功能的宏观声明直至形成程序设计语言的语句而开发。逐步求精和抽象是互补的概念。随着抽象层次的降低,逐步求精越来越精化,并不断揭示底层的一些细节。 模块化模块化软件被划分成独立命名和可独立访问的被称作模块的构成成分,它们集合到一起满足问题的需求。模块划分的目的 进行功能分解,把复杂的大的功能划分成简单的
4、小的子功能,尽量降低每个模块的成本。尽量使每个模块间的接口不能太多,太多会使接口成本增加。兼顾二者可取得最佳的划分状态,确保软件总成本最低。最小成本区M2M1n1n2模块数成本成本/模块接口成本软件总成本模块化和软件成本之间的关系信息隐藏信息隐藏的原则提出“特征在于每个模块都对其他模块隐藏的设计决策”,也就是说模块应该设计成其中包含的信息(过程和数据)对不需要这些信息的其他模块式不可访问的。信息隐藏为后期的软件测试和维护提供了极大的方便。一旦在进行测试时发现缺陷,那么对模块的变更不会影响或者至少很少影响其他模块,不会将影响扩大并传播。 控制层次 控制层次也称为“程序结构”,它代表了程序构件(模
5、块)的组织并暗示控制的层次结构。一般用四个特征来描述:深度、宽度、扇入和扇出。深度定义为控制层次的层数,或者说是控制级别的数量。宽度定义为控制层次的跨度。扇入指明有多少个模块直接控制一个给定的模块。扇出指明被一个模块直接控制的其他模块的数量。控制层次的优化系统的控制结构中在某一层的模块中的判定或者条件在系统中产生的结果,影响到其他层的某个处理或数据,这样该处理就是条件依赖于那个判定。因此在控制结构中产生另外两个概念:作用范围和控制范围。作用范围一个模块的作用范围是指条件依赖于这个模块的全部模块。即使一个模块全部处理中只有一小部分为这个判定所影响,整个模块也认作在作用范围中。控制范围一个模块的控
6、制范围是指模块本身和它的全部子模块。作用范围和控制范围相关的设计原则对于任何判定,作用范围应该是这个判定所在模块的控制范围的一个子集。通常我们采用把判定节点在结构中上移来达到这个原则。例子 模块E的控制范围是I、H、J,模块J的一个判定传递给E,然后再传递给I和H,此时模块J的作用范围是模块E、I、H。内聚耦合模块独立性原则独立性原则 含义模块独立性, 是指软件系统中每个模块只涉及软件要求的具体的子功能, 而和软件系统中其它的模块的接口是简单的。衡量独立性的标准内聚模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。耦合模块之间的互相连接的紧密程度的度量。高内聚低耦合的模块具有较强的
7、模块独立性。内聚偶然内聚设计者随意决定将无关系的几个功能组合在一个模块中,该模块的内聚程度就是偶然内聚。例子为了节省空间,将多个模块中重复出现的语句提取出来,组成一个新的模块逻辑内聚把逻辑上相似的功能结合到一个模块中。放到一个模块中的原因是:使用统一动词但针对不同的对象,有相同的代码段;起始于某多路开关,以后转向不同的代码段,但各代码段间关系很少。这种聚和现象带来一些设计问题:增加了开关量;不易修改;不易理解;效率低。时间内聚 在某一时间同时执行的任务放在同一模块中。如:初始化模块,集中了初始化功能的模块。过程内聚 模块中各个功能相关,按特定次序执行。这种情况往往发生在流程图中相邻的处理功能。
8、通信内聚模块中各个功能需要用到同样的数据,而将其放于一个模块中。如:模块中的各功能都需要利用某个符号表(或文件)进行操作。信息内聚模块中各功能利用相同的输入或产生相同的输出。由于它可能包含几个功能或只是某个功能的一部分,所以内聚性不是最高的。功能内聚 模块中的各部分是为了完成一个确定的功能存在于一个模块中的。偶然内聚逻辑内聚时间内聚过程内聚通信内聚信息内聚功能内聚低高弱强模块内聚性模块独立性耦合内容耦合一个模块访问另一个模块边界中的数据或控制,这种耦合是内容耦合也是最强的耦合。如果发生下列情形,两个模块之间就发生了内容耦合。 (1) 一个模块直接访问另一个模块的内部数据 (2) 一个模块不通过
9、正常入口转到另一模块内部 (3) 两个模块有一部分程序代码重迭(只可能出现在汇编语言中)公共耦合多个模块都访问一块全局数据区中的数据项(一个磁盘文件、一个全局可访问的内存区),这种耦合程度就是公共耦合。 公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧密公共耦合。外部耦合当模块连接到软件外部环境上时会发生的偶合关系,具有相对较高的偶合度。控制耦合模块与模块之间传递的参数是控制决策作用的。中级别的耦合度。标记耦合当模块与模块之间传递的参数是数据结构的一部分时,这种耦合是标记耦合。是数据耦合的变体。数据耦合模块与模块之间需要通过
10、常规的参数表访问,数据通过该列表传递,传递的数据是简单类型的,这种耦合称为数据耦合。非直接耦合两个模块式不同模块的从属模块,相互之间无关因而没有直接耦合发生,称为非直接耦合。内容耦合公共耦合外部耦合控制耦合标记耦合数据耦合非直接耦合高低弱强模块耦合性模块独立性如何降低模块间耦合度?(1) 如模块必须存在耦合,选择适当的耦合类型原则:尽量使用数据耦合少用控制耦合限制公共耦合的范围坚决避免使用内容耦合(2) 降低模块间接口的复杂性内聚与耦合密切相关,同其它模块强耦合的模块意味着弱内聚,强内聚模块意味着与其它模块间松散耦合。设计目标:力争高内聚、低耦合。软件设计的过程 软件设计是一个把软件需求变换成
11、软件表示的过程。最初这种表示只是描绘出软件的总的框架,然后进一步细化,在此框架中填入细节,把它加工成在程序细节上非常接近于源程序的软件表示。从工程管理的角度来看的设计过程概要设计将软件需求转化为数据结构和软件的系统结构。详细设计(过程设计)通过对结构表示进行细化,得到软件的详细的数据结构和算法。从技术角度来看的设计过程从分析模型到设计模型之间的对应关系数据设计将分析时创建的数据模型变换成实现软件所需的数据结构。在实体关系图中定义的数据对象和关系以及数据字典中描述的详细数据内容提供了数据设计活动的基础。详细的数据结构设计将在过程设计中进行。体系结构设计定义了软件的主要结构性元素,可以用于达成针对
12、系统而定义的需求的“设计模式”以及影响体系结构设计的约束之间的关系。体系结构设计的表示是从分析阶段的系统模型中导出。接口设计描述了软件内部、软件和需要协作的系统之间以及软件和人之间如何进行交互。数据和控制流图提供了接口设计所需要的信息。构件级设计也称为过程设计,将软件体系结构的结构性元素变换成为对软件构件的过程性描述,也就是模块的数据结构与算法的设计。软件设计不同观察角度之间的关系设计阶段的任务概要设计的任务1.制定规范首先应为软件开发组制定在设计时应该共同遵守的标准,以便协调组内各成员的工作根据目标确定最合适的设计方法规定设计文档的编制标准规定编码的信息形式,与硬件,操作系统的接口规约,命名
13、规则2. 软件系统结构的总体设计:基于功能层次结构建立系统 采用某种设计方法,将系统按功能划分成模块的层次结构 确定每个模块的功能 建立与已确定的软件需求的对应关系 确定模块间的调用关系 确定模块间的接口 评估模块划分的质量3. 处理方式设计确定为实现系统的功能需求所必需的算法,评估算法的性能确定为满足系统的性能需求所必需的算法和模块间的控制方式 周转时间 响应时间 吞吐量 精度 确定外部信号的接收发送形式4. 数据设计确定软件涉及的文件系统的结构以及数据库的模式、子模式,进行数据完整性和安全性的设计。确定输入,输出文件的详细的数据结构。结合算法设计,确定算法所必需的逻辑数据结构及其操作。确定
14、对逻辑数据结构所必需的那些操作的程序模块(软件包)。限制和确定各个数据设计决策的影响范围。若需要与操作系统或调度程序接口所必须的控制表等数据时,确定其详细的数据结构和使用规则。5.可靠性设计可靠性设计也叫做质量设计。在运行过程中,为了适应环境的变化和用户新的要求,需经常对软件进行改造和修正。在软件开发的一开始就要确定软件可靠性和其它质量指标,考虑相应措施,以使得软件易于修改和易于维护。6.编写概要设计阶段的文档概要设计阶段完成时应编写以下文档 概要设计说明书 数据库设计说明书 用户使用手册 制定初步的集成测试计划7.概要设计评审可追溯性:确认该设计是否复盖了所有已确定的软件需求,软件每一成份是
15、否可追溯到某一项需求接口:确认该软件的内部接口与外部接口是否已经明确定义。模块是否满足高内聚和低耦合的要求。模块作用范围是否在其控制范围之内风险:确认该设计在现有技术条件下和预算范围内是否能按时实现实用性:确认该设计对于需求的解决方案是否实用技术清晰度:确认该设计是否以一种易于翻译成代码的形式表达可维护性:确认该设计是否考虑了方便未来的维护质量:确认该设计是否表现出良好的质量特征各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是什么限制:评估对该软件的限制是否现实,是否与需求一致其它具体问题:对于文档、可测试性、设计过程等进行评估详细设计的活动 确定软件各个组成部分内的算法以及各部分
16、的内部数据组织 选定某种过程的表达形式来描述各种算法 进行详细设计的评审2 体系结构风格软件体系结构的重要性体系结构是系统的高层表示,是不同的系统相关人员讨论的焦点。在系统开发的早期阶段给出系统的体系结构,实际上就是对系统分析的过程。对体系结构的设计对系统能否满足关键性需求如系统的性能、可靠性和可维护性等的评估具有极深的影响。系统体系结构的内容是关于系统的组织和组件间的互操作,其形式是一个紧凑的易于管理的描述单元。体系结构能在具有相似需求的系统之间互用,由此来支持大规模的软件复用。产品体系结构的开发就是希望有一个通用的产品体系结构供一系列相关系统的使用。54参考风格的种类C2风格管道/过滤器风
17、格数据抽象和面向对象风格基于事件的隐式调用风格层次系统风格客户机 服务器风格(1)C2风格C2是一种基于分层结构,事件驱动的软件构架风格。基本元素是构件(Component)和连接器( Connector)组成规则系统中的构件和连接件都有一个顶部和一个底部;构件的顶端接口用于发出请求、接收结果,底端接口则用于接收请求发出结果;构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的;一个连接件可以和任意数目的其它构件和连接件连接;当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部特点基底独立性系统中的构件可实现应用需求,并能将任意复
18、杂度的功能封装在一起;消息通讯机制所有构件之间的通讯是通过以连接件为中介的异步消息交换机制来实现的;实现与构架分离构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。 该体系结构被用于当输入数据被通过一系列计算或操纵构件变换为输出数据情形。(2)数据流体系结构(管道和过滤器模型)(3)数据抽象和面向对象风格描述这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。实例-CORBA(4)基于事件的隐式调用风格描述其思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。系统
19、中的其它构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。例子最早出现在守护进程、约束满足性检查和包交换网络等方面的应用程序中。(5)分层系统模型(抽象机模型)描述也称为按服务进行划分。层是对模型中不同抽象层次上的逻辑结构进行分组的一种特定方式。系统按照层次结构组织,每一层向它的上一层提供服务,同时又是它的下层的客户。系统内的交互限定在邻接层之间。除了邻接层,一个内部层次对于其他外部层次是隐藏的。邻接层的关系并不严格。例如网络协议的参考模型OSI使用层有助于解决的问题源码的变更波及整个系统;应用逻辑
20、与用户界面交织在一起,无法复用于其他不同界面或分布到其他处理结点之上;潜在的一般性技术服务或业务逻辑与更特定于应用的逻辑交织在一起,无法被复用、分布到其他结点或方便地使用不同实现进行替换;不同关注领域之间高度耦合,难以为不同开发者清晰地界定和分配任务。信息系统逻辑架构中常见的层 功能划分与层次划分之间的关系 层次划分是对构架的横向分解,功能划分是对构架的纵向分解。它们之间的关系,如图所示。 描述典型的分布式系统模型合作的双方都会利用各自的计算能力负责一定的计算工作,从而提高整个系统的能力和效率。组成部分一组功能各自独立的服务器为其他子系统提供服务。如打印服务器, 文件服务器, 编译服务器等。一
21、组客户机并发访问多个服务器提供的服务。或存在一些客户机可并发执行的客户机程序。一个网络使得客户机能够访问服务器。(6)客户机 服务器模型(C/S)CatalogueserverVodioserverPictureserverHypertextserverCatalogueFilm clipfilesDigitizedphotographsHypertextwebWide - bandwidth network Client 1Client 2Client 3Client 4Film & Picture library system 的体系结构3 结构化设计方法结构化设计主要是在20世纪70年代
22、由Constantine和Yourdon等总结了一些优秀的程序设计实践而发展起来的。其最大的好处就是极大的增加了代码的复用能力。它的主要表示方法是一种分层次的结构图。主要思想认为一个程序、一组程序或者一组系统无非是有一组功能操作来构成的,并进而吸取了结构化分析的“黑盒子”的概念。结构化设计的目标将软件设计为结构互相独立、功能单一的模块,建立系统的模块结构图。69(1)软件结构图概述软件结构图传入模块 从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。传出模块 从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。变换模
23、块 它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。协调模块 对所有下属模块进行协调和管理的模块。70(2)数据流类型的划分事务流数据流经常可以被描述成有一个称为事务的单个数据项,它可以沿多条路径之一触发其他数据流。变换流如果信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,精加工处理后,再沿输出通路变换成外部形式离开软件系统,则具有上述特征的数据流称为变换流。73(3)事务分析事务分析具体步骤识别事务源利用数据流图和数据词典,从问题定义和需求分析的结果中,找出各种需要处理的事务。通常,事务来自物理输入装置。
24、有时,设计人员还必须区别系统的输入、中心加工和输出中产生的事务。规定适当的事务型结构在确定了该数据流图具有事务型特征之后,根据模块划分理论,建立适当的事务型结构。事务分析具体步骤(续)识别各种事务和它们定义的操作从问题定义和需求分析中找出的事务及其操作所必需的全部信息,对于系统内部产生的事务,必须仔细地定义它们的操作。注意利用公用模块在事务分析的过程中,如果不同事务的一些中间模块可由具有类似的语法和语义的若干个低层模块组成,则可以把这些低层模块构造成公用模块。事务分析具体步骤(续)对每一事务,或对联系密切的一组事务,建立一个事务处理模块;如果发现在系统中有类似的事务,可以把它们组成一个事务处理模块。对事务处理模块规定它们全部的下层操作模块对操作模块规定它们的全部细节模块事务型软件结构图事务型系统结构它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。例子调整后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年8月院感试题-医院空气净化管理标准测试卷及答案
- 2026年防突工考试题库及答案
- 2026福建福州市鼓楼区华大街道招聘1人笔试备考试题及答案解析
- 2026高职(航空物流管理)航空货运代理资格考试试题及答案
- 2026年-广西地铁集团成本管控专员招聘考试笔试参考题库-含答案
- 21例膀胱全切除回肠代膀胱术的护理及体会
- 2026中国外资银行业市场竞争态势与发展规划研究报告
- 2026年七年级月考卷
- 2026年税务师考试政治经济学阶段测评卷
- 2026年财会实操知识试题带答案
- 中质协六西格玛绿带考试练习题库(含答案解析)
- 2026年南昌市洪都中医院招聘劳务派遣制人员26人笔试备考试题及答案解析
- DBJ-T15-295-2026 高处作业吊篮安装检验评定标准
- 《南泥湾》教案2026-2027学年湘艺版六年级上册音乐
- AI眼镜硬件拆解及BOM成本报告:逸文Even G2 AR眼镜
- 煤矿主通风机投运方案及安全技术措施培训
- 2026年交管12123驾驶证学法减分试题(含参考答案)
- 2026安徽滁州市凤阳县国有平台公司招聘书笔试历年备考题库附带答案详解
- 2026新华资产校园招聘笔试历年参考题库附带答案详解
- 2026年软考《软件设计师》考试真题及答案
- 动态海报设计
评论
0/150
提交评论