1、毛新军毛新军 教授教授计算机科学与技术系计算机科学与技术系602教研室教研室 0731-(45)73649软件工程导论软件工程导论 之之Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法2n软件设计基础知识n软件的需求分析及其需求规格说明书(SRS)n软件的SRS - 软件设计信息n面向数据流的设计方法:提供了方法和策略Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法31.基本概念和软件设计过程2.变换分析方法3.事务分析方法4.启发式设计策略5.设计优化原则Copyright Xinjun Mao面向数据流的软件设
2、计方法面向数据流的软件设计方法4 输入流输入流 输出流输出流 变换流变换流 时间时间 外部表示外部表示 内部表示内部表示 信息信息 订订票票员员 订订票票员员 预预定定机机票票 准准备备机机票票 记记帐帐 订订票票单单 航航班班目目录录 航航班班号号 航航班班 费费用用 帐帐单单 机机票票 记记帐帐数数据据库库 帐帐目目 n前提 经过评审后的需求模型 - 数据流图Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法5n变换流 信息通常以“外部世界”所具有的形式进入系统,经过处理后,又以这种形式离开系统 输入流输入流 输出流输出流 变换流变换流 时间时间 外部
3、表示外部表示 内部表示内部表示 信息信息 订订票票员员 订订票票员员 预预定定机机票票 准准备备机机票票 记记帐帐 订订票票单单 航航班班目目录录 航航班班号号 航航班班 费费用用 帐帐单单 机机票票 记记帐帐数数据据库库 帐帐目目 Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法6 事事务务处处理理中中心心 动动作作路路径径 事事务务 n数据沿输入通道到达一个转换,该转换根据输入流类型和特征在若干动作序列中选择一条来执行 输入数据(事务) 具有一个转换(事务中心) 一组动作执行路径Copyright Xinjun Mao面向数据流的软件设计方法面向数据
4、流的软件设计方法7n实际上所有的数据流图都是变换流,事务流是变换流的一种特殊形式 n为什么要将事务型的数据流图独立出来考虑?n大多数系统的数据流途中,事务流和变换流往往交织在一起Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法8 a b c d e q r s p 事事务务处处理理中中心心 Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法9n 面向数据流的设计方法的主要过程 确定数据流的类型:变换流还是事务流 划定流界 将数据流图转换为软件结构 通过设计复审和启发式策略精化所得到软件结构Copyright Xinj
5、un Mao面向数据流的软件设计方法面向数据流的软件设计方法10 流流 类类 型型 确确 定定 事事务务 中中 心心和和 动动作作 路路 径径 映映 射射 为为事事 务务 结结构构 确确 定定 输输入入 和和 输输出出 流流界界 映映 射射 为为变变 换换 结结构构 利利 用用 启启发发 式式 策策略略 精精化化 设设 计计 描描 述述 接接口口 和和 数数据据 设设计计 复复 审审 详详 细细 设设计计 精精 化化 数数据据 流流 图图 事事 务务 流流 变变 换换 流流 变变换换分分析析法法 事事务务分分析析法法 有有 问问 题题 Copyright Xinjun Mao面向数据流的软件设
6、计方法面向数据流的软件设计方法111.基本概念和软件设计过程2.变换分析方法3.事务分析方法4.启发式设计策略5.设计优化原则Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法12n基本思想 通过一系列的设计步骤,将变换型的数据流图映射为软件结构 输入:SRS(数据流图、数据字典、小说明) 输出:软件总体结构Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法13n 什么是基本系统模型 基本系统模型即SRS中的顶级数据流图n 为什么需要对基本系统模型进行复审 对系统规格说明书和SRS进行评估,以确保系统的输入和输出数据符
7、合实际Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法14n为什么需要复审和精化数据流图 确保DFD给出目标系统正确的逻辑模型 以获得足够详细的DFD 确保DFD中每个转换代表一个规模适中、相对独立的子功能Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法15n信息流都可用变换流表示,但是如果有明显的事务流特征,则还应采用事务流的映射方法n设计人员负责判定在数据流图中占主导地位的信息流是变换流还是事务流Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法16划分因人而异,在一般情况
8、下有点出入对整个划分因人而异,在一般情况下有点出入对整个目标软件系统的影响不是很大目标软件系统的影响不是很大n输入流处理部分n变换中心n输出流处理部分 输入流输入流 输出流输出流 变换流变换流 时间时间 外部表示外部表示 内部表示内部表示 信息信息 Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法17 I D A C E F G H B J 输输出出流流 输输入入流流 变变换换流流 Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法18n任务: 导出三个层次结构的软件结构 底层模块:用于输入、输出和计算等基本功能 中
9、间层模块:协调、控制底层模块的工作 高层模块:用于协调和控制所有的从属模块n原则 在确保完成系统功能并保持低耦合度、高内聚度的情况下尽可能的减少模块数目n一级分解的结果可以用层次图、结构图等来表示Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法19 主主控控模模块块 输输入入流流控控制制模模块块 变变换换流流控控制制模模块块 输输出出流流控控制制模模块块 高高层层 中中间间层层 底底层层 Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法20n任务 把DFD中每个转换映射为软件结构中的模块n方法 从变换中心边界开始沿
10、输入、输出通道向外移动,把输入、输出通道中的每个转换映射为软件结构中的 一个模块 沿着输入流到输出流的方向移动,将每个转换映射为 相应的模块n有必要为每一模块写简要的处理说明,包括:进出模块的信息,模块处理功能的陈述,有关的限制和约束 I D A C E F G H B J 主主 控控 模模 块块 输输 入入 流流 控控 制制 模模 块块 变变 换换 流流 控控 制制 模模 块块 输输 出出 流流 控控 制制 模模 块块 输输 出出 流流 输输 入入 流流 变变 换换 流流 B D A C E F G H I J Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件
11、设计方法22n以“模块化”的思想,对软件结构中的模块进行拆并,以追求高内聚、低耦合、易实现、易测试、易维护的软件结构 I D A C E F G H B J 主主 控控 模模 块块 输输 入入 流流 控控 制制 模模 块块 变变 换换 流流 控控 制制 模模 块块 输输 出出 流流 控控 制制 模模 块块 输输 出出 流流 输输 入入 流流 变变 换换 流流 B D A C E F G H I J I D A C E F G H B J 主控模块主控模块 输入流控制模块输入流控制模块 变换流控制模块变换流控制模块 输出流输出流 输入流输入流 变换流变换流 B D A C E F G H I J
12、 Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法251.基本概念和软件设计过程2.变换分析方法3.事务分析方法4.启发式设计策略5.设计优化原则Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法26n当数据流具有明显的事务特征时,应该采用事务流的分析方法n基本步骤 步骤1. 复审基本系统模型 步骤2. 复审和精化数据流图 步骤3. 确定数据流图的类型:变换流还是事务流Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法27n把整个事务型DFD划分为以下三个部分 接受路径部分:接受
13、事务的输入 事务处理中心 动作路径部分n判定在每一条动作路径上数据流的特征:变换流或者事务流Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法28 A B C D E Q R S P 事事务务处处理理中中心心 接接受受路路径径部部分分 动动作作路路径径部部分分 Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法29 A B C D E Q R P 总总 控控 模模块块 输输 入入 控控制制 模模 块块 C C1 Cn 一一 条条 动动作作 路路 径径 事事 务务 处处理理 中中 心心 散散 转转 Copyright X
14、injun Mao面向数据流的软件设计方法面向数据流的软件设计方法30 A B C D E Q R P 总总 控控 模模块块 B Q C C1 P A R 一一 条条 动动作作 路路 径径 事事 务务 处处理理 中中 心心 输输 入入 控控制制 Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法31 A B C D E Q R P 总控模块总控模块 B Q C C1 P A R 一条动作路径一条动作路径 事务处事务处理中心理中心 输入控制输入控制 Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法32 A B C D
15、E Q R P 总总 控控 模模块块 B Q C C1 P A R 一一 条条 动动作作 路路 径径 事事 务务 处处理理 中中 心心 Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法331.基本概念和软件设计过程2.变换分析方法3.事务分析方法4.启发式设计策略5.设计优化原则Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法34n改造软件结构,降低耦合度,提高内聚度 如果在几个模块中发现共有的子功能,一般应该将该子功能独立出来作为一个模块,以提高模块的独立性 合并那些具有较多的控制信息传递的模块以降低模块之间的耦
16、合度Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法35n 一个好的软件结构通常顶层扇出较高,中间层扇出较低,底层又高扇入到公共模块中去Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法36n作用域是指受模块内部判定影响的所有模块n控制域是指其所有的下属模块Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法37n降低模块接口复杂度和冗余度,提高协调性 模块接口应尽可能简单并与模块功能相一致如: Sort(Data; Number) -Sort(Data)n模块功能可预测,避免对模
17、块施加过多限制 模块的功能可预测是指输入恒定,则输出恒定n追求单入口、单出口的模块n为满足设计和可移植性要求,把某些软件用包 封装起来Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法381.基本概念和软件设计过程2.变换分析方法3.事务分析方法4.启发式设计策略5.设计优化原则Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法39n在先不考虑时间复杂度的情况下设计并精化软件结构n借用CASE工具模拟分析运行性能,定位低效率的部分n详细设计时对耗时的模块进行仔细的推敲,以减少模块的运行开销n用高级语言编写n对大量占用CPU资源的模块必要时用低级语言重新进行编码,以提高效率Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法401.基本概念和软件设计过程2.变换分析方法3.事务分析方法4.启发式设计策略5.设计优化原则Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法41n你觉得在进行软件设计时,除了上述启发式设计策略和优化原则之外,还应考虑那些问题?Copyright Xinjun Mao面向数据流的软件设计方法面向数据流的软件设计方法42Practice, Practice, and Practice