第6章 软件工程——结构化软件开发——详细设计编码测试
张海藩《软件工程导论》(第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 图(数据流图)是软件需求阶段过程中采用的工具,用于描述系统的分 解,即描述系统由哪几个部分组成,各部分之间有什么联系等等。
《软件工程》PPT课件

第一章第四课时
喷泉模型 软件工程的任务与研究范围 软件开发的原则与开发方法
返回
喷泉模型
瀑布模型要求在软件开发的初期就完全确定软件的需求,这在很多 情况下往往是做不到的.螺旋模型试图克服瀑布模型的这一不足.SM 把软件开发过程安排为逐步细化的螺旋周期序列,每经历一个周期, 系统就细化和完善一些.SM每—螺旋周期由六个步骤组成: <1> 确定任务目标: 根据初始需求分析项目计划,确定任务目标、可选 方案和限制.<2>选择对象:对各种软硬件设备、开发方法、技术、 开发工具、人员、开发管理等对象进行选择:并决定软件是进行研 制、购买还是利用现有的.<3>分析约束条件:软件开发的时间、经 费等限制条件.<4>风险分析:评估目标、对象、约束条件三者之间 的联系,列出可能出.现的问题及问题的严重程度等,把最重要的问 题作为尚未解决的关键问题的风险.<5>制定消除风险的方法:应有 详尽的说明和周密的计划,并估计可能产生的后果.依此来开发软件, 为制订下一周期的计划打下基础.<6>制定下一周期的工作计划:在 第一个螺旋周期,确定目标、选择对象、分析约束,通过风险分析制 订消除风险的方法,初步开发原型1,制定系统生存周期计划.
软件工程的任务与研究范围
•软件产品的特点 •软件工程的研究内容与方法 •软件工具与软件支撑环境 •软件管理
软件开发的原则与方法
•软件开发的原则 • 自顶向下与模块结构 •软件开发的方法 •1.非自动形式的系统开发方法 •〔1〕系统流程图〔2〕结构分析法〔3〕结构化设计法 •〔4〕数据结构法〔5〕层次输入——处理——输出方法<HIPO法> • 2.半自动形式的系统开发方法 •〔1〕软件需求工程法〔2〕问题说明语言与分析法 • 3. 自动形式的系统开发方法 〔HOS方法〕:由计算机自动确定规 范、自动分析、自动编程、自动执行与模拟,以规范语言AXES、资 源分配工具RTA为工具.能自动进行分析、设计,工作量少、设计规范, 也能自动进行修改和维护.该方法适用于系统分析和设计.
软件工程讲义第六章

ENDWHILE; 2.1、2.2、2.4已能用程序语言表达,只需对2.3进一步精细化。 为了处理60个数据,又需一循环结构。
引入分钟值变量:minutes,每分钟要做的工作是: 累计:求每小时的平均值 检查违章情况 为了累计,引入变量sum: 在每小时处理前设初值为0。 每小时处理后求平均值。
3、自顶向下的程序验证。
2019年11月26日星期二
西南交通大学信息科学与技术学院
结构化程序设计的核心内容
二、使用三种基本控制结构来构造程序 1、任何程序都由顺序、选择和重复三种基本控制结构构造。 顺序实现了任何算法规约中的核心处理步骤; 条件允许根据逻辑情况选择处理方式; 重复提供了循环。 这些逻辑元素是结构化程序设计的基础。
BEGIN
1. 设置初值;
2. 处理24小时数据;
END
求精步骤1:设置初值。开始时一般不明确为哪些变量赋初值。
求精步骤2:计算结果是以小时为统计单位输出,它是重复执行24次的
循环结构。
局部数据结构设计:数据输入的方案选择:
1、处理前读入所有24小时数据,共1440个,需要大一个大的数组。
2、每次计算输入一个数据,这要保证对先前输入的数据不再使用。
ENDWHILE;
Mean:=sum/60.0; 一次违章出现是指连续5次污染值超过10.00。如果违章分布在两个相间的时 间段上,则把这次违章算在下一小时上。 首先测试当前值是否超过10.00,若是,还将进一步检查是否连续出现5次。 为了实现第二个测试,需要两个计数器: Voilation:计数本小时出现的违章次数。 Infraction:计数连续出现超过正常值的次数。 每次超正常值出现时,Infraction增1。为了保证Infraction表示连续出现超正 常值,必须保证在第一次出现超正常值时其初值为0。为了保证相继两个小时的 Infraction的值能连续被使用,在每小时处理前不能为Infraction置0值,只能在 第一小时处理前置0。另外,在发现一次未超正常值时,也应置它为0,即连续 出现超正常值中断。
软件工程导论复习重点总结很全第六版

第1章软件工程学概述1.1 软件危机1.1.1 软件危机旳简介软件危机(软件萧条、软件困扰): 是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。
软件危机包括下述两方面旳问题:怎样开发软件, 满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件。
软件危机旳经典体现:(1)对软件开发成本和进度旳估计常常很不精确;(2)顾客对“已完毕旳”软件系统不满意旳现象常常发生;(3)软件产品旳质量往往靠不住;(4)软件常常是不可维护旳;(5)软件一般没有合适旳文档资料;(6)软件成本在计算机系统总成本中所占旳比例逐年上升;(7)软件开发生产率提高旳速度, 远远跟不上计算机应用迅速普及深入旳趋势。
1.1.2 产生软件危机旳原因(1)与软件自身旳特点有关(2)与软件开发与维护旳措施不对旳有关1.1.3 消除软件危机旳途径对计算机软件有对旳旳认识。
认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完毕旳工程项目。
应当推广使用在实践中总结出来旳开发软件旳成功技术和措施, 并继续研究探索。
应当开发和使用更好旳软件工具。
总之, 为了处理软件危机, 既要有技术措施(措施和工具), 又要有必要旳组织管理措施。
1.21.2.1 软件工程旳简介软件工程: 是指导计算机软件开发和维护旳一门工程学科。
采用工程旳概念、原理、技术和措施来开发与维护软件, 把通过时间考验而证明对旳旳管理技术和目前可以得到旳最佳旳技术措施结合起来, 以经济地开发出高质量旳软件并有效地维护它, 这就是软件工程。
(期中考)软件工程旳本质特性:软件工程关注于大型程序旳构造软件工程旳中心课题是控制复杂性软件常常变化开发软件旳效率非常重要友好地合作是开发软件旳关键软件必须有效地支持它旳顾客在软件工程领域中是由具有一种文化背景旳人替具有另一种文化背景旳人发明产品1.2.2 软件工程旳基本原理用分阶段旳生命周期计划严格管理坚持进行阶段评审实行严格旳产品控制采用现代程序设计技术成果应能清晰地审查开发小组旳人员应当少而精承认不停改善软件工程实践旳必要性1.2.3 软件工程措施学软件工程包括技术和管理两方面旳内容。
软件工程导论(第五版) 第六章

•经典的结构程序设计:只允许使用顺序、
IF_THEN_ELSE选择和DO_WHILE循环;
扩展的结构程序设计:除了三种基本控制结构, 还使用DO_CASE和DO_UNTIL循环;
修正的结构程序设计:除了三种基本控制结构 和两种扩充结构,还使用BREAK等结构。
6.1.1 结构化程序
6.1.1.1 控制结构 • 流程图通常由三种结点组成: •1)函数结点 • 如果一个结点有一个入口线和
行李重量w30行李重量w30国内乘客外国乘客头等舱其他舱头等舱其他舱残疾乘客正常乘客残疾乘客正常乘客残疾乘客正常乘客残疾乘客正常乘客w302w304w303w306w304w308w306w3012免费图67用判定树表示计算行李费的算法636pdl2可以使用普通的正文编辑程序或文字处理系统来完成pdl的书写和编辑工作
•定义7:由基本程序的一个固定的基集合构造出的复合
程序,称为结构化程序。
6.1.2 结构化定理 •结构化定理:任一正规程序都可以函数等价于
一 个 由基 集 合 {顺 序 , If-else-then,While-do} 产生的结构化程序。
• 实际上,只要能证明可以将任一正规程序转
换成等价的结构化程序就可以证明这个结构化 定理。
123456789 TTTTFFFF TFTFTFTF FFTTFFTT
TFFFFFFFF
×
×
×
×
×
×
×
×
×
•6.3.5 判定树
• 判定树是判定表的变种。
行李重量
国内乘客
头等舱 其他舱
残疾乘客
正常乘客 残疾乘客 正常乘客
(W-30)×2 (W-30)×4 (W-30)×3 (W-30)×6
软件工程导论第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章 详细设计

13/105
过程设计
• 表达过程规格说明的工具称为过程描述工具, 可以将过程描述工具分为以下3类。 (1) 图形工具:把过程的细节用图形方式描述出 来,如程序流程图、N-S图、PAD图、决策树 等。 (2) 表格工具:用一张表来表达过程的细节。这 张表列出了各种可能的操作及其相应的条件, 即描述了输入、处理和输出信息,如决策表。 (3) 语言工具:用某种类高级语言(称为伪代码) 来描述过程的细节,如很多数据结构教材中使 用类Pascal、类C语言来描述算法。
40/105
41/105
1 甲 乙 丙 甲不知 乙不知 丙 R R R
2 R R W
3 R W R
4 R W W
5 W R R
6 W R W
7 W W R
42/105
6.3.5
• 判定表虽然能清晰地表示复杂的条 件组合与应做的动作之间的对应关系, 但其含义却不是一眼就能看出来的,初 次接触这种工具的人要理解它需要有一 个简短的学习过程。
9/105
6.1 结构化程序设计
• 结构程序设计的主要原则
(6) 严格控制GOTO语句,仅在下列情形才可使用: 用非结构化的程序设计语言去实现结构化的构 造。 若不使用GOTO语句就会使程序功能模糊。 在某种可以改善而不是损害程序可读性的情况 下。例如,在查找结束时,文件访问结束时, 出现错误情况要从循环中转出时,使用布尔变 量和条件结构来实现就不如用GOTO语句来得 简洁易懂。
• 主持人对甲、乙、丙三人说:“这里有三顶红帽 子,两顶白帽子。现在用布蒙上你们的眼睛,给 你们每人戴上一顶帽子,然后请你们依次睁开眼 睛,能正确说出自己所戴帽子的颜色者有奖。” • 带完帽子后,甲拿下布后看了其他两人的帽子说: “我不知道。” • 然后,乙解开布看了其他两人的帽子后说:“我 不知道。” • 轮到丙时,他没有拿下布就正确地说出了自己所 戴帽子的颜色。 • 试问:丙戴的是什么帽子?他是怎样得出结论的?
软件工程导论第6章(第4版)

二. 人机界面设计
人机界面设计是接口设计的一个重要的组成部 分。对于交互式系统来说,人机界面设计和数据设 计、体系结构设计及过程设计一样重要。
1.指导规则
T.Mandel在《用户界面设计要素》中,提出了3 条指导规则: 让用户驾驭软件,不是软件驾驭用户 减少用户的记忆 保持界面的一致性
2. 应该考虑的设计问题
4. 人机界面设计指南
(3) 数据输入指南 尽量减少用户的输入动作。 保持信息显示和数据输入之间的一致性。 允许用户自定义输入。 交互应该是灵活的,可调整成用户喜欢的输入方式。 使在当前动作语境中不适用的命令不起作用。 让用户控制交互流。 对所有输入动作都提供帮助。 消除冗余的输入。
三. 过程设计
1.过程设计的目的与任务 目的 确定模块采用的算法和块内数据结构,用某种 选定的表达工具给出清晰的描述。 任务:编写软件的“过程设计说明书” 为每个模块确定采用的算法 (模块的详细过程性 描述) 确定每一模块使用的数据结构 确定模块接口的细节 (包括对系统外部的接口和 用户界面,对系统内部其他模块的接口,以及关 于模块输入数据、输出数据及局部数据的全部细 节)
三. 过程设计
2.过程设计的原则与方法
清晰第一的设计风格 结构化的控制结构 结构程序设计的经典定义为: “如果一个程序的代码块仅仅通过顺序、选择和循环这3 种基本控制结构进行连接,并且每个代码块只有一个入口和 一个出口,则称这个程序是结构化的。” 结构程序设计技术是一种实现在逻辑上正确描述每个模 块的功能,并且使设计出的处理过程尽可能简明易懂的关键 技术,是过程设计的逻辑基础。 逐步细化的实现方法 例:在一组数中找出其中的最大数
(4) 命令交互 命令行现在仍然是许多高级用户偏爱的交互方式。在 多数情况下,用户既可以从菜单中选择软件功能,也可以 通过键盘命令序列调用软件功能。 在提供命令交互方式时,必须考虑下列设计问题: 是否每个菜单选项都有对应的命令? 采用何种命令形式?有3种选择:控制序列(例如Ctrl+P), 功能键和键入命令。 学习和记忆命令的难度有多大?忘记了命令怎么办? 用户是否可以定制或缩写命令? 在理想的情况下,所有应用软件都有一致的命令使用 方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6
3. PAD图
PAD是Problem Analysis Diagram的缩写,它是日本日立公司提出, 由程序流程图演化来的。现在已为ISO认可。
7
PAD图特点: 用PAD所表达的程序,结构清晰并且结构化程度高。作为一种详细 设计的工具,它比流程图更易读,且由于PAD是一种树形结构,比流程 图更容易在计算机上处理,容易将PAD图转换成程序。
if ( A < B ) goto 120; if ( B < C ) goto 110; write ( C ); goto 140; write ( B ); goto 140; if ( A < C ) goto 130; goto 100; write ( A ); end
15
例 找出100以内的素数
13
6.2.3 软件编码(程序设计)
程序设计阶段的任务:将“软件表示” 变成计算机能够 “理解”的形式,即为每个模块编程。
结构化程序设计,主要包括两个方面:
在编写程序时,强调使用几种基本控制结构,通过组合 嵌套,形成程序的控制结构。尽可能避免使用会使程序 质量受到影响的GOTO语句。
在程序设计过程中,尽量采用自顶向下和逐步细化的原 则,由粗到细,一步步展开。
详细设计 (过程设计)
定义: 在概要设计阶段完成了软件系统的总体设计,规定了各 个模块的功能及模块之间的联系之后,进一步就要考虑实现 各个模块规定的功能,也就是进行软件的详细设计,也称为 过程设计。
任务: 要决定各个模块的实现算法,并精确地表达这些算法。 常用工具: 1. 程序流程图 2. N-S图 3. PAD图 4. 伪代码 PDL
14
例 打印A, B, C三数中最小者程序 程序1 100 110 程序2 if ( A < B ) and ( A < C ) then 130 write ( A ) 140 else if ( A B ) and ( B < C ) then write ( B ) else write ( C ) endif endif 120
8
4. PDL ( Program Design Language )
PDL是一种用于描述功能模块的算法设计和加工细节的
语言,称为设计程序用语言。它是一种伪码。一般地,
伪码的语法规则分为“外语法”和“内语法”。外语法 应当符合一般程序设计语言常用语句的语法规则;而内
语法可以用英语中一些简单的句子、短语和通用的数学
从2到100中去掉2,3,…,9,10的倍数,剩下的就是 100以内的素数。
为了解决这个问题,可先按程序功能写出一个框架。
16
main ( ) { /*建立2到100的数组A[ ],其中A[i]=i*/ for ( i = 2;i <= 100;i++ ) A[i] = i; /* 建立2到10的素数表B[ ],其中存放2到 10以内的素数*/ B[1]= 2;B[2]= 3;B[3]= 5;B[4]= 7; /*若A[i]=i是B[ ]中任一数的倍数,则剔除A[i]*/ for ( j = 1;j <= 4;j++ ) /*检查A[ ]所有的数能否被B[j]整除并将能 被整除的数从A[ ]中剔除*/ for ( i = 2;i <= 100;i++) if ( A[i]/B[j] * B[j] == A[i] ) A[i] = 0; /*输出A[ ]中所有没有被剔除的数*/ for ( i = 2; i <= 100;i++) /*若A[i]没有被剔除,则输出之*/ if ( A[i] != 0 ) printf ( “A[%d]=%d\n”, I,A[i] ); }
1
1. 程序流程图(Program Flow Chart)又称为程序框图。
2
程序流程图独立于任何 一种程序设计语言,比 较直观、清晰,易于学 习掌握。
缺点: 表示程序控制流程的箭 头可以不受任何约束, 随意转移控制。
3
2. N-ቤተ መጻሕፍቲ ባይዱ图
N-S图也称盒图(Box-Diagram),是由Nassi 和 Shneiderman提出的一种符合结构化程序设计原则的图形描述工 具。在N-S图中,相应规定了5种图形构件。
符号,来描述程序应执行的功能。
PDL就是这样一种伪码。它具有严格的关键字外语法, 用于定义控制结构和数据结构,同时它的表示实际操作 和条件的内语法又是灵活自由的,可使用自然语言的词
汇。下面举一个例子,来看PDL的使用。
9
PDL举例
PROCEDURE spellcheck 查找错拼的单词 BEGIN split document into single words 把整个文档分离成单词 lood up words in dictionary 在字典中查这些单词 display words which are not in dictionary 显示字典中查不到的单词 create a new dictionary 造一新字典 END spellcheck PDL特点: (1)有固定的关键字外语法,提供全部结构化控制结构、数据说明和模块特 征。 (2)内语法使用自然语言来描述处理特性。 (3)有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层 次结构)的数据结构。 (4)有子程序定义与调用机制,用以表达各种方式的接口说明
4
N-S图特点: (a) 图中每个矩形框都是明确定义了的功能域。 (b) 图中的控制转移不能任意规定。 (c) 从图中可以很容易地确定局部数据和全局数据的作用域。 (d) 图中很容易表现嵌套关系及模块的层次结构。
5
例:分别输入10个数,打印出其中的正数。
算法1:设T为计数器 ①输入第一个数—>X,1— >T; ②判断X>0 ? ; ③若X>0,则打印输出; ④判断T>10 ? ⑤若T>10,则表示10个数已 经处理完,结束。 否则,再输入下一个数— >X,且T+1——>T,然后转②继 续执行。
10
11
软件设计文档要求
概要设计说明书:规定软件结构
内容:以层次图表形式表示的软件总体结构、模块的
外部设计
详细设计说明书:描述程序的过程
内容:表示软件结构的图表、对逐个模块的程序描述
12
复审
复审:设计复审指对设计文档的复审。 目的在于及早发现设计中的缺陷和错误。 复审指导原则: 概要设计复审(PDR)和详细设计复审(DDR)应该分 开进行。 复审的内容: 概要设计复审(PDR): 重点在系统的总体结构、模块的划分、内外接口 详细设计复审(DDR): 重点在各个模块的具体设计上 软件设计时复审,可以找出软件中50%——65%的错误