软件工程第六章

合集下载

软件工程第六章 详细设计

软件工程第六章 详细设计

软件工程第六章详细设计软件工程第六章详细设计6.1 概述本章节旨在对软件系统的详细设计进行介绍。

详细设计将在系统的高层设计基础上,进一步细化系统结构、模块划分以及相互关系,并定义系统中各个组件的详细功能和接口。

6.2 系统结构设计系统结构设计主要包括以下内容:- 系统总体架构:描述系统整体的结构和组成部分,包括各个模块和它们的关系。

- 模块划分:根据系统需求,将系统划分为若干个模块,并定义各个模块的职责和功能。

- 模块关系:描述各个模块之间的依赖关系和通信方式,包括模块之间的接口和数据流。

6.3 模块设计模块设计是详细设计的核心内容,主要包括以下内容:- 模块接口:定义模块的输入和输出接口,包括参数和数据格式。

- 模块内部实现:描述模块内部的算法、数据结构以及运行流程。

- 模块测试方法和策略:定义对模块进行单元测试的方法和策略。

6.3.1 模块A设计本节详细介绍模块A的设计。

- 模块接口:模块A接收来自模块B的数据输入,处理后输出结果给模块C。

- 模块内部实现:模块A内部使用算法X对输入数据进行处理,然后将结果输出给模块C。

- 模块测试方法和策略:对模块A进行单元测试时,使用测试用例集合Y进行测试。

6.3.2 模块B设计本节详细介绍模块B的设计。

- 模块接口:模块B接收来自模块D的数据输入,处理后输出结果给模块A。

- 模块内部实现:模块B内部使用算法Z对输入数据进行处理,然后将结果输出给模块A。

- 模块测试方法和策略:对模块B进行单元测试时,使用测试用例集合Z进行测试。

6.3.3 模块C设计本节详细介绍模块C的设计。

- 模块接口:模块C接收来自模块A的数据输入。

- 模块内部实现:模块C内部对输入数据进行处理,并输出结果。

6.4 数据库设计如果系统涉及数据库,本节详细介绍数据库的设计。

- 数据库结构:描述数据库的表、字段以及它们之间的关系。

- 数据库访问接口:定义系统访问数据库的接口和方法。

6.5 接口设计本节详细介绍系统与外部系统或用户的接口设计。

软件工程第6章 软件编码设计

软件工程第6章  软件编码设计

10
(1)理论标准 1)理想的模块化机制、易于阅读和使用的控制结 构及数据结构 模块化、良好的控制结构和数据结构可以降低编码 工作的难度,增强程序的可理解性,提高程序的可测试 性和可维护性,从而减少软件生存周期中的总成本,并 缩短软件开发所需的时间。 2)完善、独立的编译机制
11
(2)实用标准 1)系统用户的要求 由于用户是软件的使用者,因此软件开发者应充分 考虑用户对开发工具的要求。特别是当用户要负责软件 的维护工作时,用户理所应当地会要求采用他们熟悉的 语言进行编程。 2)工程的规模 3)软件的运行环境 4)可以得到的软件开发工具
16
(3)语句的构造及书写 语句是构成程序的基本单位,语句的构造方式和书 写格式对程序的可读性具有非常重要的决定作用。 在一行内只写一条语句,并且采取适当的移行格式, 使程序的逻辑和功能变得更加明确。 程序编写首先应当考虑清晰性,不要刻意追求技巧 性,使程序编写得过于紧凑。
17
(4)输入/输出 由于输入和输出是用户与程序之间传递信息的渠道, 因此输入、输出的方式往往是用户衡量程序好坏的重要 指标。为了使程序的输入、输出能便于用户的使用,在 编写程序时应对输入和输出的设计格外注意。 1)输入 2)输出
23
良好的编码风格,应该以结构程序设计的原则为指 导,使用单输入口和单输出口的控制结构。倡导源程序 代码的文档化,程序内部良好的文档资料,有规律的数 据说明格式,简单清晰的语句构造和输入输出格式等, 都对程序的可读性有很大作用,也在相当大的程度上改 进了程序的可维护性。程序的输入输出应该充分考虑运 行工程学的要求,在满足数据可靠性的前提下,尽量做 到对用户友善。
19
(1)用于提高运行速度的指导原则 ①编写程序之前,先对需要使用的算术表达式和逻 辑表达式进行化简。 ②尽可能多地采用执行时间短的算术运算。 ③尽量避免使用多维数组、指针和其他复杂的数据 类型。 ④尽量采用整型算术表达式和布尔表达式。 ⑤尽可能减少循环体,特别是内循环中语句的个数。 ⑥尽量使同一表达式中的数据类型保持统一。 ⑦应当对所有的输入和输出安排适当的缓冲区,以 减少频繁通信所带来的额外开销。

软件工程 第6章

软件工程 第6章

N-S图的基本符号
N-S图的嵌套定义形式
练 习
请利用N-S描述下列问题的程序结构
某汽车修配厂,有一个存有汽车零件的 仓库,其中存有若干种零件,请编写一个查 询程序,用于查询该库中某零件的库存量为 多少。
设该模块为查询模块。请设计该模块的 程序结构。具体要求:
1、应具有重复查询功能; 2、应具有数据检测功能; 3、请利用N-S图描述该模块的算法。
伪代码----文字形式的表达工具,不能在计算机上执行, 但形式上与代码相似。用它来描述程序的结构,工作量 要比画图小,又比较容易转换真正的代码。
PDL-----关键词+自然语言
结构化语言的结构分为外层和内层:
外层: 具有严格的关键字外语法,用于定义控制
结构和数据结构。包括有简单陈述句、判定和 重复结构等三种。
A=B
A<B
A:B
A>B
X=? =1 =2 =3 =4 =5
X=?
x=1 x=2 x=3 x=4
练 习
请利用程序流程图描述下列问题的程序结构
某汽车修配厂,有一个存有汽车零件的 仓库,其中存有若干种零件,请编写一个查 询程序,用于查询该库中某零件的库存量为 多少。
设该模块为查询模块。请设计该模块的 程序结构。具体要求:
输入错误!
继续查询?
Y
N
跳出循环
6.3.3 PAD图
问题分析图(Problem Analysis Diagram) 采用二维树形结构图表示程序的控制流。
A B (a)顺序结构
A
P
B
(b)选择结构
PAD图的基本符号
WHILE P
S
(c) WHILE型循环结构

软件工程导论第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

(完整版)软件工程第六章答案

(完整版)软件工程第六章答案

作业4参考答案1.假设只有SEQUENCE和DO_WHILE两种控制结构,怎样利用它们完成IF_THEN_ELSE操作?答:转化如下:K = 1DO WHILE (条件.AND. K.EQ.1)程序块1K=K+1END DODO WHILE ((.NOT. 条件) .AND. K.EQ.1)程序块2K=K+1END DO2.假设允许使用SEQUENCE和IF_THEN_ELSE两种控制结构,怎样利用它们完成DO_WHILE操作?答:转化如下;label: IF (条件) THEN程序块GOTO labelELSE程序块END IF3.画出下列伪码程序的程序流程图和盒图:STARTIF p THENWHILE q DOfEND DOELSEBLOCKgnEND BLOCKEND IFSTOP答:(1)流程图如图4-1所示:图4-1 从伪码变成的程序流程图(2)该程序的盒图如图4-2所示:图4-2 从伪码变成的程序盒图4.下图给出的程序流程图代表一个非结构化的程序,请问:(1)为什么说它是非结构化的?(2)设计一个等价的结构化程序。

(3)在(2)题的设计中你使用附加的标志变量flag吗?若没用,请再设计一个使用flag 的程序;若用了,再设计一个不用flag的程序。

答:(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。

图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。

(2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,图4-3描绘了等价的结构化程序的盒图。

(a)解法1(b)解法2图4-3 与该图等价的结构化程序(用flag)(3)不使用flag把该程序改造为等价的结构化程序的方法如图4-4所示。

图4-4 与该图等价的结构化程序(不用flag)5.研究下面的伪代码程序:LOOP: Set I to (START+FINISH)/2If TABLE(I)=ITEM goto FOUNDIf TABLE(I)<ITEM Set START to (I+1)If TABLE(I)>ITEM Set FINISH to (I-1)If (FINISH-START )>1 goto LOOPIf TABLE(START)=ITEM goto FOUNDIf TABLE(FINISH)=ITEM goto FOUNDSet FLAG to 0Goto DONEFOUND: Set FLAG to 1DONE:Exit(1)画出程序流程图。

软件工程第六章 详细设计

软件工程第六章 详细设计

软件工程第六章详细设计软件工程第六章详细设计1. 引言本章将对软件系统的详细设计进行介绍。

详细设计是软件开发过程中的一个重要阶段,它负责将需求分析阶段产生的需求和概念设计阶段产生的设计方案转化为具体的实现细节。

2. 设计概述2.1 数据设计在数据设计方面,我们将详细定义系统中所使用的数据结构、数据类型和数据库设计。

这将包括实体类的定义、数据库表的设计以及数据字典的编制。

2.2 模块设计模块设计是将系统划分成各个功能模块,并定义模块之间的接口和交互方式。

我们将详细描述每个模块的功能、输入输出以及模块之间的调用关系。

2.3 界面设计界面设计负责定义系统与用户之间的交互方式。

我们将详细描述系统的界面布局、界面元素的设计和交互逻辑的实现。

3. 数据设计3.1 数据结构在此处描述系统中所使用的各种数据结构,包括树、链表、堆栈等,以及它们的定义和使用方式。

3.2 数据类型在此处描述系统所使用的各种数据类型,包括整型、浮点型、字符型等,以及它们的定义和使用方式。

3.3 数据库设计在此处描述系统所使用的数据库的设计,包括数据库表的结构、字段定义、关系等。

3.4 数据字典在此处编制系统的数据字典,明确定义每个数据元素的含义、取值范围、数据类型等。

4. 模块设计4.1 模块1名称在此处详细描述模块1的功能、输入输出以及模块内部的具体实现细节。

4.2 模块2名称在此处详细描述模块2的功能、输入输出以及模块内部的具体实现细节。

5. 界面设计5.1 界面布局在此处详细描述系统的界面布局方案,包括各个界面的位置、大小、排列等。

5.2 界面元素设计在此处详细描述系统所使用的各种界面元素,包括按钮、文本框、下拉框等,以及它们的样式和交互方式。

5.3 交互逻辑在此处详细描述系统与用户之间的交互逻辑,包括各个界面的功能和用户操作的响应方式。

6. 附件本文档涉及的附件包括:- 数据结构定义文档- 数据库表设计文档- 界面原型设计文档7. 法律名词及注释- 法律名词1: 注释1 - 法律名词2: 注释2。

软件工程导论第6章(第4版)

软件工程导论第6章(第4版)

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

软件工程课件第六章

软件工程课件第六章

根据上面的讨论,需要命名的数据有:
20.09.2020
结构化程序设计的核心内容
2、三种基本结构的共同点是单入口、单出口。
单入口单出口的控制理 解,也容易保证程序的正确性。
20前.0一9.页2020
国家软件开发工程规范的规定
国家软件开发工程规范规定“程序单元必须只有唯一的 入口,唯一的出口”有两个不同的概念:
1972年,IBM公司的Mills进一步提出,程 序应该只有一个入口和一个出口。
20.09.2020
结构化程序设计
结构程序设计是按照一组能提高程序 的可读性和易维护性的规则而进行的程序 设计方法,目的是为了使程序具有一种合 理的结构,以使程序易理解和维护,便于 保证和验证程序的正确性。
20.09.2020
扩展的结构程序设计:还允许使用DO_CASE型多分支结 构和DO_UNTIL型循环结构。
修正的结构程序设计:再允许使用BREAK(LEAVE)结构。
20.09.2020
逐步求精算法实例
空气污染物含量数据的统计处理程序
假定某工厂烟囱附近,在24小时中每分钟测量1次空气中
污染物含量。得到的数据以每100单位中所含污染物成分的值
3、自顶向下的程序验证。
20.09.2020
结构化程序设计的核心内容
二、使用三种基本控制结构来构造程序 1、任何程序都由顺序、选择和重复三种基本控制结构构造。
顺序实现了任何算法规约中的核心处理步骤; 条件允许根据逻辑情况选择处理方式; 重复提供了循环。 这些逻辑元素是结构化程序设计的基础。 根据逐步求精的思想,可用三种方式对模块过程进行分解: ①用顺序方式对过程分解,确定各部分的执行顺序; ②用选择方式对过程分解,确定各部分的执行条件; ③用循环方式对过程分解,确定某个部分进行重复的开始和 结束的条件。 对处理过程仍然模糊的部分反复使用以上分解,直到所有细 节确定下来。

软件工程与实践第6章

软件工程与实践第6章
第6章 详细设计
6.1 6.2 6.3 6.4 6.5 6.6
结构程序设计 人机界面设计 过程设计的工具 面向数据结构的设计方法 程序复杂程度的定量度量 小结
详细设计阶段的根本目标是确定应该怎样具体地实 现所要求的系统。 详细设计阶段的任务还不是具体地编写程序,而是 要设计出程序的“蓝图”,以后程序员将根据这个 蓝图写出实际的程序代码。 详细设计的目标不仅仅是逻辑上正确地实现每个模 块的功能,更重要的是设计出的处理过程应该尽可 能简明易懂。 结构程序设计技术是详细设计的逻辑基础。
6.2.3 人机界面设计指南
用户界面设计主要依靠设计者的经验,总结众多设 计者的经验得出的设计指南,有助于设计者设计出 友好、高效的人机界面。下面介绍3类人机界面设 计指南。 1. 一般交互指南 一般交互指南涉及信息显示、数据输入和系统整体 控制,因此,这类指南是全局性的,忽略它们将承 担N-ELSE型分支和 DO-WHILE型循环这3种基本控制结构,则称为经 典的结构程序设计;如果除了上述3种基本控制结 构之外,还允许使用DO-CASE型多分支结构和 DO-UNTIL型循环结构,则称为扩展的结构程序设 计;如果再加上允许使用LEAVE(或BREAK)结构, 则称为修正的结构程序设计。
6.3.6 过程设计语言
过程设计语言(PDL)也称为伪码,它是用正文形 式表示数据和处理过程的设计工具。 PDL应该具有下述特点: (1) 关键字的固定语法,它提供了结构化控制结构、 数据说明和模块化的特点。 (2) 自然语言的自由语法,它描述处理特点。 (3) 数据说明的手段。应该既包括简单的数据结构 (例如纯量和数组),又包括复杂的数据结构(例如, 链表或层次的数据结构)。 (4) 模块定义和调用的技术,应该提供各种接口描 述模式。

软件工程课件第6章

软件工程课件第6章

第6章 编码
二、存储器效率
采用结构化程序设计,将程序功能合理 分块,使每个模块或一组密切相关模块的程 序体积大小与每页的容量相匹配,可减少页 面调度、减少内外存交换,提高存储器效率。
在微型计算机系统中,存储器的容量对 软件设计和编码的制约比较大。因此要选择 可生成较短目标代码且存储压缩性能优良的 编译程序,有时需要采用汇编语言编程。
第6章 编码
三、程序设计语言的选择
程序设计语言的选择常从以下几个方面考虑:
(1)项目的应用领域 (2)算法与计算的复杂性 (3)数据结构的复杂性 (4)效率 (5)可移植性 (6)程序设计人员的水平 (7)构造系统的模式
第6章 编码
6.2 编码风格
编码风格实际上是一种编码原则。从 20世纪70年代以来,编码的目标从强调效 率转变到强调清晰。与此相应,编码风格 也从追求“聪明”和“技巧”,变为提倡 “简明”和“直接”。人们逐渐认识到, 良好的编码风格能在一定程度上弥补程序 设计语言存在的缺点。反之,如果不注意 编码风格,即使使用了结构化的现代语言, 也很难写出高质量的程序。
(2)好的设计可以提高效率。
(3)代码效率与代码的简单性相关。
第6章 编码
一、代码效率
(1)应先简化算术和逻辑的表达式。 (2)仔细研究嵌套的循环,以确定是否有语 句可以从内层往外移。 (3)尽量避免使用多维数组。 (4)尽量避免使用指针和复杂的列表。 (5)使用执行时间短的算术运算。 (6)即使语言允许,一般也不要采用混合数 据类型。 (7)尽量使用整数表达式和布尔表达式。
第6章 编码
一、代码文档化:指织形式。
二、数据说明:程序或模块在其可执行部分的前面 都集中了一些说明语句 ,出于阅读理解和维护的 要求,最好使其规范化,使说明的先后次序固定 。

软件工程第6章面向数据流的设计方法

软件工程第6章面向数据流的设计方法

21
变换分析
输入流 变换流 输出流
A C
B E D F G H
主控模块 输入流 控制模块
变换流 控制模块
输出流 控制模块
图6-5 一级分解
22
变换分析
图6-5展示的是一个简单三叉结构,实际处 理大型系统的复杂数据流时,可能需要多 个模块对应图6-5中一个模块的功能。“一 级分解”总的原则是,在完成控制功能并 保持低耦合度、高内聚度的前提下尽可能 地减少模块的数量。 “传感器监测子系统”一级分解如图6-6所 示,其中控制模块的名字概括了所有下属 模块的功能。
E
输出流控制模块 G
A
C
F
主控模块
H
输入流控制模块 B A D C
E F
G H
图6-8 结构的优化
31
监控传感器执行者
警报输出控制器 获得响应信息 建立警报条件
产生显示 读传感器
生成警报信号
建立与电话网络的 连接
产生脉冲
32
变换分析
上述七个设计步骤的目标是给出软件的 一个整体描述。 一旦有了这样一个描述,设计人员即可 从整体角度评价和精化软件的总体结构, 此时修改所需耗费不多,却能大大提高 软件质量。
39
无效口令
图6-2-1 用户交互子系统的二级数据流图
事务分析
事务分析法可概括为七个步骤:
步骤一、复审基本系统模型; 步骤二、复审并精化软件数据流图; 步骤三、确定数据流图的特征; 步骤四、指出事务中心,确定接收部分和发送部分 的流界; 步骤五、映射出系统上层模块结构; 步骤六、分解并精化事务结构以及每条动作路径所 对应的结构。根据流经每一动作路径的数据流特征, 参考前面所述“变换设计” 相关步骤可以逐一导出 这些子结构.

软件工程第六章

软件工程第六章

软件工程第六章在软件工程的广袤领域中,第六章往往聚焦于一些关键且核心的概念与实践。

这一章,或许是关于软件设计原则与模式的深入探讨,或许是对软件测试策略与方法的详细阐述,又或许是围绕软件项目管理中的关键环节展开论述。

当我们谈论软件设计原则时,就不得不提及“单一职责原则”。

这个原则主张一个类或模块应该仅有一个引起它变化的原因。

想象一下,假如一个类承担了过多不同类型的职责,那么当其中一项职责发生改变时,就可能会对整个类的稳定性产生影响,从而引发一系列不必要的修改和潜在的错误。

这就好比一个人同时要兼顾多个完全不同的工作,很容易顾此失彼,导致工作质量下降。

“开闭原则”也是重要的设计原则之一。

它表明软件实体(如类、模块、函数等)应该对扩展开放,对修改关闭。

简单来说,就是在不修改现有代码的基础上,能够通过添加新的代码来实现新的功能或扩展系统的行为。

这使得软件具有更好的可维护性和可扩展性,避免了因为频繁修改现有代码而引入新的错误。

设计模式在软件工程中起着举足轻重的作用。

例如,“工厂模式”常用于创建对象,将对象的创建和使用分离,提高了代码的灵活性和可维护性。

当我们需要根据不同的条件创建不同类型的对象时,工厂模式可以帮助我们轻松地实现这一需求,而无需在每次创建对象时都编写复杂的条件判断代码。

再来说说软件测试。

在第六章中,可能会详细介绍各种测试类型,如单元测试、集成测试、系统测试和验收测试。

单元测试是针对软件中的最小可测试单元(通常是函数或方法)进行的测试,确保每个单元的功能正确无误。

集成测试则着重于检验各个模块之间的接口是否正常工作,是否能够协同完成特定的功能。

系统测试则是从整个系统的角度出发,对软件的功能、性能、兼容性等方面进行全面的测试。

而验收测试则是由用户或客户参与,以确定软件是否满足他们的需求和期望。

在软件测试中,测试用例的设计至关重要。

好的测试用例应该具有较高的覆盖率,能够有效地发现潜在的问题。

同时,测试用例还应该易于维护和更新,以适应软件的不断变化。

计算机软件工程第六章 详细设计

计算机软件工程第六章 详细设计

PAD图的基本符号
SOFTWARE ENGINEERING
PAD图的基本符号
输入框 输出框 处理框 选择框
重复框(先判 定,再重复) 或 子程序框
重复框(先执行, 后判定,再重复)
定义框
使用PAD图提供的定义功能来逐步求精的例子
• 作业:判定一个数是不是素数的PAD图
SOFTWARE ENGINEERING
SOFTWARE ENGINEERING
盒图的基本符号
SOFTWARE ENGINEERING
§6.2 详细设计的工具
6.2.4 PAD图(Problem Analysis Diagram) 用二维树形结构的图来表示程序的控制流。 优点: ①设计出的程序是结构化程序; ②描绘程序结构清晰; ③表示程序逻辑,易读、易懂、易记;(自上而下, 从左向右顺序执行,遍历所有结点); ④易转换成 语言源程序,可用软件工具自动完成; ⑤也可用于描绘数据结构; ⑥支持自顶向下、逐步求精方法的使用。
例题 根据伪码画出程序流程图、盒图、 PAD图
Start If p1 then while q2 do x end do Else block y z end block End if stop
SOFTWARE ENGINEERING
作业:根据伪码画出程序流程图、盒图、PAD图
Begin Input(a,b,c) i=0 While i<=6 do Begin If a>6 or b>=0 Then c=c+a Else b=c+a End if i=i+1 End End do Print(a,b,c) End
PAD图(问题分析图)
(4)PAD是二维树形结构的图形,程序从图中 最左竖线上端的结点开始执行,自上而下,从 左向右按顺序执行,遍历所有结点; (5)容易将PAD转换成高级语言源程序,该转 换可由软件自动完成,有利于提高软件可靠性 和软件生产; (6)既可用于表示程序逻辑,也可用于描绘数 据结构; (7)PAD的元素支持自顶向下、逐步求精方法 的使用。

软件工程课本讲解第6章软件维护

软件工程课本讲解第6章软件维护
例如,开发每一行源代码耗资25美 元,维护每一行源代码需要耗资 1000美元。
维护工作量包括生产性活动(如分 析和评价、设计修改和实现)和 “轮转”活动(如力图理解代码在 做什么、试图判明数据结构、接口 特性、性能界限等)。
21
维护工作量的模型
MpKced
M是维护中消耗的总工作量 p是上面描述的生产性工作量 K是一个经验常数 c是因缺乏好的设计和文档而导致
复杂性的度量 d是对软件熟悉程度的度量。
22
模型指明,如果使用了不好的软件 开发方法(未按软件工程要求做), 原来参加开发的人员或小组不能参 加维护,则工作量(及成本)将按 指数级增加。
23
6.2 软件维护实施活动
为了有效地进行软件维护,应事先 就开始做组织工作。 首先建立维护的机构 申明提出维护申请报告的过程及 评价的过程 为每一个维护申请规定标准的处 理步骤 建立维护活动的登记制度以及规 定评价和评审的标准。
3
一、软件维护的定义
在软件运行/维护阶段对软件产品进行的修改就是 所谓的维护。
软件维护是软件生存周期的最后一个阶段,不属于系统开发的过程。
问题


维护 满足用户对已开发产品的性能与运行环境不断提高的要求,进而
目的 达到延长软件寿命的目的。
改正性 对程序使用期间发现的程序错误进行诊断和改正的过程;
改正性 17—21% 适应性 18—25%
完善性 50—66% 预防性 4%左右
软件的易维护性是软件开发过程中每个步骤的一个关键目标。维护费用占软件总支
出的20-30%到70-80%。而无形的代价更是无法估计的。
4
改正性维护
在软件交付使用后,因开发时测试 的不彻底、不完全,必然会有部分 隐藏的错误遗留到运行阶段。

软件工程软件详细设计

软件工程软件详细设计

例1 程序P为: t:=x; x:=y; y:=t
那么,对于任意给定旳初始数据状态 X:(x, y, t),P旳最终数据状态将为 Y:(y,x,x)。因而,程序函数[P]为:
{((x,y,t),(y,x,x))}
程序函数是对程序功能旳一种精确描述。假如 两个程序有相同旳程序函数,那么它们所完毕 旳功能一定是相同旳。
– [定理6-2]:假如不增长辅助变量、不增长额外计算 或不变化程序旳执行顺序,那么必然存在不能用 if—while表达旳构造。
– [定理6-3] :在定理一旳假设条件下,if—while构造 旳充分必要条件是:该构造不包括两个(或两个以 上)旳出口循环。
图6—13(a)所示,是一种非构造化旳流程图。 经过变化构造旳执行顺序,形成了图6—13(b)所示 与图6—13(a)等价旳构造化流程图。在图6—13(b) 中,使用了组合判断A1和A2,“”表达 A1“非”与
A2“非”。
图6—13变化构造执行顺序
– [定理4] :若允许增长辅助变量、或增长额外计算、 或变化程序旳执行顺序,问题解旳任何算法都能够 表达为构造化构造。
图6—14(a)所示旳构造化流程图中有10个元 素。是一种非构造化流程图程序。因为,它旳两个 选择构造出现重叠,造成了程序段D有两个入口, 一种出口,破坏了单入口单出口这项构造化原则。
图6---7 非正规程序
因为正规程序有一种入口线和一种出口,因而一种正 规程序总能够抽象为一种函数结点。这个函数结点概 括了该正规程序对数据进行旳运算和测试旳总旳作用。
正规子程序
[定义6-2]假如一种正规程序旳某部分依然是正规程序, 那么称其为该正规程序旳正规子程序。
图6--8正规程序旳抽象过程
3.组织形式

软件工程导论第6章 详细设计2

软件工程导论第6章 详细设计2
双向通信。
2、信息显示界面设计
1)、可使用性 ① 使用简单
② 用户界面中所用术语的标准化和一致性 ③ 具有HELP功能 ④ 快速的系统响应和低的系统成本 2)、灵活性
① 提供不同的系统响应信息(多媒体)。 ② 提供根据用户需求制定和修改界面。 3)、界面的复杂性与可靠性 复杂性—界面规模及组织应该愈简单愈好。只显示与当前工作 内容相关的信息。使用窗口分隔不同类型的信息。 可靠性—用户界面应该能够保证用户正确、可靠地使用系统, 及程序、数据的安全。产生有意义的出错信息。
顺序 结构
选择 结构
Case 型多 分支 结构
While 型循环 Until 型 循环
定义
PAD图基本符号
31
使用PAD图提供的定义功能逐步求精的例子
32
例:用PAD图表示:打印50名学生中成绩在 80分以上者的学号和成绩。
开始 i=1 Until i>50 结束
gi>=80
输出ni和gi
i=i+1
使用一种语言(通常是自 然语言)的词汇,同时却 使用另一种语言(某种结 构化语言)的语法。
45
PDL的特点
PDL用正文形式表示数据和处理过程的设计工具,其外层语法是确 定的,而内层语法则不确定。
(1)PDL具有严格的关键字外部语法,用于定义控制结构和数据 结构。外层语法描述控制结构它用类似于一般程序设计语言控制结 构的关键字:
一个菱形判断框有两个出口, 而一个选择结构只有一个出口 。不要将菱形框的出口和选择 结构的出口混淆。)
选择结构二
7
循环结构的图示:
F
F
T
T
当型(While型)循环结构 直到型(Until型)循环
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

判定树的缺点:


例题:

某校制定了教师的讲课课时津贴标准。对于各 种性质的讲座,无论教师是什么职称,每课时 津贴费一律是50元;

对于一般的授课,则根据教师的职称来决定每
课时津贴费:教授30元,副教授25元,讲师20
元,助教15元。

请分别用判定表和判定树表示津贴标准。
判定表:
1
教授 副教授 讲师 助教 讲座 50 30 25 20 15
盒图具有下述特点: 功能域明确。 不可能任意转移控制。 很容易确定局部和全程数据的作用域。 很容易表现嵌套关系,也可以表示模块的层次 结构。
盒图的基本符号
6.3.3 PAD图

PAD是问题分析图(problem analysis diagram)
的英文缩写,自1973年由日本日立公司发明以 后,已得到一定程度的推广。 它用二维树形结构的图来表示程序的控制流, 将这种图翻译成程序代码比较容易。
多年来判定树一直受到人们的重视,是一种比 较常用的系统分析和设计的工具。

用判定树表示计算行李费的算法
判定树的优点:

它的形式简单,一眼就可以看出其含义,因此 易于掌握和使用。
简洁性不如判定表,数据元素的同一个值往往 要重复写多遍,而且越接近树的叶端重复次数 越多。 画判定树时分枝的次序可能对最终画出的判定 树的简洁程度有较大影响。

PAD图的基本符号
PAD图的主要优点如下:

使用表示结构化控制结构的PAD符号设计出来 的程序必然是结构化程序。 PAD图所描绘的程序结构十分清晰。 PAD图表现程序逻辑易读、易懂、易记。 容易将PAD图转换成高级语言源程序,这种转 换可用软件工具自动完成。



即可表示程序逻辑,也可描绘数据结构。 PAD图的符号支持自顶向下、逐步求精方法的 使用。

为了实际使用方便起见,常常还允许使用DOUNTIL和DO-CASE两种控制结构。

有时需要立即从循环(甚至嵌套的循环)中转移
出来,允许使用LEAVE(或BREAK)结构。 LEAVE或BREAK结构实质上是受限制的 GOTO语句,用于转移到循环结构后面。
3种基本的控制结构
其他常用的控制结构



经典的结构程序设计:只允许使用顺序、IFTHEN-ELSE型分支和DO-WHILE型循环这3 种基本控制结构; 扩展的结构程序设计:如果除了上述3种基本 控制结构之外,还允许使用DO-CASE型多分 支结构和DO-UNTIL型循环结构; 修正的结构程序设计:再加上允许使用 LEAVE(或BREAK)结构。
3. 出错信息处理 出错信息和警告信息,是出现问题时交互式系 统给出的“坏消息”。 4. 命令交互 多数情况下,用户既可以从菜单中选择软件功 能,也可以通过键盘命令序列调用软件功能。 在理想的情况下,所有应用软件都有一致的命 令使用方法。
6.2.2 设计过程


用户界面设计是一个迭代的过程,也就是说, 通常先创建设计模型,再用原型实现这个设计 模型,并由用户试用和评估,然后根据用户意 见进行修改。 为了支持上述迭代过程,各种用于界面设计和 原型开发的软件工具应运而生。这些工具被称 为用户界面工具箱或用户界面开发系统。
h
WHILE x5
d
c
e
N-S图:
a F b x1 CASE xi x2 x3 x4 F g x5 d e h c x8 j f x6 T T
i x7
6.3.4 判定表

当算法中包含多重嵌套的条件选择时,用程序 流程图、盒图、PAD图或后面即将介绍的过程 设计语言(PDL)都不易清楚地描述。 判定表却能够清晰地表示复杂的条件组合与应 做的动作之间的对应关系。
第6章 详细设计
6.1 结构程序设计
6.2 人机界面设计
6.3 过程设计的工具
6.4 面向数据结构的设计方法
6.5 程序复杂程度的定量度量

详细设计阶段的根本目标:确定应该怎样具体 地实现所要求的系统。经过这个阶段的设计工 作,应该得出对目标系统的精确描述,从而在 编码阶段可以把这个描述直接翻译成用某种程 序设计语言书写的程序。 结构程序设计技术是实现上述目标的关键技术, 因此是详细设计的逻辑基础。


表6.1 用判定表表示计算行李费的算法 1 2 3 4 5 6 7 国内乘客 头等舱 T T F T F T F F F T T T F T F T F F T F F F F F F
8 F T
9 F F
残疾乘客
行李重量 W≤ 30 免费 (W-30)×2 (W-30)×3 (W-30)×4 (W-30)×6 (W-30)×8 (W-30)×12
6.2 人机界面设计

人机界面设计是接口设计的重要组成部分。对 于交互式系统来说,人机界面设计和数据设计、 体系结构设计及过程设计一样重要。 人机界面的设计质量,直接影响用户对软件产 品的评价,从而影响软件产品的竞争力和寿命, 必须对人机界面设计给予足够重视。

三条“黄金规则”: 置用户于控制之下。 减少用户记忆负担。 保持界面一致。
伪代码的基本控制结构: 简单陈述句结构:避免复合语句。 判定结构:IF_THEN_ELSE或CASE_OF结构。 选择结构:WHILE_DO或REPEAT_UNTIL 结构。
例:检查订货单 IF 客户订货金额超过5000元 THEN IF 客户拖延未还赊欠钱款超过60天 THEN 在偿还欠款前不予批准 ELSE (拖延未还赊欠钱款不超过60天) 发批准书,发货单 ENDIF ELSE (客户订货金额未超过5000元) IF 客户拖延未还赊欠钱款超过60天 THEN 发批准书,发货单,并发催款通知书 ELSE (拖延未还赊欠钱款不超过60天) 发批准书,发货单 ENDIF ENDIF
黄月亮和蓝月亮
怀特效应
蓝宝石之光
斯特鲁普效应
6.3 过程设计的工具 6.3.1 程序流程图

程序流程图又称为程序框图,它是历史最悠久、 使用最广泛的描述过程设计的方法。 它的主要优点是对控制流程的描绘很直观,便 于初学者掌握。 程序流程图历史悠久,至今仍在广泛使用着。


程序流程图中使用的符号
T

2 T F F F F

3 F T F F F
4 F F T F F
5 F F F T F



判定树: 教授 30
一般授课 课时津贴
讲座
副教授
讲师 助教 50
25
20 15
6.3.6 过程设计语言



过程设计语言(PDL)也称为伪码,它是用正文 形式表示数据和处理过程的设计工具。 PD表示实际 操作和条件的内部语法通常又是灵活自由的, 可以适应各种工程项目的需要。 PDL是一种“混杂”语言,它使用一种语言的 词汇,同时却使用另一种语言的语法。
T
F
T
F



√ √
√ √


判定表的优点:

能清晰地表示复杂的条件组合与应做的动作之 间的对应关系。
判定表的缺点:

判定表的含义不是一眼就能看出来的,初次接 触这种工具的人理解它需要有一个简短的学习 过程。
当数据元素的值多于两个时,判定表的简洁程 度也将下降。

6.3.5 判定树

判定树是判定表的变种,也能清晰地表示复杂 的条件组合与应做的动作之间的对应关系。
初步设计 建立原型 #1的界面 建立原型 #n的界面 需要进行的 设计修改 设计者研究 界面设计完成 评估结果 界面设计评估周期 用户评估 界面
6.2.3 人机界面设计指南

一般交互指南 信息显示指南 数据输入指南
颜色使用指南: 一个窗口中不应该出现5种以上不同色系的颜色。一般 的,尽量少用不同的颜色总是好的。 如果一个图表中仅包含几种颜色,背景应该选用其中一 种颜色的补色:如果一幅图中包含许多颜色,背景应该 选用一种中性的颜色,如灰色。 如果两个相邻的颜色不是特别和谐,可以用细的黑色边 框将它们分开。 背景和字体颜色应选用对比度强的颜色。 颜色的应用要适度,装饰性的使用服从功能性的使用。 区域的颜色实际上能够影响他的观察尺寸。 使用高饱和度(亮)颜色的大区域是不明智的。 红色和蓝色具有最强的深度不一致的效果,红色看起来 近,蓝色看起来远。

例题:某程序 流程图如右图 所示,请分别 用N-S图和 PAD图表示。
a b F xi x2 F x1 T f x5 T c d e F F g h x6 T i x7 T F
x3 x4
x8 T j
PAD图:
f a b UNTIL x8 j x6 g UNTIL x7 i
x1
x2 xi= x3 x4

一张判定表由4部分组成: 左上部列出所有条件; 左下部是所有可能做的动作; 右上部是表示各种条件组合的一个矩阵; 右下部是和每种条件组合相对应的动作。
所有条件 条件组合矩阵 条件组合 对应的动作
所有动作
例题:

假设某航空公司规定,乘客可以免费托运重量 不超过30kg的行李。 当行李重量超过30kg时,对头等舱的国内乘客 超重部分每公斤收费4元,对其他舱的国内乘 客超重部分每公斤收费6元。 对外国乘客超重部分每公斤收费比国内乘客多 一倍,对残疾乘客超重部分每公斤收费比正常 乘客少一半。
6.2.1 设计问题
设计人机界面过程中会遇到的4个问题:

系统响应时间 用户帮助设施 出错信息处理 命令交互
1. 系统响应时间 系统响应时间指从用户完成某个控制动作,到 软件给出预期的响应之间的这段时间。系统响 应时间有两个重要属性:长度和易变性。 长度:如果系统响应时间过长,用户就会感到 紧张和沮丧;系统响应时间过短会迫使用户加 快操作节奏,从而可能会犯错误。 易变性:指系统响应时间相对于平均响应时间 的偏差,即使系统响应时间较长,响应时间易 变性低也有助于用户建立起稳定的工作节奏。
相关文档
最新文档