软件工程方法与奥践 第4章软件设计 子教
软件工程方法与实践 第 4 章 软件设计 电 子教 案
第4章软件设计 4.1软件设计概述 42面向数据流分析(DFA)的设计 43面向数据的设计 944软件详细设计 945特定应用软件的设计 94.6小结
第 4 章 软件设计 4.1 软件设计概述 4.2 面向数据流分析(DFA)的设计 4.3 面向数据的设计 4.4 软件详细设计 4.5 特定应用软件的设计 4.6 小结
4软件设计概述 软件设计是生成将要构造的目标系统“怎么做”的模型 描述,即对将要实现的软件系统的体系结构、系统的数 据、系统模块间的接口,以及所采用的算法给出详尽的 描述。 传统的结构化软件设计有两种方法: 面向行为的设计是基于数据处理过程的软件设计,也称 为结构化设计(SD)方法,如面向数据流分析(DFA) 的设计方法。 面向数据的设计是基于输入输出数据结构的软件设计, 如 Jackson方法(JSD)和逻辑构造程序方法(LCP)
4.1 软件设计概述 软件设计是生成将要构造的目标系统“怎么做”的模型 描述,即对将要实现的软件系统的体系结构、系统的数 据、系统模块间的接口,以及所采用的算法给出详尽的 描述。 传统的结构化软件设计有两种方法: 面向行为的设计是基于数据处理过程的软件设计,也称 为结构化设计(SD)方法,如面向数据流分析(DFA) 的设计方法。 面向数据的设计是基于输入/输出数据结构的软件设计, 如Jackson方法(JSD)和逻辑构造程序方法(LCP)
411软件设计过程 软件设计是一系列迭代步骤的设计过程 设计模型是设计过程的集中体现。设计模型首先描述所设 计的软件的整体,然后逐步求精设计,以提供构造每个细 节的指南。 软件设计包括总体设计、详细设计和设计测试三部分。软 件设计的这三项活动在各具特色的软件设计方法中,是以 不同的过程形式表现的
4.1.1 软件设计过程 软件设计是一系列迭代步骤的设计过程。 设计模型是设计过程的集中体现。设计模型首先描述所设 计的软件的整体,然后逐步求精设计,以提供构造每个细 节的指南。 软件设计包括总体设计、详细设计和设计测试三部分。软 件设计的这三项活动在各具特色的软件设计方法中,是以 不同的过程形式表现的
软件设计的三类活动 1.软件总体设计,也称为概要设计,软件结构设计,或高 层设计。软件结构设计主要是仔细地分析需求规格说明, 研究开发产品的模块划分,形成具有预定功能的模块组成 结构,表示出模块间的控制关系,并给出模块之间的接口。 2.软件详细设计,也称为模块过程设计,或低层设计。详 细设计是为结构设计中的各个模块设计过程细节,确定模 块所需的算法和数据结构等。 3.软件设计的测试和复审,确保设计的正确和优化
软件设计的三类活动 1. 软件总体设计,也称为概要设计,软件结构设计,或高 层设计。软件结构设计主要是仔细地分析需求规格说明, 研究开发产品的模块划分,形成具有预定功能的模块组成 结构,表示出模块间的控制关系,并给出模块之间的接口。 2. 软件详细设计,也称为模块过程设计,或低层设计。详 细设计是为结构设计中的各个模块设计过程细节,确定模 块所需的算法和数据结构等。 3. 软件设计的测试和复审,确保设计的正确和优化
软件结构设计过程 软件设计中最重要的是软件结构设计。软件结构设计过程 般采用以下步骤: ①设计供选择的方案; ②选取合理的方案; ③推荐最佳方案; ④功能分解和设计软件结构; ⑤数据库设计; ⑥制定软件设计测试计划; ⑦编制设计文档; ⑧审查和复审
软件结构设计过程 软件设计中最重要的是软件结构设计。软件结构设计过程 一般采用以下步骤: ① 设计供选择的方案; ② 选取合理的方案; ③ 推荐最佳方案; ④ 功能分解和设计软件结构; ⑤ 数据库设计; ⑥ 制定软件设计测试计划; ⑦ 编制设计文档; ⑧ 审查和复审
软件设计的指导原则 ①设计过程不应该受“隧道视野”的限制 ②设计对于分析模型应该是可跟踪的。 ③设计者应该尽可能使用可复用的设计构件。 ④软件设计的结构应该尽可能模拟问题域的结构。 ⑤设计应该表现出一致性和集成性。 ⑥设计应该能够适应修改 ⑦在创建设计时,就应该考虑能够评估其质量。 ⑧应该复审每一步设计,以减少语义性错误
软件设计的指导原则 ① 设计过程不应该受“隧道视野”的限制。 ② 设计对于分析模型应该是可跟踪的 。 ③ 设计者应该尽可能使用可复用的设计构件。 ④ 软件设计的结构应该尽可能模拟问题域的结构。 ⑤ 设计应该表现出一致性和集成性。 ⑥ 设计应该能够适应修改。 ⑦ 在创建设计时,就应该考虑能够评估其质量。 ⑧ 应该复审每一步设计,以减少语义性错误
412软件模块化设计 模块是一个独立命名的,拥有明确定义的输入、输出和 特性的程序实体,可以通过名字访问,可单独编译。 软件的模块化设计是指把一个大型软件系统的全部功能, 按照一定的原则合理地划分为若干个模块,每个模块完 成一个特定子功能,所有的这些模块以某种结构形式组 成一个整体。 软件模块化设计的指导思想是分解、抽象、逐步求精、 信息隐蔽和模块独立性
4.1.2 软件模块化设计 模块是一个独立命名的,拥有明确定义的输入、输出和 特性的程序实体,可以通过名字访问,可单独编译。 软件的模块化设计是指把一个大型软件系统的全部功能, 按照一定的原则合理地划分为若干个模块,每个模块完 成一个特定子功能,所有的这些模块以某种结构形式组 成一个整体。 软件模块化设计的指导思想是分解、抽象、逐步求精、 信息隐蔽和模块独立性
1.软件模块化 软件模块化必须保证科学、合理地进行模块分解。这与 逐步求精、抽象和信息隐蔽等概念紧密相关。 个软件系统的各个模块之间是相互关联的,模块划分 的数量越多,模块间的联系也越多。模块本身的复杂性 和工作量虽然随着模块变小而减少,模块的接口工作量 却随着模块数增加而增大。因此,软件模块化应把模块 数控制在一定的范围内,可得到最小总开发工作量(最 小成本)
1. 软件模块化 软件模块化必须保证科学、合理地进行模块分解。这与 逐步求精、抽象和信息隐蔽等概念紧密相关。 一个软件系统的各个模块之间是相互关联的,模块划分 的数量越多,模块间的联系也越多。模块本身的复杂性 和工作量虽然随着模块变小而减少,模块的接口工作量 却随着模块数增加而增大。因此,软件模块化应把模块 数控制在一定的范围内,可得到最小总开发工作量(最 小成本)
模块数和开发工作量的关系 总成本 开发工作量 最小成本区 接口成本 模块成本 模块数 图41模块数和开发工作量的关系
模块数和开发工作量的关系 图4.1 模块数和开发工作量的关系 开 发 工 作 量 模块数 最小成本区 模块成本 接口成本 总成本