软件工程导论第6章 详细的设计-文档资料
[工学]软件工程导论 张海藩第5版第6章
![[工学]软件工程导论 张海藩第5版第6章](https://img.taocdn.com/s3/m/b038d67d804d2b160b4ec036.png)
6.2.3 人机界面设计指南
总结众多设计者的经验得出的设计指南, 有助于设计者设计出友好、高效的人机界面。 下面介绍3类人机界面设计指南。 1. 一般交互指南 一般交互指南涉及信息显示、数据输入 和系统整体控制,因此,这类指南是全局性 的,忽略它们将承担较大风险。下面讲述一 般交互指南。
22
(1) 保持一致性。应该为人机界面中的菜单选择、 命令输入、数据显示以及众多的其他功能,使用一 致的格式。 (2) 提供有意义的反馈。应向用户提供视觉的和听 觉的反馈,以保证在用户和系统之间建立双向通信。 (3) 在执行有较大破坏性的动作之前要求用户确认。 如果用户要删除一个文件,或覆盖一些重要信息, 或终止一个程序的运行,应该给出“您是否确实 要……”的信息,以请求用户确认他的命令。 (4) 允许取消绝大多数操作。UNDO或REVERSE功 能曾经使众多终端用户避免了大量时间浪费。每个 交互式系统都应该能方便地取消已完成的操作。
27
3. 数据输入指南
用户的大部分时间用在选择命令、键入数据 和向系统提供输入。在许多应用系统中,键盘仍然 是主要的输入介质,但是,鼠标、数字化仪和语音 识别系统正迅速地成为重要的输入手段。下面是关 于数据输入的设计指南。 (1) 尽量减少用户的输入动作。最重要的是减少击 键次数,这可以用下列方法实现:用鼠标从预定义 的一组输入中选一个;用“滑动标尺”在给定的值 域中指定输入值;利用宏把一次击键转变成更复杂 的输入数据集合。
10
6.2.1 设计问题
一、 4个设计问题
在设计人机界面的过程中,几乎总会遇到下述 4个问题:系统响应时间、用户帮助设施、出错信 息处理和命令交互。不幸的是,许多设计者直到设 计过程后期才开始考虑这些问题,这样做往往导致 出现不必要的设计反复、项目延期和用户产生挫折 感。最好在设计初期就把这些问题作为重要的设计 问题来考虑,这时修改比较容易,代价也低。下面 讨论这4个设计问题。
张海藩《软件工程导论》(第6版)(章节题库 第6章 详细设计)【圣才出品】

十万种考研考证电子书、题库视频学习平台
第 6 章 详细设计
一、选择题 1.在软件开发过程中,以下说法正确的是( )。 A.程序流程图是逐步求精的好工具 B.N-S 图不可能任意转移控制,符合结构化原则 C.判定表是一种通用的设计工具 D.程序流程图和 N-S 图都不易表达模块的层次结构 【答案】B 【解析】程序流程图本质上不是逐步求精的好工具,它会使程序员过早地考虑程序的控 制流程,而不去考虑程序的全局结构;判定表不是一种通用的设计工具,没有一种简单的方 法使用它能同时清晰地表示顺序和循环等结构;程序流程图不易表示模块的层次结构,N- S 图则可以表示模块的层次结构。
11.程序控制一般分为( )、分支、循环三种基本结构。 A.分块 B.顺序 C.循环 D.分支 【答案】B 【解析】程序控制一般分为顺序结构、分支结构也成选择结构、循环结构三种基本结构, 任何一种结构都能由这三种结构组成。
12.Jackson 方法根据( )来导出程序结构。 A.数据结构 B.数据间的控制结构
4 / 14
圣才电子书 十万种考研考证电子书、题库视频学习平台
10.对于详细设计,下面说法错误的是( )。 A.详细设计是具体地编写程序 B.详细设计是细化成很容易地从中产生程序图纸 C.详细设计的结果基本决定了最终程序的质量 D.详细设计中采用的典型方法是结构化程序设计方法 【答案】A 【解析】详细设计阶段,主要对模块内的算法和模块内的数据结构进行设计,具体编写 程序属于编码阶段的任务。
8.( )工具在软件详细设计过程中不采用。 A.判定表 B.IPO 图 C.PDL D.DFD 图 【答案】D 【解析】DFD 图(数据流图)是软件需求阶段过程中采用的工具,用于描述系统的分 解,即描述系统由哪几个部分组成,各部分之间有什么联系等等。
软件工程导论 第6章 详细设计(Finished)

第六章 详细设计详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。
详细设计阶段的任务还不是具体地编写程序,而是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码。
因此,详细设计的结果基本上决定了最终的程序代码的质量。
考虑程序代码的质量时必须注意,程序的“读者”有两个,那就是计算机和人。
在软件的生命周期中,设计测试方案、诊断程序错误、修改和改进程序等等都必须首先读懂程序。
实际上对于长期使用的软件系统而言,人读程序的时间可能比写程序的时间还要长得多。
因此,衡量程序的质量不仅要看它的逻辑是否正确,性能是否满足要求,更主要的是要看它是否容易阅读和理解。
详细设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。
结构程序设计技术是实现上述目标的关键技术,因此是详细设计的逻辑基础。
6.1 结构程序设计结构程序设计的概念最早由E.W.D ijkstra 提出。
1965年他在一次会议上指出:“可以从高级语言中取消GO TO 语句”,“程序的质量与程序中所包含的GO TO 语句的数量成反比”。
1966年Bohm 和Jacopini 证明了,只用3种基本的控制结构就能实现任何单入口单出口的程序。
这3种基 本的控制结构是“顺序”、“选择”和“循环”,它们的流程图分别为图6.1(a),6.1(b)和6.1(c)。
实际上用顺序结构和循环结构(又称DO_WHILE 结构)完全可以实现选择结构(又称IF_THEN_ELSE 结构),因此,理论上最基本的控制结构只有两种。
Bohm 和Jacopini 的证明给结构程序设计技术奠定了理论基础。
1968年Dijkstra再次建议从一切高级语言中取消GO TO语句,只使用3种基本控制结构写程序。
软件工程导论第6章

70年代初N.Wirth在Pascal语言中设置支持“顺序 结构”、“IF-THEN-ELSE选择结构”、“DO-WHILE 重复结构”或“DO-UNTIL重复结构”三种基本控制 结构语句。
25
3种基本控制结构
(1) 顺序型
A B
(2) 选择型
F P A B T
(2) 多情况选择型(case)
T T
P=1 F P=2 F P=n F
…
A1 A2
T
An
(3) 先判定型循环
后判定型循环
(do-while)
F
(do-until)
P T S
S P F
T
例1、某模块有两个输入a和b,一 个输出c,当满足条件(a>0)and(b<2) 时,c=a+b,否则c=a-b。画出该模 块的程序流程图。
a b
第6章 详细设计
6.1 结构程序设计 6.2 人机界面设计 6.3 过程设计的工具 6.4 面向数据结构的设计方法 6.5 程序复杂程度的定量度量 6.6 小结 习题
1
详细设计阶段的根本目标:确定应该怎样具体地 实现所要求的系统。 为软件结构图中的每一个模块确定使用的算法和 块内数据结构,并用某种选定的表达工具给出清晰 的描述。
100 110
120
130 140
Eq:等于 ne:不等于 gt:大于 lt:小于 ge:大于等于 le:小于等于
例:打印A、B、C三数中最小者的程序 if (A.LT.B .AND. A.LT.C)then write(6,*) A else if (A.GE.B .AND. B.LT.C) then write(6,*) B else write(6,*) C endif endif
软件工程导论第6章(第4版)

二. 人机界面设计
人机界面设计是接口设计的一个重要的组成部 分。对于交互式系统来说,人机界面设计和数据设 计、体系结构设计及过程设计一样重要。
1.指导规则
T.Mandel在《用户界面设计要素》中,提出了3 条指导规则: 让用户驾驭软件,不是软件驾驭用户 减少用户的记忆 保持界面的一致性
2. 应该考虑的设计问题
4. 人机界面设计指南
(3) 数据输入指南 尽量减少用户的输入动作。 保持信息显示和数据输入之间的一致性。 允许用户自定义输入。 交互应该是灵活的,可调整成用户喜欢的输入方式。 使在当前动作语境中不适用的命令不起作用。 让用户控制交互流。 对所有输入动作都提供帮助。 消除冗余的输入。
三. 过程设计
1.过程设计的目的与任务 目的 确定模块采用的算法和块内数据结构,用某种 选定的表达工具给出清晰的描述。 任务:编写软件的“过程设计说明书” 为每个模块确定采用的算法 (模块的详细过程性 描述) 确定每一模块使用的数据结构 确定模块接口的细节 (包括对系统外部的接口和 用户界面,对系统内部其他模块的接口,以及关 于模块输入数据、输出数据及局部数据的全部细 节)
三. 过程设计
2.过程设计的原则与方法
清晰第一的设计风格 结构化的控制结构 结构程序设计的经典定义为: “如果一个程序的代码块仅仅通过顺序、选择和循环这3 种基本控制结构进行连接,并且每个代码块只有一个入口和 一个出口,则称这个程序是结构化的。” 结构程序设计技术是一种实现在逻辑上正确描述每个模 块的功能,并且使设计出的处理过程尽可能简明易懂的关键 技术,是过程设计的逻辑基础。 逐步细化的实现方法 例:在一组数中找出其中的最大数
(4) 命令交互 命令行现在仍然是许多高级用户偏爱的交互方式。在 多数情况下,用户既可以从菜单中选择软件功能,也可以 通过键盘命令序列调用软件功能。 在提供命令交互方式时,必须考虑下列设计问题: 是否每个菜单选项都有对应的命令? 采用何种命令形式?有3种选择:控制序列(例如Ctrl+P), 功能键和键入命令。 学习和记忆命令的难度有多大?忘记了命令怎么办? 用户是否可以定制或缩写命令? 在理想的情况下,所有应用软件都有一致的命令使用 方法。
软件工程导论class8详细设计

(1)只显示与当前工作内容有关的信息 (2)应用便于用户迅速吸取信息的方式来表示数据 (3)使用一致的标记、标准的缩写和可预知的颜色
2 信息显示指南
(4)允许用户保持可视化的语境 (5)产生有意义的出错信息 (6)使用大小写、缩进和文本分组以帮助理解 (7)使用窗口分隔不同类型的信息 (8)使用“模拟”显示方式表示信息,以使信息 更容易被用户提取 (9)高效率地使用显示屏
3. 出错信息处理
定义: 出错信息和警告信息,是出现问题时 交互式系统给出的“坏消息” 应具有的属性 信息应该用用户可以理解的术语描述问题 信息应该提供有助于从错误中恢复的建设性 意见 信息应该指出错误可能导致哪些负面后果 信息应该伴随着听觉上或视觉上的提示 信息不能带有指责色彩
6.3.2 盒图(N-S图)
N-S图的嵌套定义形式
6.3.3 PAD(problem analysis diagram)图
问题分析图 , 1973 年由日本日立公司提出 已得到一定程度的使用,它用二维树形结构 的图来表示程序的控制流,将这种图翻译成 程序代码比较容易。下面是PAD图的基本符 号
6.1 结构程序设计
定义: 如果一个程序的代码块仅仅通过顺序、 选择和循环这3种基本控制结构进行连接, 并且每个代码块只有一个入口和一个出口, 则称这个程序是结构化的 分类
经典的结构程序设计:顺序、IF-THEN-ELSE型分 支和DO-WHILE 型 扩展的结构程序设计: DO-CASE型多分支结构和 DO-UNTIL型循环结构 修正的结构程序设计:LEAVE(或BREAK)结构
6.3.6 过程设计语言(PDL)
(完整word版)软件工程导论(第6版)(word文档良心出品)

第一章、软件工程学概述软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件危机包含下述两个方面的问题:1.如何开发软件,以满足对软件日益增长的需求。
2.如何维护数量不断膨胀的已有软件。
具体的说,软件危机主要有以下一些典型表现:1.对软件开发成本的进度的估计常常很不准确。
2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住。
4.软件常常是不可维护的。
5.软件通常没有适当的文档材料。
6.软件成本在计算机系统总成本中所占的比例逐年上升。
7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
软件生命周期:一个软件从定义、开发、使用和维护,知道最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生命周期。
软件配置:程序、文档和数据。
软件工程学的一个重要的目标:就是提高软件的可维护性,减少软件维护的代价。
软件:是程序、数据及相关文档的集合。
程序:是能够完成预定功能和性能的可执行的指令序列。
数据:是使程序能够适当地处理信息的数据结构。
文档:是开发、使用和维护程序所需要的图文资料。
软件工程:指导计算机软件开发和维护的一门工程学科。
软件工程具有下属的本质特性:1.软件工程关注于大型程序的构造。
2.软件工程的中心课题是控制复杂性。
3.软件经常变化。
4.开发软件的效率非常重要。
5.和谐地合作是开发软件的关键。
6.软件必须有效地支持它的用户。
7.在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程的7条基本原理:1.用分阶段的生命周期计划严格管理。
2.坚持进行阶段评审。
3.实行严格的产品控制4.采用现代程序设计技术。
5.结构应能清楚的审查。
6.开发小组的人员应该少而精。
7.承认不断改进软件工程实践的必要性。
软件工程:包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。
通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为泛型。
张海藩《软件工程导论》(第6版)(课后习题 第6章 详细设计)【圣才出品】

第6章详细设计
1.假设只有SEQUENCE和DO-WHILE两种控制结构,怎样利用它们完成IF THEN ELSE操作?
答:转化如下:
K=1
DO WHILE(条件AND K EQ1)
程序块1
K=K+1
END DO
DO WHILE((NOT条件)AND K EQ1)
程序块2
K=K+1
END DO
2.假设只允许使用SEQUENCE和IF-THEN-ELSE两种控制结构,怎样利用它们完成DO WHILE操作?
答:转化如下:
label:IF(条件)THEN
程序块
GOTO label
ELSE
程序块
END IF
3.画出下列伪码程序的程序流程图和盒图:
答:(1)流程图如图6-18所示。
图6-18从伪码变成的程序流程图(2)该程序的盒图如图6-19所示。
图6-19从伪码变成的程序盒图4.图6-20给出的程序流程图代表一个非结构化的程序,问:
图6-20一个非结构化程序
(1)为什么说它是非结构化的?
(2)设计一个等价的结构化程序。
(3)在(2)题的设计中使用附加的标志变量flag了吗?若没用,再设计一个使用flag 的程序;若用了,再设计一个不用flag的程序。
答:(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。
图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。
(2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,图6-21描绘了等价的结构化程序的盒图。
(a)解法1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
缺点:
6.4 续
改进的Jackson图
A
B
C
顺序结构
D
(B、C、D中任一个都不能使选择出现或重复出现的数据元素)
A由B、C、D 3个元素顺序组成
6.4 续
改进的Jackson图
A
S(i)
B°
C° 选择结构
D°
(S右面括号中的数字i是分支条件的编号)
根据条件A选 B或C或D中的某一个
6.4 续
6.4 续
软件所处理的信息的组织结构,相互之间存在一种或 多种特定关系的数据元素的集合。 面向数据结构的设计方法,也就是用面向数据结构作 为程序设计的基础。 重复出现的数据通常由具有循环控制结构的程序来处 理; 选择数据要用带有分支控制结构的程序来处理; 层次的数据组织通常和使用这些数据的程序的层次结 构十分相似。
6.4 续
Jackson图
⑶重复结构
重复结构的数据,根据使用时的条件由一个数据元素 出现零次或多次构成。
A由B出现N次(N≥0)组成
6.4 续
Jackson图
优点:
⑴Jackson图不仅便于表示层次结构,而且也有利于对 结构自顶向下分解; ⑵ Jackson图形象直观,可读性好; ⑶ Jackson图不仅能表示数据结构,也能表示程序结构。 ⑴在选择结构和重复结构中,选择条件或循环结束条 件不能直接在Jackson图中表示出来,影响了图形的表 达能力,也不利于直接把图翻译成程序。 ⑵框间连线为斜线,不易在行式打印机上输出。
⑴顺序结构
顺序结构的数据由一个或多个数据元素组成,每个元 素按确定次序出现一次。
(每个元素只出现一次,出现的次序依次是B、C、D)
A由B、C、D 3个元素顺序组成
6.4 续
Jackson图
⑵选择结构
选择结构的数据包含两个或多个数据元素,每次使用 这个数据时按一定条件从这些数据元素中选择一个。
根据条件A选B或C或D中的某一 个
Jackson方法设计步骤
6.4 续
⑴分析并确定输入数据和输出数据的逻辑结构, 并用Jackson图表示这些数据结构。 ⑵找出输入数据结构和输出数据结构中有对应关 系的数据单元。
⑶按一定的规则从描绘数据结构的Jackson图导出 描绘程序结构的Jackson图。
⑷列出所有操作与条件,并把它们分配到程序结 构图的适当位置。 ⑸用伪代码写出程序。
普通高校本科计算机专业特色教材精选
张海藩 编著
软件工程导论 (第4版)
主要内容
6.4 面向数据结构的设计方法
第6章 详细设计
6.5 程序复杂程度的定量度量
教学重点
Jackson图、McCabe方法。
详细设计
任务:确定怎样具体地实现用户需要的软件系统, 即把解法具体化,设计出程序的“蓝图”。 目标:逻辑上正确地实现每个模块的功能,并使 设计出的处理过程简明易懂。除了保证软件的可 靠性,还要使将来编写出来的程序可读性好、容 易理解、容易测试、容易修改和维护。 方法:采用结构程序设计技术,即采用自顶向下 逐步求精的设计方法和单入口单出口的控制结构。 工具:过程设计工具,描述程序处理过程的工具。
改进的Jackson图
A
S(i)
B° 可选结构
-°
(A或者是元素B或者不出现)
6.4 续
改进的Jackson图
A
I(i)
B*
(循环结束符号的编号为i)
重复结构
A由B出现N次 (N≥0)组成
层次图示例:
6.4 续
层次方框图示例
6.4 续
6.4 续
Jackson图
Jackson图模块;在Jackson 图中,一个方框通常只代表几个语句。 ⑵层次图表现的是调用关系;而Jackson图表现的是组 成关系。 Jackson图是对层次方框图的一种细化。
程序流程图
开始
2000→t
判 定 闰 年 的 算 法
y不能被 4整除 y不能被 100整除 打印y “是闰年”
Y N Y
打印y “不是闰年” y+1→y y不能被 400整除
N
Y
N
打印y “是闰年” 打印y “不是闰年”
N y>2500
结束
Y
盒图:判定闰年的算法
2000 =〉y 是 y/100的余数不为0 是 y/400的余数为0 打印y “是闰年” 是 否 否 打印y “非闰年” y/4的余数为0 否
Jackson图与层次方框图
6.4 续
Jackson方法
1975年,英国人M.A.Jackson提出了软件工程领域 中著名的Jackson方法,当时它只用于软件设计。 1983年,Jackson又对它进行了多方面的扩充和完 善,又应用于需求分析过程中。 核心思想:根据作用于数据的操作序列的结构 (顺序、选择、重复),建立目标软件系统的模 型,然后将其转换为相应的程序结构。
打印y “是闰年”
打印y “非闰年”
y + 1 =〉y 直到 y > 2500
判定表示例:行李托运费
规则
判定树示例:行李托运费
伪码示例:
判 定 闰 年 的 算 法
6.3 续
内 层 选 择 结 构
中 层 选 择 结 构
外 层 选 择 结 构
面向数据的分析方法
分类:
• •
6.4 面向数据结构的设计方法
Jackson方法设计示例1
6.4 续
一个正文文件由若干个记录组成,每个记录是一 个字符串。要求统计每个记录中空格字符的个数, 以及文件中空格字符的总个数。要求的输出数据 格式是,每复制一行输入字符串之后,另起一行 印出这个字符串中的空格数,最后印出文件中空 格的总个数。
步骤Ⅰ—数据结构表示
数据结构与程序结构:
方法:Jackson方法、Warnier方法
6.4 续
Warnier图示例
首 版
标题新闻 国内新闻 本地新闻 股市行情(0,1) 商业新闻 广告(1,5) 文化、体育新闻 散文 新书评论
报 纸
商业金融版
文化体育版
6.4 续
Jackson图
数据结构中,各数据元素彼此间的逻辑关系归结 起来只有顺序、选择和重复三类基本结构。
⑴面向数据流
⑵面向数据结构 特点: ⑴以信息对象及其操作为核心进行分析,与面向 对象分析有相似之处。
•
•
⑵认为复合信息对象具有层次结构,并且可按顺 序、选择、重复三种结构分解为成员信息对象。
⑶提供将层次信息结构映射为程序结构的机制, 从而为软件设计奠定较好的基础。
•
面向数据结构的设计方法
目标:得出对程序处理过程的描述。 数据结构