软件设计幻灯片.ppt
软件设计软件设计第1页,共120页,编辑于2022年,星期三1 1 n n 设计的目的,任务设计的目的,任务,原则原则n n 体系结构的设计体系结构的设计n n 结构化设计的基础结构化设计的基础模块化模块化n n 面向数据流的设计方法,设计过程面向数据流的设计方法,设计过程n n 数据库的设计数据库的设计n n 人机交互设计人机交互设计 目的目的:解决解决“怎么做怎么做”的问题的问题 内 容第2页,共120页,编辑于2022年,星期三2 26.1 6.1 软件设计概述软件设计概述6.1.1 6.1.1 软件设计的软件设计的含义含义6.1.2 6.1.2 软件设计的软件设计的类型类型6.1.3 6.1.3 软件设计的软件设计的任务任务6.1.4 6.1.4 软件设计的软件设计的原则原则第3页,共120页,编辑于2022年,星期三3 36.1.1 6.1.1 软件设计的含义软件设计的含义 软件设计是把软件设计是把软件需求规格软件需求规格说明说明 转为软件转为软件过程过程性的表示。性的表示。解决解决“怎么做怎么做”的问题。的问题。解决问题解决问题,就需要做出就需要做出“设计决策设计决策”分离客户机分离客户机分离客户机分离客户机的用户界面的用户界面的用户界面的用户界面客户机客户机客户机客户机-服务器服务器服务器服务器胖客户胖客户胖客户胖客户瘦客户瘦客户瘦客户瘦客户用户界面用户界面用户界面用户界面不独立不独立不独立不独立用用用用JavaJavaJavaJava编程编程编程编程用用用用VBVBVBVB编程编程编程编程用用用用C+C+C+C+编程编程编程编程单户单户单户单户需求知识需求知识设计知识设计知识可用技术可用技术设计原则设计原则最佳实践最佳实践成功案例成功案例优先级分析优先级分析成本效益成本效益分析分析第4页,共120页,编辑于2022年,星期三4 4 将需求分析模型转换为软件设计模型将需求分析模型转换为软件设计模型图图 6-1 分析分析分析分析模型模型转换为设计模型转换为设计模型转换为设计模型转换为设计模型 数据数据词典词典 数数 据据 流流 图图 实实 体体关关 系系 图图 状态转换图状态转换图 加加 工工 控控 制制 规规 规规 格格 格格 说说 说说 明明明明 数数 据据对对 象象 描描 述述过程设计过程设计 接口设计接口设计 结构设计结构设计 数据设计数据设计 第5页,共120页,编辑于2022年,星期三5 56.1.2 6.1.2 软件设计的类型软件设计的类型从工程管理的角度从工程管理的角度软件设计包括:软件设计包括:概要设计概要设计详细设计详细设计图图 6-2 软件设计类型软件设计类型概概 要要 设设 计计详详 细细 设设 计计第6页,共120页,编辑于2022年,星期三6 66.1.3 6.1.3 软件设计的任务软件设计的任务(1)(1)制定规范制定规范 确定设计的目标,及优先顺序。确定设计的目标,及优先顺序。确定合适的设计方法确定合适的设计方法 规定设计文档的编制标准规定设计文档的编制标准 规定编码的信息形式规定编码的信息形式 接口规约,命名规则接口规约,命名规则第7页,共120页,编辑于2022年,星期三7 7 设计的任务设计的任务 (2)(2)软件系统的结构设计软件系统的结构设计 将系统按功能划分成模块的层次结构。将系统按功能划分成模块的层次结构。确定模块的功能,及与软件需求的对应关系。确定模块的功能,及与软件需求的对应关系。确定模块间的接口关系,调用关系。确定模块间的接口关系,调用关系。评估模块划分的质量。评估模块划分的质量。第8页,共120页,编辑于2022年,星期三8 8设计的任务(3)(3)处理方式设计处理方式设计确定为实现系统的功能需求所必需的算法确定为实现系统的功能需求所必需的算法评估算法的性能评估算法的性能确定为满足系统的性能需求所必需的算法确定为满足系统的性能需求所必需的算法模块间的控制方式模块间的控制方式n n周转时间周转时间周转时间周转时间n n响应时间响应时间响应时间响应时间n n吞吐量吞吐量吞吐量吞吐量n n精度精度精度精度确定外部信号的接收发送形式确定外部信号的接收发送形式第9页,共120页,编辑于2022年,星期三9 9设计的任务设计的任务设计的任务设计的任务(4)(4)数据结构设计数据结构设计确定文件系统的结构以及数据库的模式、子模式确定文件系统的结构以及数据库的模式、子模式确定输入,输出文件的数据结构确定输入,输出文件的数据结构确定算法所必需的逻辑数据结构及其操作确定算法所必需的逻辑数据结构及其操作确定对逻辑数据结构所必需的程序模块确定对逻辑数据结构所必需的程序模块限制和确定各个数据设计决策的影响范围限制和确定各个数据设计决策的影响范围确定其详细的数据结构和使用规则确定其详细的数据结构和使用规则数据的完整性、安全性、一致性、冗余性设计数据的完整性、安全性、一致性、冗余性设计(5)(5)人机交互的设计人机交互的设计第10页,共120页,编辑于2022年,星期三1010设计的任务(6)(6)可靠性设计可靠性设计n n质量设计质量设计n n软件可靠性是在软件可靠性是在 给定的时间内,给定的时间内,程序按照规定的程序按照规定的 条件成功运行的条件成功运行的 概率。概率。容错技术、容错技术、冗余技术冗余技术(7)(7)编写概要设计编写概要设计 阶段的文档阶段的文档l l设计说明设计说明设计说明设计说明l l数据库设计说明数据库设计说明数据库设计说明数据库设计说明l l 接口说明接口说明接口说明接口说明l l用户手册用户手册用户手册用户手册l l制定初步的测试计划制定初步的测试计划第11页,共120页,编辑于2022年,星期三1111设计的任务(8)(8)制定测试计划制定测试计划(9)(9)概要设计评审概要设计评审:技术清晰度技术清晰度 质量保证质量保证 各种选择方案各种选择方案 限制限制 文档文档 可追溯性可追溯性 接口接口 风险风险 实用性实用性 可维护性可维护性 可测试性可测试性第12页,共120页,编辑于2022年,星期三1212设计的任务设计的任务(10)(10)详细设计详细设计uu 确定软件各模块的算法确定软件各模块的算法,以及内以及内 部数据组织部数据组织 uu 描述算法描述算法uu 进行详细设计的评审进行详细设计的评审第13页,共120页,编辑于2022年,星期三1313软件设计的任务小结:n n 制定规范制定规范n n 软件系统的总体结构设计软件系统的总体结构设计n n 处理方式设计处理方式设计n n 数据结构设计数据结构设计n n 人机交互的设计人机交互的设计n n 可靠性设计可靠性设计n n 编写概要设计阶段的文档编写概要设计阶段的文档n n 制定测试计划制定测试计划n n 评审概要设计评审概要设计n n 详细设计详细设计 第14页,共120页,编辑于2022年,星期三14146.1.4 6.1.4 软件设计的原则软件设计的原则 (Davis 1995):(1)(1)(1)(1)使用基本的设计概念:抽象、逐步求精、使用基本的设计概念:抽象、逐步求精、自顶向下、模块化、信息隐蔽、封装等自顶向下、模块化、信息隐蔽、封装等自顶向下、模块化、信息隐蔽、封装等自顶向下、模块化、信息隐蔽、封装等.(2)(2)设计应追朔到分析模型设计应追朔到分析模型设计应追朔到分析模型设计应追朔到分析模型(3)(3)注重复用技术注重复用技术注重复用技术注重复用技术(4)(4)软件设计应尽量模拟问题域的结构软件设计应尽量模拟问题域的结构软件设计应尽量模拟问题域的结构软件设计应尽量模拟问题域的结构(5)(5)(5)(5)设计应具有一致性、集成性设计应具有一致性、集成性设计应具有一致性、集成性设计应具有一致性、集成性(6)(6)(6)(6)设计应便于修改,适用于异常条件设计应便于修改,适用于异常条件(7)(7)设计不是编码设计不是编码(8)(8)(8)(8)注重评审注重评审第15页,共120页,编辑于2022年,星期三1515模块模块:软件被划分成若干个独立命名,软件被划分成若干个独立命名,可编址的部分。可编址的部分。模块化模块化:程序分成若干个模块,且程序分成若干个模块,且:n n 每一个模块完成一个相对独立的子功能每一个模块完成一个相对独立的子功能 n n 每个模块定义了输入和输出的功能。每个模块定义了输入和输出的功能。n n 若干个模块集成,构成一个整体,完成若干个模块集成,构成一个整体,完成 一个大功能。一个大功能。6.2 6.2 软件设计的基础软件设计的基础模块化模块化第16页,共120页,编辑于2022年,星期三1616模 块 化把系统分解为子系统的好处把系统分解为子系统的好处l l模块化设计降低了复杂性模块化设计降低了复杂性模块化设计降低了复杂性模块化设计降低了复杂性.l l有利于软件的可维护性有利于软件的可维护性有利于软件的可维护性有利于软件的可维护性.l l系统可并发开发,简化系统实现。系统可并发开发,简化系统实现。l l 模块特性模块特性:(1)(1)(1)(1)模块的模块的分解分解分解分解 (2)(2)模块的模块的模块的模块的抽象抽象 (3)(3)(3)(3)模块的模块的模块的模块的信息隐蔽信息隐蔽信息隐蔽信息隐蔽 (4)(4)结构化的模块结构化的模块 (5)(5)(5)(5)模块的模块的模块的模块的独立性独立性 内聚、内聚、内聚、内聚、耦合。耦合。耦合。耦合。PAQBPABQB 非结构化非结构化的模块的模块结构化结构化的模块的模块开始开始开始开始ynynynyn图图 6-3第17页,共120页,编辑于2022年,星期三17176.2.1 6.2.1 模块的内聚模块的内聚(Cohesion)JJ描述一个功能模块的组成成分之间的紧密描述一个功能模块的组成成分之间的紧密程度。程度。JJ模块的内聚性类型:模块的内聚性类型:低低低低 偶然内聚偶然内聚偶然内聚偶然内聚 弱弱弱弱(功能分散功能分散功能分散功能分散)逻辑内聚逻辑内聚 时间内聚时间内聚时间内聚时间内聚 过程内聚过程内聚过程内聚过程内聚 通信内聚通信内聚通信内聚通信内聚 顺序内聚顺序内聚顺序内聚顺序内聚 高高高高 功能内聚功能内聚功能内聚功能内聚 强强强强(功能单一功能单一)模模块块独独立立性性模模块块内内聚聚性性第18页,共120页,编辑于2022年,星期三1818(1 1)偶然)偶然(巧合巧合)内聚内聚(Coincidental)模块内各部分间无联系。例:模块内各部分间无联系。例:ABCM MOVE O TO R READ FILE F MOVE S TO T 缺点:缺点:可理解性差可理解性差,可修改性差可修改性差 图图 6-4 巧合内聚模块巧合内聚模块第19页,共120页,编辑于2022年,星期三1919(2 2)逻辑内聚)逻辑内聚 (Logical)(Logical)逻辑功能相似,且属于同一类型,但其逻辑功能相似,且属于同一类型,但其执行行为由外部模块决定。例:执行行为由外部模块决定。例:缺点:缺点:增强了耦合程度增强了耦合程度(控制耦合控制耦合)不易修改,效率低不易修改,效率低图图6-5 逻辑内聚模块逻辑内聚模块ABCDEFGAEFGDCB第20页,共120页,编辑于2022年,星期三2020(3 3)时间内聚)时间内聚 (Temporal cohesion)(Temporal cohesion)模块的各个成分必须在同一时间段执模块的各个成分必须在同一时间段执 行行,但各个成分之间无必然的联系。但各个成分之间无必然的联系。例如例如:初始化系统模块、初始化系统模块、系统结束模块、系统结束模块、紧急故障处理模块等紧急故障处理模块等 均是时间性聚合模块均是时间性聚合模块.第21页,共120页,编辑于2022年,星期三2121(4 4)过程内聚)过程内聚 (Procedure)(Procedure)模块的各个成分处理动作不同,但受同一控制模块的各个成分处理动作不同,但受同一控制 流支配流支配流支配流支配(把几个依次调用过程放在一起把几个依次调用过程放在一起把几个依次调用过程放在一起把几个依次调用过程放在一起,但一个过但一个过 程的输出并不一定是下一个过程的输入程的输出并不一定是下一个过程的输入).).读入读入成绩单成绩单审查审查成绩单成绩单读入并审查读入并审查成绩单成绩单统计统计 成绩成绩 打印打印成绩成绩统计并打印统计并打印成绩单成绩单图图 6-6 过程内聚模块过程内聚模块例:例:第22页,共120页,编辑于2022年,星期三2222(5 5)通信内聚)通信内聚 模块内各部分使用相同的输入数据模块内各部分使用相同的输入数据,或产生相同的或产生相同的或产生相同的或产生相同的 输出结果输出结果输出结果输出结果(把访问或操作某一数据的模块放在一起把访问或操作某一数据的模块放在一起把访问或操作某一数据的模块放在一起把访问或操作某一数据的模块放在一起)。例:例:读文件读文件 合并合并修改修改文件文件计算计算B计算计算A打印检打印检验结果验结果读卡读卡 片文件片文件新新文文件件加工记录加工记录 使用使用A/B数数 据据A结结 果果B 结结 果果 A/B 数数 据据 A/B卡卡 片片 文件文件图图 6-7 通信内聚模块通信内聚模块(Communicational)第23页,共120页,编辑于2022年,星期三2323n n 又如一个又如一个更新更新数据库的模块和一个数据库的模块和一个保存保存数数 据库修改信息的历史日志模块据库修改信息的历史日志模块,使用使用相同数相同数 据据,两个模块应放在一个高层模块或子系统两个模块应放在一个高层模块或子系统 中中,是通信内聚是通信内聚.n n通信内聚优点通信内聚优点:修改数据时修改数据时,会在同一个地方找到它的所有会在同一个地方找到它的所有代码代码.n n注意注意:不能为达到通信内聚而牺牲层内聚不能为达到通信内聚而牺牲层内聚.第24页,共120页,编辑于2022年,星期三2424(6)顺序内聚顺序内聚 (Sequential Cohesion)(Sequential Cohesion)模块完成多个功能,各功能都在同一数据结构上模块完成多个功能,各功能都在同一数据结构上模块完成多个功能,各功能都在同一数据结构上模块完成多个功能,各功能都在同一数据结构上 操作操作操作操作.即存在一系列过程即存在一系列过程即存在一系列过程即存在一系列过程,一个过程向下一过程了提一个过程向下一过程了提一个过程向下一过程了提一个过程向下一过程了提 供输入供输入供输入供输入.例如:文本识别子系统例如:文本识别子系统图图 6-8 顺序内聚模块顺序内聚模块接收位图输入接收位图输入分解包含单一分解包含单一字符小块字符小块识别形状识别形状,确确定每个小块对定每个小块对应一个字符的应一个字符的概率概率确定输入确定输入流中单词流中单词的顺序的顺序第25页,共120页,编辑于2022年,星期三2525(7 7)功能内聚)功能内聚 (Functional Cohesion)(Functional Cohesion)一个模块中各个部分都是为完成一项具体功能而一个模块中各个部分都是为完成一项具体功能而协同工作协同工作.(.(模块只执行单一的计算模块只执行单一的计算,返回结果返回结果,且无且无副作用副作用(执行前后系统状态相同执行前后系统状态相同)时达到时达到功能内聚功能内聚)图图 6-9 功能内聚功能内聚模块模块 矩阵矩阵结果结果功能内聚功能内聚顺顺 序序 内内 聚聚构造构造矩阵矩阵输出输出求解求解 未知数未知数第26页,共120页,编辑于2022年,星期三2626 计算数学函数的模块如正弦或余弦计算数学函数的模块如正弦或余弦 根据一系列方程求解未知数的模块根据一系列方程求解未知数的模块.在一工厂中在一工厂中,从不同的监控设备获取数据从不同的监控设备获取数据,并计算并计算 某一过程的产量某一过程的产量某一过程的产量某一过程的产量(占理论最大值的百分比占理论最大值的百分比占理论最大值的百分比占理论最大值的百分比)的模块的模块.n n 功能内聚模块的功能内聚模块的功能内聚模块的功能内聚模块的输入输入输入输入一般包括函数的参数一般包括函数的参数一般包括函数的参数一般包括函数的参数,也可包也可包也可包也可包 括文仵或其他数据流括文仵或其他数据流括文仵或其他数据流括文仵或其他数据流.输出输出输出输出是简单的返回值是简单的返回值是简单的返回值是简单的返回值.也可是也可是也可是也可是 复杂的数据结构但只要提供相同的输入复杂的数据结构但只要提供相同的输入复杂的数据结构但只要提供相同的输入复杂的数据结构但只要提供相同的输入,该模块会产生相该模块会产生相该模块会产生相该模块会产生相同的输出同的输出同的输出同的输出.如下是功能内聚模块如下是功能内聚模块:第27页,共120页,编辑于2022年,星期三2727n n更新数据库或创建新文件的模块更新数据库或创建新文件的模块.因为对数据库或文件系统有副作用因为对数据库或文件系统有副作用.n n和用户交互的模块和用户交互的模块.向用户显示提示信息是一种输出向用户显示提示信息是一种输出,但违反但违反 了功能内聚模块的惟一输出是执行结束时的了功能内聚模块的惟一输出是执行结束时的 返回结果这一原则返回结果这一原则.如下不是功能内聚模块如下不是功能内聚模块:第28页,共120页,编辑于2022年,星期三2828算多个地点的算多个地点的算多个地点的算多个地点的每日平均温度每日平均温度每日平均温度每日平均温度初始化求和初始化求和初始化求和初始化求和并打开文件并打开文件并打开文件并打开文件创建新的创建新的创建新的创建新的温度记录温度记录温度记录温度记录存储温存储温存储温存储温度记录度记录度记录度记录关闭文件并关闭文件并关闭文件并关闭文件并打印平均温度打印平均温度打印平均温度打印平均温度功能性内聚功能性内聚功能性内聚功能性内聚 偶然内聚偶然内聚偶然内聚偶然内聚 偶然内聚偶然内聚偶然内聚偶然内聚功能性内聚功能性内聚功能性内聚功能性内聚读取地点、读取地点、读取地点、读取地点、时间和温度时间和温度时间和温度时间和温度存储特定存储特定存储特定存储特定地点温度地点温度地点温度地点温度编辑地点、时间编辑地点、时间编辑地点、时间编辑地点、时间或温度字段或温度字段或温度字段或温度字段功能性内聚功能性内聚功能性内聚功能性内聚功能性内聚功能性内聚功能性内聚功能性内聚功能性内聚功能性内聚功能性内聚功能性内聚逻辑内聚逻辑内聚逻辑内聚逻辑内聚图图 6-10 每个内聚的模块互联每个内聚的模块互联每个内聚的模块互联每个内聚的模块互联例例第29页,共120页,编辑于2022年,星期三2929 功能内聚好的原因功能内聚好的原因:n n模块的功能只是生成特定的输出模块的功能只是生成特定的输出,而没有副而没有副 作用时作用时,就就易理解易理解该模块该模块.n n因功能内聚的模块没有副作用因功能内聚的模块没有副作用,所以模块的所以模块的 可重用性高可重用性高.n n内聚的模块内聚的模块,功能单一功能单一,易修改易修改,易替换易替换,易易 维护维护 第30页,共120页,编辑于2022年,星期三3030(8)(8)层内聚层内聚 (layer cohesion)(layer cohesion)把向用户或高层提供相关服务的功能放在一起把向用户或高层提供相关服务的功能放在一起把向用户或高层提供相关服务的功能放在一起把向用户或高层提供相关服务的功能放在一起.用户界面用户界面应用逻辑应用逻辑访问操作系统访问操作系统访问数据库访问数据库网络通信网络通信图图 6-11 应用程序的典型层次应用程序的典型层次第31页,共120页,编辑于2022年,星期三3131以下相关的服务可以放在同一层次中以下相关的服务可以放在同一层次中:n n 计算服务计算服务n n 消息或数据传输服务消息或数据传输服务n n 数据存储服务数据存储服务n n 管理安全服务管理安全服务n n 用户交互服务用户交互服务n n 访问操作系统服务访问操作系统服务n n 硬件交互服务硬件交互服务第32页,共120页,编辑于2022年,星期三3232 层内聚优点层内聚优点n n 替换高层模块对底层模块无影响替换高层模块对底层模块无影响n n 低层服务不访问高层服务低层服务不访问高层服务,这样可以用等这样可以用等 价的层替换低层价的层替换低层.但必须复制该层所有的但必须复制该层所有的 API(Application Programming Interface)API(Application Programming Interface)使高层不受影响使高层不受影响.第33页,共120页,编辑于2022年,星期三33336.2.26.2.2 模块的耦合模块的耦合(Coupling)l 耦合是模块间相对独立性的度量。耦合是模块间相对独立性的度量。l l 模块间耦合的类型:模块间耦合的类型:低低低低 非直接耦合非直接耦合非直接耦合非直接耦合 强强强强 低低 数据耦合数据耦合 特征耦合特征耦合特征耦合特征耦合 控控制耦合控控制耦合控控制耦合控控制耦合 外部耦合外部耦合外部耦合外部耦合 较强较强较强较强 公共耦合公共耦合公共耦合公共耦合 高高 强强 内容耦合内容耦合内容耦合内容耦合 弱弱弱弱 耦耦合合性性模模块块独独立立性性中中中中第34页,共120页,编辑于2022年,星期三3434(1 1)非直接耦合)非直接耦合(Nondirectional)(Nondirectional)两个模块之间无信息传递两个模块之间无信息传递.例:例:模块模块1模模 块块2模块模块3模块模块4 图图 6-12 非直接耦合模块非直接耦合模块第35页,共120页,编辑于2022年,星期三3535(2)(2)数据耦合数据耦合(Data)(Data)两个模块间仅用数据参数两个模块间仅用数据参数(简单变量简单变量)进行通讯。属松散耦合。进行通讯。属松散耦合。例:例:图图 6-13 数据耦合模块数据耦合模块计算顾客帐单计算顾客帐单 计算借还金额计算借还金额 借款数借款数 利息利息 时间时间借借 金金还还 额额尽可能减少尽可能减少尽可能减少尽可能减少方法中参数方法中参数方法中参数方法中参数的数目的数目的数目的数目第36页,共120页,编辑于2022年,星期三3636(3)(3)特征耦合特征耦合 (Stamp)(Stamp)(标记耦合标记耦合)模块之间传递的是数据结构。模块之间传递的是数据结构。例:例:计算客户电话费计算客户电话费基基础础费费实实际际费费通话记录通话记录记录记录 结结 果果图图 6-14 特征耦合模块特征耦合模块第37页,共120页,编辑于2022年,星期三3737(4 4)控制耦合)控制耦合 (Control)(Control)模块之间传递的信息是控制量模块之间传递的信息是控制量模块之间传递的信息是控制量模块之间传递的信息是控制量(一个过程通过标志或命一个过程通过标志或命令直接控制另一个过程令直接控制另一个过程)。AB计算平均计算平均或最高分数或最高分数平均平均/最高最高(控制信号)(控制信号)成成绩绩读入分数读入分数B平均平均/最高最高计算计算平均分数平均分数计算计算 最高分数最高分数输出结果输出结果图图 6-15 控制耦合控制耦合yn使用多态使用多态降低这种降低这种耦合耦合第38页,共120页,编辑于2022年,星期三3838(5 5)外部耦合)外部耦合 (External)(External)l l 一组模块访问同一个全局变量,而不是一组模块访问同一个全局变量,而不是 同一个全局数据结构。同一个全局数据结构。(不确切不确切)对系统外部元素对系统外部元素-如操作系统、共享库如操作系统、共享库 或硬件或硬件的依赖的依赖.(确切确切)l l 外部偶合必不可少外部偶合必不可少,但这种模块数目应尽但这种模块数目应尽 量少。量少。第39页,共120页,编辑于2022年,星期三3939(6)(6)公共耦合公共耦合(Common)(Common)一组模块访问同一个数据区。一组模块访问同一个数据区。公共数据区指:公共数据区指:公共数据区指:公共数据区指:n n全局数据结构全局数据结构n n共享通讯区共享通讯区共享通讯区共享通讯区n n内存公共覆盖区等内存公共覆盖区等内存公共覆盖区等内存公共覆盖区等 AB公公 共共 数数 据据 区区AB公共数据区公共数据区图图 6-17 6-17 紧密的公共耦合紧密的公共耦合图图图图 6-16 6-16 6-16 6-16 松散的公共耦合松散的公共耦合松散的公共耦合松散的公共耦合使用全局变量的模块相互耦合使用全局变量的模块相互耦合使用全局变量的模块相互耦合使用全局变量的模块相互耦合.JavaJavaJavaJava中的公有静态变量是全局变量中的公有静态变量是全局变量.为全局变量创建一个包含公有方法的模块为全局变量创建一个包含公有方法的模块,通过调用这些方法来获取与设置数据通过调用这些方法来获取与设置数据通过调用这些方法来获取与设置数据通过调用这些方法来获取与设置数据.这样这样这样这样 数据的内部表示就易于修改了数据的内部表示就易于修改了数据的内部表示就易于修改了数据的内部表示就易于修改了,且可访止恶且可访止恶且可访止恶且可访止恶 意的破坏意的破坏.set.set.set.set方法可以检查修改的合法性方法可以检查修改的合法性方法可以检查修改的合法性方法可以检查修改的合法性.第40页,共120页,编辑于2022年,星期三4040(7)(7)内容耦合内容耦合(Content Coupling)(Content Coupling)一模块直接访问或修改另一模块的内部信息一模块直接访问或修改另一模块的内部信息 (程序代码或数据)。(程序代码或数据)。如修改了公有实例变量如修改了公有实例变量如修改了公有实例变量如修改了公有实例变量Entry1Entry1 Entry1Entry1 ABAB模模 块块 代代码码 重重 叠叠图图 6-18 内容耦合内容耦合 封装所有的实例变封装所有的实例变量量,把它们声明为把它们声明为PrivatePrivate型型,并为每个变量提并为每个变量提供供Get,setGet,set方法方法.第41页,共120页,编辑于2022年,星期三4141耦合对模块化设计的影响耦合对模块化设计的影响l l耦合是影响软件耦合是影响软件 复杂程度和设计复杂程度和设计 质量的重要因素。质量的重要因素。l l 建立模块间耦合度建立模块间耦合度尽可能:尽可能:松散的系统松散的系统降低模块间耦合度:降低模块间耦合度:(1)(1)(1)(1)尽量使用数据耦合,尽量使用数据耦合,少用控制耦合,少用控制耦合,限制公共耦合的范围限制公共耦合的范围坚决避免使用内容耦合。坚决避免使用内容耦合。(2)(2)降低接口的复杂性降低接口的复杂性第42页,共120页,编辑于2022年,星期三4242模块化设计的原则模块化设计的原则:uu 耦合、内聚是衡量模块独立性的耦合、内聚是衡量模块独立性的 两个指标两个指标l l 力争高内聚、低耦合力争高内聚、低耦合 第43页,共120页,编辑于2022年,星期三43436.2.3 6.2.3 模块的深度、宽度、模块的深度、宽度、扇入和扇出扇入和扇出深度:深度:深度:深度:程序结构的层次数。程序结构的层次数。程序结构的层次数。程序结构的层次数。扇出:扇出:表示一个模块直接调用表示一个模块直接调用表示一个模块直接调用表示一个模块直接调用(或控制)的下属模块的个(或控制)的下属模块的个(或控制)的下属模块的个(或控制)的下属模块的个数。数。数。数。宽度:宽度:宽度:宽度:层次结构中同一层模块层次结构中同一层模块层次结构中同一层模块层次结构中同一层模块的最大模块个数。的最大模块个数。的最大模块个数。的最大模块个数。扇入:扇入:扇入:扇入:一个模块的直接上级模一个模块的直接上级模一个模块的直接上级模一个模块的直接上级模块的模块。块的模块。块的模块。块的模块。第44页,共120页,编辑于2022年,星期三4444例例:MDBCAEKLNGFHPRSJTIQ扇扇 出出扇扇 入入宽宽 度度深深度度图图 6-17 模块的扇入扇出模块的扇入扇出第45页,共120页,编辑于2022年,星期三45456.2.46.2.4 模块的控制范围和模块的控制范围和 判定的作用范围判定的作用范围模块的作用域:模块的作用域:受该模块内判定受该模块内判定所影响的所有模块所影响的所有模块的集合。的集合。模块的控制域:模块的控制域:模块本身以及模块本身以及所有直接或间接从所有直接或间接从属于它的所有模块属于它的所有模块的集合。的集合。如上图所示:如上图所示:B B的控制域为:的控制域为:B B和和k k。第46页,共120页,编辑于2022年,星期三4646小结小结模块化设计的规则模块化设计的规则:(1)(1)模块的特性模块的特性:分解、抽象、信息隐蔽、分解、抽象、信息隐蔽、独立独立.,.,结构化的结构化的.(2)(2)模块的功能是完备的模块的功能是完备的,但要消除冗余但要消除冗余.(3)(3)大小适中大小适中,降低模块接口的复杂性降低模块接口的复杂性.(4)(4)模块应具有模块应具有高内聚、低耦会高内聚、低耦会;高扇入、高扇入、低扇出低扇出;模块的深度模块的深度,宽度要适当宽度要适当.(5)(5)模块的判定作用范围应限制在模块的模块的判定作用范围应限制在模块的 控制范围之内控制范围之内.(6)(6)避免模块的病态连接避免模块的病态连接(内容耦合、公共内容耦合、公共 耦合、通信耦合耦合、通信耦合)第47页,共120页,编辑于2022年,星期三47476.3 6.3 结构化设计方法结构化设计方法n n 变换流与事务流方法变换流与事务流方法n n HIPO HIPO 图方法图方法n n 由由DFDDFD顶层、中间层导出结构图顶层、中间层导出结构图第48页,共120页,编辑于2022年,星期三48486.3.1 6.3.1 基于变换流与事务流方法基于变换流与事务流方法(1)(1)变换流变换流传入传入 传传 出出变换变换中心中心输入输入 事务中心事务中心 动作动作 路径路径(2)(2)事务流事务流第49页,共120页,编辑于2022年,星期三4949(3)(3)系统结构图系统结构图系统结构图的模块类型:系统结构图的模块类型:传入模块传入模块 传出模块传出模块 变换变换 图图 6-18 结构图表示符号结构图表示符号第50页,共120页,编辑于2022年,星期三5050(4)DFD(4)DFD图转为结构图图转为结构图(SC(SC图图)的步骤的步骤l l优化优化DFDDFD图图l l区分区分I/O I/O 流、变换中心、事务中心流、变换中心、事务中心l l设计顶层和第一层模块,进一步逐级向设计顶层和第一层模块,进一步逐级向下设计,得到初始的结构图下设计,得到初始的结构图SCSCl l改进改进SCSC图图第51页,共120页,编辑于2022年,星期三5151 变换流与变换结构变换流与变换结构变换型数据流处理问题的工作过程为变换型数据流处理问题的工作过程为:取得数据,取得数据,变换数据变换数据,给出数据给出数据.取得取得 数数 据据C变变 换换C D给出给出 D传入传入变换中心变换中心传出传出 图图 6-19 变换流变换流 第52页,共120页,编辑于2022年,星期三5252 变换结构变换结构主模块主模块给出给出D 给出给出E B C取得取得A取得取得B 取得取得C A BC DD EEBAABBCCDDCED图图 6-20 变换结构变换结构 第53页,共120页,编辑于2022年,星期三5353 事务流与事物类型结构事务流与事物类型结构u 事务型数据处理的问题是接受一项事务,事务型数据处理的问题是接受一项事务,根据事务处理的特点和性质采取不同的处根据事务处理的特点和性质采取不同的处理方法。理方法。u 数据流图数据流图:事务事务中心中心D1D2D3D4图图 6-21 事务流事务流 第54页,共120页,编辑于2022年,星期三5454 事务型系统结构图事务型系统结构图事事 务务 类类 型型输入输入调度调度输出输出 事务事务1 事务事务2 事务事务 1.1事务事务1.2事务事务2.1 事务事务2.2 图图 6-22 事务结构事务结构 第55页,共120页,编辑于2022年,星期三5555例例1 1 教材购销系统概况教材购销系统概况1)根据学校教学计划根据学校教学计划,向选课学生供应教材向选课学生供应教材n n 审查购书单有效性审查购书单有效性,对有效的购书单发售对有效的购书单发售 教材教材n n 若书库无申请的教材进行缺书登记若书库无申请的教材进行缺书登记.2)2)采购教材采购教材,通知学生补购通知学生补购.n n 缺书汇总为待购教材计划缺书汇总为待购教材计划n n 待购教材到货待购教材到货,及时通知学生补购及时通知学生补购.第56页,共120页,编辑于2022年,星期三5656图图 6-23 6-23 人工销售教材的系统流程人工销售教材的系统流程学学生生购书购书申请申请开购书开购书发票发票发票发票收书费收书费领书单领书单发书发书学生学生批准申请批准申请p268实例实例教材购销系教材购销系 统统第57页,共120页,编辑于2022年,星期三5757图图 6-24 6-24 教材购销系统工作流程图教材购销系统工作流程图产生补产生补售书单售书单进书进书书库书库保管员保管员汇总并汇总并统统计缺书计缺书缺书单缺书单学学生生购书单购书单有效性有效性审查审查开开发票发票售书售书登记登记表表发书发书领书单领书单打印领书单打印领书单并登记售书并登记售书收费收费盖章盖章发票发票打印打印发票发票售书售书购购书书缺书缺书登记登记教材教材存量表存量表学生学生用书表用书表p27p27第58页,共120页,编辑于2022年,星期三5858教材购销系统教材购销系统教材教材购销购销系统系统学学生生书库书库保管保管员员购书单购书单领书单领书单缺书单缺书单进书通知进书通知图图 6-25 教材购销系统的顶层教材购销系统的顶层DFD实例实例第59页,共120页,编辑于2022年,星期三59591销售销售 2采购采购 学学生生书库书库保管保管员员进书进书通知通知领书单领书单购书单购书单缺书单缺书单进书通知进书通知F2 缺书登记表缺书登记表F1 教材存量表教材存量表图图 6-26 教材购销系统的中间层教材购销系统的中间层DFD第60页,共120页,编辑于2022年,星期三6060p56图图 6-27 第三层第三层DFDDFD图图销售子系统销售子系统1.61.6产生补售产生补售书单书单采采购购学学生生学学生生1.51.5登记登记缺缺书书1.11.1审查审查有有效性效性1.21.2开发开发票票1.31.3打印打印发发票票1.4 1.4 暂缺暂缺书单书单进书进书通知通知无效无效书单书单购书购书单单补售补售 书单书单书单书单有效有效购购发票发票发票发票F2 F2 缺书登记表缺书登记表F1 F1 教材存量表教材存量表F4 售书登记表售书登记表F3 F3 学生用书表学生用书表登记售登记售书和打印书和打印领书单领书单领书单领书单第61页,共120页,编辑于2022年,星期三6161p101图图 6-28 优化的优化的第三层第三层DFDDFD图图销售子系统销售子系统1.61.6产生补售产生补售书单书单采采购购学学生生学学生生1.51.5登记登记缺缺书书1.11.1审查审查有有效性效性1.21.2开发开发票票打印打印发发票票1.41.4暂缺暂缺书单书单进书进书通知通知无效无效书单书单购书购书单单补售补售 书单书单书单书单有效有效购购发票发票发票发票领书单领书单F2 缺书登记表缺书登记表F1 F1 教材存量表教材存量表F4 售书登记表售书登记表F3 F3 学生用书表学生用书表登记登记售书售书F7进进 书书 登登 记记 表表1.71.3打印领打印领书单书单第62页,共120页,编辑于2022年,星期三6262进书通知进书通知进书通知进书通知2.12.1按书号汇按书号汇