第8章 软件设计基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
仅用顺序、分支、循环三种基本控 制构件即能构造任何单入口、单出 口程序。 结构化程序设计是程序设计技术, 它采用自顶向下逐步求精的设计方 法和单入口单出口的控制构件。 图形表示法:
程序流程图:构件P196 图8.8,例 P197图8.9 盒图(N-S图):构件P198图8.11
域)明确。 2) 不可能任意转移控制。 3) 很容易确定局部和全程数据的作用域。 4) 很容易表现嵌套关系,也可以表示模 块的层次结构
① 非直接耦合:两模块中任一个都不依赖对方能独立工作, ② 数据耦合:两模块通过参数交换信息,信息仅限于数据。
这类耦合度最低。
分解模块可望消除控制耦合。 ④ 特征耦合:介于数据耦合与控制耦合之间 ⑤ 外部耦合:当若干模块均与同一个外部环境关联,如,I/O处理使所有I/O模块与 特定的设备、格式和通信协议相关联。外部耦合尽管需要,但应限制在少数几个 模块上。 ⑥ 公共耦合:若干模块通过全局的数据环境相互作用, 全局数据环境中可能含有全 局变量、公用区、内存公共复盖区、任何存储介质上的文件、物理设备等。 ⑦ 内容耦合:一个模块使用另 一模块内部的数据或控制信息;一个模块直接转移 到另一模块内部等等。
8.1 软件设计过程例图
需求分析 结构化分析方法建立系 统逻辑模百度文库DFD+DD 行为/功能设计 总体设计 逻辑模型—〉功能模型 (DFD+DD映射为体系/ 模块结构图) 结构/数据设计 概念设计 逻辑模型—〉数据模型 ( DFD+DD 映 射 为 ER 图 )
相 关
详细设计、编码、测试。。 。。。。
中级内聚度
通信性内聚:模块中各成份都将对数据结构的同一区域进行操作,以达到通信的目的。 过程性内聚:模块具有过程性内聚度指,模块内成分彼此相关,并且必须按特定的次 序执行。
低级内聚度
时间性内聚:模块包含的诸任务必须在同一时间段内执行,如一个初始化模块。 逻辑性内聚:模块完成的诸任务逻辑上相关,如,一个模块产生所有与类型无关的输 出。 偶然性内聚:模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系, 也很松散。
8.2 基本概念——模块化与信息隐藏 模块化与信息隐藏
模块化是软件结构设计技术的基础。可组合、分解和更换 的单元。 模块的基本属性:接口、功能(外部)、逻辑、状态(内 部)。 理论根据: C(P1+P2)>C(P1)+C(P2) 模块总数增加时,单独开发各个子模块的工作量之和减少 ,接口费用越来越大。P190 图8.2,存在一个最小成本的 模块数区域。 信息隐藏:数据细节、过程细节
内聚度和耦合度是判断软件结构 好坏的主要标准。 程序结构的表示工具:类树图, P193,图8.5 概念:深度、宽度、扇出、扇入、 可见域、流通域
8.2 基本概念——数据结构设计 数据结构设计
数据结构描述各数据分量之间的逻辑关系。 数据结构是影响软件总体结构的重要因素。数据 结构决定了数据的组织形式、访问方法和处理策 略。 数据抽象和信息隐藏两个概念是数据设计的基础。 数据设计方案不唯一。 数据结构完整讨论超出本书范围。
① ② ③ ④ ⑤ ⑥ ⑦
⑧ ⑨ ⑩
模块化:支持模块化软件的开发并提供描述接口的机制(例如直接表 示子程序 和块结构); 整体简洁性:设计表示相对易学、易用、易读; 便于编辑:支持后续设计、测试乃至维护阶段对过程设计进 行的修改; 机器可读性:计算机辅助软件工程(CASE)环境已被广泛接受, 一种设计表示 法若能直接输入并被CASE工具识别将带来极大便利; 可维护性:过程设计表示应支持各种软件配置项的维护; 强制结构化:过程设计工具应能强制设计人员采用 结构化构件,有助于产生 好的设计; 自动产生报告:设计人员通过分析详细设计的结果往往能突 发灵感,改进设计。 若存在自动处理器,能产生有关设计的分析报告必将增强设计人员在这 方面 的能力; 数据表示:详细设计应具备表示局部与全局数据的能力; 逻辑验证:能自动验证设计逻辑的正确性是软件测试 追求的最高目标,设计表 示愈易于逻辑验证其可测试性愈强; 可编码能力:一种设计表示若能自然地转换为代码则能减少开发 费用,降低出 错率。
逻辑设计、物理设计、实现等。。 。。。。
集成
8.2 基本概念——抽象与逐步求精 抽象与逐步求精
抽象是控制复杂性的基本策略。要求人们将注意 力集中在某一层次上考虑问题,忽略低层次细节。 软件工程每一步都是对较高一级抽象的解做一次 较具体化的描述。 例8.1 P187-188 逐步求精与抽象密切相关,层次结构上一层是下 一层的抽象,下一层是上一层的求精。 过程求精的同时伴随着数据求精。求精蕴含着某 种设计决策。
E(P1+P2)>E(P1)+E(P2)
8.2 基本概念——模块内聚度 模块内聚度
内聚度表示一个模块内部各元素彼此结合的紧密程度,是衡量一个模 块内部组成部分间整体统一性度量。内聚分7类,从高到低依次为: 高级内聚度
功能性内聚:模块内所有成分形成一个整体,完成单个功能。 顺序性内聚:模块内的各处理成份均与同一功能相关,且这些处理必须顺序执行,则称 顺序内聚。
关键字采用固定语法并支持结构化构件、数据说明机制和模块化; ② 处理部分采用自然语言描述; ③ 允许说明简单(标量、数组等)和复杂(链表、树等)的数据结构; ④ 子程序的定义与调用规则不受具体接口方式的影响。
①
8.3 过程设计技术和工具——过程设计工具比较 过程设计工具比较
好工具的属性:P202 (1)-(10)
8.2 基本概念——软件过程设计 软件过程设计
所谓过程,应包括有关处理的精确说明,诸如事件的顺 序、确切地判断位置、循环操作及数据组成等等。过程 设计的任务是描述算法细节。P194 图8.6 程序结构中任何模块的所有从属模块必将引用出现在该 模块的过程说明中。P195 图8.7
8.3 过程设计技术和工具——结构化程序设计 结构化程序设计
设计原则:力求高内聚、少用中内聚、不用低内聚。 一般高层模块内聚度低一些,较低层次模块的内聚度较高。
8.2 基本概念——模块耦合度 模块耦合度
耦合度表示软件结构内不同模块彼此间相互依赖的紧密程度,是衡量 软件模块结构质量好坏的度量,是对模块独立性的直接衡量指标。 耦合度的强弱取决于模块间接口的复杂性、进入或调用模块的位置、 接口传送数据的多少等。 耦合度也分为七级(按耦合度增序排列):
PDL符合。
8.4 设计规格说明与评审
规格说明:P204表8-2 复审的内容P203 :软件总体结构、数据结构、结构的界面、 模块过程细节。重点:
软件结构能否满足需求? 结构的形态是否合理? 层次是否清晰? 模块的划分是否遵循模型化和信息隐藏的思想? 系统的人机界面,各模块的接口,以及出错处理是否恰当?模块的 设计能否满足功能与性能要求? 选择的算法与数据结构是否合理,能否适应编程语言?等等。
1) 功能域(即一个特定控制结构的作用
8.3 过程设计技术和工具——判定表 判定表
清晰表示出复杂条件组合与各动作间的关系。 四个组成部分。左上部列出所有条件 条件,左下部是所有可 条件 能做的动作 动作,右上部是表示各种条件组合 条件组合的一个矩阵, 动作 条件组合 右下部是和每种条件组合相对应的动作 条件组合相对应的动作。 条件组合相对应的动作 判定表的每一列实质上是一条规则,规定了与特定的条 件组合相对应的动作。 特点:严格逻辑性,但不能描述循环处理特性
复审方式:正式、非正式 复审对事不对人
8.3 过程设计技术和工具——过程设计语言 过程设计语言
PDL 结构英语、伪码 PDL具有严格的关键字外部语法,用于定义控制结构和数据 结构;另一方面,PDL表示实际操作和条件的内部语法通常 又是灵活自由的。 PDL可以作到逐步求精:从比较概括和抽象的PDL程序起, 逐步写成更详细的精确的描述。 特点:P200
③ 控制耦合:传递的信息含有控制信息。控制耦合通常会增加系统的复杂性,适当
设计原则:尽量使用数据耦合,少用控制耦合,限制外部和公共耦合, 杜绝内容耦合。
8.2 基本概念——总体结构设计 总体结构设计
软件总体结构:程序结构,数据 结构 软件总体结构设计的目标:软件
总体结构设计的目标是产生一个模块 化的程序结构并明确各模块之间的控 制关系,此外还要通过定义界面,说明程 序的输入输出数据流,进一步协调程序 结构和数据结构。P192
第八章 软件设计基础
1. 软件设计过程 2. 软件设计基本概念 3. 过程设计技术和工具 4. 设计规格说明与评审
8.1 软件设计过程
开发阶段第一步,其基本任务是回答“如何做?” 软件设计过程是对程序结构、数据结构和过程细节逐步求精、复审并 编制文档的过程。 软件设计:总体结构设计、数据设计、过程设计。P185 图8.1 是软件开发过程中用以保证质量的关键步骤。 从工程角度,软件设计可分为概要设计和详细设计。
程序流程图:构件P196 图8.8,例 P197图8.9 盒图(N-S图):构件P198图8.11
域)明确。 2) 不可能任意转移控制。 3) 很容易确定局部和全程数据的作用域。 4) 很容易表现嵌套关系,也可以表示模 块的层次结构
① 非直接耦合:两模块中任一个都不依赖对方能独立工作, ② 数据耦合:两模块通过参数交换信息,信息仅限于数据。
这类耦合度最低。
分解模块可望消除控制耦合。 ④ 特征耦合:介于数据耦合与控制耦合之间 ⑤ 外部耦合:当若干模块均与同一个外部环境关联,如,I/O处理使所有I/O模块与 特定的设备、格式和通信协议相关联。外部耦合尽管需要,但应限制在少数几个 模块上。 ⑥ 公共耦合:若干模块通过全局的数据环境相互作用, 全局数据环境中可能含有全 局变量、公用区、内存公共复盖区、任何存储介质上的文件、物理设备等。 ⑦ 内容耦合:一个模块使用另 一模块内部的数据或控制信息;一个模块直接转移 到另一模块内部等等。
8.1 软件设计过程例图
需求分析 结构化分析方法建立系 统逻辑模百度文库DFD+DD 行为/功能设计 总体设计 逻辑模型—〉功能模型 (DFD+DD映射为体系/ 模块结构图) 结构/数据设计 概念设计 逻辑模型—〉数据模型 ( DFD+DD 映 射 为 ER 图 )
相 关
详细设计、编码、测试。。 。。。。
中级内聚度
通信性内聚:模块中各成份都将对数据结构的同一区域进行操作,以达到通信的目的。 过程性内聚:模块具有过程性内聚度指,模块内成分彼此相关,并且必须按特定的次 序执行。
低级内聚度
时间性内聚:模块包含的诸任务必须在同一时间段内执行,如一个初始化模块。 逻辑性内聚:模块完成的诸任务逻辑上相关,如,一个模块产生所有与类型无关的输 出。 偶然性内聚:模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系, 也很松散。
8.2 基本概念——模块化与信息隐藏 模块化与信息隐藏
模块化是软件结构设计技术的基础。可组合、分解和更换 的单元。 模块的基本属性:接口、功能(外部)、逻辑、状态(内 部)。 理论根据: C(P1+P2)>C(P1)+C(P2) 模块总数增加时,单独开发各个子模块的工作量之和减少 ,接口费用越来越大。P190 图8.2,存在一个最小成本的 模块数区域。 信息隐藏:数据细节、过程细节
内聚度和耦合度是判断软件结构 好坏的主要标准。 程序结构的表示工具:类树图, P193,图8.5 概念:深度、宽度、扇出、扇入、 可见域、流通域
8.2 基本概念——数据结构设计 数据结构设计
数据结构描述各数据分量之间的逻辑关系。 数据结构是影响软件总体结构的重要因素。数据 结构决定了数据的组织形式、访问方法和处理策 略。 数据抽象和信息隐藏两个概念是数据设计的基础。 数据设计方案不唯一。 数据结构完整讨论超出本书范围。
① ② ③ ④ ⑤ ⑥ ⑦
⑧ ⑨ ⑩
模块化:支持模块化软件的开发并提供描述接口的机制(例如直接表 示子程序 和块结构); 整体简洁性:设计表示相对易学、易用、易读; 便于编辑:支持后续设计、测试乃至维护阶段对过程设计进 行的修改; 机器可读性:计算机辅助软件工程(CASE)环境已被广泛接受, 一种设计表示 法若能直接输入并被CASE工具识别将带来极大便利; 可维护性:过程设计表示应支持各种软件配置项的维护; 强制结构化:过程设计工具应能强制设计人员采用 结构化构件,有助于产生 好的设计; 自动产生报告:设计人员通过分析详细设计的结果往往能突 发灵感,改进设计。 若存在自动处理器,能产生有关设计的分析报告必将增强设计人员在这 方面 的能力; 数据表示:详细设计应具备表示局部与全局数据的能力; 逻辑验证:能自动验证设计逻辑的正确性是软件测试 追求的最高目标,设计表 示愈易于逻辑验证其可测试性愈强; 可编码能力:一种设计表示若能自然地转换为代码则能减少开发 费用,降低出 错率。
逻辑设计、物理设计、实现等。。 。。。。
集成
8.2 基本概念——抽象与逐步求精 抽象与逐步求精
抽象是控制复杂性的基本策略。要求人们将注意 力集中在某一层次上考虑问题,忽略低层次细节。 软件工程每一步都是对较高一级抽象的解做一次 较具体化的描述。 例8.1 P187-188 逐步求精与抽象密切相关,层次结构上一层是下 一层的抽象,下一层是上一层的求精。 过程求精的同时伴随着数据求精。求精蕴含着某 种设计决策。
E(P1+P2)>E(P1)+E(P2)
8.2 基本概念——模块内聚度 模块内聚度
内聚度表示一个模块内部各元素彼此结合的紧密程度,是衡量一个模 块内部组成部分间整体统一性度量。内聚分7类,从高到低依次为: 高级内聚度
功能性内聚:模块内所有成分形成一个整体,完成单个功能。 顺序性内聚:模块内的各处理成份均与同一功能相关,且这些处理必须顺序执行,则称 顺序内聚。
关键字采用固定语法并支持结构化构件、数据说明机制和模块化; ② 处理部分采用自然语言描述; ③ 允许说明简单(标量、数组等)和复杂(链表、树等)的数据结构; ④ 子程序的定义与调用规则不受具体接口方式的影响。
①
8.3 过程设计技术和工具——过程设计工具比较 过程设计工具比较
好工具的属性:P202 (1)-(10)
8.2 基本概念——软件过程设计 软件过程设计
所谓过程,应包括有关处理的精确说明,诸如事件的顺 序、确切地判断位置、循环操作及数据组成等等。过程 设计的任务是描述算法细节。P194 图8.6 程序结构中任何模块的所有从属模块必将引用出现在该 模块的过程说明中。P195 图8.7
8.3 过程设计技术和工具——结构化程序设计 结构化程序设计
设计原则:力求高内聚、少用中内聚、不用低内聚。 一般高层模块内聚度低一些,较低层次模块的内聚度较高。
8.2 基本概念——模块耦合度 模块耦合度
耦合度表示软件结构内不同模块彼此间相互依赖的紧密程度,是衡量 软件模块结构质量好坏的度量,是对模块独立性的直接衡量指标。 耦合度的强弱取决于模块间接口的复杂性、进入或调用模块的位置、 接口传送数据的多少等。 耦合度也分为七级(按耦合度增序排列):
PDL符合。
8.4 设计规格说明与评审
规格说明:P204表8-2 复审的内容P203 :软件总体结构、数据结构、结构的界面、 模块过程细节。重点:
软件结构能否满足需求? 结构的形态是否合理? 层次是否清晰? 模块的划分是否遵循模型化和信息隐藏的思想? 系统的人机界面,各模块的接口,以及出错处理是否恰当?模块的 设计能否满足功能与性能要求? 选择的算法与数据结构是否合理,能否适应编程语言?等等。
1) 功能域(即一个特定控制结构的作用
8.3 过程设计技术和工具——判定表 判定表
清晰表示出复杂条件组合与各动作间的关系。 四个组成部分。左上部列出所有条件 条件,左下部是所有可 条件 能做的动作 动作,右上部是表示各种条件组合 条件组合的一个矩阵, 动作 条件组合 右下部是和每种条件组合相对应的动作 条件组合相对应的动作。 条件组合相对应的动作 判定表的每一列实质上是一条规则,规定了与特定的条 件组合相对应的动作。 特点:严格逻辑性,但不能描述循环处理特性
复审方式:正式、非正式 复审对事不对人
8.3 过程设计技术和工具——过程设计语言 过程设计语言
PDL 结构英语、伪码 PDL具有严格的关键字外部语法,用于定义控制结构和数据 结构;另一方面,PDL表示实际操作和条件的内部语法通常 又是灵活自由的。 PDL可以作到逐步求精:从比较概括和抽象的PDL程序起, 逐步写成更详细的精确的描述。 特点:P200
③ 控制耦合:传递的信息含有控制信息。控制耦合通常会增加系统的复杂性,适当
设计原则:尽量使用数据耦合,少用控制耦合,限制外部和公共耦合, 杜绝内容耦合。
8.2 基本概念——总体结构设计 总体结构设计
软件总体结构:程序结构,数据 结构 软件总体结构设计的目标:软件
总体结构设计的目标是产生一个模块 化的程序结构并明确各模块之间的控 制关系,此外还要通过定义界面,说明程 序的输入输出数据流,进一步协调程序 结构和数据结构。P192
第八章 软件设计基础
1. 软件设计过程 2. 软件设计基本概念 3. 过程设计技术和工具 4. 设计规格说明与评审
8.1 软件设计过程
开发阶段第一步,其基本任务是回答“如何做?” 软件设计过程是对程序结构、数据结构和过程细节逐步求精、复审并 编制文档的过程。 软件设计:总体结构设计、数据设计、过程设计。P185 图8.1 是软件开发过程中用以保证质量的关键步骤。 从工程角度,软件设计可分为概要设计和详细设计。