




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第四章第四章 软件总体设计软件总体设计2021-10-16第四章 软件总体设计2【本章引言】p 总体设计过程通常由两个阶段组成:系统设计和总体设计过程通常由两个阶段组成:系统设计和结构设计。其中系统设计的任务是确定系统的具结构设计。其中系统设计的任务是确定系统的具体实现方案,结构设计则是确定软件的模块结构。体实现方案,结构设计则是确定软件的模块结构。这两个阶段是紧密联系在一起的,它们执行的效这两个阶段是紧密联系在一起的,它们执行的效果将直接影响到总体设计好坏,乃至整个软件工果将直接影响到总体设计好坏,乃至整个软件工程的合理与否。前一个阶段是后一个阶段的基础,程的合理与否。前一个阶段是后一个阶
2、段的基础,后一个阶段是前一个阶段的发展方向。因此,我后一个阶段是前一个阶段的发展方向。因此,我们在总体设计的整个过程中必须围绕系统设计和们在总体设计的整个过程中必须围绕系统设计和结构设计这两个阶段展开每一项工作。结构设计这两个阶段展开每一项工作。2021-10-16第四章 软件总体设计3第四章 软件总体设计【本章重点】【本章重点】p软件设计的概念与原则软件设计的概念与原则 ;p掌握总体设计的步骤和方法掌握总体设计的步骤和方法 ;【教学目标】【教学目标】p掌握软件设计的概念与原则掌握软件设计的概念与原则 ;p掌握总体设计的步骤和方法掌握总体设计的步骤和方法 ;p了解总体设计的文档与评审。了解总体
3、设计的文档与评审。2021-10-16第四章 软件总体设计4第四章 软件总体设计p 4.1 4.1 总体设计概述总体设计概述 p 4.2 4.2 总体设计的图形描述工具总体设计的图形描述工具 p 4.3 4.3 模块化设计模块化设计 p 4.4 4.4 面向数据流的设计方法面向数据流的设计方法 p 4.5 4.5 小结小结p 4.6 4.6 习题习题 2021-10-16第四章 软件总体设计5软件编码前,必须先进行软件设计。软件设计软件编码前,必须先进行软件设计。软件设计是软件开发的关键步骤,直接影响软件的质量。是软件开发的关键步骤,直接影响软件的质量。在软件需求分析阶段已经完全弄清楚了软件在
4、软件需求分析阶段已经完全弄清楚了软件的各种需求,较好地解决了所开发的软件的各种需求,较好地解决了所开发的软件“做什做什么么”的问题,并已在软件需求说明书和数据要求的问题,并已在软件需求说明书和数据要求说明书中详尽和充分地阐明了这些需求以后,下说明书中详尽和充分地阐明了这些需求以后,下一步就要着手实现软件的需求,即软件设计阶段一步就要着手实现软件的需求,即软件设计阶段要解决要解决“”的问题。的问题。 2021-10-16第四章 软件总体设计6 软件设计在开发阶段中的重要性软件设计在开发阶段中的重要性软件需求确定以后,进入由软件设计、编码、软件需求确定以后,进入由软件设计、编码、测试三个关联阶段构
5、成的开发阶段。开发阶段的测试三个关联阶段构成的开发阶段。开发阶段的信息流如图所示。在设计步骤中,根据软件的功信息流如图所示。在设计步骤中,根据软件的功能和性能需求等,采用某种设计方法进行数据设能和性能需求等,采用某种设计方法进行数据设计、系统结构设计和过程设计。计、系统结构设计和过程设计。2021-10-16第四章 软件总体设计72021-10-16第四章 软件总体设计8p 数据设计侧重于软件数据结构的定义数据设计侧重于软件数据结构的定义p 系统结构设计定义软件系统的整体结构,是软件开系统结构设计定义软件系统的整体结构,是软件开发的核心步骤。在设计步骤中,建立软件主要成份发的核心步骤。在设计步
6、骤中,建立软件主要成份之间的关系之间的关系p 过程设计过程设计在编码步骤中,根据这种过程在编码步骤中,根据这种过程性描述,生成源程序代码,然后性描述,生成源程序代码,然后通过测试,最终得到完整有效的通过测试,最终得到完整有效的软件。软件。2021-10-16第四章 软件总体设计92021-10-16第四章 软件总体设计10软件设计阶段的任务软件设计阶段的任务一、软件设计的任务一、软件设计的任务将分析阶段获得的需求说明转换为计算机中将分析阶段获得的需求说明转换为计算机中可实现的系统,完成系统的结构设计,包括数据可实现的系统,完成系统的结构设计,包括数据结构和程序结构,最后得到软件设计说明书。结构
7、和程序结构,最后得到软件设计说明书。从工程管理的角度来看,软件设计分两步完成;分为从工程管理的角度来看,软件设计分两步完成;分为总体设计总体设计( (概要设计概要设计) )和详细设计两个阶段。其工作流程和详细设计两个阶段。其工作流程如图所示。如图所示。 首先做概要设计,将软件需求转化为数据结构和软首先做概要设计,将软件需求转化为数据结构和软件的系统结构。然后是详细设计,即过程设计。通过对件的系统结构。然后是详细设计,即过程设计。通过对结构表示进行细化,得到软件详细的数据结构和算法。结构表示进行细化,得到软件详细的数据结构和算法。2021-10-16第四章 软件总体设计11把分析模型转变成软件把
8、分析模型转变成软件 数据词典 数 据 流 图 实实 体 关 系 图 状态转换图 加 工 控 制 规 规 格 格 说 说 明 明 数 据 对 象 描 述 过程设计 接口设计 体系结构设计 数据设计 2021-10-16第四章 软件总体设计122021-10-16第四章 软件总体设计132021-10-16第四章 软件总体设计142021-10-16第四章 软件总体设计15总体总体设计设计需求需求 说明书说明书复审复审软件结构软件结构修修 改改详细详细设计设计可接受可接受模块描述模块描述复审复审修修 改改 设计设计说明书说明书软件设计工作流程软件设计工作流程设计阶段结束要交付的文档是设计说明书,设
9、计阶段结束要交付的文档是设计说明书,根据设计方法的不同,有不同的设计文档。每根据设计方法的不同,有不同的设计文档。每个设计步骤完成后,都应进行复审。个设计步骤完成后,都应进行复审。2021-10-16第四章 软件总体设计16 开发方法不同,确定软件结构的方法也不同。开发方法不同,确定软件结构的方法也不同。例如例如SD法,是从分层的法,是从分层的DFD图导出初始的结构图,图导出初始的结构图,再对初始的结构图进行改进,获得最终的结构图。再对初始的结构图进行改进,获得最终的结构图。 一般包括确定系统的软件结构,分解模块一般包括确定系统的软件结构,分解模块 ,确定系统的模块层次关系。确定系统的模块层次
10、关系。 要确定数据的类型,组织、存取方式,相关程度要确定数据的类型,组织、存取方式,相关程度及处理方式等。及处理方式等。 软件设计阶段的任务可分为三部分:软件设计阶段的任务可分为三部分:2021-10-16第四章 软件总体设计17二、软件设计的目标二、软件设计的目标在设计阶段应达到的目标是在设计阶段应达到的目标是: :提高可靠性;提高可维护性;提高可理解性;提高可靠性;提高可维护性;提高可理解性;提高效率。提高效率。高可靠性高可靠性高可维护性高可维护性高可理解性高可理解性高效率高效率 软件设计的目标软件设计的目标2021-10-16第四章 软件总体设计18常用的设计方法有:常用的设计方法有:S
11、D法、法、Jackson法、法、HIPO法、法、Parnas法、法、Warnier法等。法等。衡量该目标的准则衡量该目标的准则1、软件实体有明显的层次结构,利于软件元素间、软件实体有明显的层次结构,利于软件元素间控制控制2、软件实体应该是模块化的,模块具有独立功能、软件实体应该是模块化的,模块具有独立功能3、软件实体与环境的界面清晰、软件实体与环境的界面清晰4、设计规格说明清晰、简洁、完整和无二义性、设计规格说明清晰、简洁、完整和无二义性2021-10-16第四章 软件总体设计194.1 总体设计概述 4.1.1 4.1.1 总体设计的任务总体设计的任务p 确定模块结构,划分功能模块,将软件功
12、能需求分配给所划分的最小单元模块。确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。p 编写总体设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。选择分解功能与划分模块的设计原则2021-10-16第四章 软件总体设计20 4.1 总体设计概述 4.1.2 4.1.2 总体设计的步骤总体设计的步骤1设计系统方案2选取合理的方案 3推荐最佳方案 4功能分解5软件结构设计6数据库设计、文件结构的设计7制定测试计划8书写文档9审查和复审2021-10-16第四章 软件总体设计21 软件结构是软件模块之间关系的表示,它决定软件结构
13、是软件模块之间关系的表示,它决定了整个系统的结构,也确定了系统的质量。模块之了整个系统的结构,也确定了系统的质量。模块之间的关系可有多种,但都可以归结为一种层次关系。间的关系可有多种,但都可以归结为一种层次关系。 软件结构图是总体设计阶段的主要描述工具,软件结构图是总体设计阶段的主要描述工具,它描述了构成系统的基本元素它描述了构成系统的基本元素模块及模块之间模块及模块之间的调用关系,模块之间的数据传递关系。的调用关系,模块之间的数据传递关系。2021-10-16第四章 软件总体设计222021-10-16第四章 软件总体设计23软件结构的基本概念软件结构的基本概念ABCDEFGHIJKLMMo
14、dule例如,例如,过程、函数、子程序、过程、函数、子程序、宏等,是构成软件系宏等,是构成软件系统结构的基本元素。统结构的基本元素。 软件结构图软件结构图2021-10-16第四章 软件总体设计24体系结构设计是软件设计的第一个阶段,该阶段侧重体系结构设计是软件设计的第一个阶段,该阶段侧重于系统宏观结构的设计,而不关心模块的内部算法。于系统宏观结构的设计,而不关心模块的内部算法。杨叔子院子曾这样指点其弟子:杨叔子院子曾这样指点其弟子: 文学中有科学,音乐中有数学,漫画中有现代数学文学中有科学,音乐中有数学,漫画中有现代数学的拓扑学。漫画家可以的拓扑学。漫画家可以“几笔几笔”就把一个人画出来,不
15、管就把一个人画出来,不管怎么美化或丑化,就是活像。为什么?因为那怎么美化或丑化,就是活像。为什么?因为那“几笔几笔”不不是别的,而是拓扑学中的特征不变量,这是事物最本质的是别的,而是拓扑学中的特征不变量,这是事物最本质的东西。东西。体系结构是软件系统中最本质的东西:体系结构是软件系统中最本质的东西:软件系统的体系结构分为集中式的层次结构、客户机软件系统的体系结构分为集中式的层次结构、客户机/服务器等。服务器等。 2021-10-16第四章 软件总体设计25一、层次结构一、层次结构2021-10-16第四章 软件总体设计262021-10-16第四章 软件总体设计27二、二、 客户服务器模型客户
16、服务器模型(Client/Server Architectural Model) C/S结构是一种分布式模型,采用发请求、得结果的结构是一种分布式模型,采用发请求、得结果的模式:模式:客户机客户机 向服务器发出请求向服务器发出请求(数据请求、网页请求、文件数据请求、网页请求、文件传输请求等传输请求等)。服务器服务器 响应请求,进行相应的操作,将结果回传给客户响应请求,进行相应的操作,将结果回传给客户机,客户机再将格式化后的结果呈现给用户。机,客户机再将格式化后的结果呈现给用户。C/S结构的应用都由三个相对独立的逻辑部分组成结构的应用都由三个相对独立的逻辑部分组成。用户界面用户界面应用逻辑应用逻
17、辑数据访问数据访问三种逻辑之间的关系三种逻辑之间的关系2021-10-16第四章 软件总体设计28两层客户服务器模型两层客户服务器模型 (Two Tier Client/Server Architectural Model)服务器服务器1网络网络服务器服务器2服务器服务器M客户客户1客户客户2客户客户N两层两层Client/Server结构结构请求请求结果结果请求请求C/S的工作模式是一种远程过程调用的工作模式是一种远程过程调用(RPC,Remote Procedure Call)模式,允许客户端和服务器端有不同的软模式,允许客户端和服务器端有不同的软硬平台。硬平台。2021-10-16第四章
18、 软件总体设计29client1 1client2 2client4 4client3 3Wide-bandwidth netwokCatalogueservercataloguevideoserverFilm clipfilespictureserverdigitisedphotographshypertextserverhypertextweb例:例:电影图片库的系统的体系结构电影图片库的系统的体系结构s2021-10-16第四章 软件总体设计30 完整的应用包含三个相对独立的逻辑部分,而两层的完整的应用包含三个相对独立的逻辑部分,而两层的C/S结构只有两个端应用。应用逻辑应该映射到哪一端
19、上结构只有两个端应用。应用逻辑应该映射到哪一端上呢?呢? 三种情况:三种情况:网网 络络用户界面用户界面客户端逻辑客户端逻辑应用应用服务端逻辑服务端逻辑应用应用客户端客户端用户界面用户界面逻辑应用逻辑应用数据访问数据访问用户界面用户界面逻辑应用逻辑应用数据访问数据访问服务器服务器应用逻辑层的映射情况应用逻辑层的映射情况数据访问数据访问C/S应用应用3C/S应用应用1C/S应用应用2 两层两层C/S架构将数据表示和处理逻辑分开架构将数据表示和处理逻辑分开 ,但应用逻,但应用逻辑和两端之一是紧耦合的辑和两端之一是紧耦合的,不适宜多用户、多数据库、非不适宜多用户、多数据库、非安全的网络环境。安全的网
20、络环境。 2021-10-16第四章 软件总体设计31 2.三层三层/多层应用模型多层应用模型(Three/Multi Tier Model) 第一级是数据库管理结点第一级是数据库管理结点(database management node)。第二级或中间级是第二级或中间级是“商业逻辑结点商业逻辑结点” (business logic node),是是指具体应用中实施的指具体应用中实施的 程序逻辑和法则。程序逻辑和法则。第三级是用户界面级,强调高效、方便易用的用户界面。第三级是用户界面级,强调高效、方便易用的用户界面。Database management node(数据库管理结点)(数据库管理
21、结点)business logic node(商业逻辑结点)商业逻辑结点)Security(安全)(安全)Event(事件)(事件)Search(搜索)(搜索)ClientAClientDClientBClientC服服务务器器客客户户机机第一级第一级第二级第二级第三级第三级2021-10-16第四章 软件总体设计32客户端客户端用户界面用户界面服务器服务器数据访问数据访问多层应用模型多层应用模型网网 络络应用服务器应用服务器1应用逻辑应用逻辑应用服务器应用服务器n应用逻辑应用逻辑 在多层模型中,中间层会用到应用服务,包括事务在多层模型中,中间层会用到应用服务,包括事务服务、消息服务等等。常见
22、的事务服务器有服务、消息服务等等。常见的事务服务器有Microsoft Transaction Server,消息服务器有,消息服务器有Microsoft Message Queue。2021-10-16第四章 软件总体设计33三、分布式对象结构三、分布式对象结构(Distributed Objects Architecture) 在在C/S模型中,客户和服务器在服务模型中,客户和服务器在服务/请求上的差别,请求上的差别,在一定程度上限制了系统的灵活性和可扩展性。在一定程度上限制了系统的灵活性和可扩展性。 采用分布式对象结构采用分布式对象结构 : “对象对象(Object)”提供服务的系统组件
23、提供服务的系统组件(System Component)。 每个对象在逻辑上是平等的,它们可以互相为对方提每个对象在逻辑上是平等的,它们可以互相为对方提供所需的服务。供所需的服务。 提供服务的对象就是服务器,而提出服务请求的对象提供服务的对象就是服务器,而提出服务请求的对象就是客户。就是客户。 2021-10-16第四章 软件总体设计34 软件总线软件总线(Software Bus)的中间件的中间件(Middleware) 即即对象请求代理对象请求代理(Object Request Broker,ORB) 分布式对象结构具有很好的开放性和透明性,用分布式对象结构具有很好的开放性和透明性,用户可以
24、非常方便地在总线上添加、更新或删除组件对户可以非常方便地在总线上添加、更新或删除组件对象。象。软件总线软件总线(ORB)O1S(O1)O2S(O2)OnS(On)分布式对象结构2021-10-16第四章 软件总体设计354.2 总体设计的图形工具 4.2.1 4.2.1 层次图层次图2021-10-16第四章 软件总体设计364.2 总体设计的图形工具4.2.2 HIPO4.2.2 HIPO图图2021-10-16第四章 软件总体设计37大学教务管理系统大学教务管理系统H图图 2021-10-16第四章 软件总体设计38IPO图的一个例子图的一个例子2021-10-16第四章 软件总体设计39
25、 4.2 总体设计的图形工具4.2.3 4.2.3 结构图结构图2021-10-16第四章 软件总体设计40软件结构图(软件结构图(SCSC图)图)结构图结构图( (Structure Chart,SC图图) )是精确表达软件是精确表达软件结构的图形表示方法,它以特定的符号表示模块、模结构的图形表示方法,它以特定的符号表示模块、模块间的调用关系和模块间信息的传递。块间的调用关系和模块间信息的传递。Module用矩形框表示,框中写有模块用矩形框表示,框中写有模块的名字,说明模块的功能。模块是程序对象有名字的的名字,说明模块的功能。模块是程序对象有名字的集合。例如:过程、函数、子程序、宏等。集合。
26、例如:过程、函数、子程序、宏等。调用箭头边上的小箭头表示调用时从一调用箭头边上的小箭头表示调用时从一个模块传送给另一模块的数据。个模块传送给另一模块的数据。从一个模块指向另一个模块的箭头表示前从一个模块指向另一个模块的箭头表示前一模块对后一模块的调用,一般是上层调用下层。一模块对后一模块的调用,一般是上层调用下层。2021-10-16第四章 软件总体设计41模块模块5模块模块5模块模块4模块模块4模块模块1模块模块3模块模块2valuesvaluesdatadata模块模块1模块模块2模块模块3valuesdatadata 模块调用图模块调用图2021-10-16第四章 软件总体设计42 模块
27、间接口的表示模块间接口的表示A A查询学生成绩查询学生成绩B B查找学生记录查找学生记录学学号号查找成功的信查找成功的信息息常用尾端带有空心圆的短常用尾端带有空心圆的短箭头表示数据信息,用尾端带箭头表示数据信息,用尾端带有实心圆的短箭头表示控制信有实心圆的短箭头表示控制信息。息。有的结构图对这两种信息有的结构图对这两种信息不加以区别,一律用注有信息不加以区别,一律用注有信息名的短箭头来表示,如图所示。名的短箭头来表示,如图所示。数据信息数据信息控制信息控制信息2021-10-16第四章 软件总体设计432021-10-16第四章 软件总体设计44例:画出打印报告的软件结构图。 调用次序为上层调
28、用下层;调用次序为上层调用下层; 同层按照数据传递关同层按照数据传递关系确定;一般从左到右执行。系确定;一般从左到右执行。 执行过程即按照数据流向进行。执行过程即按照数据流向进行。 报报 告告计计 算算获得编辑获得编辑确认数据确认数据读入读入编辑编辑打印报告头打印报告头打印报告尾打印报告尾打印打印输入输入EOFEOF输入输入已编辑已编辑 已编辑已编辑已编已编辑辑已确认已确认已确认已确认数据数据已确认已确认数据数据计算结果计算结果结果结果日期日期总结果总结果行行行行行打印报告打印报告予以确认予以确认2021-10-16第四章 软件总体设计45结构图的例子结构图的例子产生最佳解的一般结构产生最佳解
29、的一般结构2021-10-16第四章 软件总体设计46 4.3 模块化设计4.3.1 4.3.1 模块化与局部化模块化与局部化1 1模块化模块化 模块是数据说明、可执行语句等程序对象的模块是数据说明、可执行语句等程序对象的集合,模块可以单独被命名、而且可通过名字集合,模块可以单独被命名、而且可通过名字来访问,例如,过程、函数、子程序、宏等等来访问,例如,过程、函数、子程序、宏等等都可作为模块。模块化就是把程序划分成若干都可作为模块。模块化就是把程序划分成若干个模块,每个模块具有一个子功能,把这些模个模块,每个模块具有一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功块集成起来构成一个
30、整体,可以完成指定的功能,进而满足问题的要求。能,进而满足问题的要求。2021-10-16第四章 软件总体设计47“模块模块”,又称,又称“构件构件”,一般指用一个名字可,一般指用一个名字可调用的一段程序。它一般具有如下三个基本属性:调用的一段程序。它一般具有如下三个基本属性:功能功能 即指该模块实现什么功能,做什么事情即指该模块实现什么功能,做什么事情逻辑逻辑 即描述模块内部怎么做。即描述模块内部怎么做。状态状态 即该模块使用时的环境和条件。即该模块使用时的环境和条件。所谓模块的独立性,是指软件系统中每个模块只所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统
31、中其他涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的。即功能专一,模块之间无过多模块的接口是简单的。即功能专一,模块之间无过多的相互作用的模块。的相互作用的模块。这种类型的模块可以并行开发,模块独立性越强,这种类型的模块可以并行开发,模块独立性越强,开发越容易。独立性强的模块,还能减少错误的影响,开发越容易。独立性强的模块,还能减少错误的影响,使模块容易组合、修改及测试。使模块容易组合、修改及测试。2021-10-16第四章 软件总体设计48 模块化的目的是模块化的目的是将系统将系统“分而治之分而治之”,模块化能够降低问题,模块化能够降低问题的复杂性,使软件结构清晰,易阅读、
32、易理的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软解,易于测试和调试,因而也有助于提高软件的可靠性。件的可靠性。2021-10-16第四章 软件总体设计49模块化降低软件复杂度的模块化降低软件复杂度的简单证明简单证明令:令:C( (X) )表示问题表示问题 X 的复杂度函数;的复杂度函数; E( (X) )解决问题解决问题 X 所需工作量的复杂度函所需工作量的复杂度函数;数;若:有问题若:有问题 P1,P2 ;C( (P1) ) C(P2); 显然:显然:E( (P1) ) E( (P2) )由经验:由经验:C( (P1+P2) ) C( (P1) )+ C( (
33、P2) )于是:于是:E( (P1+P2) ) E( (P1) )+ E( (P2) )将问题将问题( (P1+P2) )划分为两个问题划分为两个问题P1和和P2后,其后,其工作量和复杂度都降低。工作量和复杂度都降低。2021-10-16第四章 软件总体设计50 并非模块分得越小越好,因为模块之间接口的复并非模块分得越小越好,因为模块之间接口的复杂度和工作量增加。显然,每个软件系统都有一个最杂度和工作量增加。显然,每个软件系统都有一个最佳模块数佳模块数M。注意选择分解的最佳模块数。右上图描。注意选择分解的最佳模块数。右上图描述了模块化与软件成本的关系。述了模块化与软件成本的关系。软件总成本软件
34、总成本 模块化与软件成本的关系模块化与软件成本的关系成本成本模块模块数目数目模块成本模块成本接口成本接口成本最小成本区最小成本区M2021-10-16第四章 软件总体设计514.3 模块化设计4.3.1 4.3.1 模块化与局部化模块化与局部化 2 2局部化局部化 局部化的概念和信息隐蔽概念密切相关。局部化的概念和信息隐蔽概念密切相关。所谓局部化是指把一些关系密切的软件元素所谓局部化是指把一些关系密切的软件元素物理地放得彼此靠近。在模块中使用局部数物理地放得彼此靠近。在模块中使用局部数据元素是局部化的一个例子。显然,局部化据元素是局部化的一个例子。显然,局部化有助于实现信息隐蔽。有助于实现信息
35、隐蔽。2021-10-16第四章 软件总体设计52 4.3 模块化设计4.3.2 4.3.2 模块化独立性模块化独立性 模块的独立性可以用两个定性的标准来度量:耦合和内聚。耦合是模块之间互相连接的紧密程度的度量,内聚是一个模块内部各个元素彼此结合的紧密程度的度量。 2021-10-16第四章 软件总体设计53 4.3 模块化设计4.3.2 4.3.2 模块化独立性模块化独立性1 1耦合耦合p 非直接耦合非直接耦合 p 数据耦合数据耦合 p 标记耦合标记耦合 p 控制耦合控制耦合 p 公共耦合公共耦合 p 内容耦合内容耦合 2021-10-16第四章 软件总体设计54耦合性是指软件结构中模块相互
36、连接的紧密耦合性是指软件结构中模块相互连接的紧密程度,是模块间相互连接性的度量。模块分解的程度,是模块间相互连接性的度量。模块分解的一个目标是使块间联系尽可能小,块间联系的大一个目标是使块间联系尽可能小,块间联系的大小可从三个方面衡量:小可从三个方面衡量:数据数据方式方式作用作用少少多多数量数量控制控制混合混合直 接 调直 接 调用用过程过程调用调用 块间联系方式有块间联系方式有“直接引用直接引用”或或“用过程语句调用用过程语句调用” 块间传送的共用信息块间传送的共用信息( (参数参数) )类型,可为类型,可为“数据型数据型”、“控制型控制型”或或“混合型混合型”( (数据数据/ /控制型控制
37、型) ) 块间传送的共用信息的数量块间传送的共用信息的数量2021-10-16第四章 软件总体设计55模块分解的一个目标是使块间联系模块分解的一个目标是使块间联系尽可能小,达到这个目标可通过以下措尽可能小,达到这个目标可通过以下措施。施。每个模块用过程语句每个模块用过程语句( (或函数方式等或函数方式等) )调用其他模块。调用其他模块。模块间传送的参数为数据型。模块间传送的参数为数据型。模块间公用的信息模块间公用的信息( (如参数等如参数等) )尽量尽量少。少。2021-10-16第四章 软件总体设计56内容耦合内容耦合公共耦合公共耦合控制耦合控制耦合复合耦合复合耦合数据耦合数据耦合一个模块直
38、接访问另一模块的内部数据一个模块直接访问另一模块的内部数据一个模块不通过正常入口转到另一模块的内部一个模块不通过正常入口转到另一模块的内部一个模块有多个入口一个模块有多个入口两个模块有部分代码重迭两个模块有部分代码重迭2021-10-16第四章 软件总体设计57 若干模块访问一个公共的数据环境若干模块访问一个公共的数据环境, ,公共环境可公共环境可为全局数据结构、共享的通信区、内存的公共覆盖区为全局数据结构、共享的通信区、内存的公共覆盖区等。显然,公共数据区的变化,将影响所有公共等。显然,公共数据区的变化,将影响所有公共耦合耦合模块,严重影响模块的可靠性和可适应性,降低软件模块,严重影响模块的
39、可靠性和可适应性,降低软件的可读性。的可读性。2021-10-16第四章 软件总体设计58 一个模块传递给另一模块一个模块传递给另一模块的信息是用于控制该模块内的信息是用于控制该模块内部逻辑的控制信号。显然,部逻辑的控制信号。显然,对被控制模块的任何修改,对被控制模块的任何修改,都会影响控制模块都会影响控制模块。A BFlagf1f2fn.2021-10-16第四章 软件总体设计59public int y;Public A(string x) if (x=”true”) y=1;Else y=0;Public void B ( ) if (y=1) F( ); / F( )是系统自定义是系统
40、自定义的函数的函数ElseG( ); / G( )是系统自定是系统自定义的函数义的函数2021-10-16第四章 软件总体设计60 一个模块传送给另一个模块的参数是一个模块传送给另一个模块的参数是一个复合的数据结构。例如,包含几个数一个复合的数据结构。例如,包含几个数据单项的记录。据单项的记录。 一个模块传送给另一个模块的参数是一个一个模块传送给另一个模块的参数是一个单个的数据项单个的数据项2021-10-16第四章 软件总体设计61p 总之,耦合是影响软件复杂程度的一总之,耦合是影响软件复杂程度的一个重要因素。应该采取下述设计原则:个重要因素。应该采取下述设计原则:2021-10-16第四章
41、 软件总体设计62 4.3 模块化设计4.3.2 4.3.2 模块化独立性模块化独立性2 2内聚内聚p 偶然内聚偶然内聚 p 逻辑内聚逻辑内聚 p 时间内聚时间内聚 p 过程内聚过程内聚 p 通信内聚通信内聚 p 顺序内聚顺序内聚 p 功能内聚功能内聚 2021-10-16第四章 软件总体设计63块内联系的类型分为七类块内联系的类型分为七类: :内聚性表示一个内聚性表示一个模块内部模块内部各种数据和各种各种数据和各种处理之间联系的紧密程度,它是从功能的角处理之间联系的紧密程度,它是从功能的角度来度量模块间的联系。显然度来度量模块间的联系。显然, ,块内联系愈紧块内联系愈紧, ,即内聚性愈强即内
42、聚性愈强, ,模块独立性愈好。模块独立性愈好。偶然型偶然型逻辑型逻辑型瞬时型瞬时型过程型过程型通信型通信型顺序型顺序型功能型功能型2021-10-16第四章 软件总体设计64模块模块T T中的三条语句毫无关系,中的三条语句毫无关系,A、B、C、D都不在文件都不在文件CARD FILE 中。模块中。模块P、Q、R分别与三条分别与三条语句有关。语句有关。PQRMOVE A TO BREAD CARD FILE MOVE C TO DT 偶然型模块偶然型模块又称为巧合型,为了节约空间,将毫无关又称为巧合型,为了节约空间,将毫无关系系( (或者联系不多或者联系不多) )的各成分放在一个模块中。的各成分
43、放在一个模块中。这样的模块显然不易理解,不易修改这样的模块显然不易理解,不易修改。2021-10-16第四章 软件总体设计65将几个逻辑上相似的功能放在一个模块中,将几个逻辑上相似的功能放在一个模块中,调用时由调用模块传递的参数确定执行的功能。调用时由调用模块传递的参数确定执行的功能。由于要进行控制参数的传递,必然要影响模块由于要进行控制参数的传递,必然要影响模块的内聚性。的内聚性。调用模块调用模块判定判定读读一一个个记记录录写写一一个个记记录录 逻辑型模块逻辑型模块被调用模块被调用模块2021-10-16第四章 软件总体设计66( (Temporal Cohesion) )将需要同时执行的成
44、分放在一个模块中,将需要同时执行的成分放在一个模块中,因为模块中的因为模块中的各功能与时间有关各功能与时间有关,因此又称,因此又称为时间内聚或经典内聚。例如,初始化模块,为时间内聚或经典内聚。例如,初始化模块,中止模块等这类模块内部结构较简单,一般中止模块等这类模块内部结构较简单,一般较少判定,因此比逻辑内聚强,但是由于将较少判定,因此比逻辑内聚强,但是由于将多个功能放在一起,给修改和维护造成困难。多个功能放在一起,给修改和维护造成困难。2021-10-16第四章 软件总体设计67( (Procedural Cohesion) )如果一个模块内的处理是相关的,而且如果一个模块内的处理是相关的,
45、而且必须以特定次序执行必须以特定次序执行,则称这个模块,则称这个模块 为过程为过程内聚模块。通常通过程序流程图来确定,例内聚模块。通常通过程序流程图来确定,例如把流程图中的循环部分、判定部分、计算如把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内部分分成三个模块,这三个模块都是过程内聚模块。聚模块。2021-10-16第四章 软件总体设计68模块中的成分模块中的成分引用共同的输入数据,或者引用共同的输入数据,或者产生相同的输出数据产生相同的输出数据,则称为是通信内聚模块,则称为是通信内聚模块通信型模块比瞬时型模块的内聚性强,因通信型模块比瞬时型模块的内聚性强,因为模块
46、中包含了许多独立的功能,但却引用相为模块中包含了许多独立的功能,但却引用相同数据同数据A打印打印报告报告1 1打印打印报告报告2 2打印打印报告报告2 2B存入存入打印打印C修改修改删除删除打印打印(a)(b)(c) 通信型模块通信型模块2021-10-16第四章 软件总体设计692021-10-16第四章 软件总体设计70( (Sequential Cohesion) )模块中模块中某个成分的输出是另一成分的输入某个成分的输出是另一成分的输入。由于。由于这类模块无论数据还是执行顺序,模块中的一部分依这类模块无论数据还是执行顺序,模块中的一部分依赖于另外一部分。赖于另外一部分。 顺序型模块,编
47、辑功能的输入是顺序型模块,编辑功能的输入是读入功能的输出,打印功能的输入是读入功能的输出,打印功能的输入是累加功能的输出累加功能的输出。读入读入编辑编辑A数据数据累加累加打印打印B结果结果 顺序型模块顺序型模块2021-10-16第四章 软件总体设计71) )一个模块包括而且仅包括完成一个模块包括而且仅包括完成某一具体功能所必须的所有成分。某一具体功能所必须的所有成分。或者说,模块的所有成分都是为完或者说,模块的所有成分都是为完成该功能而成该功能而协同工作、紧密联系、协同工作、紧密联系、不可分割的不可分割的。 求解方程的功能模块求解方程的功能模块求求一元二次方程一元二次方程求平方根求平方根A
48、AB B例如仅完成以下功能的模块为功例如仅完成以下功能的模块为功能模块:能模块: 求平方根求平方根 求解一元二次方程求解一元二次方程 计算利息计算利息 判素数判素数2021-10-16第四章 软件总体设计72p1计算雇员年龄并给出生日的模块计算雇员年龄并给出生日的模块p2 按给出的生日计算雇员年龄、退休时间的模块。按给出的生日计算雇员年龄、退休时间的模块。如果利用所计算的年龄来确定雇员将要退休的时间,如果利用所计算的年龄来确定雇员将要退休的时间,是什么内聚;是什么内聚;p如果分别计算年龄和退休时间,但使用相同生日数如果分别计算年龄和退休时间,但使用相同生日数据,是什么内聚据,是什么内聚p3 打
49、印季度开支报告、月份开支报告和日开支报告。打印季度开支报告、月份开支报告和日开支报告。具体打印哪一个,将由传入的控制标志决定。如何具体打印哪一个,将由传入的控制标志决定。如何提高内聚性?提高内聚性? 功能内聚功能内聚 顺序内聚顺序内聚 通信内聚通信内聚 逻辑内聚逻辑内聚2021-10-16第四章 软件总体设计73 4.3 模块化设计4.3.2 4.3.2 模块化独立性模块化独立性3 3设计准则设计准则p模块规模应该适中模块规模应该适中 p改进软件结构提高模块独立性改进软件结构提高模块独立性 p深度、宽度、扇入和扇出都应适当深度、宽度、扇入和扇出都应适当 p模块的作用范围应该在控制范围之内模块的
50、作用范围应该在控制范围之内 p降低模块接口的复杂程度降低模块接口的复杂程度 p设计单入口单出口的模块,避免设计单入口单出口的模块,避免“病态连接病态连接”p模块功能应该可以预测模块功能应该可以预测2021-10-16第四章 软件总体设计741)1)模块的大小要适中模块的大小要适中 模块的大小,可以用模块中所含模块的大小,可以用模块中所含语句的数量的多少来衡量。把模块的语句的数量的多少来衡量。把模块的大小限制在一定的范围之内。通常规大小限制在一定的范围之内。通常规定其语句行数在定其语句行数在5050100100左右,保持左右,保持在一页纸之内,最多不超过在一页纸之内,最多不超过500500行。行
51、。2021-10-16第四章 软件总体设计75 消除重复功能(a)(b)(c)(d)Q重复部分重复部分XQ1YQ22)2)改进软件结构,消除重复功能改进软件结构,消除重复功能 若两模块含有重复的部分,应设法将重复的功能消去。若两模块含有重复的部分,应设法将重复的功能消去。 如下图所示,如下图所示,Q1和和Q2两个模块具有类似的功能,图两个模块具有类似的功能,图( (b) )、( (c) )、( (d) )方案就是可能的解决方案。方案就是可能的解决方案。XYQ1Q2QYQ2XQ1QXQ1YQ22021-10-16第四章 软件总体设计76逻辑内聚逻辑内聚2021-10-16第四章 软件总体设计77
52、消除重复功能,改善软件结构消除重复功能,改善软件结构 完全相似:在结构上完全相似,可能只完全相似:在结构上完全相似,可能只是在数据类型上不一致。此时可以采取完是在数据类型上不一致。此时可以采取完全合并的方法。全合并的方法。 局部相似:找出其相同部分,分离出去,局部相似:找出其相同部分,分离出去,重新定义成一个独立的下一层模块。还可重新定义成一个独立的下一层模块。还可以与它的上级模块合并。以与它的上级模块合并。2021-10-16第四章 软件总体设计78:深度:表示软件结构中从顶层模块到最底深度:表示软件结构中从顶层模块到最底层模块的层数。层模块的层数。宽度:表示控制的总分布。宽度:表示控制的总
53、分布。扇出数:指一个模块直接控制下属的模块扇出数:指一个模块直接控制下属的模块个数。个数。扇入数:指一个模块的直接上属模块个数。扇入数:指一个模块的直接上属模块个数。3 3)深入、宽度、扇入、扇出)深入、宽度、扇入、扇出2021-10-16第四章 软件总体设计793.2.13.2.1软件结构的基本概念软件结构的基本概念 软件结构示意图软件结构示意图一个好的软件结构的形态准则是:顶部宽度小,一个好的软件结构的形态准则是:顶部宽度小,中部宽度大,底部宽度次之;在结构顶部有较高的中部宽度大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较高的扇入数。扇出数,在底部有较高的扇入数。2021-10-1
54、6第四章 软件总体设计80p深度、宽度、扇入和扇出都应适当深度、宽度、扇入和扇出都应适当2021-10-16第四章 软件总体设计81一个模块调用其他模块的个数,称为该模块的扇出。一个模块调用其他模块的个数,称为该模块的扇出。模块的扇出不宜过大,一般认为不要超出个。模块的扇出不宜过大,一般认为不要超出个。 一个模块被其他模块调用的个数,称为该模块的扇一个模块被其他模块调用的个数,称为该模块的扇入。扇入越大,除服务性模块外,模块的扇入扇出数不入。扇入越大,除服务性模块外,模块的扇入扇出数不宜太多,否则块间联系增加。宜太多,否则块间联系增加。2021-10-16第四章 软件总体设计82控制范围控制范
55、围 结构方面的特点,包括模块及其结构方面的特点,包括模块及其 所有下属模块。所有下属模块。作用范围作用范围 判断所涉及到的模块,是从功能判断所涉及到的模块,是从功能 特点考虑的。特点考虑的。SDSD方法认为:方法认为: 如图如图(b)(b)中的设计,中的设计,判定的作用范围恰好在判定所在模块的下一层。判定的作用范围恰好在判定所在模块的下一层。4)4)模块的作用范围与控制范围模块的作用范围与控制范围2021-10-16第四章 软件总体设计83TOPXTBAB1B2图图(b)(b)中模块中模块TOP 的控制范围是:的控制范围是:模块模块 TOP、X、T、B、A、B1、B2;模块模块B 的控制范围与
56、作用范围相同,的控制范围与作用范围相同,均为:均为:模块模块B、A、B1、B2图图(a)(a)中模块中模块A A的控制范围:的控制范围: A、B、C、D、G、E、F如果模块如果模块F F的判定涉及到模块的判定涉及到模块B、E、F则则F F的的作用范围:的的作用范围:B、E、FABCDGEFFBE (a) (b)2021-10-16第四章 软件总体设计84显然,图显然,图( (a) )不满足作用范围应与控制范围不满足作用范围应与控制范围的原则,模块的原则,模块F F的作用范围不在控制范围之内。的作用范围不在控制范围之内。图图( (b) )中模块中模块TOP和图和图( (c) )中模块中模块B虽然
57、满足虽然满足上述原则,但其作用范围所涉及到的模块不是上述原则,但其作用范围所涉及到的模块不是直接的。直接的。图图( (d) )的模块设计最合理。的模块设计最合理。TOPABCDEF (a)TOPABCDEF(d)TOPABCDEF(b)TOPABCDEF(c)比较比较( (a) )、( (b) )、( (c) )、( (d)4)4种设计方案的优劣种设计方案的优劣2021-10-16第四章 软件总体设计855 5)降低接口复杂度)降低接口复杂度例如:求一元二次方程的跟的模块,模块名为例如:求一元二次方程的跟的模块,模块名为Quad_Root,这里有这里有2种接口方式种接口方式a. Quad_Ro
58、ot(Tbl,X)b. Quad_Root(A,B,C,Root1,Root2)2021-10-16第四章 软件总体设计86 一个功能可预测的模块,不论内部处理细节一个功能可预测的模块,不论内部处理细节如何,但对相同的输入数据,总能产生同样的结如何,但对相同的输入数据,总能产生同样的结果。但是,如果模块内部蕴藏有一些特殊的鲜为果。但是,如果模块内部蕴藏有一些特殊的鲜为人知的功能时,这个模块就可能是不可预测的。人知的功能时,这个模块就可能是不可预测的。对于这种模块,如果调用者不小心使用,其结果对于这种模块,如果调用者不小心使用,其结果将不可预测。将不可预测。6) 6) 功能可预测的模块,但避免过
59、分受功能可预测的模块,但避免过分受限制的模块限制的模块2021-10-16第四章 软件总体设计872021-10-16第四章 软件总体设计88 4.3 模块化设计4.3.3 4.3.3 抽象与信息隐蔽抽象与信息隐蔽1 1抽象抽象 抽象是人类认识问题和解决问题的基本工抽象是人类认识问题和解决问题的基本工具和方法。在解决复杂的具体问题时,人们具和方法。在解决复杂的具体问题时,人们往往先忽略其细节和非本质的方面,而集中往往先忽略其细节和非本质的方面,而集中注意力去分析问题的本质和主要方面,搞清注意力去分析问题的本质和主要方面,搞清所要解决的问题的本质。同时人们在总结认所要解决的问题的本质。同时人们在
60、总结认识和实验规律时,也往往突出各类问题的共识和实验规律时,也往往突出各类问题的共性,找出各种客观事物、状态和过程间的联性,找出各种客观事物、状态和过程间的联系和相似性,加以概括和提取,即抽象。系和相似性,加以概括和提取,即抽象。 2021-10-16第四章 软件总体设计89 4.3 模块化设计4.3.3 4.3.3 抽象与信息隐蔽抽象与信息隐蔽2 2信息隐蔽信息隐蔽 信息隐蔽原理认为:模块所包含的信息(过信息隐蔽原理认为:模块所包含的信息(过程和数据)对于其他模块来说应该是隐蔽的。程和数据)对于其他模块来说应该是隐蔽的。也就是说,模块应当被这样规定和设计,使也就是说,模块应当被这样规定和设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024江苏省公务员考试【申论 A卷、C卷】+2023年【申论B卷】共 3套 真题及答案
- 2025年石头汤考试试题及答案
- 5年级下册英语书单词
- 5年级上册题目
- 登记注册 标准化建设思路
- 地下施工工艺流程
- 不同材料短时记忆保持量的实验报告 - 副本 - 副本
- 2025年陕西青年职业学院单招职业技能考试题库审定版
- 2025年深圳信息职业技术学院单招职业倾向性测试题库完整版
- 2025年关于纪念抗日战争胜利72周年的调查报告
- 公司上下级沟通与协作管理制度
- 移动政企部年终总结
- 免疫治疗超进展
- 人教版化学九年级下册全册综合考试试题(九年级下学期期中考试化学试卷)
- 中考英语高频语法小专题考点讲练系列十五+spend+take+pay+cost+花费系列
- 无人机操作教案
- 四年级语文下册第六单元【集体备课】(教材解读+教学设计)
- 2024版义务教育小学科学课程标准
- MBTI16种人格类型及其通常具有的特征和职业倾向
- 复数算符在图像处理中的应用
- 百融云创风险决策引擎V5产品操作手册
评论
0/150
提交评论