软件工程 第五章 详细设计
软件工程 第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.结构化程序设计方法使用___三种基本控制结构___构造程序。
软件工程之详细设计

WHILE P DO
P1
IF A S1;
>O
THEN
A1
ELSE
A2
ENDIF;P2
WHILE C
P
UNTIL C
P
IF
B>0 THEN B1; WHILE C DO S2;S3
ENDWHaI.L顺E序; 结构
ELSE B2
b.当型循环结构
c.直到型循环结构
L1 P1
ENDIF; B3
C
P1
L2 X=
详细设计
详细设计(又称为过程设计或模块设 计),是编码的前导。其主要任务是确定每 一个模块所使用的算法、块内数据结构和接 口细节,用描述工具表达算法的过程,即对 模块的具体实现过程进行详细地描述。。
• 详细设计的具体任务 • (1)算法设计 • (2)数据结构设计 • (3)模块接口细节 • (4)测试用例设计 • (5)数据库物理设计 • (6)数据代码设计 • (7)其他设计 • (8)编写详细设计说明书并进行评审。
C3 … Cn
多分支结构
A exp
UNTIL循环
两种循环结构不同之处
exp A
当循环结构
A exp
直到循环结构
详细设计的工具
1.程序流程图 程序流程图又叫程序框图,它是历史最悠久、使用最广泛的一种算法表示工具。
程序流程图的主要符号
2.盒图(N-S图 Nassi Shneiderman)
A B C
用判定树表示计算行李费的算法
5.过程设计语言(PDL:Process Design Language)
也称程序描述语言,又称为伪码。它是一种用于描述模块算法 设计和处理细节的语言。
软件工程导论 第五章总体设计

需要强调一点,信息隐蔽并不意味着某个模块中的内
部信息对其他模块来说是完全不可见或不能使用的, 而是说模块之间的信息传递只能通过合法的调用接口 来实现。显然,信息隐蔽对提高软件的可读性和可维 护性都是非常重要的。
24
(2)局部化:是指把一些关系密切的软件元素 物理地放得彼此靠近。如模块中的局部数据元素 是局部化的一个例子。
分析员从中选出一个最佳方案向用户和使用部门负责人推荐。
如果负责人接受了推荐的方案,分析员应该进一步为这个最 佳方案设计软件结构。
3
总体设计的必要性
可以站在全局高度上,花较少成本,从较抽 象的层次上分析对比多种可能的系统实现方 案和软件结构; 从中选出最佳方案和最合理的软件结构,从 而用较低成本开发出较高质量的软件系统。
不同模块之间 互连程度 的度量。
26
模块独立是模块化、抽象、信息隐藏和局部化概念 的直接结果。 模块的独立性的优点: • 比较容易开发出有效模块化(即具有独立的模块) 的软件。 • 独立的模块比较容易测试和维护。
27
1) 耦合性
耦合性是对一个软件结构内部不同模块间联系紧密程 度的度量指标。 决定耦合性高低的主要因素 由于模块间的联系是通过模块接口实现的,因此,模 块耦合性的高低主要取决于模块接口的复杂程度、调用模 块的方式以及通过模块接口的数据。模块间的耦合性主要 可划分为如下几种类型。
在可行性研究阶段,软件作为系统的一个完整 部件; 在需求分析期间,软件解法是使用在问题环境 内熟悉的方式描述的; 当由总体设计向详细设计过渡时,抽象的程度 也就随之减少; 最后,当源程序写出来以后,也就达到了抽象 的最低层。 20
5.2.3 逐步求精
定义:为了能集中精力解决主要问题而尽量推迟 对问题细节的考虑。 人类的认知过程遵守Miller法则:一个人在任何时 候都只能把注意力集中在(7±2)个知识块上。
软件工程--习题及答案--第五章

软件工程(第五版)--习题及答案--第五章(总8页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除一、判断题1、(√)详细设计也称模块设计。
2、(×)在数据代码设计时,应尽量让一条代码代表多个信息。
3、(×)在数据代码设计时,应可能设计字母和数字混合代码。
4、(×)在输出界面设计时,要尽可能使用代码或缩写,以求简洁。
5、(×)详细设计评审应尽可能和概要设计评审一同进行。
二、选择题1、软件详细设计的主要任务是确定每个模块的(A)。
A、算法和使用的数据结构B、外部接口C、功能D、程序2、借助于软件工具,可将(C)容易地转换为高级语言源程序。
A、程序流程图B、N-S图C、PAD图D、判定表3、不属于详细设计工具的是(A)。
A、DFD图B、PAD图C、PDlD、N-S图4、程序的三种基本结构是(C)。
A、过程、子过程和子程序B、递归、堆栈和队列C、顺序、选择和重复D、调用、返回和转移5、下面描述中,符合结构化程序设计风格的是(A)。
A、使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B、模块只有一个入口,可以有多个出口C、注重提高程序的执行效率D、不使用goto语句三、简答题1、软件的详细设计阶段完成的主要任务是什么答:(1)算法设计;(2)数据结构设计;(3)模块接口细节设计;(4)测试用例设计;(5)数据库物理设计;(6)数据代码设计;(7)其他设计;(8)编写详细设计说明书并进行评审。
2、数据输入界面设计的主要原则有哪些答:在设计数据输入界面时应做到:尽量简化用户的工作、减少输入的出错率;减轻用户的记忆负担、尽可能减少输入量并实现自动输入;对共同的输入设置默认值;使用代码或缩写;自动填入已输入过的内容;列表式输入; 数据分组输入。
3、代码设计的原则有哪些答:代码设计的原则是标准化、唯一性、可扩充性、简单性、规范性和适应性。
第五章节软件详细设计

10/31/2020
21
界面举例MSN
10/31/2020
22
界面举例红心大战
缺省值
10/31/2020
23
黄金规则:保持界面一致
用户应以一致的方式展示和获取信息
• 所有可视信息的组织均按照贯穿所有屏幕显示 所保持的设计标准
• 输入机制被约束到有限的集合,在整个应用中 被一致地使用
• 从任务到任务的导航机制被一致地定义和实现
10/31/2020
9
其他工具
其他工具:
• HIPO图 • 判定表 • 判定树
10/31/2020
10
软件设计元素
· 模块过程设计 · 代码设计 · 用户界面设计 · 文件格式设计 · 安全控制设计
10/31/2020
11
代码设计
■ 代码是由一些数字、字母或特殊符号组成的用 来表征事物名称、属性、状态和数量等的标识。
10/31/2020
33
用户经验、知识方面的使用需求
• 系统应能让未经专门训练的用户使用
• 系统能对不同经验用户做出不同反应
• 提供同一系统的一致性,建立标准化人机界面
• 系统必须适应用户在应用领域的知识变 化,提供动态的自适应的设计
10/31/2020
34
用户对系统的期望方面的要求
• 用户界面应提供形象、生动、美观的布 局显示和操作环境
界面设计主要包括三个方面:
• 设计软件构件之间的接口 •者设的计界模面块和其他非人的信息生产者和消费 • 设计人(如用户)和计算机间的界面
10/31/2020
17
界面的设计原则
• 分析用户类型 • 应用程序和界面分离 • 一致性 • 尽量减少用户工作 • 出错处理和帮助功能 • 增加可视化图形表示
软件工程第五章总体设计

软件工程第五章总体设计在软件工程中,总体设计是一个至关重要的环节。
它就像是为一座大厦绘制蓝图,为后续的详细设计和编码工作奠定坚实的基础。
总体设计的主要任务是根据需求分析阶段确定的系统功能和性能要求,设计出软件系统的总体结构。
这包括确定系统由哪些模块组成,以及这些模块之间的关系。
通过合理的总体设计,可以有效地提高软件的可维护性、可扩展性和可靠性。
首先,我们来谈谈模块的划分。
模块是软件系统中具有相对独立功能的单元。
在划分模块时,需要遵循高内聚、低耦合的原则。
高内聚意味着一个模块内部的各个部分紧密相关,共同完成一个明确的功能;低耦合则表示模块之间的相互依赖程度要低,以便于独立开发、测试和维护。
例如,一个在线购物系统可以划分为用户管理模块、商品管理模块、订单管理模块等。
每个模块都有其特定的职责,相互之间通过清晰定义的接口进行通信。
模块的结构也有多种形式,如层次结构、网状结构和混合结构等。
层次结构是一种常见的结构,它将系统按照功能的层次进行划分,上层模块调用下层模块,形成一个树形的结构。
这种结构清晰明了,易于理解和维护。
网状结构则模块之间的关系更加复杂,适用于一些对性能要求较高的系统。
而混合结构则是结合了层次结构和网状结构的特点,根据系统的实际需求进行灵活的设计。
接下来,说说数据结构的设计。
数据结构的选择直接影响到系统的性能和效率。
在总体设计阶段,需要确定系统中主要的数据结构,如数据库表结构、文件结构等。
对于数据库设计,要考虑数据的完整性、一致性和安全性。
合理地设计索引和存储过程,可以提高数据的查询和更新速度。
文件结构的设计则要根据数据的特点和访问方式来确定,例如是顺序访问还是随机访问。
在总体设计中,还需要考虑软件的架构风格。
常见的架构风格有客户机/服务器架构(C/S)、浏览器/服务器架构(B/S)和分布式架构等。
C/S 架构适用于对性能要求较高、数据处理较为复杂的系统;B/S 架构则具有易于部署和维护的优点,适用于广泛的互联网应用;分布式架构则可以提高系统的处理能力和可靠性,适用于大规模的应用场景。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件设计的任务
一般交互式软件系统的设计内容 体系结构设计 数据设计 接口设计 人机界面设计 过程设计
Logo
课程内容提纲
Logo
第5章:“详细设计” 详细设计任务 结构程序设计 人机界面设计 过程设计工具 面向数据结构的设计方法 程序复杂程度的定量度量
课程内容提纲
Logo
第5章:“详细设计” 详细设计任务 结构程序设计 人机界面设计 过程设计工具 面向数据结构的设计方法 程序复杂程度的定量度量
Logo
过程设计工具
在详细设计阶段,要决定各个模块的实现算法, 并精确地表达这些算法。
表达过程规格说明的工具叫做详细设计工具, 它可以分为以下三类:
人机界面设计
Logo
人机界面设计指南
一般交互指南
涉及信息显示、数据输入和系统整体控制
(1)保持一致性
– 应该为人机界面中的菜单选择、命令输入、数据显示 以及众多的其他功能,使用一致的格式
(2)提供有意义的反馈
– 应向用户提供视觉的和听觉的反馈,以保证在用户和 系统之间建立双向通信。
(3)在执行有破坏性的动作之前要求用户确认
3 数据输入指南
(1)尽量减少用户的输入动作
– 最重要的是减少击键次数
(2)保持信息显示和数据输入之间的一致性
– 显示的视觉特征(例如文字大小、颜色和位置)应与输入域一 致
(3)允许用户自定义输入 (4)交互应该是灵活的,并且可调整成用户最喜欢的输入
方式
人机界面设计
Logo
(5)使在当前动作语境中不适用的命令不起作用 (6)让用户控制交互流
Logo
第5章 详细设计
软件生命周期
Logo
可行性研究 需求分析 概要设计 详细设计 实现
软件定义
集成测试 确认测试 使用与维护 退役
软件开发
软件使用 与维护
软件设计的任务
Logo
从工程管理的角度来看,软件设计分两步完成
总体设计(概要设计),将软件需求转化为数 据结构和软件的系统结构。
详细设计,即过程设计。通过对结构表示进行 细化,得到软件详细的数据结构和算法。
(1)应该用用户可以理解的术语描述问题 (2)应该提供有助于从错误中恢复的建设性意见
人机界面设计
Logo
(3)信息应该指出错误可能导致哪些负面后果 (4)信息应该伴随着听觉上或视觉上的提示
– 例如,在显示信息时同时发出警告铃声 – 或者信息用闪烁方式显示 – 或者用明显表示出错的颜色显示
(5)信息不能带有指责色彩
• 有两种选择:提供功能的帮助信息和提供全部功能的帮助信息
(2)用户怎样请求帮助?
• 有3种选择:帮助菜单,特殊功能键和HELP命令
(3)怎样显示帮助信息?
• 有3种选择:在独立的窗口中,指出参考某个文档和在屏幕固定 位置显示简短提示
(4)用户怎样返回到正常的交互方式中?
• 有两种选择:屏幕上的返回按钮和功能键
详细设计的任务
详细设计过程 1.确定每个模块的算法
• 选择适当工具表达算法执行过程
2.确定每一个模块的数据组织 3.为每一个模块设计一组测试用例
• 输入数据、预期输出结果
4.编写《详细设计说明书》 5.设计评审
Logo
Logo
详细设计的任务
详细设计内容 用图表列出系统的每个程序,包括每个模块和子程 序名称、标识符、层出结构关系 对程序的功能、性能、输入、输出、算法、流程、 接口等进行描述 内容包括
• 它对用户工作内容是敏感的 • 可缩短用户获得帮助的时间,增加界面的友好性
附加的帮助设施是在系统建成后再添加到 软件中的
• 实际是一种查询能力有限的联机用户手册 • 人们普遍认为,集成的帮助设施优于附加的帮助设施
Logo
人机界面设计
设计帮助设施时必须解决下述问题 (1)交互期间是否在任何时候都能获得关于任何功能的帮助?
Logo
1. 系统响应时间
系统响应时间指
• 从用户完成某个控制动作(例如,按回车键或点击鼠标),到软 件给出预期响应(输出信息或做动作)之间的时间
人机界面设计
Logo
1. 系统响应时间
系统响应时间有两个重要属性
响应长度
• 系统响应时间过长,用户就会感到紧张和沮丧 • 系统响应时间过短,会迫使用户加快操作节奏,从而可能会犯
缺点
• 随着程序内嵌套的层数增多时,内层方框越来越小,这样不仅 会增加画图的难度,还会影响图形的清晰度。
过程设计工具
Logo
3. PAD图
PAD(Problem Analysis Diagram)问题分 析图
日立公司中央研究所在1973年研究开发
使用二维树形结构图描述程序的逻辑
– 也就是说,不能责怪用户
人机界面设计
Logo
4. 命令交互
在提供命令交互方式时,必须考虑下列设计 问题
(1)是否每个菜单选项都有对应的命令? (2)采用何种命令形式?
– 有3种选择:控制序列(例如,Ctrl+P),功能键和键入 命令。
(3)学习和记忆命令的难度有多大?忘记了怎么办? (4)用户是否可以定制或缩写命令?
• 程序描述:程序简要描述,意义和特点 • 功能:程序应具备的功能 • 性能:精度、灵活性和时间特性等 • 输入项 • 输出项
课程内容提纲
Logo
第6章:“详细设计” 详细设计任务 结构程序设计 人机界面设计 过程设计工具 面向数据结构的设计方法 程序复杂程度的定量度量
结构程序设计是尽可能少用GOTO语句的程序设计方法。 最好仅在检测出错误时才使用GOTO语句,而且应该 总是使用前向GOTO语句
结构程序设计
Logo
2 结构程序设计分类
只允许使用顺序、IF-THEN-ELSE分支和DO-WHILE 型循环这三种基本控制结构,称为经典的结构程序设 计
还允许使用DO-CASE多分支结构和DO-UNTIL循环结 构,称为扩展的结构程序设计
1968年人们认识要创立一种新的程序设计思想 • 以显著地提高软件生产率和降低软件维护代价
结构程序设计
Logo
1 结构程序设计的提出 1971年IBM公司成功地使用了结构程序设计技术
• 纽约时报信息库管理系统 • 美国宇航局空间实验室飞行模拟系统
1972年IBM公司的Mills进一步补充了结构程序设计的 规则
g
i
x4
e
h
x7
b
F
x1
T
Case x i
f
x2 x3 x4 F
x6
T
x5
g
i de c
h
x8
j
示例
xห้องสมุดไป่ตู้ x8 j
Logo
N-S图的嵌套定义形式
过程设计工具
Logo
N-S图的特点
优点
• 功能域(一个特定控制结构的作用域)明确,可以从盒图上一眼 就看出来。
• 没有箭头不允许随意转移控制,不可能任意转移控制。 • 很容易确定局部和全程数据的作用域。 • 很容易表现嵌套关系,也可以表示模块的层次结构。
(7)允许犯错误
– 系统应该能保护自己不受严重错误的破坏。
(8)按功能对动作分类,并据此设计屏幕布局
– 设计者应该尽力提高命令和动作组织的“内聚性”
(9)提供对用户工作内容敏感的帮助设施 (10)用简单动词或动词短语作为命令名
人机界面设计
Logo
人机界面设计指南 2 信息显示指南
(1)只显示与当前工作内容有关的信息
基本符号
过程设计工具
2. 盒图 (N-S图)
Logo
第1个任务 第2个任务
第n个任务
F
条件
T
ELSE THEN 部分 部分
CASE条件 值1 值2
CASE1 CASE2 部分 部分
值n
CASEn 部分
循环条件
DO-
DO-
UNTIL
A
WHILE
部分
部分
循环条件
a
a
b
x1
x2
x5
f
c
x6
x3 d
(5)怎样组织帮助信息?
• 有3种选择:平面结构(所有信息都通过关键字访问),信息的层 次结构(用户可在该结构中查到更详细的信息)和超文本结构
人机界面设计
Logo
3. 出错信息处理 出错信息和警告信息
• 是出现问题时交互式系统给出的“坏消息”
一般说来,交互式系统给出的出错信息或警 告信息,应该具有下述属性:
– 用户应该能够跳过不必要的动作 – 改变所需做的动作的顺序(在应用环境允许的前提下) – 以及在不退出程序的情况下从错误状态中恢复正常
(7)对所有输入动作都提供帮助 (8)消除冗余的输入
– 不要要求用户指定输入数据的单位 – 尽可能提供默认值 – 绝对不要要求用户提供程序可以自动获得或计算出来的信息。
– 用户在获得有关功能的信息时,不必看到与之无关的 数据、菜单和图形。
(2)不要用数据淹没用户
– 应该用便于用户迅速吸取信息的方式来表示数据 – 例如,可以用图形或图表来取代庞大的表格。
(3)使用一致标记、标准的缩写和可预知的颜色
– 显示的含义应该非常明确,用户无须参照其他信息源 就能理解。
人机界面设计
图形工具 表格工具 语言工具
过程设计工具
Logo
1. 程序流程图
在40年代末到70年代中期,程序流程图一直是 软件设计的工具
它以对控制流程的描绘直观、易于掌握而被设 计人员青睐