1、1.3 软件生存期(software life cycle)图1.14概要设计规格说明书详细设计规格说明书 软 件 生 存 期软件定义部分软件开发部分软件运行维护部分退役软件维护运行软件需求分析可行性研究问题定义综合测试编码与单元测试详细设计概要设计系统分析报告可行性分析报告初步项目计划需求规格说明书源程序代码测试报告用户手册维护报告 第1章 软件工程引论引言软件生存期2022-6-1 2结束返回模模3.1 软件需求分析3.1.5 需求分析模型需求分析模型引言2022-6-1 3结束返回第4章 软件概要设计4.1 软件设计过程软件设计过程4.2 软件设计的基本概念软件设计的基本概念4.3 面向
2、数据流的设计方法面向数据流的设计方法4.4 面向数据结构的设计方法面向数据结构的设计方法4.5 软件概要设计规格说明软件概要设计规格说明与评审与评审第4章 软件概要设计2022-6-1 4结束返回【学习目的学习目的】1.1.掌握解软件概要设计的原则和过程。掌握解软件概要设计的原则和过程。2.2.掌握模块划分的评价准则掌握模块划分的评价准则模块独立性的判别。模块独立性的判别。3.3.掌握结构化设计方法。掌握结构化设计方法。4.4.掌握数据设计和文件设计的原则。掌握数据设计和文件设计的原则。5.5.了解软件概要设计规格说明和设计评审的主要内容。了解软件概要设计规格说明和设计评审的主要内容。6.6.
3、了解了解JacksonJackson系统开发方法和系统开发方法和JacksonJackson程序设计方法。程序设计方法。第4章 软件概要设计2022-6-1 5结束返回【难重点难重点】 软件设计从技术上的软件设计从技术上的体系结构设计、体系结构设计、数据结构设计、接口设计和过程设计。数据结构设计、接口设计和过程设计。 第4章 软件概要设计2022-6-1 6结束返回4.1 4.1 软件设计的过程软件设计的过程图4.1 软件设计前需要考虑的问题软件设计前要考虑的问题:第4章 软件概要设计2022-6-1 7结束返回编编码码测测试试设设计计信息描述功能描述行为描述其他需求总体结构设计数据结构设计过
4、程设计 程序模块集成并确认的软件图4.2 软件开发部分的信息流4.1 4.1 软件设计的过程软件设计的过程软件开发部分包括:软件设计、编码和测试阶段。第4章 软件概要设计2022-6-1 8结束返回4.1.1 4.1.1 软件设计的重要性软件设计的重要性 软件需求分析软件需求分析做什么做什么怎么做怎么做图4.3 软件设计的作用第4章 软件概要设计2022-6-1 9结束返回4.1.2 4.1.2 软件设计的方法软件设计的方法图4.4 软件设计的方法结构化设计方法 面向对象设计 (OOD)面向数据流的设计 SD面向数据结构的设计Jackson软件设计方法结构化设计(SD,Structure De
5、sign)面向对象设计(OOD,Object Oriented Design)第4章 软件概要设计2022-6-1 10结束返回4.1.3 4.1.3 软件设计的过程概软件设计的过程概述述 软件设计软件设计是一个是一个把把软件需求软件需求变换成变换成软件表示软件表示的过程。的过程。 最初最初这种表示只是描绘出软件的总的框架;这种表示只是描绘出软件的总的框架; 然后然后进一步细化,在此框架中填入细节;进一步细化,在此框架中填入细节; 最后把最后把它加工成在程序细节上非常接近于源程它加工成在程序细节上非常接近于源程序的序的软件表示软件表示。 第4章 软件概要设计2022-6-1 11结束返回4.1
6、.3 4.1.3 软件设计的过程概述软件设计的过程概述图4.5 从技术和管理的角度看设计的关系 从管理和技术两个不同的角度对软件设计的从管理和技术两个不同的角度对软件设计的认识,可以用认识,可以用下图表示下图表示。 首先做首先做概要设计概要设计,将软件需求转化为数据结构和,将软件需求转化为数据结构和软件的系统结构。软件的系统结构。 然后是然后是详细设计详细设计,即,即过程设计过程设计。通过对结构表示。通过对结构表示进行细化,得到软件的详细的数据结构和算法。进行细化,得到软件的详细的数据结构和算法。 从从工程管理工程管理的角度来看,软件设计分两步完成。的角度来看,软件设计分两步完成。第4章 软件
7、概要设计2022-6-1 12结束返回4.1.3 4.1.3 软件设计的过程概述软件设计的过程概述第4章 软件概要设计2022-6-1 13结束返回数据字典数据字典数数据据流流图图实实体体关关系系图图状态转换图状态转换图加加工工规规格格说说明明控控制制规规 格格说说明明数数据据对对象象描描述述过程设计过程设计接口设计接口设计体系结构设计体系结构设计数据设计数据设计第4章 软件概要设计2022-6-1 14结束返回序号职工号奖项金额奖金序号职工号扣项金额扣款n奖励1n扣款1职工1考勤1出勤性别职工号年龄职称基本工资部门出勤时数请假时数旷工时数职工号工资计算系统工资计算系统ER图图 表表4-1 职
8、工基本信息表结构职工基本信息表结构列名(字段名)属性数据类型及长度说明及是否为空id职工号(主键)char(10)Nname姓名varChar(50)Ngender性别nChar(1)Nage年龄IntNwages工资intnduty职称/职务varChar(15)ndid部门代号(外键)Char(10)N第4章 软件概要设计2022-6-1 15结束返回计算出勤奖1.1.2.1计算业绩奖1.1.2.2计算工资档案各基本数据项之和1.1.1计算奖金1.1.2计算应发工资1.1计算水电扣款1.2.1计算缺勤扣款1.2.2计算所得税扣款1.2.3计算扣款1.2计算实发工资1.3计算工资1查询职工账
9、号2.1生成工资存款清单2.2工资转存2打印工资清单3工资计算系统图4.7 工资计算系统的层次结构图图4.7 第4章 软件概要设计2022-6-1 16结束返回 例如例如:系统首页及登录界面如:系统首页及登录界面如 。第4章 软件概要设计2022-6-1 17结束返回 管理员登录后,系统管理界面请见管理员登录后,系统管理界面请见 第4章 软件概要设计2022-6-1 18结束返回4.1.3 4.1.3 软件设计的过程概述软件设计的过程概述 从工程管理的角度来看,软件设计分两步完成:概要设计和详细设计要完成的任务:人事部门后勤部门出勤表业绩表水电扣款表职工银行工资条1计算工资实发工资表3工资转存
10、2打印工资清单工资存款清单工资清单F3计算出勤奖1.1.2.1计算业绩奖1.1.2.2计算工资档案各基本数据项之和1.1.1计算奖金1.1.2计算应发工资1.1计算水电扣款1.2.1计算缺勤扣款1.2.2计算所得税扣款1.2.3计算扣款1.2计算实发工资1.3计算工资1查询职工账号2.1生成工资存款清单2.2工资转存2打印工资清单3工资计算系统详细设计确立每个模块的实现算法局部数据结构用适当方法表示算法和数据结构的细节。概要设计将软件需求转化为软件体系结构确定系统级接口全局数据结构或数据库模式。图3.19 工资计算系统第一层数据流图图4.7 工资计算系统的层次结构图第4章 软件概要设计2022
11、-6-1 19结束返回4.1.4 4.1.4 衡量衡量软件设计的技术标准软件设计的技术标准 (1) 设计出来的结构应是设计出来的结构应是分层结构分层结构,从而建立软件成份之,从而建立软件成份之间的控制。间的控制。(2) 设计应当设计应当模块化模块化,从逻辑上将软件划分为完成特定功,从逻辑上将软件划分为完成特定功能或子功能的构件。能或子功能的构件。衡量设计的技术标准如下:衡量设计的技术标准如下:(3) 设计应当既包含设计应当既包含数据抽象数据抽象,也包含,也包含过程抽象过程抽象。(4) 设计应当建立具有设计应当建立具有独立功能特征的模块独立功能特征的模块。(5) 设计应当建立能够设计应当建立能够
12、降低降低模块与外部环境之间模块与外部环境之间复杂复杂连接连接的的接口接口。(6) 设计应能根据软件需求分析获取的信息,建立设计应能根据软件需求分析获取的信息,建立可驱动可驱动可重复可重复的方法。的方法。计算出勤奖1.1.2.1计算业绩奖1.1.2.2计算工资档案各基本数据项之和1.1.1计算奖金1.1.2计算应发工资1.1计算水电扣款1.2.1计算缺勤扣款1.2.2计算所得税扣款1.2.3计算扣款1.2计算实发工资1.3计算工资1查询职工账号2.1生成工资存款清单2.2工资转存2打印工资清单3工资计算系统图4.7 工资计算系统的层次结构图第4章 软件概要设计2022-6-1 20结束返回4.1
13、.5 4.1.5 软件概要设计的步骤软件概要设计的步骤 在软件概要设计过程中需要完成的工作:在软件概要设计过程中需要完成的工作:(1) 分析需求、制定规范分析需求、制定规范(2) 软件系统结构的总体设计软件系统结构的总体设计(3) 处理方式设计处理方式设计(4) 数据结构和数据库的设计数据结构和数据库的设计(5) 可靠性和安全性的设计可靠性和安全性的设计(6) 编写概要设计阶段的文档编写概要设计阶段的文档(7) 概要设计评审概要设计评审第4章 软件概要设计2022-6-1 21结束返回4.1.5 4.1.5 软件概要设计的任务软件概要设计的任务 思考题思考题:从管理和技术两个不同的角度从管理和
14、技术两个不同的角度分析理解软件设计,两者之间有啥分析理解软件设计,两者之间有啥联系?联系?第4章 软件概要设计2022-6-1 22结束返回 阅读和理解阅读和理解软件需求说明书软件需求说明书,在给定预算范围,在给定预算范围内和技术现状下,确认用户的要求内和技术现状下,确认用户的要求能否实现能否实现。若不能。若不能实现,则需明确实现的条件,从而确定设计的目标,实现,则需明确实现的条件,从而确定设计的目标,以及它们的优先顺序。以及它们的优先顺序。 根据目标确定最合适的根据目标确定最合适的设计方法设计方法。 规定设计文档的规定设计文档的编制标准编制标准,包括文档体系,用,包括文档体系,用纸及样式,记
15、述的详细程度,图形的画法等。纸及样式,记述的详细程度,图形的画法等。 规定编码的规定编码的信息形式信息形式( (代码体系代码体系) ),与硬件,操,与硬件,操作系统的接口规约,命名规则等。作系统的接口规约,命名规则等。(1) 评审需求与制定规范评审需求与制定规范4.1.6 4.1.6 软件概要设计过程软件概要设计过程 第4章 软件概要设计2022-6-1 23结束返回 在需求分析阶段,已经从系统开发的角度,在需求分析阶段,已经从系统开发的角度,把系统按功能逐次分割成层次结构,使每一部把系统按功能逐次分割成层次结构,使每一部分完成简单的功能且各个部分之间又保持一定分完成简单的功能且各个部分之间又
16、保持一定的联系,这就是所谓的的联系,这就是所谓的功能设计功能设计。 在设计阶段,基于这个功能的层次结构把各在设计阶段,基于这个功能的层次结构把各个部分组合起来成为系统。它包括:个部分组合起来成为系统。它包括:(2) 软件系统结构的总体设计软件系统结构的总体设计4.1.6 4.1.6 软件概要设计过程软件概要设计过程 第4章 软件概要设计2022-6-1 24结束返回 采用某种设计方法,将一个复杂的系统按功能采用某种设计方法,将一个复杂的系统按功能划分成模块的划分成模块的层次结构层次结构。 确定每个模块的确定每个模块的功能功能,建立与已确定的软件需,建立与已确定的软件需求的对应关系。求的对应关系
17、。 确定模块间的确定模块间的调用关系调用关系。 确定模块间的确定模块间的接口接口,即模块间传递的信息。设,即模块间传递的信息。设计接口的信息结构。计接口的信息结构。 评估模块划分的质量及导出评估模块划分的质量及导出模块结构模块结构的规则。的规则。4.1.6 4.1.6 软件概要设计过程软件概要设计过程 第4章 软件概要设计2022-6-1 25结束返回4.1.6 4.1.6 软件概要设计过程软件概要设计过程 (3) (3) 处理方式设计处理方式设计 确定为实现软件系统的确定为实现软件系统的功能需求功能需求所必需的所必需的算法算法,评估算法的性能。评估算法的性能。 确定为满足软件系统的确定为满足
18、软件系统的性能需求性能需求所必需的所必需的算法算法和模块间的控制方式(性能设计)。和模块间的控制方式(性能设计)。 确定外部信号的确定外部信号的接收发送形式接收发送形式(接口设计)。(接口设计)。 第4章 软件概要设计2022-6-1 26结束返回4.1.6 4.1.6 软件概要设计过程软件概要设计过程 处理方式设计技术指标:处理方式设计技术指标:周转时间:周转时间:即一旦向计算机发出要求处理的请求之后,从输即一旦向计算机发出要求处理的请求之后,从输入开始,经过处理直到输出结果为止的入开始,经过处理直到输出结果为止的整个时间整个时间。响应时间:响应时间:这是对于实时联机系统的性能需求。当终端用
19、户这是对于实时联机系统的性能需求。当终端用户向计算机发出处理请求之后,从输入开始到输出最终结果向计算机发出处理请求之后,从输入开始到输出最终结果中间的一段时间内,用户需要多次对计算机进行输入输出,中间的一段时间内,用户需要多次对计算机进行输入输出,而一次输入输出的时间就是而一次输入输出的时间就是响应时间响应时间。吞吐量:吞吐量:单位时间内能够处理的数据量叫做单位时间内能够处理的数据量叫做吞吐量吞吐量。这是表。这是表示系统能力的指标。示系统能力的指标。精度:精度:在进行科学计算或工程计算时,运算在进行科学计算或工程计算时,运算精确度精确度的要求。的要求。第4章 软件概要设计2022-6-1 27
20、结束返回4.1.6 4.1.6 软件概要设计过程软件概要设计过程 (4) (4) 数据结构设计数据结构设计确定软件涉及的文件系统的结构以及数据库的确定软件涉及的文件系统的结构以及数据库的模式、子模式,模式、子模式,进行数据完整性和安全性的设计进行数据完整性和安全性的设计。 确定输入,输出文件的详细的确定输入,输出文件的详细的数据结构数据结构。 结合算法设计,确定算法所必需的结合算法设计,确定算法所必需的逻辑数据结逻辑数据结 构及其操作构及其操作。 确定对逻辑数据结构所必需的那些操作的确定对逻辑数据结构所必需的那些操作的程序程序 模块模块(软件包)。(软件包)。第4章 软件概要设计2022-6-
21、1 28结束返回4.1.6 4.1.6 软件概要设计过程软件概要设计过程 确定详细的确定详细的数据结构和使用规则数据结构和使用规则。 数据库设计数据库设计数据库的设计数据库的设计指数据存储文件的设计指数据存储文件的设计。定义数。定义数据结构所含的数据项、类型、长度、它们之间的据结构所含的数据项、类型、长度、它们之间的层次或相互关系的表格等。层次或相互关系的表格等。 数据的保护性设计数据的保护性设计冗余性设计:冗余性设计:一致性设计:一致性设计:防卫性设计:防卫性设计:第4章 软件系统设计2022-6-1 29结束返回4.1.6 4.1.6 软件概要设计过程软件概要设计过程 (5) (5) 可靠
22、性设计可靠性设计 可靠性设计也叫做可靠性设计也叫做质量设计质量设计。在计算机。在计算机使用的过程中,可靠性是很重要的。可靠性使用的过程中,可靠性是很重要的。可靠性不高的软件会使得运行结果不能使用而造成不高的软件会使得运行结果不能使用而造成严重损失。严重损失。 软件可靠性简言之是指程序和文档中的软件可靠性简言之是指程序和文档中的错误少。错误少。 第4章 软件概要设计2022-6-1 30结束返回4.1.6 4.1.6 软件概要设计过程软件概要设计过程 (6) (6) 编写概要设计阶段的文档编写概要设计阶段的文档概要设计阶段完成时应编写以下文档:概要设计阶段完成时应编写以下文档: 概要设计说明书概
23、要设计说明书:给出系统目标、总体设计、数:给出系统目标、总体设计、数据设计、处理方式设计、运行设计、出错设计等。据设计、处理方式设计、运行设计、出错设计等。 数据库设计说明书数据库设计说明书:给出所使用数据库简介、数:给出所使用数据库简介、数据模式设计、物理设计等。据模式设计、物理设计等。 用户手册用户手册:对需求分析阶段编写的初步的用户手:对需求分析阶段编写的初步的用户手册进行审订。册进行审订。 修订测试计划修订测试计划:对测试的策略、方法和步骤提出:对测试的策略、方法和步骤提出明确的要求。明确的要求。第4章 软件概要设计2022-6-1 31结束返回4.1.6 4.1.6 软件概要设计过程
24、软件概要设计过程 (7) (7) 概要设计评审概要设计评审可追溯性:可追溯性:即分析该软件的系统结构、子系统即分析该软件的系统结构、子系统结构,确认该软件设计是否复盖了所有已确定结构,确认该软件设计是否复盖了所有已确定的软件需求,软件每一成份是否的软件需求,软件每一成份是否可追溯可追溯到某一到某一项需求。项需求。接口:接口:即分析软件各部分之间的联系,确认该即分析软件各部分之间的联系,确认该软件的内部接口与外部接口软件的内部接口与外部接口是否已经明确定义是否已经明确定义。模块是否满足模块是否满足高内聚和低耦合高内聚和低耦合的要求。模块作的要求。模块作用范围是否在其控制范围之内。用范围是否在其控
25、制范围之内。第4章 软件概要设计2022-6-1 32结束返回4.1.6 4.1.6 软件概要设计过程软件概要设计过程 风险:风险:即确认该软件设计在现有技术条件下即确认该软件设计在现有技术条件下和预算范围内和预算范围内是否能按时实现是否能按时实现。实用性:实用性:即确认该软件设计对于需求的解决即确认该软件设计对于需求的解决方案方案是否实用是否实用。技术清晰度:技术清晰度:即确认该软件设计是否以一种即确认该软件设计是否以一种易于易于翻译成代码翻译成代码的形式表达。的形式表达。可维护性:可维护性:从软件维护的角度出发,确认该从软件维护的角度出发,确认该软件设计是否考虑了软件设计是否考虑了方便未来
26、的维护方便未来的维护。第4章 软件概要设计2022-6-1 33结束返回4.1.6 4.1.6 软件概要设计过程软件概要设计过程 质量:质量:即确认该软件设计是否表现出良好的即确认该软件设计是否表现出良好的质量特征质量特征。各种选择方案:各种选择方案:看是否考虑过其它方案,比看是否考虑过其它方案,比较各种选择方案的标准是什么。较各种选择方案的标准是什么。限制:限制:评估对该软件的限制评估对该软件的限制是否现实是否现实,是否,是否与需求一致。与需求一致。其它具体问题:其它具体问题:对于文档、可测试性、设计对于文档、可测试性、设计过程过程.等等进行评估。等等进行评估。第4章 软件概要设计2022-
27、6-1 34结束返回4.1.7 4.1.7 软件详细设计软件详细设计 在详细设计过程中,需要完成的工作是:在详细设计过程中,需要完成的工作是:(1)(1) 确定软件各个组成部分内的算法以及各部分确定软件各个组成部分内的算法以及各部分的的内部数据组织内部数据组织。(2)(2) 选定某种过程的表达形式来选定某种过程的表达形式来描述各种算法描述各种算法。(3)(3) 针对数据库的逻辑设计进行物理设计,设计针对数据库的逻辑设计进行物理设计,设计数据库模式的一些物理细节,数据库模式的一些物理细节,如数据项存储要求、如数据项存储要求、存取方式、建立索引等。存取方式、建立索引等。(4)(4) 进行详细设计的
28、进行详细设计的评审评审第4章 软件概要设计2022-6-1 35结束返回4.1.7 4.1.7 软件详细设计软件详细设计 在将需求转换为设计时判断设计好坏的三在将需求转换为设计时判断设计好坏的三个特征:个特征:设计设计必须必须实现分析模型中描述的所有显式需实现分析模型中描述的所有显式需求,必须满足用户希望的所有求,必须满足用户希望的所有隐式需求隐式需求。设计设计必须必须是可读的、可理解的,使得将来易是可读的、可理解的,使得将来易于编程、易于测试、易于维护。于编程、易于测试、易于维护。设计设计应从应从实现角度出发,给出与数据、功能、实现角度出发,给出与数据、功能、行为相关的软件全貌。行为相关的软
29、件全貌。第4章 软件概要设计2022-6-1 36结束返回4.2 4.2 软件设计的基本概念软件设计的基本概念 在讲述本章内容时,会涉及到软件设在讲述本章内容时,会涉及到软件设计中的一些基本概念和基本原理,下面对计中的一些基本概念和基本原理,下面对这些基本概念和基本原理一一介绍。这些基本概念和基本原理一一介绍。第4章 软件概要设计2022-6-1 37结束返回4.2.1 4.2.1 抽象化抽象化 (1)(1)过程抽象过程抽象 在软件工程过程中,从系统定义到实现,在软件工程过程中,从系统定义到实现,每进展一步都可以看做是对每进展一步都可以看做是对软件解决方案软件解决方案的的抽象化过程的一次细化。
30、抽象化过程的一次细化。 而在从而在从概要设计到详细设计概要设计到详细设计的过程中,的过程中,抽象化的层次逐次降低。当产生源程序时到抽象化的层次逐次降低。当产生源程序时到达最低的抽象层次。达最低的抽象层次。 第4章 软件概要设计2022-6-1 38结束返回4.2.1 4.2.1 抽象化抽象化 (2)(2)数据抽象数据抽象数据抽象数据抽象与过程抽象一样与过程抽象一样,允许设计人,允许设计人员在不同层次上描述数据对象的细节。员在不同层次上描述数据对象的细节。(3)(3)控制抽象控制抽象与过程抽象和数据抽象一样与过程抽象和数据抽象一样,控制抽象,控制抽象可以包含一个程序控制机制而无须规定其内可以包含
31、一个程序控制机制而无须规定其内部细节。控制抽象的例子就是在操作系统中部细节。控制抽象的例子就是在操作系统中用以协调某些活动的同步信号。用以协调某些活动的同步信号。 第4章 软件概要设计2022-6-1 39结束返回4.2.2 4.2.2 自顶向下,逐步细化自顶向下,逐步细化 将软件的体系结构按自顶向下方式,将软件的体系结构按自顶向下方式,对各个层次的对各个层次的过程细节和数据细节过程细节和数据细节逐层细逐层细化,直到用程序设计语言的语句能够实现化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的为止,从而最后确立整个的体系结构体系结构。 第4章 软件概要设计2022-6-1 40结束返
32、回4.2.3 4.2.3 模块化模块化 软件系统的层次结构正是软件系统的层次结构正是模块化模块化的具体体的具体体现。就是说,整个软件被划分成若干单独命名现。就是说,整个软件被划分成若干单独命名和可编址的部分,称之为和可编址的部分,称之为模块模块。 这些模块可以被这些模块可以被组装起来组装起来以满足整个问题以满足整个问题的需求。的需求。 把一个大而复杂的把一个大而复杂的软件系统软件系统划分划分成易于理成易于理解的比较单纯的解的比较单纯的模块结构模块结构。第4章 软件概要设计2022-6-1 41结束返回4.2.3 4.2.3 模块化模块化 问题复杂性、开发工作量和模块数之间的关系: 我们设C(x
33、)为问题x所对应的复杂度函数,E(x)为解决问题x所需要的工作量函数。对于两个问题P1和P2,如果: C(P1) C(P2) 即问题P1的复杂度比P2高,则显然有: E(P1) E(P2) 即解决问题P1比P2所需的工作量大。第4章 软件概要设计2022-6-1 42结束返回4.2.3 4.2.3 模块化模块化 另一个有趣的规律,如果:C(P1+P2) C(P1)+C(P2)即解决由多个问题复合而成的大问题的复杂度大于单独解决各个问题的复杂度之和,则: E(P1+P2) E(P1)+E(P2)即将复杂问题分解成若干个小问题,各个击破,所需要的工作量小于直接解决复杂问题所需的工作量。第4章 软件
34、概要设计2022-6-1 43结束返回4.2.3 4.2.3 模块化模块化 第4章 软件概要设计2022-6-1 44结束返回4.2.3 4.2.3 模块化模块化 第4章 软件系统设计2022-6-1 45结束返回第4章 软件概要设计2022-6-1 46结束返回4.2.4 4.2.4 模块独立性模块独立性模块的基本属性:功能:即指该模块实现什么功能;逻辑:即描述模块内部怎么做;状态:即该模块使用时的环境和条件。在描述一个模块时,还必须按模块的外部特性与内部特性分别描述。外部特性:模块的模块名、参数表、以及给程序以至整个系统造成的影响。内部特性:完成其功能的程序代码和仅供该模块内部使用的数据。
35、第4章 软件概要设计2022-6-1 47结束返回4.2.4 4.2.4 模块独立性模块独立性软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的接口是简单的。见图4.11。用两个准则度量模块独立性。即模块间的耦合和模块的内聚。内聚性:内聚是一个模块内部各个元素彼此结合的紧密程度的度量。耦合性: 耦合是模块间互相连接的紧密程度的度量。它取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。第4章 软件系统设计2022-6-1 48结束返回 模块的独立性是指软件系统中每个模块只模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统涉及软件要求的
36、具体的子功能,而和软件系统中其他模块的接口是简单的。中其他模块的接口是简单的。4.2.4 4.2.4 模块独立性模块独立性图4.11 模块独立性第4章 软件系统设计2022-6-1 49结束返回(1)(1)模块模块内聚内聚低功能内聚信息信息内聚内聚通信通信内聚内聚过程过程内聚内聚时间时间内聚内聚逻辑逻辑内聚内聚巧合巧合性内性内聚聚 高强弱 内聚性内聚性模块独立性模块独立性图图4.12 内聚性内聚性模块模块内聚分为内聚分为7 7级级: :第4章 软件系统设计2022-6-1 50结束返回M STORE RECN() TO N READ MASTER FILE ADD 1 TO X 。 。 ABC
37、 当模块内各部之间没有联系,或者即使有联当模块内各部之间没有联系,或者即使有联系,这种联系也很松散。则称这种模块为偶然内系,这种联系也很松散。则称这种模块为偶然内聚模块。聚模块。 偶然性内聚偶然性内聚图4.13 偶然内聚偶然内聚第4章 软件系统设计2022-6-1 51结束返回 这种模块是把几种功能组合在一起,每次调用这种模块是把几种功能组合在一起,每次调用时,则由传递给模块的判定参数来确定该模块应执时,则由传递给模块的判定参数来确定该模块应执行哪一种功能。行哪一种功能。 调用模块判定读一个记录写一个记录被调用模块逻辑性内聚逻辑性内聚图4.14 逻辑性内聚逻辑性内聚第4章 软件系统设计2022
38、-6-1 52结束返回 这种模块能完成多个功能,各个功能都在同这种模块能完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入一数据结构上操作,每一项功能有一个唯一的入口点。口点。 数据表数据表 查找查找登录登录删除删除修改修改信息性内聚信息性内聚图4.15 逻辑性内聚逻辑性内聚第4章 软件系统设计2022-6-1 53结束返回 如果一个模块内所有成分都完成一个功能如果一个模块内所有成分都完成一个功能则称这样的模块为功能模块。则称这样的模块为功能模块。 主控模块主控模块录入录入查询查询打印打印低低功能功能内聚内聚信息信息内聚内聚通信通信内聚内聚过程过程内聚内聚时间时间内聚内聚逻
39、辑逻辑内聚内聚巧合性巧合性内聚内聚 高高强强弱弱 内聚性内聚性模块独立性模块独立性功能性内聚功能性内聚图4.16 功能性内聚功能性内聚第4章 软件系统设计2022-6-1 54结束返回 耦合性是程序结构中各个模块之间相互关联的度量耦合性是程序结构中各个模块之间相互关联的度量它取决于各个模块之间接口的复杂程度、调用模块的方它取决于各个模块之间接口的复杂程度、调用模块的方式以及那些信息通过接口。式以及那些信息通过接口。低低非直接非直接耦合耦合数据数据耦合耦合标记标记耦合耦合控制控制耦合耦合外部外部耦合耦合公共公共耦合耦合内容内容耦合耦合 高高弱弱 强强耦合性耦合性模块独立性模块独立性(2)(2)模
40、块间的耦合模块间的耦合图4.17 耦合性耦合性第4章 软件系统设计2022-6-1 55结束返回(2)(2)模块间的耦合模块间的耦合非直接耦合 两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。 非直接耦合的 模块独立性最强。主模块主模块ABCEFGXYZ图4.18非直接耦合第4章 软件系统设计2022-6-1 56结束返回(2)(2)模块间的耦合模块间的耦合数据耦合: 一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变量) 来交换输入、输出信息的。标记耦合: 一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结
41、构的子结构,而不是简单变量。第4章 软件系统设计2022-6-1 57结束返回(2)(2)模块间的耦合模块间的耦合控制耦合控制耦合 如果一个模如果一个模块通过传送块通过传送开开关、标志、名关、标志、名字等控制参数字等控制参数,明显地控制选明显地控制选择另一模块的择另一模块的功能,就是控功能,就是控制耦合。制耦合。FlagFlagf1f2fn图4.19 控制耦合控制耦合第4章 软件系统设计2022-6-1 58结束返回(2)(2)模块间的耦合模块间的耦合外部耦合外部耦合: :一组模块都访问一组模块都访问同一全局简单变量同一全局简单变量而不是同一全局数据结构,而且不是通过参而不是同一全局数据结构,
42、而且不是通过参数表传递该全局变量的信息,则称之为数表传递该全局变量的信息,则称之为外部外部耦合。耦合。公共耦合公共耦合: :若一组模块都访问若一组模块都访问同一个公共数据同一个公共数据环境环境,则它们之间的耦合就称为,则它们之间的耦合就称为公共耦合公共耦合。公共的数据环境可以是全局数据结构、共享公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。的通信区、内存的公共覆盖区等。第4章 软件系统设计2022-6-1 59结束返回(2)(2)模块间的耦合模块间的耦合 公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况。松散公共耦合和紧
43、密公共耦合。common公共数据区公共数据区ABcommon公共数据区公共数据区AB松散的公共耦合松散的公共耦合紧密的公共耦合紧密的公共耦合图4.20第4章 软件系统设计2022-6-1 60结束返回(2)(2)模块间的耦合模块间的耦合内容耦合第4章 软件系统设计2022-6-1 61结束返回4.2.5 4.2.5 控制层次控制层次 控制层次也叫做控制层次也叫做程序结构程序结构,它表明了程序构,它表明了程序构件(模块)的组织情况。控制层次往往用程序的件(模块)的组织情况。控制层次往往用程序的层次(层次(树形或网状树形或网状)结构来表示结构来表示。 位于最上层根部是顶层模块,它是程序的位于最上层
44、根部是顶层模块,它是程序的主主模块模块。与其联系的有若干。与其联系的有若干下属模块下属模块,各下属模块,各下属模块还可以进一步引出更下一层的还可以进一步引出更下一层的下属模块下属模块。如下图。如下图所示。所示。第4章 软件系统设计2022-6-1 62结束返回图图4.21 4.21 程序的层次结构图示例程序的层次结构图示例4.2.5 4.2.5 控制层次控制层次 (1)程序结构的深度程序结构的深度 程序结构的程序结构的层次数层次数称为结构的称为结构的深度深度。结构的深度。结构的深度在一定意义上反映了程序结构的规模和复杂程度。在一定意义上反映了程序结构的规模和复杂程度。(2)(2)程序结构的宽度
45、程序结构的宽度 层次结构中层次结构中同一层模块的最大模块个数同一层模块的最大模块个数称称为结构的为结构的宽度宽度。(3)模块的扇入和扇出模块的扇入和扇出扇出扇出表示表示一个模块直接调用一个模块直接调用(或控制)的其它(或控制)的其它模模块数目。块数目。 扇入扇入则定义为则定义为调用调用(或控制)一个给定模块的模(或控制)一个给定模块的模块个数。块个数。 多扇出多扇出意味着需要控制和协调许多下属模块。意味着需要控制和协调许多下属模块。而而多扇入多扇入的模块通常是公用模块。的模块通常是公用模块。第4章 软件系统设计2022-6-1 63结束返回4.2.5 4.2.5 控制层次控制层次 (4)(4)
46、结构划分结构划分 程序结构可以按程序结构可以按水平方向水平方向或或垂直方垂直方向向进行划分。进行划分。 水平划分水平划分按主要的程序功能来定义模块按主要的程序功能来定义模块结构的结构的各个分支各个分支。顶层模块是控制模块,用。顶层模块是控制模块,用来协调程序各个功能之间的通信和运行。其来协调程序各个功能之间的通信和运行。其下级模块的最简单的水平划分方法是建立三下级模块的最简单的水平划分方法是建立三个分支:个分支:输入、处理(数据变换)和输出。输入、处理(数据变换)和输出。 垂直划分垂直划分也叫做也叫做因子划分因子划分。主要用在程序的。主要用在程序的体系结构中,且工作自顶向下逐层分布:顶层模体系
47、结构中,且工作自顶向下逐层分布:顶层模块执行控制功能,少做实际处理工作,而低层模块执行控制功能,少做实际处理工作,而低层模块是实际块是实际输入、计算和输出的具体执行者输入、计算和输出的具体执行者。第4章 软件系统设计2022-6-1 64结束返回4.2.6 4.2.6 数据结构数据结构 数据结构数据结构是数据的各个元素之间的逻辑关是数据的各个元素之间的逻辑关系的一种表示。系的一种表示。 数据结构设计数据结构设计应确定数据的组织、存取方应确定数据的组织、存取方式、相关程度、以及信息的不同处理方法。式、相关程度、以及信息的不同处理方法。 数据结构的组织方法和复杂程度数据结构的组织方法和复杂程度可以
48、灵活可以灵活多样,但典型的数据结构种类是有限的,它们多样,但典型的数据结构种类是有限的,它们是构成一些更复杂结构的是构成一些更复杂结构的基本构件块基本构件块。第4章 软件系统设计2022-6-1 65结束返回4.2.6 4.2.6 数据结构数据结构 图图4.22 典型的数据结构典型的数据结构第4章 软件系统设计2022-6-1 66结束返回4.2.7 4.2.7 软件过程软件过程 软件过程着重描述各个模块的处理细节。软件过程着重描述各个模块的处理细节。 软件过程必须提供精确的处理说明,包括软件过程必须提供精确的处理说明,包括事件的顺序、正确的判定点、重复的操作直至事件的顺序、正确的判定点、重复
49、的操作直至数据的组织和结构等等。数据的组织和结构等等。 程序结构与软件过程是有关系的程序结构与软件过程是有关系的。对每个。对每个模块的处理必须指明该模块所在的上下级环境。模块的处理必须指明该模块所在的上下级环境。软件过程遵从程序结构的主从关系,因此它也软件过程遵从程序结构的主从关系,因此它也是层次化的。是层次化的。 下图是一个模块内的软件过程。下图是一个模块内的软件过程。 第4章 软件系统设计2022-6-1 67结束返回4.2.7 4.2.7 软件过程软件过程 图图4.23 一个模块内的软件过程一个模块内的软件过程 第4章 软件系统设计2022-6-1 68结束返回4.2.8 4.2.8 信
50、息隐蔽信息隐蔽 信息隐蔽信息隐蔽是指,每个模块的实现细节对是指,每个模块的实现细节对于其它模块来说是隐蔽的。就是说,模块中于其它模块来说是隐蔽的。就是说,模块中所包含的信息(包括数据和过程)不允许其所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。它不需要这些信息的模块使用。 通过信息隐蔽通过信息隐蔽,则可定义和实施对模块,则可定义和实施对模块的过程细节和局部数据结构的存取限制。的过程细节和局部数据结构的存取限制。 第4章 软件系统设计2022-6-1 69结束返回4.3 4.3 体系结构设计体系结构设计 4.3.1 体系结构设计体系结构设计 HIPO(Hierarchy Pl