软件工程导论第五版 第六章
第6章详细设计6.1结构程序设计
图6.1 3种基本的控制结构
图6.2其他常用的控制结构
6.2人机界面设计
6.2.1设计问题
1. 系统响应时间
2. 用户帮助设施
3. 出错信息处理
2
软件工程导论(第五版) 4. 命令交互
6.2.2设计过程
6.2.3人机界面设计指南
1. 一般交互指南
2. 信息显示指南
3. 数据输入指南
6.3过程设计的工具
6.3.1程序流程图
6.3.2盒图
图6.3程序流程图中使用的符号
软件工程导论(第五版) 3
图6.4盒图的基本符号
6.3.3PAD图
图6.5PAD图的基本符号
4
软件工程导论(第五版)
图6.6使用PAD图提供的定义功能来逐步求精的例子6.3.4判定表
6.3.5判定树
6.3.6过程设计语言
图6.7用判定树表示计算行李费的算法
软件工程导论(第五版) 5 6.4面向数据结构的设计方法
6.4.1Jackson图
1. 顺序结构
2. 选择结构
图6.8A由B、C、D 3个元素顺序组成
图6.9根据条件A是B或C或D中的某一个
3. 重复结构
图6.10A由B出现N次(N≥0)组成
6.4.2改进的Jackson图
6
软件工程导论(第五版)
图6.11改进的Jackson图
6.4.3Jackson方法
图6.12表示输入输出数据结构的Jackson图
图6.13描绘统计空格程序结构的Jackson图
软件工程导论(第五版) 7
图6.14把操作和条件分配到程序结构图的适当位置
6.5程序复杂程度的定量度量
6.5.1McCabe方法
1. 流图
8
软件工程导论(第五版)
图6.15把程序流程图映射成流图
软件工程导论(第五版) 9
图6.16由PDL翻译成的流图
图6.17由包含复合条件的PDL映射成的流图
2. 计算环形复杂度的方法
3. 环形复杂度的用途
10
软件工程导论(第五版)
6.5.2 Halstead方法
6.6小结
习题6
1. 假设只有SEQUENCE和DO-WHILE两种控制结构,怎样利用它们完成IF-THEN-ELSE 操作?
2. 假设只允许使用SEQUENCE和IF-THEN-ELSE两种控制结构,怎样利用它们完成DO-W HILE操作?
3. 画出下列伪码程序的程序流程图和盒图:
4. 图6.18给出的程序流程图代表一个非结构化的程序,问:
(1) 为什么说它是非结构化的?
(2) 设计一个等价的结构化程序。
(3) 在(2)题的设计中使用附加的标志变量flag了吗?若没用,再设计一个使用flag的程
序;若用了,再设计一个不用flag的程序。
软件工程导论(第五版) 11
图6.18一个非结构化程序
5. 研究下面的伪码程序:
要求:
(1) 画出程序流程图。
(2) 程序是结构化的吗?说明理由。
(3) 若程序是非结构化的,设计一个等价的结构化程序并且画出程序流程图。
(4) 此程序的功能是什么?它完成预定功能有什么隐含的前提条件吗?
6. 用Ashcroft_Manna技术可以将非结构化的程序转换为结构化程序,图6.19是一个转换的例子。
12
软件工程导论(第五版)
图6.19用Ashcroft-Manna技术的例子
(a) 非结构化设计;(b) 转换成的等价的结构化设计
(1) 能否从这个例子总结出Ashcroft-Manna技术的一些基本方法?
(2) 进一步简化图6.19(b)给出的结构化设计。
7. 某交易所规定给经纪人的手续费计算方法如下:总手续费等于基本手续费加上与交易
中的每股价格和股数有关的附加手续费。
如果交易总金额少于1000元,则基本手续费为交易金额的8.4%;如果交易总金额在1000元到10000元之间,则基本手续费为交易金额的5%,再加34元;如果交易总金额超过10000元,则基本手续费为交易金额的4%加上134元。
当每股售价低于14元时,附加手续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费为基本手续费的9%。
当每股售价在14元到25元之间时,附加手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种情况下附加手续费为基本手续费的6%。
当每股售价超过25元时,如果交易的股数零散(即,不是100的倍数),则附加手续费为基本手续费的4%,否则附加手续费为基本手续费的1%。
要求:
(1) 用判定表表示手续费的计算方法。
(2) 用判定树表示手续费的计算方法。
8. 画出下列伪码程序的流图,计算它的环形复杂度。
这个程序的逻辑有什么问
题吗?
软件工程导论(第五版) 13
9. 把统计空格程序的Jackson图(图6.13)改画为等价的程序流程图和盒图。
10. 人机对话由操作员信息和系统信息交替组成。
假设一段对话总是由操作员信息开始
以系统信息结束,用Jackson图描绘这样的人机对话过程。
[工学]软件工程导论 张海藩第5版第6章
6.2.3 人机界面设计指南
总结众多设计者的经验得出的设计指南, 有助于设计者设计出友好、高效的人机界面。 下面介绍3类人机界面设计指南。 1. 一般交互指南 一般交互指南涉及信息显示、数据输入 和系统整体控制,因此,这类指南是全局性 的,忽略它们将承担较大风险。下面讲述一 般交互指南。
22
(1) 保持一致性。应该为人机界面中的菜单选择、 命令输入、数据显示以及众多的其他功能,使用一 致的格式。 (2) 提供有意义的反馈。应向用户提供视觉的和听 觉的反馈,以保证在用户和系统之间建立双向通信。 (3) 在执行有较大破坏性的动作之前要求用户确认。 如果用户要删除一个文件,或覆盖一些重要信息, 或终止一个程序的运行,应该给出“您是否确实 要……”的信息,以请求用户确认他的命令。 (4) 允许取消绝大多数操作。UNDO或REVERSE功 能曾经使众多终端用户避免了大量时间浪费。每个 交互式系统都应该能方便地取消已完成的操作。
27
3. 数据输入指南
用户的大部分时间用在选择命令、键入数据 和向系统提供输入。在许多应用系统中,键盘仍然 是主要的输入介质,但是,鼠标、数字化仪和语音 识别系统正迅速地成为重要的输入手段。下面是关 于数据输入的设计指南。 (1) 尽量减少用户的输入动作。最重要的是减少击 键次数,这可以用下列方法实现:用鼠标从预定义 的一组输入中选一个;用“滑动标尺”在给定的值 域中指定输入值;利用宏把一次击键转变成更复杂 的输入数据集合。
10
6.2.1 设计问题
一、 4个设计问题
在设计人机界面的过程中,几乎总会遇到下述 4个问题:系统响应时间、用户帮助设施、出错信 息处理和命令交互。不幸的是,许多设计者直到设 计过程后期才开始考虑这些问题,这样做往往导致 出现不必要的设计反复、项目延期和用户产生挫折 感。最好在设计初期就把这些问题作为重要的设计 问题来考虑,这时修改比较容易,代价也低。下面 讨论这4个设计问题。
第6章_详细设计.
endif enddo
6.3.3 PAD图(问题分析图)
❖ PAD图用二维树形结构的图来表示程序的控制流, 将这种图翻译成程序代码比较容易。
▪ 图中最左边的竖线是程序的主线,即第一层结构 ▪ 随着程序层次的增加,PAD图逐渐向右延伸,每增加
一个层次,图形向右扩展一条竖线 ▪ PAD图中竖线的总条数就是程序的层次数
6.2.1 设计问题
2. 用户帮助设施 几乎交互式系统的每个用户都需要帮助,当遇到复 杂问题时甚至需要查看用户手册以寻找答案。
❖ 常见的帮助设施可分为集成的和附加的两类。
▪ 集成的帮助设施从一开始就设计在软件里面,可以缩短 用户获得帮助的时间,增加界面的友好性。
▪ 附加的帮助设施是在系统建成后再添加到软件中的,在 多数情况下它实际上是一种查询能力有限的联机用户手 册。
i++ Printf(“Sum”)
结束
6.3.1 程序流程图
❖ 程序流程图的主要缺点如下: (1) 程序流程图本质上不是逐步求精的好工具,它诱
使程序员过早地考虑程序的控制流程,而不去考 虑程序的全局结构。 (2) 程序流程图中用箭头代表控制流,因此程序员不 受任何约束,可以完全不顾结构程序设计的精神, 随意转移控制。 (3) 程序流程图不易表示数据结构。
6.3.3 PAD图(问题分析图)
❖ PAD图的基本符号有:
6.3.3 PAD图(问题分析图)
❖ PAD图的主要优点:
▪ 使用PAD符号设计出来的程序必然是结构化程序。 ▪ PAD图所描绘的程序结构十分清晰。 ▪ 用PAD图表现程序逻辑,易读、易懂、易记。
• 程序从图中最左边竖线上端的结点开始执行,自上 而下,从左向右顺序执行,遍历所有结点
软件工程导论(第五版)课后习题答案
2.可行性研究目的? 确定在问题定义中所提出的问题是否值得去解,在限制条件下,问题能否解决。
3.可行性研究的任务? (1) 进一步分析和澄清问题的定义,在澄清问题的基础上,导出系统的逻辑模型; (2) 从系统逻辑模型中,选择问题的若干种主要解法,研究每一种解法的可行性, 为以后的行动提出建议; (3) 如果问题没有可行的解,建议停止系统开发;如果问题有可行的解,应该推荐 一个较好的解决方案,并为工程制定一个初步的计划。
准则等。 (3) 对现有系统的分析:处理流程,图示说明现有系统的处理流程和数据流
程;现有系统存在的问题。 (4) 系统需求:主要功能;主要性能及其要求;操作要求;信息要求;限制
性要求。 (5) 建议系统:系统目标;处理流程;系统结构,功能,性能;系统技术可行
性;投资和效益分析;操作可行性;法律可行性。 (6) 其它可选方案:与国内外同类型方案的比较;提出一两个可行性方案供
形成患E者2 日志”这项要求可F5以安想全到范围,还应该D有2患一者个安提全供范日围期和时间信P3息的“时钟”
软件工程导论第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
软件工程导论第五版复习重点
储户
储户
1
记录存款 信息
打印存款 信息
存款单
存款信息
存款存单
3
计算利息
4
打印利息 清单
存款信息
利息值
利息清单
D1
存款信息
存款信息
2
细化后的计算机储蓄系统软件结构
第3章 需求分析
1、需求分析的基本任务是什么?P46-P48 2、分析建模 2.1什么是模型? 模型:就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。 2.2数据模型(E-R)、 功能模型(2.4节数据流图)、 行为模型(状态转换图是行为模型的基础) 3、要从哪些方面验证软件需求?P60
第6章 详细设计
1、结构程序设计中有哪几种基本控制结构?P108 2、了解人机界面的设计。 3、掌握过程设计的工具(程序流程图、盒图、PAD图,判定树)P114—P119 4、面向数据结构的设计方法(Jackson图) 5、程序复杂度的定量度量(McCabe)
6.1 结构程序设计
6.1 结构程序设计
实现
编码和测试
7.2 软件测试基础
7.2 软件测试基础
软件测试:为发现程序中的错误而执行程序的过程。 软件测试的准则(尽早和不断的测试、彻底测试的不可能、软件测试是有风险的行为、并非所有的软件错误都能恢复、反向思维逻辑、由小到大的测试范围、避免检查自己的代码、追溯至用户需求) 测试方法(黑盒测试和白盒测试) 测试步骤(模块测试、子系统测试、系统测试、验收测试、平行运行)
图6.4 盒图的基本符号
图6.5 PAD中基本符号 顺序结构;(b) 分支结构;(c) 多分支CASE结构; (d) 当型循环;(e);直到型循环;(f) 语句标号;(g)定义
软件工程导论第五版复习资料全
软件危机的表现
1)对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个
数量级、 实际进度比计划进度拖延几个月甚至几年的现象,
从而降低了开发商的信誉, 引起
用户不满。
2)用户对已完成的软件不满意的现象时有发生。
3)软件产品的质量往往是靠不住的。
4)软件常常是不可维护的。
5)软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作
读输入
计算最佳解
编辑结果
编辑输入
输出结果
解 格式化 的解
结果格式化
格式化 的解
显示结果
.专业 .整理 .
下载可编辑
M
M
A
B
A
B
C
a.选择调用
b.循环调用
7、面向数据流的设计方法 变换分析
变换分析是一系列设计步骤的总称, 确定的模式映射成软件结构。
经过这些步骤把具有变换流特点的数据流图按预先
1)重画数据流图;确定其具有变换流特征。
设: i 表示年利率,现在存入 P 元, n 年后的价值为 F 元,
则有:
F=P
(1 + i )n
如果 n 年后能收入 F 元,这些钱折算成现在的价值称为折现值,折现公式为:
P=F/
(1 + i )n
2)纯收入。 是指在整个生存周期系统的累计收入的折现值
PT 与总成本折现值 S T 之差,
以 T 表示,则有:
3)深度、宽度、扇出和扇入都应适当
4)模块的作用围应在控制围之
5)力争降低模块接口的复杂程度 6)设计单入口单出口的模块
7)模块功能应该可以预测
6、描绘软件结构的图形工具(层次图、 HIPO 图、结构图)
软件工程导论----张海藩(第五版)课后习题答案
《软件工程导论》课后习题答案第三章需求分析习题答案1.需求分析的描述工具有哪些?有数据流图、数据字典、判定表、判定树、结构化自然语言、层次方框图、Warnier 图、IPO图和需求描述语言等。
2.需求分析的基本任务是什么?准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。
3.怎样建立目标系统的逻辑模型?要经过哪些步骤?建立目标系统的逻辑模型的过程也就是数据流图的分解过程。
它的导出过程如图:10.某单位拟开发一个计算机房产管理系统,要求系统具有分房、调房、退房和查询统计等功能。
房产科将用户申请表输入系统后,系统首先检查申请表的合法性,对不合法的申请表,系统拒绝接收;对合法的申请表根据类型分别进行处理。
(1) 如果是分房申请,则根据申请者的情况(年龄、工龄、职称、职务、家庭人口等)计算其分数,当分数高于阀值分数时,按分数高低将申请单插到分房队列的适当位置。
在进行分房时,从空房文件中读出空房信息,如房号、面积、等级、单位面积房租等,把好房优先分给排在分房队列前面的符合该等级房条件的申请者;从空房文件中删掉这个房号的信息,并从分房队列中删掉该申请单,再把此房号的信息和住户信息一起写到住房文件中,输出住房分配单给住户,同时计算房租,并将算出的房租写到房租文件中。
(2) 如果是退房申请,则从住房文件和房租文件中删除有关信息,再把此房号的信息写到空房文件中。
(3) 如果是调房申请,则根据申请者的情况确定其住房等级,然后在空房文件中查找属于该等级的空房,退掉原住房,再进行与分房类似的处理。
(4) 住户可以向系统查询目前分房的阀值分数,居住某类房屋的条件,某房号的单位面积及房租等信息。
房产科可以要求系统打印住房情况的统计表,或更改某类房屋的居住条件、单位面积和房租等。
用数据流图描绘该系统的功能需求;在数据字典中给出主要的数据流、文件和加工说明。
第四章总体设计习题答案9. 比较层次方框图与结构图是的异同?(1) 层次方框图描绘数据的层次结构, 结构图描绘的是软件结构。
软件工程导论(第5版)课后习题答案
《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.为什么会产生软件危机?(1)开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2)软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3)尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1)充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2)推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3)根据不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
软件工程导论第五版 第六章
第6章详细设计6.1结构程序设计图6.1 3种基本的控制结构图6.2其他常用的控制结构6.2人机界面设计6.2.1设计问题1. 系统响应时间2. 用户帮助设施3. 出错信息处理2软件工程导论(第五版) 4. 命令交互6.2.2设计过程6.2.3人机界面设计指南1. 一般交互指南2. 信息显示指南3. 数据输入指南6.3过程设计的工具6.3.1程序流程图6.3.2盒图图6.3程序流程图中使用的符号软件工程导论(第五版) 3图6.4盒图的基本符号6.3.3PAD图图6.5PAD图的基本符号4软件工程导论(第五版)图6.6使用PAD图提供的定义功能来逐步求精的例子6.3.4判定表6.3.5判定树6.3.6过程设计语言图6.7用判定树表示计算行李费的算法软件工程导论(第五版) 5 6.4面向数据结构的设计方法6.4.1Jackson图1. 顺序结构2. 选择结构图6.8A由B、C、D 3个元素顺序组成图6.9根据条件A是B或C或D中的某一个3. 重复结构图6.10A由B出现N次(N≥0)组成6.4.2改进的Jackson图6软件工程导论(第五版)图6.11改进的Jackson图6.4.3Jackson方法图6.12表示输入输出数据结构的Jackson图图6.13描绘统计空格程序结构的Jackson图软件工程导论(第五版) 7图6.14把操作和条件分配到程序结构图的适当位置6.5程序复杂程度的定量度量6.5.1McCabe方法1. 流图8软件工程导论(第五版)图6.15把程序流程图映射成流图软件工程导论(第五版) 9图6.16由PDL翻译成的流图图6.17由包含复合条件的PDL映射成的流图2. 计算环形复杂度的方法3. 环形复杂度的用途10软件工程导论(第五版)6.5.2 Halstead方法6.6小结习题61. 假设只有SEQUENCE和DO-WHILE两种控制结构,怎样利用它们完成IF-THEN-ELSE 操作?2. 假设只允许使用SEQUENCE和IF-THEN-ELSE两种控制结构,怎样利用它们完成DO-W HILE操作?3. 画出下列伪码程序的程序流程图和盒图:4. 图6.18给出的程序流程图代表一个非结构化的程序,问:(1) 为什么说它是非结构化的?(2) 设计一个等价的结构化程序。
软件工程导论PPT课件-第6章-实现
将从以下几方面来说明编码风格:程序内部文 档、语句的构造及书写、输入/输出、效率 。
6.3 编码风格
6.3.1 程序内部文档
说明性注释信息
包括标识符的选取、增加注解和好的程序布局。
6.3 编码风格
输入设计:
(1) 输入方式力求简单,避免给用户带来不必要的麻烦。如: 尽可能采用简单的输入格式、尽可能减少用户的输入量。
(2) 交互式输入数据时应有必要的提示信息。 (3) 程序应对输入数据的合法性进行检查。 (4) 若用户输入某些数据后可能会产生严重后果,应给用户
输出必要的提示并在必要的时候要求用户确认。 (5) 当需要输入一批数据时,不要以记数方式控制数据的输
Tom J. McCabe McCabe & Associates 公 司创始人、CEO及董事会 主席、McCabe 圈复杂度 的始创者。
6.4 程序复杂度度量 6.4.1 McCabe方法
环形复杂度:根据程序控制流的复杂程度定量度 量程序的复杂程度,可得到环形复杂度。
流图: 也称“程序图”,即“退化了的”程序 流程图,仅描绘程序的控制流图,不表现对数据 的操作及分支或循环条件。
在书写语句时,应通过采用递缩式格式使程序的 层次更加清晰。
在模块之间通过加入空行进行分隔。 为了便于区分程序中的注释,最好在注释段的周
围加上边框。
6.3 编码风格
6.3.3输入/输出
输入、输出的方式往往是用户衡量程序好坏 的重要指标。为了使程序的输入、输出能便于用 户的使用,在编写程序时应对输入和输出的设计 格外注意。
