软件工程第五章传统设计方法
软件工程导论(第5章)

11
5.1.2 选取若干个合理的方案
至少选取低成本、中等成本和高成本三种方案。
每种方案准备四份资料:
系统流程图; 组成系统的物理元素清单; 成本/效益分析; 实现这个系统的进度计划。
12
5.1.3 推荐最佳方案
分析员应该综合分析对比各种合理方案的利
弊,推荐一个最佳的方案,并且为推荐的方 案制定详细的实现计划。
发出较高质量的软件系统。
7
第一部分:设计过程 第二部分:设计原理 第三部分:启发原则 第四部分:软件结构图 第五部分:面向数据流的设计方法
8
5.1 设 计 过 程
总体设计过程通常由两个主要阶段组成: 系统设计:确定系统的具体实现方案。 结构设计:确定软件结构。 9个步骤: ① 设想供选择的方案 ② 选取合理的方案 ③ 推荐最佳方案 ④ 功能分解 ⑤ 设计软件结构 ⑥ 设计数据库 ⑦ 制定测试计划 ⑧ 书写文档 ⑨ 审查和复审
和理解; 可以使软件容易测试和调试,因而有助于提高软 件的可靠性; 能够提高软件的可修改性; 有助于软件开发工程的组织管理。
32
模块化五条标准
模块可分解性
把问题分解为子问题 模块可组装性 可复用 模块可理解性 无需参考其他模块,易于构造和修改 模块连续性 微小修改只导致对个别模块 模块保护性 异常影响局限在模块内部
“隐蔽”意味着模块彼此间仅仅交换那些为了完成系统功能而 必须交换的信息。 “局部化”是指把一些关系密切的软件元素物理地放得彼此靠 近。局部化有助于实现信息隐蔽。
设计和确定模块时,使得一个模块内包含的信息(过程和 数据)对于不需要这些信息的模块来说,是不能访问的。 模块内部的数据与过程,应该对不需要了解这些数据与过 程的模块隐藏起来。只有那些为了完成软件的总体功能而 必需在模块间交换的信息,才允许在模块间进行传递。
软件工程 第4版 第5章 详细设计

数据流程图
01
数据流程图表示 求解某一问题的 数据通路,同时 规定了处理的主 要阶段和所用的 各种数据媒体
程序流程图
02
程序流程图表示 程序中的操作顺 序
系统流程图
03
系统流程图表示 系统的操作控制 和数据流
程序网络图
04
程序网络图表示 程序激活路径和 程序与相关数据 流的相互作用
系统资源图
05
系统资源图表示 适用于一个问题 或一组问题求解 的数据单元和处 理单元的配置
5.1.3 PAD
01 PAD 的基本符号
OPTION
➢ 顺序结构 ➢ 条件结构 ➢ CASE 型多分支结构 ➢ 先检测循环条件的WHILE 型循环结构 ➢ 后检测循环条件的UNTIL 型循环结构 ➢ 语句标号 的特点
OPTION
用PAD 表示的程序从最左边的竖线的上端开始,自上而 下、自左向右执行 用PAD 设计的软件结构必然是结构化的程序结构
图1
图2
5.1.1 流程图
04 流程图的3 种基本结构
OPTION
流程图的3 种基本结构为顺序结构、条件 结构和循环结构,如图1所示,图中的C 是判 定条件。顺序结构如图(a)所示。条件结构 可分为两种,一种是IF...THEN...ELSE 型条件 结构,如图(b)所示;另一种是CASE 型多 分支结构,如图(c)所示。
应的应做的工作。
2 判定表中的符号
右上部用T 表示条件成立,用F表示条件不 成立,空白表示条件成立与否不影响。
右下部画× 表示在该列上面规定的条件下做 该行左边列出的那项工作,空白表示不做该 项工作。
5.1.5 判定树
判定树和判定表一样,也能表明复杂的条件组 合与对应处理之间的关系。判定树是一种图形表示 方式,更易被用户理解。
软件工程第五章

5.2.1、结构化程序设计技术
1. 结构化设计技术的形成
--对“取消GOTO 语句”的争论 --只用“顺序”、“选择”和“循环”三 种基本控制结构就能实现任何单入口单出 口的程序设计 --程序应该只有一个入口和一个出口;自 顶向下,逐步求精
5.2.1、结构化程序设计技术
2. 结构化设计技术的概念 经典定义:“如果一个程序的代码仅仅通 过顺序、选择和循环这三种基本控制结构 进行连接,并且每个代码块只有一个入口 和一个出口,则称这个程序为结构化的。”
1. 模块的逻辑结构设计 逻辑结构设计是结合所开发项目的具体要 求和对每个模块规定的功能,开发出模块 处理的详细算法,选择某种适当的工具加 以精确描述。
5.1.1、详细设计的任务
详细设计阶段的主要任务:
2. 模块的数据设计 为在需求分析阶段的数据对象定义逻辑数 据结构,并且对不同的逻辑数据结构进行 不同的算法设计,选择最有效的方案。同 时,确定实现逻辑数据结构所必需的操作 模块,以便了解数据结构的影响范围。
第五章
详细设计
详细设计
教学提示:
上一章学习了概要设计的有关知识,本章将 介绍详细设计的内容。主要包括详细设计的 任务与原则、设计方法以及详细设计规格说 明及评审等。
详细设计
教学目标:
理解详细设计的设计任务和设计原则。掌握 详细设计的方法和常用工具的使用,了解详 细的设计规格说明书的内容和评审。
5.2.1、结构化程序设计技术
5.2.1、结构化程序设计技术
2. 结构化设计技术的概念 当前结构化程序设计的基本内容如下: (1) 程序的控制结构一般采用顺序、选择、循环3 种结构来构成,确保结构简单。 (2) 使用单入口单出口的控制结构。 (3) 程序设计中应尽量少用GOTO 语句,以确保 程序结构的独立性。 (4) 采用自顶向下逐步求精方法完成算法设计。
软件工程 第5章软件详细设计

第5章例题分析与解答作者:不详来源:2006年9月1日发表评论进入社区一、填空题1.结构化程序设计方法的要点是使用___三种基本控制_____结构,自顶向下、逐步求精地构造算法或程序。
2.为了产生结构化的流程图,应由三种基本控制结构顺序组合或__完全嵌套___而成。
3.结构化程序设计方法提倡开发人员的组织形式是___主程序组_____。
4.PAD图是一种由左向右展开的二维树型结构,图中的竖线为程序的____层次线____。
5.在Jackson方法中解决结构冲突的具体办法是引入__中间数据结构或中间文件______。
二、选择题1.详细设计与概要设计衔接的图形工具是( B )。
A.DFD图B.SC图C.PAD图D.程序流程图2.结构化程序设计主要强调的是( C)。
A.程序的效率B.程序的执行速度C.程序的易读性D.程序的规模3.详细设计的任务是确定每个模块的( A)。
A.算法B.功能C.调用关系D.输入输出数据4.Jackson方法实现从( A )导出(C )。
A.数据结构B.数据流图C.程序结构D.软件模块层次结构5.在软件详细设计过程中不采用的描述工具是( D )。
A.判定表B.IPO图C.PAD图D.DFD图三、应用题一个正文文件由若干个记录组成,每个记录是一个字符串。
要求统计每个记录中空格字符的个数及文件中空格字符的总个数。
要求输出数据格式是每复制一行字符串之后,另起一行印出上一行字符串空格字符的个数,最后一行印出空格字符总个数。
答案:一、填空题1.三种基本控制结构2.完整嵌套3.主程序员组4.层次线5.中间数据结构或中间文件二、选择题1.B2.C3.A4.AC5.D三、应用题图5-1图5-2<>第5章自测题及参考答案作者:不详来源:2006年9月1日发表评论进入社区一、名词解释1.结构化程序设计2.PAD3.PDL4.结构冲突5.对应关系二、填空题1.结构化程序设计方法使用___三种基本控制结构___构造程序。
软件工程导论第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 面向数据流的设计方法
定义:把信息流映射成软件结构,信息流的类型 决定了映射的方法。
目标:给出设计软件结构的一个系统化的途径。
冯铁《软件工程概论教学》第五章系统设计

一、判断题1、The results of decomposition form composite parts called modules or components.(T)2、Cohesion refers to the internal “glue” with which a component is constructed.(T)3、We say that two components are loosely coupled when there is a great deal of dependence between them.(F)4、Design is the creative process of transforming the problem intoa solution.(T)二、解释概念1、 what is design?Design is the creative process to transform the problem into a solution. 设计是将问题转化成解决方案的创造性的活动Design is the description of a solution. 是对解决方案的描述。
2、What is Coupling? States Coupling levels from low to high.Coupling耦合性是指模块间联系,即程序结构中不同模块之间互连程度。
耦合等级从低到高:Uncoupled 非直接耦合:通过上级模块进行联系,无直接关联。
Data coupling 数据耦合:参数传递的是一般类型的数据。
Stamp coupling 标记耦合:参数传递的是诸如结构类型的数据。
Control coupling 控制耦合:模块间传递的是诸如标记量的控制信息。
Common coupling 公共耦合:全局结构类型的数据。
Content coupling 内容耦合:病态连接,一个模块可以直接操作另一个模块的数据(如go to 语句的使用)。
软件工程第5章 详细设计

详细设计的描述工具
(4) PDL( Program Design Language )
PDL与需求分析中采用的结构化语言统属于伪 码。伪码的结构分为内外两层,外语法应符合一般 程序设计语言常用的语法规则,而内层语法则用一 些简单的句子、短语(自然语言)。
18
详细设计的描述工具
PDL作为一种用于描述程序逻辑的语言,具有以下特点:
3
详细设计的描述方式
详细设计的描述方式分类:
1)图形描述:流程图、盒图、PAD图等 2)语言描述:PDL语言等 3)表格描述:判定表等
4
详细设计的描述工具
详细设计的描述工具:
下面介绍一些有代表性的详细设计工具: (1)程序流程图
程序流程图又称之为程序框图,它是软件开发者最熟悉的一种 算法表达工具。
ENDIF
21
详细设计的描述工具
3)多路选择结构
CASE OF <变量名>: WHEN <条件1> SELECT <语句或程序块> WHEN <条件2> SELECT <语句或程序块> …… WHEN <条件n> SELECT <语句或程序块>
DEFAULT: <语句或程序块> ENDCASE
22
A(m)>A(j)
j=j+1
T
m=j
F
A(m) ﹤-﹥A(i) i=i+1
PAD图的控制流程为自上而下、从左到右。
15
详细设计的描述工具
举例:
请使用PAD图描述下列程序的算法: 在数据A(0)~A(10)中求最大数。
16
详细设计的描述工具
软件工程导论 第5章

8. 书写文档 应该用正式的文档记录总体设计的结果, 应该用正式的文档记录总体设计的结果,在这个阶 段应该完成的文档通常有下述几种: 段应该完成的文档通常有下述几种: (1) 系统说明主要内容包括用系统流程图描绘的系 统构成方案,组成系统的物理元素清单,成本/效 统构成方案,组成系统的物理元素清单,成本 效 益分析;对最佳方案的概括描述,精化的数据流图, 益分析;对最佳方案的概括描述,精化的数据流图, 用层次图或结构图描绘的软件结构, 用层次图或结构图描绘的软件结构,用IPO图或其 图或其 他工具(例如 例如, 语言)简要描述的各个模块的算 他工具 例如,PDL语言 简要描述的各个模块的算 语言 模块间的接口关系,以及需求、 法,模块间的接口关系,以及需求、功能和模块三 者之间的交叉参照关系等等。 者之间的交叉参照关系等等。 (2) 用户手册根据总体设计阶段的结果,修改更正 用户手册根据总体设计阶段的结果, 在需求分析阶段产生的初步的用户手册。 在需求分析阶段产生的初步的用户手册。
(3) 测试计划包括测试策略,测试方案,预期的测 测试计划包括测试策略,测试方案, 试结果,测试进度计划等等。 试结果,测试进度计划等等。 (4) 详细的实现计划 (5) 数据库设计结果 9. 审查和复审 最后应该对总体设计的结果进行严格的技术审查, 最后应该对总体设计的结果进行严格的技术审查, 在技术审查通过之后再由使用部门的负责人从管理 角度进行复审。 角度进行复审。
总体设计过程首先寻找实现目标系统的各种不同的 方案, 方案,需求分析阶段得到的数据流图是设想各种可 能方案的基础。 能方案的基础。然后分析员从这些供选择的方案中 选取若干个合理的方案, 选取若干个合理的方案,为每个合理的方案都准备 一份系统流程图,列出组成系统的所有物理元素, 一份系统流程图,列出组成系统的所有物理元素, 进行成本/效益分析 效益分析, 进行成本 效益分析,并且制定实现这个方案的进 度计划。分析员应该综合分析比较这些合理的方案, 度计划。分析员应该综合分析比较这些合理的方案, 从中选出一个最佳方案向用户和使用部门负责人推 荐。如果用户和使用部门的负责人接受了推荐的方 案,分析员应该进一步为这个最佳方案设计软件结 通常,设计出初步的软件结构后还要多方改进, 构,通常,设计出初步的软件结构后还要多方改进, 从而得到更合理的结构,进行必要的数据库设计, 从而得到更合理的结构,进行必要的数据库设计, 确定测试要求并且制定测试计划。 确定测试要求并且制定测试计划。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Proc Old Bal
程序结构图
第三步:写出程序的过程性表示
LCP法
Logical Construction of Programs, 与Jackson方法类似,也是从数据结构出发设计程序, 但是该方法的逻辑更严格。
映射 详细组织
数据结构 (Warnier图) 程序分析
程序结构 (Warnier图)
3. 用Jackson伪代码写出结构图中每个处理的过程性描述
例5.7 信用卡购货季报程序。
建立两个帐册:顾客帐册和付款帐。 每季度末,根据帐册产生一份会计报表。 第一步:画数据结构图
第二步:画程序结构图
Pay-File
C-M-F
CNO-Group*
Cust-REC*
Pay-REC*
Balance
例5.1:用事务映射方法从下图导出 相 应的初始SC图。
第一层分解
事物控制 事物 分析 发送
第一层分解后细化
混合结构
5.2.5优化结构设计的指导规则
1.对模块分割、合并和变动调用关系的指导规则 提高内聚,降低耦合 简化模块接口。接口复杂可能表明模块的独立 性差 少用全局性数据和控制型信息。因为可能导致 不可预测的结果 控制模块大小。过大不易理解;太小则接口开 销过大 有时不必拘泥于DFD图
Internal PROCEDURE spell_check IS statements BEGIN Split document into single words Look up words in dictionary External statements Display words which are not in dictionary Create a new dictionary END spell_check
在一组数中找出其中的 最大数
第一步: 1.输入一组数; 2.找出其中的最大数; 3.输出最大数
2.1 任取一数,假设它就是 最大数; 2.2 将该数与其他各数逐一 比较; 2.3 若发现有任何大于该假 设的最大数,即取而代之
5.3.3 常用的表达工具
流程图(Flow Diagram)和N-S图
A
B
C
5.2.2 数据流图的类型与SD方法的步骤
1. DFD(数据流图)的类型
(1)变换型结构
(2)事务型结构
基本模型
同时存在两类结构的系统
2. SD方法的步骤
从DFD图到SC图的映射 : (1)复审DFD图,必要时可再次进行修改或细化 (2)鉴别DFD图的结构特征:事务?变换?
(3)按照规则,把DFD图映射为初始的SC图:
伪代码和PDL语言
流程图(Flow Diagram)
任何复杂的程序流程图都应由以上五种基本结 构组合而成。
优点:容易掌握,使用广泛。 缺点:不具备逐步求精的特点,不利于提高大型 系统的可理解性; 转移控制过于方便。 趋势:尽可能少地使用
1973年,Nassi&Shneiderman提出
事务映射 或 变换映射 (4)改进初始的SC图
5.2.3变换映射
• 划分DFD图的边界 • 建立初始SC图的框架 – 顶层都只含一个用于控制的主模块 – 第一层包括传入、传出和中心变换三个模块 • 分解SC图的各个分支 – 分解实质上是(根据DFD图的)“映射”
例5.1:用变换映射方法从下图导出 相应 的初始SC图。
付款帐数据结构
总帐数据结构
Acct Rept
Cust Data
Master Totals
CNO Group*
Total PMT
Total Bal
CNO
Pay REC
Cust Total
Bal Data
Rept LINE*
Old Bal
New Bal
输出文件的数据结构
Process Pay-File & CMF Giving Acct-Rept
第一级分解
第二级分解(分支分解)
传入分支的分解(一)
传入分支的分解(二)
传入分支的模块调 用与执行
MA
c
C
B
A
b
a
E
D
e
d
传出分支的分解
w, uMEw u来自WUv
V
(a)
(b)
中心加工分支的分解
初始SC图
5.2.4事务映射
在DFD图上确定边界 事务中心 接受部分(包括接受路径) 发送部分(包括全部动作路径) 画出SC图框架 DFD图的三个部分分别映射为事务控制模块, 接受模块和动作发送模块 分解和细化接受分支和发送分支
Proc Cust Data Proc * CNO Group Proc CNO Proc Pay-REC Proc * Rept-LINE Proc Master Tots Comp Tot-PMT Comp Cust-Tot Comp Bal Data Comp New Bal Comp File-Bal
P=1
T
P S
F
(4) 后判定型循环结构 S T P F
T T T
F F F
A1 A2 An
P=2
P=n
…
3.逐步细化的实现方法
1’ 输入一个数组。 输入一个数组; 由粗到细,每次细化一部分 2.1’ 令最大数=数组中的 过程和数据结构的细化要并行的进行 第一元素; 2.3’ 从第二元素至最末一 每一步的细化使用相同的结构化语言,最后 个元素依次做; 一步用伪代码描述 2.3’ 如果新元素>“最大 例5.5 数”则“最大数”=新元素
5.1.2 从分析模型导出设计模型
分析模型
设计模型
5.2 结构化设计方法
SD方法的中心任务是把用DFD图表示 的系统分析模型方便的转换为软件结构设计 的模型。 所提供的方法与原则,主要是为了确定 软件的体系结构与接口。
5.2.1 SC图(Structure Chart,结构图)
1.SC图的组成符号
矩形框来表示模块 带箭头的连线表示 模块间的调用关系 调用时要标明传入 和传出模块的数据 流
传入 X X 变换 控制 X 源 漏 X … Y Y 传出 Y
SC图使用的模块符号
2.SC图中的模块调用
(1)简单调用
X,Y
Z
A
Z
B
C
入 X ,Y Z
出 Z —
(2)选择调用
A B C D
(3)循环调用
5.传统设计方法
目录
5.1 概述 5.2 结构化设计方法 5.3 过程设计 5.4 Jackson方法
5.1.1 面向数据流设计和面向数据设计
面向数据流设计
面向数据设计
以SD方法为代表 以数据流出发点 目标是得出软件 的体系结构
以Jackson方法为 代表 以数据结构作为 分析和设计的基 础 侧重点是程序的 过程性描述
程序结构 (流程图)
详细的过程描述
(伪代码或结构化英语)
程序设计
THANK YOU
2.保持高扇入/低扇出的原则
高扇入——提高模块利用率 低扇出——减少控制复杂度 良好的软件通常具有瓮形结构
煎饼型结构
塔 型 结 构
瓮形结构
3.作用域/控制域规则
(1)模块的作用域/控制域 控制域:模块本身及下级模块 作用域:受模块中的判定影响的模块 (2)作用域/控制域规则 作用域不要超出控制域的范围 位置离受它控制的模块越近越好
5.3 过程设计
5.3.1 目的与任务 1.目的
确定模块采用的算法和块内数据结构 使用适当的表达工具,便于编码
2.任务:编写软件的“过程设计说明书”
为每个模块确定采用的算法 确定每一模块使用的数据结构 确定模块接口的细节,如内外接口和用户界面 设计测试用例
5.3.2 过程设计的原则与方法
1.清晰第一的设计风格
Dijkstra 1960: 取消GOTO语句 一般地,清晰第一,效率第二
2.结构化的控制结构,保持程序的清晰线索
限制GOTO语句的使用 只适用3种基本控制结构:顺序、选择、循环 模块单入、单出
(1) 顺序结构
(2) 选择结构
(3) 先判定型循环结构
A
B
F
A
P
T
B (5) 多情况选择
N-S图
A B
Sequential S
Do-Until P
F
P A B
T
F
P B
T
Do-While P
S While
Selective P 1 A1 2 A2 Case n An
A
Call subroutine
Until
伪代码和PDL语言
伪代码的的意思是并非真正的代码,也不 能在计算机上执行,但形式上与代码相似。 PDL是一种用于描述功能模块的算法设计和 加工细节的语言。称为设计程序语言。它 是一种伪码。 PDL可描述选择结构和循环结构,是一种十 分灵活和有用的过程设计表达工具。
5.4 Jackson方法
5.4.1 Jackson 表示法
A
Bo
A S
A
I Co
S
B
C
B C
B*
C
A=
A=
B
A=B
Jackson 方法是面向数据结构的开发方法。
5.4.2 Jackson方法的设计步骤
1.
用Jackson图画出输入数据和输出数据的数据结构;
2.
找出输入数据结构和输出数据结构中有对应关系的 数据单元,画出软件结构图 • 对输入输出有对应关系的数据单元画一个处理框 • 为输入结构每个剩余的数据单元画一处理框 • 为输出结构每个剩余的数据单元画一处理框