Download presentation
Presentation is loading. Please wait.
1
软件工程 第四章 软件设计 软件过程设计技术与工具
2
本节主要内容 结构化程序设计技术 过程设计的工具
3
4.1结构化程序设计 是程序设计技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制构件。
4
4.2过程设计的工具 图形工具:程序流程图,N-S,PAD,HIPO 表格工具:判定表 语言工具:PDL,HIPO
5
1. 程序流程图 程序流程图也称为程序框图,程序流程图使用五种基本控制结构是: A B S P A1 P =1 A2 =2 An =n
1. 程序流程图 程序流程图也称为程序框图,程序流程图使用五种基本控制结构是: A B T S P F A1 P =1 A2 =2 An =n 先判断 重复型 顺序型 A B P F S P T 后判断 重复型 选择型 多分支选择型
6
流程图示例
7
2. N-S图 N-S图也叫做盒图。五种基本控制结构由五种图形构件表示。 P A = 1 = 2 … = n B A1 A2 … An
F T while-do P do-while P = 1 = 2 … = n A1 A2 … An 顺序型 选择型(1) 选择型(2) 先判断重复型 后判断重复型 多分支选择型
8
N-S图(盒图)示例 do-while X6
9
N-S图的嵌套定义形式
10
3. 问题分析图 (PAD) PAD也设置了五种基本控制结构的图式,并允许递归使用。 S1 S A1 A2 An P =1 =2 =n
while P S2 until P 先判断重复型 后判断重复型 选择型 顺序型 多分支选择型
11
3. 问题分析图 (PAD) 日本鲤鱼旗
12
PAD示例
13
对应于增量型循环结构 for i := n1 to n2 step n3 do 在PAD中有相应的循环控制结构 PAD的扩充控制结构
14
4. 判定表 判定表用于表示程序的静态逻辑 在判定表中的条件部分给出所有的两分支判断的列表,动作部分给出相应的处理
要求将程序流程图中的多分支判断都改成两分支判断
15
无多分支判断结构
17
5. PDL (Program Design Language)
伪码的语法规则分为“外语法”和“内语法”。 PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法可使用自然语言的词汇。
18
示例: 拼词检查程序 PROCEDURE spellcheck IS BEGIN split document into single words look up words in dictionary display words which are not in dictionary create a new dictionary END spellcheck
19
PDL的特点 提供全部结构化控制结构、数据说明和模块特征。能对PDL正文进行结构分割,使之变得易于理解。
有数据说明机制,包括简单的(如标量和数组)与复杂的(如链表和层次结构)的数据结构。 有子程序定义与调用机制,用以表达各种方式的接口说明。
20
为了区别关键字,规定关键字一律大写,其它单词一律小写。或者规定关键字加下划线,或者规定它们为黑体字。
内语法使用自然语言来描述处理特性。内语法比较灵活,只要写清楚就可以,不必考虑语法错,以利于人们可把主要精力放在描述算法的逻辑上。
21
使用PDL语言,逐步求精: PROCEDURE spellcheck IS
BEGIN --* split document into single words LOOP get next word add word to word list in sortorder EXIT WHEN all words processed END LOOP --* look up words in dictionary LOOP get word from word list
22
IF word not in dictionary THEN --
IF word not in dictionary THEN * display words not in dictionary display word prompt on user terminal IF user response says word OK THEN add word to good word list ELSE add word to bad word list ENDIF ENDIF EXIT WHEN all words processed END LOOP
23
--* create a new words dictionary dictionary :=
merge dictionary and good word list END spellcheck
24
6. HIPO图 HIPO是1976年由IBM公司提出来的,一开始只是用做文档编写的格式要求,随后发展成比较有名的软件设计手段。
HIPO图采用功能框图和PDL来描述程序逻辑,它由两部分组成:可视目录表和IPO图。 可视目录表给出程序的层次关系; IPO图为程序各部分提供具体的工作细节。
25
(1) 可视目录表 VTOC (Visual Table Of Contents)
可视目录表由体系框图、图例、描述说明三部分组成。 1) 体系框图。又称层次图 (H图),是可视目录表的主体,用它表明各个功能的隶属关系。它是自顶向下逐层分解得到的,因此是一个树形结构。 最高一层是整个系统的名称和系统的概括功能说明;
26
第二层把系统功能展开,分成几个框; 第二层功能进一步分解,就得到了第三层、第四层,…,直到最后一层。 每个框内都应有一个名字,用以标识它的功能。还应有一个编号,以记录它所在的层次及在该层次的位置。 2)图例。 每一套HIPO图都应有一个图例,即图形符号说明。 3)描述说明。它是对层次图中每一框的补充说明,在必须说明时才用。
27
(2) IPO图 IPO图为层次图中每一功能框详细地指明输入(I)、处理(P)及输出(O)。
由于某些细节很难在一张IPO图中表达清楚,常常把IPO图又分为两部分,概括的称为概要图(overview diagram),具体的称为详细图(detail diagram)。
28
例:盘存/销售系统的层次图 盘存/销售系统 1.0.0 销售处理 1.1.0 盘存处理 1.2.0 计算 销售 记录 1.1.1 产生 报表
1.1.2 核对顾 客赊欠 的金额 1.1.3 检查 库存 数量 1.2.1 产生发 货单、 装运单 1.2.2 顾客 付款 收据 1.2.3 盘存 例:盘存/销售系统的层次图
29
例:盘存/销售系统的层次图 盘存/销售系统 1.0.0 销售处理 1.1.0 盘存处理 1.2.0 计算 销售 记录 1.1.1 产生 报表
1.1.2 核对顾 客赊欠 的金额 1.1.3 检查 库存 数量 1.2.1 产生发 货单、 装运单 1.2.2 顾客 付款 收据 1.2.3 盘存 例:盘存/销售系统的层次图
30
图例 小说明 数据流 控制流 子程序 实体 数据输入/输出 编号 说 明 1.0.0 销售/盘存处理框图 1.1.0
数据流 控制流 子程序 实体 数据输入/输出 图例 编号 说 明 1.0.0 销售/盘存处理框图 1.1.0 顾客订单检查, 核对顾客赊欠金额, 产生销售报表 1.1.1 用工作文件的盘存项目号, 对顾客订单进行核对和排序 1.1.2 以地区和人员为单位, 编制销售报表, 计算销售佣金 1.1.3 检验顾客赊欠金额, 计算折扣, 确定支付项目 1.2.0 处理顾客盘存管理报表, 顾客付款收帐, 处理发货、包装、托运 小说明
31
概要IPO图用于表达对一个系统,或对其中某一子系统功能的概略表达,指明完成某一功能框规定的功能时需要哪些输入,哪些操作和哪些输出。
32
对应H图上1.1.0框的概要IPO图 输入 Input 输出 Output 处理 Process 销售事务记录 计算销售事务记录,
顾客赊欠 金额文件 退回订单文件 后备订单文件 退回订单 无效订单 特殊处理订单 工作文件 销售报表 计算销售事务记录, 产生排序的工作文 件 按地区及销售人员, 产生销售报表,计算 销售手续费 核对顾客赊欠金额, 计算应付款项1.1.3 1.1.0 输入 Input 输出 Output 处理 Process
33
对应于H图1.1.2框的详细IPO图 从1.1.1框来 到 1.1.3框去 1.1.2 1. 以销售地区和销售 人员的销售额排序 交易 文件
销售报表 1. 以销售地区和销售 人员的销售额排序 2. 准备销售报表 地区销售总计 人员销售总计 计算佣金 交易 文件 SORT 系统提供 的子例程 销售数 据排序 到 1.1.3框去
34
改进的IPO图格式 IPO图 系统: 模块: 编号: 作者: 日期: 被调用: 调用: 输出: 输入: 操作: 局部数据元素: 注释:
35
HIPO图既是在开发过程中的表达工具,又是开发文档的编制工具。开发完成后,HIPO图就是很好的文档。
这一图形表达方法容易看懂。 HIPO图的适用范围很广, 不限于详细设计。画可视目录表就是与概要设计密切相关的工作。如果利用它仅表达软件要达到的功能,则是需求分析中描述需求的很好的工具。 HIPO图既是在开发过程中的表达工具,又是开发文档的编制工具。开发完成后,HIPO图就是很好的文档。
Similar presentations