第6章6.4节 结构化设计概述

合集下载

结构化设计

结构化设计

⑷.按照设计改进原则细化和改进初始的SC图,获得最 终SC图。
⑸.给出模块接口描述。例如,进出模块的参数表,外
界输入输出以及从全程数据(区)得到的信息项等, 此外还要注明它的调用模块和被调用模块。
⑹.复审,如有错误,转⑵修改完善,否则进入详细 设计。
2 SD方法设计步骤
“事务”
区分事务中心和数据接 受通路
(2) 盒图(N—S图)
盒图是为了满足结构化需要,特别 是取消了程序流程图随意跳转规则后而 提出的。
软件工程
5种控制结构N—S图的符号
(2) 盒图(N—S图)
与程序流程图相比较,盒图具有如下明显的优点: l 在盒图中不能任意转移控制。 l 特定控制逻辑的作用范围明确,可以从盒图上一目了然。 l 很容易确定局部和全程数据的作用域。 l 很容易表现嵌套关系,也容易表示模块的层次结构。 l 所有的程序结构均用方框表示。因此程序的结构非常清晰。 l 程序只有一个入口、一个出口,完全能够满足单人口单出口的结 构化程序设计要求。 l 盒图形象直观,具有良好的可视性。循环的范围、条件语句的控 制范围等都是一目了然的。 l 盒图简单,易学易用。 主要缺点是: 当程序内嵌套的层数增多时,内层方框会越来越小,一方 面会增加画图难度,另一方面会影响图形的清晰度。
PDL的缺点:不如图形描述形象直观,很容易使人陷入 程序的具体细节中去,因此人们常常将PDL描述与具体的 图形描述结合起来使用。
软件工程
(5) 判定表
在进行软件设计时如遇到复杂的条件选择,有 必要使用一种描述机制来清晰地表示复杂的条件 组合与动作间的对应关系,判定表就是解决这一 问题的有力工具。
一张判定表由4部分组成。左上部列出所有条 件;左下部列出所有可能做的工作;右上部每一 列表示出各种条件的一种可能组合,填入“T” 表示条件成立,填入“F”表示条件不成立,空 白表示条件成立与否不影响。所以所有列表示条 件组合全部可能情况;右下部的每一列是和每一 种条件组合相对应的工作,填入“×”表示在该 列上部规定的条件下做该行左边列出的那项工作, 空白表示不做该项工作。

结构化系统分析与设计概述-课件

结构化系统分析与设计概述-课件

三、数据字典
数据字典是在新系统数据流程图的基础上,对所有数据项进一步定 义和描述的工具。
– 数据元素
– 数据结构
– 数据流
– 数据存储
17
第三节 系统分析
四、处理过程
处理过程的表达工具通常有判断树、判断表、结构式 语言等。
五、需求分析报告
组织情况调查 系统目标 业务流程描述 数据描述
18
判定树的例子
21
第四节 系统设计
一、系统设计的任务
根据经批准的系统需求报告,考虑计算机软硬件的要求,将用户 的需求转换成具体的实施方案,解决“怎么做”的问题,它将系 统分析阶段建立的逻辑模型转化为物理模型。 总体设计:又称为“概要设计”或“初步设计”,其主要内容包 括新系统总体结构框架设计、代码设计、输入/输出设计和处理流 程及模块功能的设计等。 详细设计:则是对每一个模块进行进一步的细化,描述每一个模 块采用何种算法和实现步骤,编制每一模块的详细设计说明书。
查询库存量
库存量≥出库量
库存量<出库量
进入出库登记
库存量>0
库存量=0
按出库量登记出库
修改领料单 进入出库登记
退出出库登记
按出库量登记出库
19
②判定表:使用表格形式表达逻辑判断过程的一种工具
不同的条件组合 1
条件与加工
234
库存量≥出库量
YYNN
库存量>0
பைடு நூலகம்
Y NY N
按出库量登记出库 √
按库存量登记出库
精品
结构化系统分析与设计概述
第一节 结构化系统分析与设计概述
一、软件的开发方法
结构化开发方法(生命周期法)→基本的软件 开发方法 原型法 面向对象开发方法

406-软件工程(第4版)-李代平-清华大学出版社

406-软件工程(第4版)-李代平-清华大学出版社

2021年6月22日
广东工业大学计算机学院
6
3. 算法设计 在总体设计的结构完成后,结构各个环节的实 现是多解的。这就需要用系统设计与分析的技 术来描述。可以用某种图形、表格、语言等工 具将每个模块处理过程的详细算法描述出来。 4. 界面设计 用户界面的设计现在显得比较重要,可以采用 字符用户界面设计、图形用户界面和多媒体人 机界面设计。这就要结合具体的系统来处理。
广东工业大学计算机学院
14
3. 组织形式 在详细设计阶段,当参加设计的人员比较多的 时候,有可能因为设计员的技术水平、设计风
格不同而影响到系统的质量。因此,要组织以
一个负责全部技术活动的三人为核心小组。小
组中有负责全部技术的主程序员,协调、支持
主程序员的后备程序和负责事务性工作的程序
管理员,再加上其他技术人员。这样做的目的
软件工程
Software Engineering
2021年6月22日
广东工业大学计算机学院
1
第6章 软件详细设计
本章内容: 6.1 详细设计的任务与方法 6.2 设计表示法 6.3 结构化程序设计 6.4 结构化定理
2021年6月22日
广东工业大学计算机学院
2
第6章 软件详细设计
在软件的总体设计中,完成了数据和系统 结构。已将系统划分为多个模块,并将它们按 照一定的原则组装起来,也确定了每个模块的 功能及模块与模块之间的外部接口。在理想的 情况下,详细设计是软件设计的第二阶段。在 这个阶段,由于开发系统内外的人员理论上都 使用一种自然语言,因此设计说明最好是用自 然语言。很清楚,这个阶段必须定义过程的细 节。
2021年6月22日
广东工的程序设计方法 在需求分析、总体设计中,都采用了自顶向下、 逐层细化的方法。分析中使用“抽象”这个手 段,上层对问题抽象、对模块抽象和对数据抽 象。而下层则进一步分解,进入另一个抽象层 次。在详细设计中,虽然处于“具体”设计阶 段,但在设计某个复杂的模块内部处理过程时, 仍可以采用逐步求精的方法。可以将其分解为 若干个模块来实现,降低处理细节的复杂度。

第6章 详细设计

第6章 详细设计

4)命令交互
9
2.人机界面设计过程
• 用户界面设计是一个迭代的过程。
创建设计模型
用原型实现设计模型
根据用户意见进行修改
由用户试用和评估
10
3.
人机界面设计指南
1)一般交互指南 一般交互指南涉及信息显示、数据输入和系统整体控制, 因此,这类指南是全局性的,忽略它们将承担较大风险。
(1) 保持一致性。
20
• 从20世纪40年代末到70年代中期,程序流程图一直是软件 设计的主要工具。 • 它的主要优点是对控制流程的描绘很直观,便于初学者掌 握。由于程序流程图历史悠久,为最广泛的人所熟悉,尽 管它有种种缺点,许多人建议停止使用它,但至今仍在广 泛使用着。不过总的趋势是越来越多的人不再使用程序流 程图了。 • 程序流程图的主要缺点如下: (1) 程序流程图本质上不是逐步求精的好工具,它诱使程序 员过早地考虑程序的控制流程,而不去考虑程序的全局结 构。 (2) 程序流程图中用箭头代表控制流,因此程序员不受任何 约束,可以完全不顾结构程序设计的精神,随意转移控制 (3) 程序流程图不易表示数据结构。
7
6.2
人机界面设计
人机界面的设计质量,直接影响用户对软件 产品的评价,从而影响软件产品的竞争力和 寿命,因此,必须对人机界面设计给予足够 重视。
近年来,人机界面在系统中所占的比例越来 越大,在个别系统中人机界面的设计工作量 甚至占总设计量的一半以上。
重要啊!!
8
1.
人机界面设计问题
设计人机界面中的4个问题: 1)系统响应时间 2)用户帮助设施 3)出错信息处理
(9) 提供对用户工作内容敏感的帮助设施。
(10) 用简单动词或动词短语作为命令名。

软件详细设计第6章软件总体设计

软件详细设计第6章软件总体设计

第6章 软件总体设计
随着对抽象不同层次的展开,过程抽象(Procedural Abstraction)和数据抽象(Data Abstraction)就建立了。所谓过 程抽象,是指一个命名的指令序列,它具有一个特定的和受 限的功能。例如有一个进入某场合的词“入口”,对于这个 词进行分析,会发现其隐含了走到门口、伸出手、握住门把、 旋转门把和推门、走进门的一系列的过程序列。数据抽象则 是一个已命名的说明数据对象的数据集合。例如一个部门员 工的“工资单”这个数据对象,实际上是许多不同方面的信 息,如单位、姓名、工资总额、扣除房租、水电费、煤气费、 电话费、电视费、实得金额等的集合。在说明这个数据抽象 名时,指的是所有数据。控制抽象(Control Abstraction)是软 件设计中的第三种抽象形式。像过程抽象和数据抽象一样,。
第6章 软件总体设计 图6.1 软件设计与软件工程
第6章 软件总体设计
由图6.1可以看出,在软件需求提供的信息(information)、 功能(functional)和行为(behavioral)模型上,设计阶段可以使 用任何一种设计方法。设计阶段包括把分析阶段所建立的信 息域模型变换为数据结构,这种数据结构是软件实现所需要 的;也包括定义程序结构构件(structural components)之间的 相互关系的体系结构(architectural)设计;还包括变换结构构 件为软件的过程描述的过程(procedural)设计。源代码生成并 通过测试之后,进行软件的组装(integrate)和确认(validate)。
在设计中所作的决策将最终影响软件实现的成功与否, 也影响软件维护的难易程度。所以,在软件设计过程中的这 些决策是开发阶段非常关键的一步。
第6章 软件总体设计

第6章 详细设计 软件工程-课件

第6章 详细设计  软件工程-课件
如果再加上允许使用LEAVE(或BREAK)结 构,则称为修正的结构程序设计。
图6.2 其他常用的控制结构
6.2 人机界面设计
人机界面的设计质量,直接影响用户对软 件产品的评价,从而影响软件产品的竞争力 和寿命
6.2.1 设计问题
4个问题: 系统响应时间、 用户帮助设施、 出错信息处理 命令交互。
“结构程序设计是尽可能少用GO TO语句 的程序设计方法。最好仅在检测出错误时才 使用GO TO语句,而且应该总是使用前向 GO TO语句。”
如果只允许使用顺序、IF-THEN-ELSE型 分支和DO-WHILE型循环这3种基本控制结 构,则称为经典的结构程序设计;
如果除了上述3种基本控制结构之外,还允 许使用DO-CASE型多分支结构和DO-UNTIL 型循环结构,则称为扩展的结构程序设计
集成
附加
(1) 在用户与系统交互期间,是否在任何时候都能 获得关于系统任何功能的帮助信息?有两种选择: 提供部分功能的帮助信息和提供全部功能的帮助信 息。
(2) 用户怎样请求帮助?有3种选择:帮助菜单,特 殊功能键和HELP命令。
(3) 怎样显示帮助信息?有3种选择:在独立的窗口 中,指出参考某个文档(不理想)和在屏幕固定位置 显示简短提示。
用户界面的评估周期如下所述:
完成初步设计之后就创建第一级原型;
用户试用并评估该原型,直接向设计者表述对界 面的评价;
设计者根据用户意见修改设计并实现下一级原型。
上述评估过程持续进行下去,直到用户感 到满意,不需要再修改界面设计时为止。

也可以在创建原型之前就对用户界面的设 计质量进行初步评估。
在创建了用户界面的设计模型之后,可以 运用下述评估标准对设计进行早期复审。

软件工程结构化设计

软件工程结构化设计

开发阶段的信息流
从工程管理的角度来看,软件设计分两步完成。
➢ 概要设计,将软件需求转化为数据结构和软件 的系统结构。
➢ 详细设计,即过程设计。通过对结构表示进行 细化,得到软件的详细的数据结构和算法。
系统设计过程示意图
需求开发
概要设计阶段
体系结构设计
详细设计阶段
用户界面设计 数据库设计 模块设计
程序结构
程序结构表明了程序各个部件(模块 )的组织情况,是软件的过程表示。
结构图反映程序中模块之间的层次调用关系和联 系:它以特定的符号表示模块、模块间的调用关 系和模块间信息的传递
① 模块:模块用矩形框表示,并用模块的名字标 记它。
② 模块的调用关系和接口:模块之间用单向箭头 联结,箭头从调用模块指向被调用模块。
结构图---通过使用矩形和连接线来表示系统的不同模块 以及其活动和子活动的工具。适用于变换型结构和事务 性结构的目标系统。
伪代码—自然语言和程序设计语言共同表示程序结构。
结构化设计的任务
任务:在设计阶段,主要是将需求分析阶段得到 的DFD转换为 软件结构和数据结构。
目标:划分子系统并使子系统之间是高内聚低耦 合的,从而提高软件的可理解性和可维护性。
总体设计的启发规则
将软件的体系结构按自顶向下方式,对各个层次的过程细 节和数据细节逐层细化,直到用程序设计语言的语句能够 实现为止,从而最后确立整个的体系结构。
软件结构包括两部分。程序的模块结构和数据的结构 软件的体系结构通过一个划分过程来完成。该划分过程从
需求分析确立的目标系统的模型出发,对整个问题进行分 割,使其每个部分用一个或几个软件成份加以解决,整个 问题就解决了
第4章 结构化设计
本章要点 结构化设计任务、工作内容及步骤 总体设计的过程 设计原则、启发规则 面向数据流的设计方法 详细设计任务及原则 代码及用户界面设计 基于组件的设计方法 结构化设计说明书结构

结构化设计方法2篇

结构化设计方法2篇

结构化设计方法2篇第一篇:结构化设计方法1. 简介结构化设计是一种基于模块化和层次化的系统设计方法,可以将复杂的系统划分成若干个模块,并按照一定规律组合起来,确保系统的可靠性、可维护性和可扩展性等方面的优良特性。

本文将详细介绍结构化设计的方法和步骤。

2. 结构化设计的方法2.1 模块化设计首先,系统设计要划分成若干个模块,每个模块要尽可能独立,只与周围的模块相互通信,而不与其他的模块产生相互的影响。

通常情况下,项目组根据业务需求和技术要求,选择最合适的模块划分方案。

一般来说,划分一个系统成若干个独立的模块是比较容易的,需要在设计开始之前,对系统有一个清晰的概念。

2.2 层次化设计接下来,系统设计应该按层次进行划分,每一层应该有一个特定的作用,只负责该层对上层或者下层的交互。

通常情况下,项目组会根据系统的性质和组织结构,选择最佳的层次划分方式,以此保证系统架构的稳定性和可扩展性。

2.3 组合设计在模块化和层次化设计的基础上,项目组需要通过组合设计,将若干个独立的模块组合成一个完整的系统。

在组合设计中,项目组需要注意一些关键问题,例如,如何识别和管理组件之间的依赖关系,如何处理组件之间的冲突等。

2.4 接口设计在结构化设计过程中,项目组需要关注各个模块之间的接口设计。

良好的接口设计可以有效地防止信息泄露或者组件之间的不协调,确保系统的稳定性和可靠性。

在接口设计中,项目组需要关注数据格式、消息交换方式、处理错误的机制等方面的设计。

3. 结构化设计的步骤3.1 确定设计目标在开始结构化设计之前,首先要确定设计目标。

具体而言,需要定义系统的范围、预期目标、适用的技术和平台等方面的问题。

3.2 分析需求和约束条件分析需求和约束条件是结构化设计的前提。

在这一步骤中,项目组需要使用业务分析工具和技术分析工具,定义系统需要解决的问题,识别约束和限制条件,以此为设计提供方向。

3.3 设计系统框架基于需求分析和约束条件,项目组应该设计系统的框架。

软件工程04结构化设计

软件工程04结构化设计

软件工程04 结构化设计引言在软件工程中,结构化设计是一种重要的设计方法论,它在软件开发过程中起到了关键的作用。

结构化设计是将软件系统划分为模块,并确定模块之间的关系,以便在系统开发和维护过程中能够高效地进行各个模块的设计、编码和测试。

本文将介绍软件工程中的结构化设计方法,讨论模块划分和模块规约的原则,并提供一些实际案例,以帮助读者更好地理解和应用结构化设计方法。

1. 结构化设计概述结构化设计是一种将软件系统划分为多个模块的设计方法。

它的目的是将软件系统的复杂性分解为更小、更简单且易于理解的部分。

结构化设计遵循一些基本原则,包括模块化、信息隐藏和高内聚低耦合等。

1.1 模块化模块化是将软件系统分解为多个模块的过程。

模块是软件系统的功能单元,它可以独立地被设计、实现和测试。

一个好的模块应该具有高内聚性,即模块内的功能相关性要高,同时应该具有低耦合性,即模块之间的依赖关系要尽量减少。

1.2 信息隐藏信息隐藏是一种保护软件系统内部实现细节的方法。

它通过将模块的内部实现细节隐藏起来,提供模块的接口来进行模块间的通信。

这样可以减少模块间的依赖关系,增强模块的独立性。

1.3 高内聚低耦合高内聚低耦合是软件设计的一个重要原则。

高内聚指的是模块内部的功能相关性强,一个模块应该只负责一项功能。

低耦合指的是模块之间的依赖关系弱,模块之间应该尽量减少直接的联系。

2. 模块划分原则在进行结构化设计时,需要根据软件系统的需求和功能进行模块划分。

以下是几个常用的模块划分原则:2.1 自顶向下自顶向下是一种自上而下的设计方法,即从整体系统开始,逐步分解为子模块,细化到最小的功能单元。

这种方法可以保证系统的整体一致性和可维护性。

2.2 自底向上自底向上是一种自下而上的设计方法,即从最小的功能单元开始,逐步组合为更大的模块,最终形成整个系统。

这种方法可以保证每个模块的独立性和重用性。

2.3 数据流图数据流图是一种描述软件系统功能和数据流动的图形工具。

第六章 结构化系统设计

第六章 结构化系统设计
?信息系统功能?信息系统功能能否满足用户需要能否满足用户需要?系统的效率?系统的可靠性?系统的工作质量?系统的可变更性?系统的经济性系统的工作效率系统抗干扰能力系统提供信息准确方便实用清晰系统修改和维护的难易程度系统收益与支出比系统生命周期经费开销研制20分析设计35编程15调试50维护8020508090可变更性好的系统效率不高可以提高效率质量不好可以改进质量可靠性差可以加强可靠性反之可变更性差的系统修改不如重做系统反之可变更性差的系统修改不如重做系统寿命自然就短
怎么做?如何实现系统说明书 规定的系统功能,成果是系统 的物理模型。 物理模型 物理模型 物理模型
系统设计
逻辑模型
哪个好?
评价选择物理模型
在评价选择物理模型前,先要讨论评价信息系统 的标准。 信息系统的优劣程度取决于它为管理工作提供信 息服务的质量。具体从六个方面衡量。 信息系统功能 能否满足用户需要 系统的效率 系统的工作效率 系统的可靠性 系统抗干扰能力 系统的工作质量 系统提供信息准确 方便 实用 清晰 系统的可变更性 系统修改和维护的难易程度 系统的经济性 系统收益与支出比
系统生命周期经费开销
分析设计 35%
研制 20%
编程 15% 调试 50%
维护 80%
20%*50%+80%=90%
可变更性好的系统—— 效率不高可以提高效率 质量不好可以改进质量 可靠性差可以加强可靠性 反之,可变更性差的系统,修改不如重做,系统 寿命自然就短。 所以,系统设计必须从保证系统的变更性入手, 设计出一个易于理解、容易维护的系统。

图 a:模块 A将参数“平均”或者“最高”传递给模 块B,模块B按这个参数的值是“平均”还是“最高”去 取相应成绩回送到A。这里参数“平均/最高”控制模块B 如何工作,这就是控制耦合。 控制耦合给理解和修改带来了不便。第一,需要理 解开关量;第二,模块A设开关量,还要记住开关值是什 么,以便从模块B返回后进行相应处理。在系统设计中这 种耦合是可以避免的。图b所示的形式即可,模块A根据 需要调用模块B1或B2。

软件工程:结构化设计概念

软件工程:结构化设计概念

•设计的定义
•整体框架
•对设计方法的需求
•总体设计层概述
概念
•设计的定义
•整体框架
•对设计方法的需求
•总体设计层概述
概念
•设计的定义
•整体框架
•对设计方法的需求
•总体设计层概述
概念
•设计的定义
•整体框架
•对设计方法的需求
•总体设计层概述
概念
•设计的定义
•整体框架
•对设计方法的需求
•总体设计层概述
概念
•设计的定义
•整体框架
•对设计方法的需求
•总体设计层概述
概念
•设计的定义
•整体框架
•对设计方法的需求
•总体设计层概述
概念
•设计的定义
•整体框架
•对设计方法的需求
•总体设计层概述
概念
•设计的定义
•整体框架
•对设计方法的需求
•总体设计层概述
概念。

结构化设计之概要设计

结构化设计之概要设计
软件系统设计方法
软件系统设计方法
之概要设计
前言
如果软件没有设计会怎么样? • 杂乱无章 • 无法传承 • 协作困难 • 交付困难
模块
分析阶段: 主要解决软件系统“做什么” 设计阶段: 主要解决软件系统“怎么做”
设计的内容:软件系统的结构, 包括数据结构、程序结构; 程序系统应由许多较小的单元 组成(右图),这种单元可称 为模块;
•对篇幅较大的模块 应该检查一下它是否包含了好几个功能,是否可以从 中分离出一些 功能来构成同层或下一层的其他模块。 •对篇幅较小的模块 可以考虑是否同它的调用模块合并。
扇出和扇入
扇出: 一个模块调用其他模块的 个数,称为该模块的扇出。 扇出越大,设计该模块时 需要考虑的问题就越多, 因而复杂性越高
模块
模块的特性 • • • • • 输入 输出 功能 内部数据 程序代码
模块的外部特性: 输入输出和功能构成了一个模块的外貌 模块的内部特性: 内部数据和程序代码
功能是指模块所做的工作
“由外向里”是较合理的一种思考过程,所以应先确定模块的外部特 性,再确定其内部特性。
概要设计
概要设计( 又称总体设计 )的基本任务Байду номын сангаас • 将系统划分成模块 • 决定每个模块的功能 • 决定模块的调用关系 • 决定模块的界面,即模块间传递的数据
结构化设计(SD)
SD方法使用的描述方式: 结构图(右图),它描述了程 序的模块结构,并反映了块 间联系和块内联系等特性
结构图中的主要成分有: • 模块 • 调用 • 数据
结构图描述方式
符号: • 菱形符号表示一个条件(图1) • 弧形箭头表示循环(图2) • 双竖线的方框表示现成的模块(图3) • 递归带箭头的曲线指向初始位置(图4)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(3)信息隐蔽
(Information Hiding)
模块所包含的信息,不允许 其它不需要这些信息的模块访问 ,独立的模块间仅仅交换为完成 系统功能而必须交换的信息。
软件质量因素:

可维护性
可靠性 可理解性 效率


信息隐蔽的目的:
提高模块的独立性,减少修 改或维护时的影响面。
(4)信息局部化
•软件(体系)结构的内涵
软件的组成部分
软件的层次关系
模块的内部处理逻辑
模块之间的界面
•软件体系结构的风格
– 从物理位置的角度来看,常见的有单主机结 构 、 C/S ( Client/Server ) 结 构 、 B/S ( Browser/Server)结构等; – 从内部逻辑角度来看,常见的有以数据为中 心、数据流、调用和返回、面向对象和层次 式等风格的体系结构。
分解 问题,隐蔽细节
底层模块
复杂问题 较小问题
分解 不但可降低解决问题的难度,而且可减小解题所需 的总的工作量。
比如,将问题(P1+P2)分解为P1,P2 设函数C(x)定义问题 x 的复杂程度 函数E(x)确定解决问题 x需要的工作量 对问题P1和P2,如果: C(P1) > C(P2) 显然: E(P1) > E(P2) 有规律:C(P1+P2) > C(P1)+C(P2)
第二部分 软件任务、设计原理与原则 难点:设计任务、设计原理与原则 知识点: 6.4.1 任务与步骤 6.4.2 设计原则与原理
• 软件设计目标和目的 软件需求:解决“做什么”
软件设计:解决“怎么做”
• 软件设计的任务
问题结构(软件需求) 软件结构 从软件需求规格说明书出发,形成软件的 具体设计方案。
把关系密切的软件元素物理地 放得彼此靠近。 优点:可维护性好 可靠性好 可理解性好
(5)模块的独立性
模块独立性的概念
模块独立的含义:
模块完成独立的功能
符合信息隐蔽和信息局部化原则
模块间关连和依赖程度尽量小
•模块独立性的度量
模块独立性取决于模块的 内部和外部特征。 SD方法中的定性的度性指标: • 模块之间的耦合性 • 模块自身的内聚性

将分析模型转换为软件设计


工 据 数据 规 对 E-R图 象 数据 流图 约 描 字典 述 状态变迁图
控制规约
过程设计
接口设计
体系结构设计 数 据 设 计
分析模型
设计模型
6.4.1 设计任务与步骤
1.概要设计(总体设计) 确定软件的结构以及各组成成分(子系统或模块)之 间的相互关系。 也就是,将系系统分解成模块,确定每个模块的功 能、接口(模块间转递的数据)技巧调用关系,并用 模块及模块之间的调用关系来构建软件的体系结构。 表示软件结构的图形工具:详见“6.5 软件结构设计 ” 表示模块内部算法的工具:详见“6.7 过程设计”
逻辑内聚模块
A B C
公用代码段
E
F
G
E、F、G逻辑 功能相似,组 成新模块EFG
A1
B1
C1
A
B EFG
C
公用代码段
EFG模块内部逻辑
缺点:增强了耦合程度(控制耦合) 不易修改,效率低
C.时间内聚(经典内聚)
模块完成的功能必须在同一时 间内执行,这些功能只因时间因 素关联在一起。
例如:初始化系统模块、 系统结束模块、 紧急故障处理模块等 均是时间聚合模块.
模块代码重叠
Entry1 …… Entry1 ……
多入口模块
最不好的耦合形式 !!!
模块化设计的原则和目标
耦合是影响软件复杂程度和 设计质量的重要因素
目标:建立模块间耦合度尽可能
松散的系统
如何降低模块间耦合度:
(1) 尽量使用数据耦合 少用控制耦合 限制公共耦合的范围 坚决避免使用内容耦合 (2) 降低接口的复杂性(主要 是模块参数的复杂度)
映射
常用的软件设计方法有: 面向数据流的结构化设计方法((SD, Structured Design)、 面向对象设计方法(OOD,Object-Oriented Design) 面向数据结构的Jackson系统开发(JSD, Jackson System Development)方法。JSD方法 现在相对比较少用,本书不做介绍,需要时请 查阅参考文献[1],面向对象设计方法将在第7章 介绍,本章针对结构化设计方法作详细介绍。
E.外部耦合
一组模块均与同一外部环境关 联(例如,I/O模块与特定的设备、 格式和通信协议相关联),它们之 间便存在外部耦合。 外部偶合必不可少,但这种模块 数目应尽量少。
F.公共耦合(公共数据区耦合)
一组模块引用同一个公用数据
区(也称全局数据区、公共数据环境 )。


公共数据区指: 全局数据结构 共享通讯区 内存公共覆盖区等
公共耦合举例

B
公共数据区
C
模块A、B、C间存在错综复杂的联系
公共耦合存在的问题:
(1)软件可理解性降低 (2)诊断错误困难 (3)软件可维护性差, (4)软件可靠性差
(公共数据区及全程变量无保护措施)
慎用公共数据区和全程变量!!!
G.内容耦合
A B A B
一模块直接访问 另一模块的内部 信息 (程序代码 或数据)
D.过程内聚(顺序性组合)
模块内各处理成分相 关,且必须以特定次序执 行。
过程内聚模块
读入 成绩单 审查 成绩单 统计 成绩 打印 成绩
读入并审查 成绩单
统计并打印 成绩单
E.通信内聚
模块内各部分使用相同 的输入数据,或产生相同的 输出结果。
通信内聚模块例
职工工 资记录
产生工 资报表
职工工 资报表 平均 工资
将标记耦合修改为数据耦合举例
计算水电费
本月 用水量
水费
本月 用电量
电费 计算电费
计算水费
D.控制耦合
一个模块向下属模块传 递的信息 (开关量、标志等 控制被调用模块决策的变量 ) 控制了被调用模块的内部 逻辑。
控制耦合举例
B
读入数据 s/d?
A
S(水费)/d(电费) 成绩 (控制信号)
计算水费
虽然上述任务是松散相关的,但每一项 都是独立的功能实体,最好作为独立的模 块完成。
A.偶然内聚(巧合内聚)
模块内各部分间无联系。
例:
A
M
B
C
MOVE O TO R READ FILE F MOVE S TO T 模块M中的三个语句没有任何联系 缺点:可理解性差, 可修改性差
B.逻辑内聚
把几种相关功能(逻辑上 相似的功能)组合在一模块内 ,每次调用由传给模块的参数 确定执行哪种功能。

结构化设计方法是将结构化分析得到的数据流 图映射成软件结构的一种设计方法,是一种面 向数据流的方法,如图6-12所示。结构化方法 强调模块化、自顶而下逐步求精、信息隐蔽和 低藕合高内聚等设计原则。SA、SD和SP(结 构化程序设计)构成完整的结构化方法体系。 结构化设计的工作内容大致依次为制定规范、 软件结构和接口设计、数据/类设计、过程(部 件级)设计、测试计划制定、文档编写和审查 与复审等。
E(P1+P2) > E(P1)+E(P2)
"各个击破"理论
模块化和软件成本
软件总成本
成 本 或 工 作 量
最小成本区域
集成成本
M
成本/模块
模块数量
(2)抽象与逐步求精
(1)抽象(Abstraction)
抽象(Abstraction)是在软件设计的规模逐渐增大的情况下 ,控制复杂性的基本策略。抽象的过程是从特殊到一般的过程 ,也就是说当设计高层模型或结构时时把低层概念的抽象为一 个整体,只考虑其在高层中的外在特征而不考虑其内部细节。 软件设计中主要抽象手段有过程抽象和数据抽象。过程抽象( 也称功能抽象)是指任何一个完成明确定义功能的操作都可被 使用者当作单个实体看待,尽管这个操作实际上是由一系列更 低级的操作来完成的;数据抽象是指定义数据类型和施加于该 类型数据对象的操作,并限定了数据对象的取值范围,只能通 过这些操作修改和观察数据。
•软件结构度量术语
(一个模块 扇出 直接调用 的模块数)
深 度
(模块的 层数) (调用一个给定模 扇入 块的模块个数)
宽度
(同一层最大模块数)
•软件结构的层次规则
只有一个顶层(0层)模块
0层外任一模块都会在它 的邻层存在一模块与它有关 同层模块间不发生联系
2.详细设计 确定模块内部的算法和数据结构,产 生描述各模块程序过程的详细文档。 也就是,对模块实现细节的设计,采 用结构化程序设计(Structured Programming,SP)。 SA、SD和SP构成完整的结构化方法体 系。
6.4.2
设计原则与原理
1.设计原则 Davis提出的软件设计原则: • 设计过程不应该有 "隧道视觉." • 设计对分析模型应该是可追踪的。 • 设计不应该再创造。 • 设计应该在真实的世界问题和它的软件间 存在的“智力的距离”减到最少。 • 设计应该展现统一和整合。 • 设计应该结构化以适应变化。
1)耦合性
模块间相对独立性(相互依 赖程度)的度量。
耦合性越高,模块独立性越弱。
紧密耦合-有 很多依赖关系 松散耦合-有 少量依赖关系
无耦合-没有依赖关系
影响耦合强度依赖的因素:
•一模块对另一模块的引用 •一模块向另一模块传递的数据量 •一模块施加到另一模块的控制的数量 •模块间接口的复杂程度
数据耦合举例
开发票 单价 数量
相关文档
最新文档