软件工程第六章详细设计学生课件(完)
《软件工程》课件 第6章详细设计

6.2.1
1. 2. 3. 4.
设计问题
在设计人机界面的过程中,几乎总会遇到下述 4个问题: 系统响应时间 用户帮助设施 出错信息处理 命令交互
2014年春 • 软件工程
6.2.2
设计过程
用户界面设计是一个迭代的过程,步骤如下:
2014年春 • 软件工程
6.2.3
2014年春 • 软件工程
6.3.2
盒图(N-S图)
2014年春 • 软件工程
示例
2014年春 • 软件工程
N-S图的嵌套定义形式
2014年春 • 软件工程
特点:
① 没有箭头,不允许随意转移控制;
② 每个矩形框(Case中条件取值例外)都是一 个功能域(即一个特定结构的作用域),结 构表示明确; ③ 局部及全程数据的作用域易见;
2014年春 • 软件工程
6.3
过程设计的工具
在详细设计阶段,要决定各个模块的实现算法, 并精确地表达这些算法。表达过程规格说明的工 具叫做详细设计工具,它可以分为以下三类:
图形工具:程序流程图;盒图;问题
分析图; 表格工具:判断表;判断树; 语言工具:过程设计语言;
2014年春 • 软件工程
2014年春 • 软件工程
6.4.1 Jackson图
注意:
A A
S
A
I
Co
H中的方框表示模 块,而JD中的方 框代表几个语句构 成的简单操作; H表现调用关系, 而JD表现组成关 系。
B
C
Bo
B*
A=
B
A=
B
S C
A=B
C
2014年春 • 软件工程
计算机科学与技术专业课课件_软件工程SE__Chapter6

③ 有数据说明,例如: TYPE number IS STRING LENGTH (12) ④有子程序定义与调用机制,例如:
PROCEDURE <子程序名> <属性:内部\外部,编程语言等等>
INTERFACE <参数表:I\O等等> pseudocode lines END
调用时可用:PERFORM <子程序名> USING<参数表>
上海大学计算机学院
2013-8-31
19
面向数据结构的设计方法
在许多应用领域中信息都有清楚的层次结构, 输入数据、内部存储的信息(数据库或文件)以及 输出数据都可能有独特的结构。 数据结构既影响程序的结构又影响程序的处理 过程。
2013-8-31
上海大学计算机学院
20
Jackson图
顺序
重复
2013-8-31
上海大学计算机学院
2
结构程序设计
◆ 结构程序设计的特点
1. 2. 3. 自顶向下逐步求精; 具有单入、单出的控制结构(取消GOTO语句); 结构化定理:任何单入口单出口的程序都可以由“顺序”、“选 择”和“循环”三种基本结构实现。
◆ 经典的结构程序设计
顺序、IF-THEN-ELSE型分支和DO-WHILE型循环
2013-8-31 上海大学计算机学院 16
判定表
◆判定表示例
31
上海大学计算机学院
17
判定树
◆判定树示例
2013-8-31
上海大学计算机学院
18
PDL
◆ 过程设计语言( Program Design Language),又称伪码 (Pseudocode ) ◆ 特点
软件工程第六章 详细设计

软件工程第六章详细设计软件工程第六章详细设计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 接口设计本节详细介绍系统与外部系统或用户的接口设计。
软件工程第六章详细设计

• (4)控制结构有确定的逻辑模式,编写程序 代码只限于很少几种直截了当的方式,因 此源程序清晰流畅。
• (5)程序清晰和模块化使得在修改和重新设 计一个软件时可以重用的代码量最大。
• (6)程序的逻辑结构清晰,有利于程序正确 性证明。
2020/7/8
6.2 过程设计的工具
描述程序处理过程的工具称为过程设计工具 过程设计工具包括图形,表格, 语言三类.
2020/7/8
N-S图示例
多 分 支 选 择 结 构 先 判 定 型 循 环 结 构
2020/7/8a源自b条件1T
F
T Case Xi, i=2,3,4
F
X2
X3
X4 T
f
条件2 F
当条件3成立
g
i
c
de
h
直到条件4成立
直 到 条 件 成立
j
顺 序 结 构
选 择 结 构
后 判 定 型 循 环 结 构
基本控制结构:
(1)顺序结构
(2)选择结构
A B C
2020/7/8
A 条T 件F
B
(3)重复结构
(先测试循环)
(后测试循环)
WHILE C
S
UNTIL C
S
等价的PASCAL语言: 等价的PASCAL语言: WHILE C DO S REPEAT C UNTIL S
2020/7/8
(4) 多分支选择型(CASE型)
正常乘客 ---- (W-30)*6
头等舱 其它舱
残疾乘客 ---- (W-30)*4
正常乘客 ---- (W-30)*8 残疾乘客 ---- (W-30)*6
软件工程第六章 详细设计

软件工程第六章详细设计软件工程第六章详细设计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。
软件工程第六章软件详细设计PPT课件

3
6.1详细设计任务
6.1.1 详细设计的基本任务 1.数据结构设计 前面的需求分析、总体设计阶段,确定的 概念性的数据类型,要进行确切的定义。这一 部分的设计内容一般比较多,所以大多数采用 小型数据库辅助的方法。
4
2.物理设计 对数据库进行物理设计,即确定数据库的
物理结构。物理结构主要指数据库的存储记录 格式、存储记录安排和存储方法,这些都依赖 于具体所使用的数据库系统。
要评审。
10
6.1.2 详细设计方法
1.采用自顶向下、逐步求精的程序设计方法 在详细设计中,虽然处于“具体”设计阶段,但
在设计某个复杂的模块内部处理过程时,仍可以采用 逐步求精的方法。可以将其分解为若干个模块来实现, 降低处理细节的复杂度。
11
2.使用三种基本控制结构构造程序 设计时,如果对一个模块处理过程细化中,开始是模 糊的,可以用下面三种方式以模糊过程进行分解:
5
3.算法设计 在总体设计的结构完成后,结构各个环节
的实现是多解的。着就需要用系统设计与分析 的技术来描述。可以用某种图形、表格、语言 等工具将每个模块处理过程的详细算法描述出 来。
6
4.界面设计 用户界面的设计现在显得比较重要,可以
采用字符用户界面设计,图形用户界面和多媒 体人机界面设计。这就要结合具体的系统来处 理。
以上三种逻辑表达工具各有所长和不足,归纳 起来可以得出下列结论:
软件工程-第六章-软件详细设计

软件工程-第六章-软件详细设计第六章软件详细设计1、引言本章描述了软件详细设计阶段的任务和目标,包括需求分析阶段后续的工作内容,以及软件详细设计的重要性和作用。
2、设计目标本节介绍软件详细设计的目标和要求,包括系统的性能、可靠性、可维护性等方面的要求。
2.1 性能目标描述系统在不同负载条件下的性能要求,包括响应时间、吞吐量等指标。
2.2 可靠性目标描述系统需要达到的可靠性要求,包括故障处理、容错机制等。
2.3 可维护性目标描述系统需要达到的可维护性要求,包括代码可读性、模块化、可重用性等。
3、系统结构设计本节介绍软件系统的整体结构设计,包括模块划分和模块之间的关系。
3.1 模块划分根据需求分析的功能模块进行划分,并对每个功能模块进行详细描述。
3.2 模块之间的关系描述每个模块之间的接口和依赖关系,包括数据传输、函数调用等。
4、数据结构设计本节介绍系统中使用到的数据结构,包括数据库设计、文件结构设计等。
4.1 数据库设计描述系统中所需的数据库的表结构、字段定义等。
4.2 文件结构设计描述系统中所需的文件的结构和格式。
5、界面设计本节介绍系统的用户界面设计,包括页面布局、交互方式等。
5.1 页面布局设计描述系统的页面布局和组件的排列方式。
5.2 交互方式设计描述用户与系统之间的交互方式,包括输入、输出等。
6、算法设计本节介绍系统中使用的算法和数据处理方法。
6.1 算法描述描述系统中使用的算法的原理和实现方式。
6.2 数据处理方法描述系统中对数据进行处理的方法和策略。
7、安全性设计本节介绍系统的安全性设计,包括用户身份验证、数据加密等。
7.1 用户身份验证描述系统中对用户身份进行验证的方法和过程。
7.2 数据加密描述系统中对敏感数据进行加密的方法和策略。
8、测试计划本节介绍软件详细设计阶段的测试计划和测试策略。
8.1 功能测试描述对每个功能模块进行的功能测试计划和测试用例。
8.2 性能测试描述对系统性能进行测试的计划和方法。
第6章 详细设计 软件工程-课件

图6.2 其他常用的控制结构
6.2 人机界面设计
人机界面的设计质量,直接影响用户对软 件产品的评价,从而影响软件产品的竞争力 和寿命
6.2.1 设计问题
4个问题: 系统响应时间、 用户帮助设施、 出错信息处理 命令交互。
“结构程序设计是尽可能少用GO TO语句 的程序设计方法。最好仅在检测出错误时才 使用GO TO语句,而且应该总是使用前向 GO TO语句。”
如果只允许使用顺序、IF-THEN-ELSE型 分支和DO-WHILE型循环这3种基本控制结 构,则称为经典的结构程序设计;
如果除了上述3种基本控制结构之外,还允 许使用DO-CASE型多分支结构和DO-UNTIL 型循环结构,则称为扩展的结构程序设计
集成
附加
(1) 在用户与系统交互期间,是否在任何时候都能 获得关于系统任何功能的帮助信息?有两种选择: 提供部分功能的帮助信息和提供全部功能的帮助信 息。
(2) 用户怎样请求帮助?有3种选择:帮助菜单,特 殊功能键和HELP命令。
(3) 怎样显示帮助信息?有3种选择:在独立的窗口 中,指出参考某个文档(不理想)和在屏幕固定位置 显示简短提示。
用户界面的评估周期如下所述:
完成初步设计之后就创建第一级原型;
用户试用并评估该原型,直接向设计者表述对界 面的评价;
设计者根据用户意见修改设计并实现下一级原型。
上述评估过程持续进行下去,直到用户感 到满意,不需要再修改界面设计时为止。
也可以在创建原型之前就对用户界面的设 计质量进行初步评估。
在创建了用户界面的设计模型之后,可以 运用下述评估标准对设计进行早期复审。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 选用界面形式时,应考虑:
– 使用的难易程度 – 学习的难易程度
– 操作速度
– 控制 – 开发的难易程度
主要内容
• 数据输入界面设计
– 目标:尽量减少用户工作,并尽可能减少输入的出错率 • 数据显示界面设计
– 包括:屏幕查询、文件浏览、图形显示和报告。
• 控制界面的设计 – 主要目的:让用户能主动地控制系统的工作 – 主要方式:窗口、对话框、菜单、功能键、图标、 直接点击、目录语言、自然语言等
数据输入界面设计
• 尽量减少用户输入的动作 • 保证信息显示方式与数据输入方式的一致性 • 隐藏当前状态下不可选用的命令 • 为所有输入动作提供帮助信息 • 确认输入/删除、明确取消动作 • 提示输入范围 • 允许编辑 • 提供反馈信息和Undo功能 ☆ 允许用户定做输入格式 ☆ 采用灵活多样的交互方式,允许用户自选输入方式 ☆ 允许用户控制交互过程
实例1:
• 某仓库管理系统每天要处理大批单据所组成的事务文件。 单据分为订货单和发货单两种,每张单据由多行组成,订 货单每行包括零件号、零件名、单价、数量四个数据项, 发货单每行包括零件号、零件名、数量三个数据项,用 Jackson结构图表示该事务文件的数据结构。
表示“事务文件”数据结构的Jackson图
• •
6.6.3 PAD图
• 问题分析图(Problem Analysis Diagram)采用二维树形结 构图表示程序的控制流。
PAD图基本符号
=1
A
A
条件
B
A
B
条件
A
=2
条件
=n
B
…
M
(a)顺序
(b)if-then-else型分支
(c) case型多分支
while 条件
A
Until 条件
A
A
def B C
6.3.6 过程设计语言(PDL)
• 介于自然语言和形式化语言之间的半形式化语言.用正文形 式表示数据和处理过程的设计工具。 • 正文分内外两层 – 外层用严格的关键字语法描述操作的基本控制结构
– 内层用自然语言描述加工操作
• 控制结构关键词: – if_then_else、while_do、repeat_until、case_of…
7-9,12月
<=20 √ √ √ >20
1-6,10,11月
条件组合 <=20 >20
操
作
操作执行 √
•当算法中包含多重嵌套的条件选择时,用判定表能清晰地 表示复杂的条件组合与应做的动作之间的对应关系 不能清晰地表示顺序和重复等处理.不能作为通用设计工具
练习:一单位对不同职级,不同工龄员工的基本奖金是不同的.
事务文件 单 据* 订货单
O
发货单
O
订货行* 零件号 零件名 单价 数量 零件号
发货行* 零件名 数量
用Jackson图描述下述一列火车的构成: 一列火车最多有两个火车头。只有一个火车头时则位于列车最前面,若还有第 二个火车头时,则第二个火车头位于列车最后面。火车头可能是内燃机车也可 能是电气机车。车厢分为硬座车厢,硬卧车厢和软卧车厢三种。硬座车厢在所 有车厢的前面,软卧车厢在所有车厢的后面。此外在硬卧车厢和软卧车厢之间 还有一节餐车。
例题1
• 将下述伪码用流程图和N-S盒图,PADb表示 start
if p then while q do f end do else block g h end block end if stop
习题:请使用流程图、PAD图和PDL语言描述下列程序的算法。 (1)在数据A(1)~A(10)中求最大数和次大数。 (2)输入三个正整数作为边长,判断该三条边构成的三角形 是等边、等腰还是一般三角形。
(b) If-then-else型分支
(c) case型多分支
do-until 部分 循环条件 (e) do-until型循环
A (f) 调用子程序A
(d) do-while型循环
练习:采用N-S图描述”计算应发工资模块”
• • • • • • • • • 例:工资系统中的“计算应发工资” 这个加工在数据字典中的条目描述 数据加工名称:计算应发工资 加工编号:1.2 说明:根据职工的工资档案及本月奖金发放表数据计算每个职工的应发工资 输入数据流:奖金发放表及工资档案 输出数据流:应发工资表 加工逻辑:DO WHILE工资档案文件指针未指向文件尾 从工资档案中取出当前职工工资的各项基本数据进 行累加 在奖金发放表中按职工号查找到该职工的奖金数 对奖金数与工资基本数据的累计和进行求和得到 该职工的应发工资数 ENDDO
6. 4 面向数据结构的设计方法
Jackson结构图
A B C 顺序 D B
O
A C
O
A D
O
B* 重复
选择
用Jackson图描绘三种基本的逻辑数据结构
6.4.2 改进的Jackson图
A A
S(i)
B C D
B0
A
C0
D0
A S(i)
I(i) __ B*
B0
注意(1)顺序结构中B,C,D任一个都不能是选择出现或重复出现的数据元素 (2)Jackson图与层次图的区别
设计过程
• 创建系统功能的外部模型
• 确定为完成此系统功能人、机各自的任务 • 考虑界面设计中的典型问题
• 借助CASE工具构造界面原型
• 实现设计模型 • 试用并评估界面质量 • 修改… 此过程是一个迭代过程。
界面设计形式
• 主要有:
– 问题描述语言、数据表、图形与图标、菜单、对话框、 窗口等
D
(d)do-while型循环
(e)repeat-until型循环
(f)定义A
使用Pቤተ መጻሕፍቲ ባይዱD图提供的“定义功能”来逐步求精的例子
例题
• 用PAD图描述下述算法:将数组A(1)到A(10) 用选择法进行 大小排序 输入A(1)到A(10)的值 置初始值:n=10 Sort
定义Sort
i=1
def Sort while i<n while j<=n j=j+1 max<A(j) F j=i+1 max=A(i) T
数据显示界面设计
• 采用统一的标号、标准的缩写和预先定义好的颜色 • 仅显示与当前上下文有关的信息 • 相关的数据显示在一起
• • • •
避免因数据过于费解造成的用户烦恼 允许用户对可视环境进行维护,如放大、缩小图像 只显示有意义的出错信息 使用大小写、缩进和文本分组以帮助理解
6.3过程设计的工具
用判定表表示计算行李费的算法
6.3.5 判定树
实例1:风景区门票折扣量算法判定树 定票量<=20 —— 5% 定票量>20 —— 15% 定票量<=20 —— 20% 定票量>20 —— 30%
折扣量 算法
旅游时间 7-9,12 月 旅游时间 1-6,10-11月
练习:“基本奖金计算”的判定树 练习:用判定树计算行李费的算法
结构化SD(Structured Design)
软件需求:解决“做什么”
软件设计:解决“怎么做”
• 设计内容:
– – – – 数据结构的设计 体系结构的设计 接口设计 过程设计
总体设计 详细设计
数据建模
数
功能建模
据 流 数据 图 字典 状态转换图
控制规格说明
分析模型
行为建模
状态转换图 控制规格说明 处理规格说明
• • • • • • • • • • • 例:工资系统中的“计算应发工资” 这个加工在数据字典中的条目描述 数据加工名称:计算应发工资 加工编号:1.2 说明:根据职工的工资档案及本月奖金发放表数据计算每个职工的应发工资 输入数据流:奖金发放表及工资档案 输出数据流:应发工资表 加工逻辑:DO WHILE工资档案文件指针未指向文件尾 从工资档案中取出当前职工工资的各项基本数据进 行累加 在奖金发放表中按职工号查找到该职工的奖金数 对奖金数与工资基本数据的累计和进行求和得到 该职工的应发工资数 ENDDO
三 种 基 本 控 制 结 构
其 他 常 用 控 制 结 构
6.2 人机界面设计
• 重要性 – 是门面,直接影响到软件产品的寿命和市场的竞争力—— money • 典型问题 – 系统响应时间 – 用户求助机制(上下文敏感帮助方式) – 出错信息处理(提示有意义的错误信息) – 命令交互方式(鼠标点击式)
• 提出的目的 – 限制GoTo语句的使用,提高程序的可读性、可测试性、 可维护性 • 结构程序设计定义 – 是一种程序设计技术,它采用自顶向下、逐步求精的设 计方法和单入口、单出口的控制结构,并且只包含顺序、 选择、循环三种结构 常用的结构程序设计类型: • 经典的:顺序、选择、循环 • 扩展的:DO~CASE、DO~UNTIL • 修正的:LEAVE 或BREAK
过程设计 接口设计
数据流图
体系结构设计 数据字典 E-R图 数据对象描述
数据设计
第六章详细设计
详细设计的目标和任务
• 如何具体的实现所要求的系统,得出目标系统的精确描述。 • 详细设计的结果最终决定编码阶段程序的质量。(逻辑正确、 性能满足要求、便于阅读和理解)
详细设计是编码的先导。
6.1 结构程序设计
A(j)=max
A(i)=max i=i+1
练习:采用PAD图描述“计算应发工资模块”
• • • • • • • • • 例:工资系统中的“计算应发工资” 这个加工在数据字典中的条目描述 数据加工名称:计算应发工资 加工编号:1.2 说明:根据职工的工资档案及本月奖金发放表数据计算每个职工的应发工资 输入数据流:奖金发放表及工资档案 输出数据流:应发工资表 加工逻辑:DO WHILE工资档案文件指针未指向文件尾 从工资档案中取出当前职工工资的各项基本数据进 行累加 在奖金发放表中按职工号查找到该职工的奖金数 对奖金数与工资基本数据的累计和进行求和得到 该职工的应发工资数 ENDDO