第5章 总体设计

合集下载

第5章 总体设计

第5章 总体设计

第 5 章 总 体 设 计
通信内聚:如果模块中所有元素都使用同一个输入数
据和(或)产生同一个输出数据,则称为通信内聚。
25
软 件 工 程
高内聚也有两类: 顺序内聚:如果一个模块内的处理元素和同一个功 能密切相关,而且这些处理必须顺序执行(通常一个 处理元素的输出数据作为下一个处理元素的输入数 据),则称为顺序内聚。
设 计
8
软 件 工 程
5. 设计软件结构
通常程序中的一个模块完成一个适当的子功能。应该把 模块组织成良好的层次系统,顶层模块调用它的下层模块以 实现程序的完整功能,每个下层模块再调用更下层的模块, 从而完成程序的一个子功能,最下层的模块完成最具体的功 能。软件结构(即由模块组成的层次系统)可以用层次图或结 构图来描绘,第5.4节将介绍这些图形工具。
逻辑内聚:如果一个模块完成的任务在逻辑上属于 相同或相似的一类,则称为逻辑内聚。
第 5 章 总 体 设 计
时间内聚:如果一个模块包含的任务必须在同一段 时间内执行,就叫时间内聚。
24
软 件 工 中内聚主要有两类: 程
过程内聚:如果一个模块内的处理元素是相关的,而 且必须以特定次序执行,则称为过程内聚。 (使用程序流程图作为工具设计软件时,常常通过研究 流程图确定模块的划分,这样得到的往往是过程内聚 的模块)
第 5 章 总 体 设 计
如果数据流图已经细化到适当的层次,则可以直接从数 据流图映射出软件结构,这就是第5.5节中将要讲述的面向 数据流的设计方法。
9
软 件 工 程
6. 设计数据库
对于需要使用数据库的那些应用系统,软件 工程师应该在需求分析阶段所确定的系统数据需 求的基础上,进一步设计数据库。 在数据库课中已经详细讲述了设计数据库的 方法,本书不再赘述。

第五章总体设计

第五章总体设计

外部表示 信息
输入流 变换流
内部表示
事务
输出流 时间
T
事务中心 活动通路
事务中心 T 完成下述任务: 接受输入数据(事务) 分析每个事务以确定它的类型 根据事务类型选取一条活动通路
5 面向数据流的设计方法(续) 精化数据流图
? 流类型
区分事务中心和 数据接收通路
区分输入和输出 分支
映射成事务结构
映射成变换结构
控产制生
mpg
mph显
产生

mpg显




英里

驱动仪 表板
铃声
输 入 控 制
Ca
MpCg t
Ce
显示
产生 里程 显示
显示
D
C
A B
Cm Ca
C
B
D
接受传感 器信号
A
驱动仪表板
转换成rpm 收集SPS 读旋转信号
计算gph
读燃料流 确定 加/减速
数字仪表 板控制
加速/减 速显示
显示 mpg
显示 mph
Flag=1?
S1
S2
内聚:一个模块内各个元素彼此结合的紧密程度。
低内聚
偶然内聚:一个模块完成一组任务,任务之间的关系很松散。公共语句。 逻辑内聚:若干个逻辑功能类似的任务组成一个模块。 时间内聚:若干个任务必须在同一段时间内执行。如初始化工作。
模块A 模块B 模块C
模块A
模块A 模块B 模块C
S1;
• 模块化:把程序划分成若干个模块,每个模块完成一个子功能,
把这些模块集总起来组成一个整体,可以完成指定的功能,满足问题的 功能。
模块 是数据说明、可执行语句等程序对象的说明。

第5章_总体设计 数据库原理

第5章_总体设计 数据库原理
第5章 总体设计
Contents
5.1 设计过程 5.2 设计原理 5.3 启发规则 5.4 描绘软件结构的图形工具 5.5 面向数据流的设计方法
闽南科技学院计算机系
软件设计宣言:Mitch Kapor • “什么是设计?设计是你站在两个世界——技 术世界和人类的目标世界——而你尝试将这两 个世界结合在一起……”。 罗马建筑批评家Vitruvius提出的观念: • “设计良好的建筑应该展示出坚固、适用和令 人赏心悦目”。
• 耦合衡量不同模块彼此间互相依赖(连接)的紧密
程度。耦合要低,即每个模块和其他模块之间的 关系要简单;
• 内聚衡量一个模块内部各个元素彼此结合的紧密
程度。内聚要高,每个模块完成一个相对独立的 特定子功能。
闽南科技学院计算机系
1. 耦合
• 耦合:是对一个软件结构内不同模块之间互连程 • • •
度的度量。 要求:在软件设计中应该追求尽可能松散耦合的 系统。 可以研究、测试或维护任何一个模块,而不需要 对系统的其他模块有很多了解; 模块间联系简单,发生在一处的错误传播到整个 系统的可能性就很小; 模块间的耦合程度强烈影响系统的可理解性、可 测试性、可靠性和可维护性。
A Flag B Flag
f1
f2

fn
闽南科技学院计算机系
• • • • • • • • • • • • • • • • • • • • • • • •
#include <stdio.h> static bool Signal; void AdultOrNot(int age) { if (age > 18) { Signal = 1; } else { Signal = 0; } } void WineOrNot() { if (Signal == 1) { printf("%s\n", "您已到达法定饮酒年龄!"); } else { printf("%s\n","您未到达法定饮酒年龄!"); } }

第5章 总体设计

第5章 总体设计

第5章总体设计软件总体设计又称概要设计,它的主要任务就是软件结构的设计,为了提高设计的质量,必须根据软件设计的原理改进软件设计。

本章内容主要内容包括:软件总体设计的基本任务,软件设计的基本原理,软件结构以及软件结构设计优化准则,面向数据流的设计方法,IDEFO图的设计方法,以及表示软件结构的另一种图形工具——HIPO 图。

5.1 基础知识5.1.1 软件总体设计的基本任务软件总体设计阶段是概要地回答系统应该如何实现。

因此要把握与详细设计的区别。

要完成如下任务。

1.软件系统结构设计按照结构化理论,实现一个系统目标需要程序和数据。

所以必须设计出组成这个系统的所用程序结构和数据库(文件)。

具体方法如下:(1)采用某种设计方法,将一个复杂的系统按功能划分成模块。

(2)确定每个模块的功能。

(3)确定模块之间的调用关系。

(4)确定模块之间的接口,即模块之间传递的信息。

(5)评价模块结构的质量。

2.数据结构及数据库设计在结构化理论软件系统中,尤其是对于大型数据处理的软件系统,除了系统结构设计外,数据结构与数据库设计是很重要的。

1)数据结构的设计根据需求分析阶段对系统数据的组成,操作约束和数据之间的描述,确定数据结构特性。

总体设计阶段利用逐步细化的方法对数据结构进行深入的设计。

2)数据库的设计一般的软件系统都有数据的存储,存储要借助数据库技术。

数据库的设计指数据存储文件的设计,设计包括概念设计,逻辑设计和物理设计。

3.网络系统设计如果采用的是网络环境,则要进行网络系统的设计。

4.软件总体设计文档总体设计说明书是总体设计阶段结束时提交的技术文档。

按国际GB8576-88《计算机软件产品开发文件编制指南》的规定,软件设计文档可分为“总体设计说明书”,“详细设计说明书”和“数据库数据说明书”。

5. 评审在该阶段,对涉及部分是否完整地实现需求中的功能,性能等要求,设计方案的可行性,关键的处理及内外部接口定义正确性,有效性以及各部分之间的一致性等,都一一进行评审。

《软件工程》课件 第5章总体设计

《软件工程》课件 第5章总体设计

模块划分的工具,因此,这样得到的模块往往具有过程内聚的
特性
2014年春 • 软件工程
过程内聚模块
读入 成绩单
审查 成绩单
统计 成绩
打印 成绩
读入并 审查成绩单
统计并 打印成绩单
2014年春 • 软件工程
(5) 通信内聚:
一个模块中的各个部分使用同一个输入数据或产生同一个输出数 据,则称该模块的内聚为通信内聚。 由于通信内聚模块中的各个部分都与某个共同的数据密切相关,
2014年春 • 软件工程
时间内聚模块中的各个部分在时间上的联系,其内聚
程度比逻辑内聚高一些。
往往会和其他相关模块有着紧密的联系,因而会造成
耦合性的增加。
2014年春 • 软件工程
(4) 过程内聚:
一个模块中的各个部分相关,并且必须按特定的
次序执行,则称该模块的内聚为过程内聚。
• 在结构化程序中,通常采用程序流程图作为设计软件和确定
内容耦合是所有耦合关系中程度最高的,会使因 模块间的联系过于紧密而对后期的开发和维护工作带 来很大的麻烦。
许多高级程序设计语言在设计时就充分考虑到了内容耦合的危 害,因而在规定语法时就已经杜绝了任何形式的内容耦合。
2014年春 • 软件工程
内容耦合
A
B
A
一模块直接访问 另一模块的内部 信息 (程序代码 或数据)
2014年春 • 软件工程
1. 耦合
设计目标:低耦合
2014年春 • 软件工程
(1) 数据耦合: 两个模块之间仅通过模块参数交换信息,且交
换的信息全部为简单数据。
数据耦合的耦合性最低。通常软件中都包含有 数据耦合。
2014年春 • 软件工程

软件工程导论第5章 总体的设计

软件工程导论第5章 总体的设计

⑵内聚:衡量一个模块内部各个元素彼此结合的紧密 程度。
5.2 续
耦合
软件结构中各个模块之间相互关联程度的度量。 常见的耦合: • ⑴非直接耦合 • ⑵数据耦合 • ⑶控制耦合 • ⑷特征耦合 • ⑸公共环境耦合 • ⑹内容耦合 设计原则:尽量使用数据耦合,少用控制耦合, 限制公共耦合的范围,避免使用内容耦合。
划分模块时尽量做到高内聚,低耦合,保持模块相对 独立性,并以此原则优化初始的软件结构。
⑴如果若干模块之间耦合强度过高,每个模块内功能 不复杂,可将它们合并,以减少信息的传递和公共区 的引用。
⑵若有多个相关模块,应对它们的功能进行分析,消 去重复功能。
设计准则
5.3 续
⑵模块规模应该适中
过大的模块往往是由于分解不充分。 过小的模块开销大于有效操作。
设计方法:定义一些不同的“映射”,把数据流 图变换成软件结构。
结构化设计方法——面向数据流的设计方法。
变换流
5.5 续
信息沿输入通路进入系统,同时由外部形式变换 成内部形式,进入系统的信息通过变换中心,经 加工处理以后再沿输出通路变换成外部形式离开 软件系统。当数据流图具有这些特征时,这种信 息流就叫作变换流。
B
C
D
(a) 基 本 形 式
(b) 顺 序
B
C
(c) 选 择
B
(d) 重 复
结构图
5.4 续
判定为真时调用A,为假时调用B
结构图
5.4 续
模块M循环调用模块A、B、C
概念
5.5 面向数据流的设计方法
定义:把信息流映射成软件结构,信息流的类型 决定了映射的方法。
目标:给出设计软件结构的一个系统化的途径。

总体设计

总体设计

第 5 章 总体设计
a. 偶然内聚 如果一个模块完成一组任务, 如果一个模块完成一组任务,这些任务彼此之 间即使有关系,关系也是松散的, 间即使有关系,关系也是松散的,这种内聚称为偶 然内聚。 然内聚。 b. 逻辑内聚 如果一个模块完成的任务在逻辑上属于相同或 相似的一类,则称为逻辑内聚。 相似的一类,则称为逻辑内聚。 c. 时间内聚 如果一个模块包含的任务必须在同一段时间内 执行,就叫时间内聚。 执行,就叫时间内聚。
第 5 章 总体设计 5.2.2 抽象
在现实世界中一定事物、 在现实世界中一定事物、状态或过程之 间总存在着某些相似的方面, 间总存在着某些相似的方面,把这些相似 的方面集中和概括起来, 的方面集中和概括起来,暂时忽略它们之 间的差异,就是抽象。 间的差异,就是抽象。
第 5 章 总体设计
例 考虑适用于低级CAD的图形软件包 抽象Ⅰ 该CAD软件系统配有能与绘图员进行可 视化通信的图形界面,能用鼠标代替绘图工具,画 各种直线和曲线;能完成所有几何计算以及所有截 面视图和辅助视图的设计。图形设计的结果存在图 形文件中,图形文件可包含几何的、正文的和其他 各种补充设计信息。 抽象Ⅱ 软件任务: 用户界面任务; 创建二维图形任务; 显示图形任务; 管理图形文件任务。
第 5 章 总体设计
总体设计的目的: 总体设计的目的: 回答“概括地说,系统应该如何实现? 回答“概括地说,系统应该如何实现?”。 总体设计的任务: 总体设计的任务: 1. 划分出组成系统的物理元素—— 程序、文件、 划分出组成系统的物理元素—— 程序、文件、 数据库、人工过程和文档。 数据库、人工过程和文档。 2. 设计软件结构,也就是要确定系统中每个程 设计软件结构, 序是由哪些模块组成的, 序是由哪些模块组成的,以及这些模块相互之间 的关系。 的关系。

第5章 总体设计

第5章 总体设计
5- 30
…抽象…
抽象层次II:任务需求的描述。列出“What” 而不是“How”。
CAD SOFTWARE TASKS:
user interaction task; 2-D drawing creation task; graphics display task; drawing file management task;

5- 11
联机
批处理
5- 12
联机
批处理
5- 13
2
…步骤…
选取合理的方案
至少选取低成本、中等成本和高成本三

种方案 每种方案准备四份资料
系统流程图
组成系统的物理元素清单
成本/效益分析 实现这个系统的进度计划
5- 14
3
…步骤…
推荐最佳方案
综合分析对比各种合理方案的利弊,推

5- 35
局部化
局部化:把一些关系密切的软件元素
物理地放得彼此靠近
局部化有助于实现信息隐藏
信息隐蔽和局部化的优点
减少错误的传播
5- 36
模块独立(module independence)
模块独立的概念是模块化、抽象、信息隐藏 和局部化概念的直接结果 每个模块完成一个相对独立的子功能,并且 与其它模块间的接口简单 模块独立性的重要性
5- 20
模块化…
模块
由边界元素限定的相邻程序元素的序列,
而且有一个总体标志符代表它 数据说明;可执行的语句 Pascal或Ada中
模块化
Begin…end对
C,C++ 和Java中 把程序化分成独立命名且可独立访问的模 块,每个模块完成一个子功能,把这些模 {…}对 块集成起来构成一个整体,可以完成制定 的功能满足用户的需求

软件工程第五章总体设计

软件工程第五章总体设计

软件工程第五章总体设计在软件工程中,总体设计是一个至关重要的环节。

它就像是为一座大厦绘制蓝图,为后续的详细设计和编码工作奠定坚实的基础。

总体设计的主要任务是根据需求分析阶段确定的系统功能和性能要求,设计出软件系统的总体结构。

这包括确定系统由哪些模块组成,以及这些模块之间的关系。

通过合理的总体设计,可以有效地提高软件的可维护性、可扩展性和可靠性。

首先,我们来谈谈模块的划分。

模块是软件系统中具有相对独立功能的单元。

在划分模块时,需要遵循高内聚、低耦合的原则。

高内聚意味着一个模块内部的各个部分紧密相关,共同完成一个明确的功能;低耦合则表示模块之间的相互依赖程度要低,以便于独立开发、测试和维护。

例如,一个在线购物系统可以划分为用户管理模块、商品管理模块、订单管理模块等。

每个模块都有其特定的职责,相互之间通过清晰定义的接口进行通信。

模块的结构也有多种形式,如层次结构、网状结构和混合结构等。

层次结构是一种常见的结构,它将系统按照功能的层次进行划分,上层模块调用下层模块,形成一个树形的结构。

这种结构清晰明了,易于理解和维护。

网状结构则模块之间的关系更加复杂,适用于一些对性能要求较高的系统。

而混合结构则是结合了层次结构和网状结构的特点,根据系统的实际需求进行灵活的设计。

接下来,说说数据结构的设计。

数据结构的选择直接影响到系统的性能和效率。

在总体设计阶段,需要确定系统中主要的数据结构,如数据库表结构、文件结构等。

对于数据库设计,要考虑数据的完整性、一致性和安全性。

合理地设计索引和存储过程,可以提高数据的查询和更新速度。

文件结构的设计则要根据数据的特点和访问方式来确定,例如是顺序访问还是随机访问。

在总体设计中,还需要考虑软件的架构风格。

常见的架构风格有客户机/服务器架构(C/S)、浏览器/服务器架构(B/S)和分布式架构等。

C/S 架构适用于对性能要求较高、数据处理较为复杂的系统;B/S 架构则具有易于部署和维护的优点,适用于广泛的互联网应用;分布式架构则可以提高系统的处理能力和可靠性,适用于大规模的应用场景。

软件工程-第五章-总体设计

软件工程-第五章-总体设计




需求分析阶段所形成的数据流图是软件总体设计的基 础。我们要从可供选择的方案中选取合理的方案,为 每一个方案准备一份系统流程图,列出系统组成的物 理元素,进行效益分析,制定实现方案的进度。我们 要从合理的方案中选择一个最佳的方案向用户推荐。 当用户接受方案后,就要为这个最佳的方案设计软件 结构,一般情况下,这个软件结构要通过反复修改使 之合理。 同时还要进行必要的数据库设计。在分布式系统中还 要进行网络设计。 另外,还要制定测试计划和确定测试要求。 在详细设计前一定要进行软件总体设计。
软件工程
Software Engineering
第五章 总体设计
第五章 总体设计





软件设计的重要性 设计过程 软件总体设计 设计基本原理 体系结构设计 结构化设计 IDEF0图设计方法 软件结构优化
总体设计

总体设计的基本目标就是概要地回答系统应该 如何实现。所以设计在任何工程产品或系统中, 是开发阶段的第一步。设计(design)可以定 义为应用各种技术和原理,对一个设备、一个 过程或一个系统,作出足够详细的决策,使之 有可能在物理上得以实现的过程。
功能内聚


如果一个模块内所有处理元素完成一个,且仅 完成一个功能,则称为功能内聚(Functional Cohesion)。 功能内聚是最高的内聚。 在软件结构中,并不是每个模块都能归结为完 成一个功能而设计成一个功能内聚模块。
顺序内聚


如果一个模块内处理元素和同一个功能密切相 关,而且这些处理元素必须顺序执行,则称为 顺序内聚(Sequential Cohesion)。 通常一个处理元素的输出是另一个处理元素的 输入。

软件开发与应用-第5章 总体设计

软件开发与应用-第5章 总体设计

A: ………… ………… A1=V1+V2 ………… …………
B: ………… ………… V1=B1 ………… …………
A: ………… ………… V1++ ………… …………
B: ………… ………… V2=B1+V1 ………… …………
问题: 公共部分的改动将影响所有调用它的模块; 公共部分的数据存取无法控制; 复杂程度随耦合模块的个数增加而增加。
例如:
from disk from tape
A:
Read inputs
from ……
模块化原理 时间内聚(Temporal cohesion):The functions are related only by the timing involved.
例如:系统的初始化 问题:不同功能混在一个模块中,有时共用部分 编码,使局部功能的修改牵动全局。
A: ……………… ……………… entry 1: ……………… ……………… entry 2: ……………… ………………
模块化原理
公共耦合 (Common coupling):Data are accessible
from a common data store.
Global : V1 V2 Global : V1 V2
Great deal of dependence
Independent

Highly coupled
Loosely coupled
Uncoupled

Goal: as loose as possible = as independent as possible
模块化原理
独立性由弱到强排列为:

第05章 总体设计

第05章 总体设计
2011-4-2
下面看人类解决问题的一般规律: 下面看人类解决问题的一般规律:
设函数C( )为定义问题x的复杂程度 的复杂程度, 设函数 (x)为定义问题 的复杂程度, 函数 E(x)为解决问题 的工作量 。 对于两个问题 1 为解决问题x的工作量 为解决问题 的工作量。 对于两个问题P 和P2,如果 C(P1) >C(P2) 显然 E (P1) >E (P2) 量也大) 量也大) (即复杂程度大,工作 即复杂程度大,
2011-4-2
(8)书写文档 ) 编写总体设计文档(包括系统构成方案、 ※ 编写总体设计文档(包括系统构成方案、 物理元素清单、成本/效益分析 效益分析、 物理元素清单、成本 效益分析、最佳方案的概 括描述、数据流图、软件结构、 括描述、 数据流图 、软件结构、各个模块的算 模块间的接口关系) 法,模块间的接口关系)。 ※ 用户手册 测试计划(测试策略,测试方案, ※ 测试计划(测试策略,测试方案,预期的 测试结果,测试进度计划) 测试结果,测试进度计划) ※ 详细的实现计划 (9)审查和复审 审查和复审 应该进行严格的技术审查和管理复审。
2011-4-2
结构设计是总体设计阶段的任务; 结构设计是总体设计阶段的任务; 的任务 过程设计是详细设计阶段的任务。 过程设计是详细设计阶段的任务。 的任务 为确定软件结构, 为确定软件结构 , 首先把复杂的功能进一 步分解成一系列简单的功能。 步分解成一系列简单的功能 。 功能分解导致数 据流图的进一步细化, 并用IPO图或其他工具 据流图的进一步细化 , 并用 图或其他工具 来描述细化后每个处理的算法。 来描述细化后每个处理的算法。
2011-4-2
局部化的概念和信息隐蔽概念是密切相关的。 局部化的概念和信息隐蔽概念是密切相关的。 所谓局部化 局部化是指把一些关系密切的软件元素物理 所谓局部化是指把一些关系密切的软件元素物理 地放得彼此靠近。 地放得彼此靠近。在模块中使用局部数据元素是 局部化的一个例子。显然, 局部化的一个例子。显然,局部化有助于实现信 息隐蔽。 息隐蔽。 信息隐蔽和局部化的概念是由Parnas提出的。 提出的。 信息隐蔽和局部化的概念是由 提出的 Parnas提出在总体设计时就要注意软件的可维护性和 提出在总体设计时就要注意软件的可维护性和 可靠性的设计措施。这就是信息隐蔽的原则。 可靠性的设计措施。这就是信息隐蔽的原则。 信息隐蔽的原则 为了适应软件在生命周期中的多次修改, 为了适应软件在生命周期中的多次修改, 在模块划分的总体设计阶段就要尽量设法将 可变性因素隐蔽在一个或几个局部的模块中。 可变性因素隐蔽在一个或几个局部的模块中。 2011-4-2
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8
设计原理(续1)
◆设计示例: “用 AND, OR, and NOT 门构
建的计算机。 ”
chip1
chip2
◆第一种设计:设计师 设计三个功能芯片
chip3
2013-7-16
上海大学计算机学院
9
设计原理(续2)
◆第二种设计:每芯片一种门
2013-7-16
上海大学计算机学院
10
设计原理(续3)
2013-7-16
上海大学计算机学院
16
耦合(续1)
1. 内容耦合
● 一个模块直接引用另一个模块的内容 ● 示例
模块a修改模块b的语句 模块 a的分支转移到模块 b的局部标号
● 缺点
模块b的任何变化都要求变化a
2013-7-16
上海大学计算机学院
17
耦合(续2)
2. 共用耦合
● 两模块存取相同的数据 ● 示例
第5章 总体设计
◆设计任务
◆设计过程
◆设计原理
◆启发规则
◆图形工具 ◆面向数据流的设计
2013-7-16
上海大学计算机学院
1
总体设计的任务
◆“概括地说,系统应该如何实现?”
◆总体设计阶段的任务
●系统划分: 程序、文件、数据库、人工过程和文档等 ●设计软件的结构
每个程序是由哪些模块组成,以及这些模块相互间的关系。
2013-7-16
上海大学计算机学院
26
内聚(续4)
4. 过程性内聚
●一个模块内的处理元素是相关的,而且必须以特定次 序执行. ●示例
Function { read part number from database update repair record on master file }
●缺点
③推荐最佳方案
●综合分析对比各种合理方案的利弊,推荐一个最佳的 方案,并且为推荐的方案制定详细的实现计划2013-7-16上海 Nhomakorabea学计算机学院
5
设计过程(续3)
④ 功能分解 ●结构设计
确定程序由哪些模块组成,以及这些模块之间的关系 结构设计是总体设计阶段的任务
●过程设计
确定每个模块的处理过程 过程设计是详细设计阶段的任务
●用户手册
修改更正在需求分析阶段产生的初步的用户手册
●测试计划
测试策略,测试方案,预期的测试结果,测试进度计划等等
●详细的实现计划 ●数据库设计结果
⑨审查和复审
2013-7-16 上海大学计算机学院 7
设计原理
◆模块化
◆抽象
◆逐步求精
◆信息隐蔽和局部化
◆模块独立
2013-7-16
上海大学计算机学院
操作间是弱连接的,重用性不好。
2013-7-16
上海大学计算机学院
27
内聚(续5)
5. 通信性内聚
●模块中所有元素都使用同一个输入数据和(或)产生 同一个输出数据 ●示例
产生工资 报表 计算平均 工资
职工工资报表
职工工资记录
平均工资
产生职工工资报表并计算平均工资模块
●缺点
缺乏重用性
2013-7-16 上海大学计算机学院 28
B1 计算平均分
A
读入分数
平均/最高? 最高成绩
B2 计算平均分 计算最高分
计算最高分
B 计算平均分 或最高分 改控制耦合为数据耦合举例 输出结果
2013-7-16
上海大学计算机学院
19
耦合(续4)
4. 印记耦合
● 一个模块通过数据结构向另一模块传递信息,而 另一模块只需要数据结构的一部分属性。
● 示例
A
B
C
DEF
● 缺点: 接口难理解、严重的维护问题、难重用。
2013-7-16 上海大学计算机学院 25
内聚(续3)
3. 时间性内聚
●执行一系列与时间相关的操作 ●示例
初始化系统模块、 系统结束模块、 紧急故障处理模块等均是时间性聚合模块.
●缺点
模块内操作间关系很弱,但与其它模块的操作却有很强的关联、 重用性差。
模块独立
提高模块的内聚程度,降低模块 间的 耦合程度,获得较高的模块 独立性。
2013-7-16
上海大学计算机学院
33
启发规则
1. 改进软件结构提高模块独立性
● 模块分解或合并,力求降低耦合提高内聚
2. 模块规模应该适中
● 一页纸内 ● 分解不应该降低模块独立性 ● 模块的可理解与接口的复杂性的矛盾统一
内聚(续6)
6. 顺序内聚
●如果一个模块内的处理元素和同一个功能密切相关, 而且这些处理必须顺序执行(通常一个处理元素的输 出数据作为下一个处理元素的输入数据) ●示例
●学生成绩合格率统计模块:前一个部分根据成绩统计出及格的学生 人数,后一个部分根据及格人数计算出学生的及格率。 ●根据数据流图划分出的模块通常都是顺序内聚的模块
住户情况
水费 电费 计算水费 计算电费 计算水电费
住户情况
“住户情况”是一个数据结构
●缺点
难理解、副作用、难复用
2013-7-16 上海大学计算机学院 20
耦合(续5)
5. 数据耦合
●两个模块之间仅通过模块参数交换信息,且交换 的信息全部为简单数据项或数据结构,但要求被 调用模块使用数据结构的所有元素。 ●示例
● “为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。” ● Miller法则:一个人在任何时候都只能把注意力集中在(7±2) 个知识块上。 ● 逐步求精方法确保每个问题都将被解决,而且每个问题都将在适 当的时候被解决,但是,在任何时候一个人都不需要同时处理7 个以上知识块。 ● 抽象与求精是一对互补的概念。抽象使得设计者能够说明过程和 数据,同时却忽略低层细节。求精则帮助设计者在设计过程中逐 步揭示出低层细节。
2013-7-16
上海大学计算机学院
31
内聚(续9)
●偶然性内聚 ●逻辑性内聚 ●时间性内聚 ●过程性内聚 ●通信性内聚 ●顺序内聚 ●功能性内聚 ●信息性内聚 低
内 聚 程


◆设计时力争做到高内聚,并且能够辨认出低内聚 的模块,通过修改设计提高模块的内聚程度。
2013-7-16 上海大学计算机学院 32
◆两种设计功能上等价。但第二种设计
●难理解 ●难定位错误 ●难扩展或改进 ●不能重用
◆模块要象第一种设计
●最大化模块内联系,最小化模块间联系
2013-7-16
上海大学计算机学院
11
设计原理(续4)
◆ 模块化
● 模块是由边界元素限定的相邻程序元素(例如,数据 说明,可执行的语句)的序列,而且有一个总体标识 符代表它。 ● 模块化的根据
2013-7-16 上海大学计算机学院 3
设计过程(续1)
①设想供选择的方案
●逻辑模型各种可能的实现方案
划分数据流图的自动化边界
2013-7-16
上海大学计算机学院
4
设计过程(续2)
②选取合理的方案
●至少选取低成本、中等成本和高成本三种方案 ●每种方案准备四份资料
系统流程图 组成系统的物理元素清单 成本/效益分析 进度计划
⑤ 设计软件结构
● 把模块组织成良好的层次系统
模块与其子模块的调用关系 层次图或结构图
⑥ 设计数据库
●模式设计 ●子模式设计
2013-7-16 上海大学计算机学院 6
设计过程(续4)
⑦制定测试计划 ⑧书写文档
●系统说明
系统流程图、成本/效益分析、最佳方案、精化的数据流图、 软件结构模块的算法
不等式 C(P1+P2)> C(P1)+ C(P2)
E(P1+P2)> E(P1)+ E(P2)
模块化和软件成本
2013-7-16 上海大学计算机学院 12
设计原理(续5)
◆ 抽象
● 抽象就是抽出事物的本质特性而暂不考虑它们的细节 ● 处理复杂系统的惟一有效的方法是用层次的方式构造和分析它
◆ 逐步求精
A: … B(StudNo,Name,Course) …
B(SN:String,Nam e:String,Co:String)
●优点
易维护、可复用
2013-7-16 上海大学计算机学院 21
耦合(续6)
●内容耦合 ●共用耦合 ●控制耦合 ●印记(特征)耦合 ●数据耦合
耦 合 程 度


◆设计时力争做到低耦合。应该采取的设计原则是: 尽量使用数据耦合,少用控制耦合和特征耦合, 限制公用耦合的范围,完全不用内容耦合。
◆总体设计的意义
●从较抽象的层次上分析对比多种可能的系统实现方案 和软件结构,从中选出最佳方案和最合理的软件结构, 从而用较低成本开发出较高质量的软件系统。
2013-7-16
上海大学计算机学院
2
设计过程
◆ 2个主要阶段
●系统设计:确定系统的具体实现方案。 ●结构设计:确定软件结构。
◆ 9个步骤:
①设想供选择的方案 ②选取合理的方案 ③推荐最佳方案 ④功能分解 ⑤设计软件结构 ⑥设计数据库 ⑦制定测试计划 ⑧书写文档 ⑨审查和复审
上海大学计算机学院
14
设计原理(续7)
◆模块独立(module independence)
● 模块独立的概念是模块化、抽象、信息隐藏和局部化 概念的直接结果。 ●每个模块完成一个相对独立的子功能,并且与其它模 块间的接口简单。 ● 模块独立性的衡量标准
模块内聚(Cohension) :模块内各元素交互的程度 模块耦合(Coupling) :模块间交互程度
相关文档
最新文档