软件工程第6章-面向数据结构的分析与设计
计算机科学与技术专业课课件_软件工程SE__Chapter6
![计算机科学与技术专业课课件_软件工程SE__Chapter6](https://img.taocdn.com/s3/m/11ed4f0916fc700abb68fce6.png)
③ 有数据说明,例如: 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 ) ◆ 特点
软件工程第六章
![软件工程第六章](https://img.taocdn.com/s3/m/5bef9341b307e87101f696d7.png)
判定树的缺点:
例题:
某校制定了教师的讲课课时津贴标准。对于各 种性质的讲座,无论教师是什么职称,每课时 津贴费一律是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图转换成高级语言源程序,这种转 换可用软件工具自动完成。
软件工程导论第6章
![软件工程导论第6章](https://img.taocdn.com/s3/m/f3cb1e17b7360b4c2e3f6442.png)
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章 详细设计
![第6章 详细设计](https://img.taocdn.com/s3/m/31c93a08e2bd960590c6774f.png)
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版)
![软件工程导论第6章(第4版)](https://img.taocdn.com/s3/m/635bcf2f10661ed9ad51f38a.png)
二. 人机界面设计
人机界面设计是接口设计的一个重要的组成部 分。对于交互式系统来说,人机界面设计和数据设 计、体系结构设计及过程设计一样重要。
1.指导规则
T.Mandel在《用户界面设计要素》中,提出了3 条指导规则: 让用户驾驭软件,不是软件驾驭用户 减少用户的记忆 保持界面的一致性
2. 应该考虑的设计问题
4. 人机界面设计指南
(3) 数据输入指南 尽量减少用户的输入动作。 保持信息显示和数据输入之间的一致性。 允许用户自定义输入。 交互应该是灵活的,可调整成用户喜欢的输入方式。 使在当前动作语境中不适用的命令不起作用。 让用户控制交互流。 对所有输入动作都提供帮助。 消除冗余的输入。
三. 过程设计
1.过程设计的目的与任务 目的 确定模块采用的算法和块内数据结构,用某种 选定的表达工具给出清晰的描述。 任务:编写软件的“过程设计说明书” 为每个模块确定采用的算法 (模块的详细过程性 描述) 确定每一模块使用的数据结构 确定模块接口的细节 (包括对系统外部的接口和 用户界面,对系统内部其他模块的接口,以及关 于模块输入数据、输出数据及局部数据的全部细 节)
三. 过程设计
2.过程设计的原则与方法
清晰第一的设计风格 结构化的控制结构 结构程序设计的经典定义为: “如果一个程序的代码块仅仅通过顺序、选择和循环这3 种基本控制结构进行连接,并且每个代码块只有一个入口和 一个出口,则称这个程序是结构化的。” 结构程序设计技术是一种实现在逻辑上正确描述每个模 块的功能,并且使设计出的处理过程尽可能简明易懂的关键 技术,是过程设计的逻辑基础。 逐步细化的实现方法 例:在一组数中找出其中的最大数
(4) 命令交互 命令行现在仍然是许多高级用户偏爱的交互方式。在 多数情况下,用户既可以从菜单中选择软件功能,也可以 通过键盘命令序列调用软件功能。 在提供命令交互方式时,必须考虑下列设计问题: 是否每个菜单选项都有对应的命令? 采用何种命令形式?有3种选择:控制序列(例如Ctrl+P), 功能键和键入命令。 学习和记忆命令的难度有多大?忘记了命令怎么办? 用户是否可以定制或缩写命令? 在理想的情况下,所有应用软件都有一致的命令使用 方法。
软件工程与实践第6章
![软件工程与实践第6章](https://img.taocdn.com/s3/m/4ee40b8451e79b89680226aa.png)
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章面向数据流的设计方法](https://img.taocdn.com/s3/m/218428fdfab069dc502201f4.png)
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 用户交互子系统的二级数据流图
事务分析
事务分析法可概括为七个步骤:
步骤一、复审基本系统模型; 步骤二、复审并精化软件数据流图; 步骤三、确定数据流图的特征; 步骤四、指出事务中心,确定接收部分和发送部分 的流界; 步骤五、映射出系统上层模块结构; 步骤六、分解并精化事务结构以及每条动作路径所 对应的结构。根据流经每一动作路径的数据流特征, 参考前面所述“变换设计” 相关步骤可以逐一导出 这些子结构.
软件工程(第6章(精)
![软件工程(第6章(精)](https://img.taocdn.com/s3/m/c3e5d56e7fd5360cba1adb61.png)
软件工程(第6章 软件测试)
4.可靠性分析
通过收集和分析测试结果数据,对软件建立可靠性 模型 利用可靠性分析,评价软件质量:
软件工程(第6章 软件测试)
换言之,测试的目的是
– 想以最少的时间和人力,系统地找出软件 中潜在的各种错误和缺陷。如果我们成功地 实施了测试,我们就能够发现软件中的错误。 – 测试的附带收获是,它能够证明软件的功 能和性能与需求说明相符合。 – 实施测试收集到的测试结果数据为可靠性 分析提供了依据。 – 测试不能表明软件中不存在错误,它只能 说明软件中存在错误。
5. 充分注意测试中的群集现象。 经验表明,测试后程序中残存的错误数 目与该程序中已发现的错误数目成正比。 6. 严格执行测试计划,排除测试的随意 性。 7. 应当对每一个测试结果做全面检查。 8. 妥善保存测试计划,测试用例,出错 统计和最终分析报告,为维护提供方便。
软件工程(第6章 软件测试)
.
测试数据
期望结果 输入有效
覆盖范围 等价类(1)(2)(3)
—
20010 5
软件工程(第6章 软件测试)
案例—报表日期输入测试用例
6 3 黑 盒 测 试 及 测 试 不能出 用 现相同 例
步骤3:设计无效类的测试用例 对上表中每个无效类至少设计一个测试用例 测试数据 期望结果 覆盖范围
.
的测试 等 用例
.
报表日期的 3位数字字符(1) 类型及长度 年份范围 在2001~2005之间 (2) 在1~12之间(3)
《软件工程》课程教学大纲
![《软件工程》课程教学大纲](https://img.taocdn.com/s3/m/9c4f9d3c0640be1e650e52ea551810a6f524c8dc.png)
软件工程课程教学大纲(SoftwareEngineering)学时数:32其中:实验学时:6课外学时:0学分数:2适用专业:计算机科学与技术一、课程的性质、目的与任务《软件工程》是计算机科学与技术专业教学计划中一门综合性和实践性很强的核心课程,主要内容包括软件工程概述、可行性分析、需求分析、概要设计、详细设计、面向对象分析与设计、编码、软件质量与质量保证、项目计划与管理。
根据培养基层应用型人才的需要,本课程的目的与任务是使学生通过本课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,为更深入地学习和今后从事软件工程实践打下良好的基础。
二、课程教学的基本要求(-)基本概念和基本知识:软件与软件工程,生存周期与软件开发模式,结构化分析、设计与编码,面向对象分析、设计与编码,软件的评审、测试与维护,项目计划与项目管理。
(二)基本技能:能用软件工程的方法参与软件项目的分析、设计、实现和维护重点:系统分析、系统设计、系统实现、系统维护难点:需求分析、软件测试课程的教学要求在每一章教学内容之后给出,大体上分为三个层次:了解、理解和掌握。
了解即能正确判别有关概念和方法:理解是能正确表达有关概念和方法的含义;掌握是在理解的基础上加以灵活应用三、课程的教学内容、重点和难点第一章概论一、软件(一)软件的发展;(二)软件的定义;(三)软件的特点、软件的种类。
二、软件工程的概念(一)软件危机与软件工程的定义;(二)软件工程的目标;(三)软件工程的原则。
三、软件生存周期与软件开发模型(一)瀑布模型、原型模型、螺旋模型、基于四代技术模型、面向对象与组件模型、混合模型。
教学要求:软件和软件工程的基本概念,软件生命周期及软件开发的各个模型重点:软件生存周期与软件开发模型第二章可行性分析一、可行性研究的任务二、可行性研究的步骤三、系统流程图四、成本/效益分析第三章需求分析一、需求分析的任务与步骤(一)需求分析的任务;(二)需求分析的步骤;(三)需求分析的原则。
计算机软件工程第六章 详细设计
![计算机软件工程第六章 详细设计](https://img.taocdn.com/s3/m/3b3dfd8cd4d8d15abe234e4e.png)
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章](https://img.taocdn.com/s3/m/d343ca6427d3240c8447ef3d.png)
20
22
(五)判定树
表示复杂的条件组合与应做的动作之间的对应关系。
判定树以其形式简单,不需任何说明就能看出其含义, 易于掌握和使用等特点,长期以来一直受到人们的重视。 判定树的简洁性不如判定表,经常出现同一个值重复 写多遍,且叶端重复次数急剧增加。 由于判定树的分支次序对于最终画出的判定树的简洁 程度有较大影响,所以选择哪一个条件作为第一个分支 是至关重要的。
5
1971年IBM公司在纽约时报信息库管理系统的设 计中成功地使用了结构程序设计技术,随后在美国 宇航局空间实验室飞行模拟系统的设计中,结构程 序设计技术再次获得成功。
结构化程序设计一种比较流行的定义是:结构 化程序设计是一种设计程序的技术,它采用自顶向 下逐步求精的方法和单入口单出口的控制结构。
4
结构化程序设计的提出
结构化程序设计的概念最早是由E.W.Dijkstra提 出来的。他指出:“可以从高级语言中取消GOTO 语句”,“程序的质量与程序中所包含的goto语句 的数量成反比。 1966年,Bohm和Jacopini证明了,只用3种基本 控制结构就能实现任何单入口单出口的程序。 1972年IBM公司的Mills进一步提出,程序应该只 有一个入口和一个出口,从而补充了结构化程序设 计的规则。
17
(三)PAD图 PAD-Problem Analysis Diagram是问题分析图 的英文缩写,由日立公司中央研究所主任研究员二 村良彦等人在1973年研究开发的。
它使用二维树形结构的图来描述程序的逻辑, 是一种十分有前途的表达方法。
PAD图的优点:程序应该是结构化的。 PAD图中竖线的总条数就是程序中的层次数,既 表示程序逻辑,也描绘数据结构。
软件工程导论第6章 详细设计2
![软件工程导论第6章 详细设计2](https://img.taocdn.com/s3/m/82ccb40890c69ec3d5bb757b.png)
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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内容摘要
• JSP方法 • JSD方法简介 • 小结
复旦大学计算机科学技术学院
软件工程(第二版)
3内容摘要• JSP方来自 • JSD方法简介 • 小结
复旦大学计算机科学技术学院
软件工程(第二版)
4
JSP方法
• 总结了COBOL事务处理程序中的开发方 法而发展起来的,特点:
22
JSP方法的特点
• 简单、易学、形象直观、可读性好 • 便于表示层次结构 • 适用于小型数据处理系统
复旦大学计算机科学技术学院
软件工程(第二版)
23
内容摘要
• JSP方法 • JSD方法简介 • 小结
复旦大学计算机科学技术学院
软件工程(第二版)
24
JSD方法
• JSP广泛使用十多年后,Jackson把它进 行了扩充,不再局限于中小规模范围的问 题及顺序范围,新的开发方法称为JSD • JSD覆盖了整个系统的分析到实现 • JSD的本质:先建立一个现实模型,然后 加入功能性处理,最后阶段,逻辑系统才 转换为实际设计
复旦大学计算机科学技术学院 软件工程(第二版) 18
• 导出的程序结构图
JSP方法的分析和设计步骤-5
复旦大学计算机科学技术学院
软件工程(第二版)
19
JSP方法的分析和设计步骤-6
• 第4步.列出所有操作和条件,并将它 们分配到程序结构图的适当位臵
– 首先从输出操作开始,再回到输入操作 – 加入必须的与条件有关的操作 – 最后把每个操作都分配到程序结构中去
复旦大学计算机科学技术学院
软件工程(第二版)
25
• 标识实体与行为 建立现实的模型,列出与系统有关的实体表及活动表 • 生成实体结构图 分析实体表中实体之间的关系,形成实体结构图 • 创造软件系统模型 根据现实世界,对实体与行为的组合建立进程模型 • 扩充功能性过程 说明系统输出的功能,必要时在规格说明中加入附加的处理 • 施加时间控制 开发者考虑进程调度的某些特征,这些特征可能影响系统功 能所输出的结果的正确性及时间关系 • 实现 开发者考虑运行系统的软硬件方面的问题,采用变换技术、 调度技术、数据库定义技术等,以使系统能有效地运行
复旦大学计算机科学技术学院
软件工程(第二版)
13
示例:打印表格程序的输出数据结构和对应的程序结构
复旦大学计算机科学技术学院
软件工程(第二版)
14
JSP方法的分析和设计步骤-1
例:一个正文文件由若干个记录组成,每 个记录是一个字符串,要求统计每个记录 中空格个数,以及文件中空格的总数。 要求输出的格式是:每复制一行输入字符 串后,另起一行输出该字符串中的空格数, 最后输出文件空格的总数
– 有对应关系是指有直接因果关系,即在程序中可以同时处理的数据元素 – 对于表示“重复”的数据元素,只有其重复次数和次序都相同时才有对 应关系 – 输入/输出数据结构最高层次的两个数据元素总是有对应关系的
复旦大学计算机科学技术学院
软件工程(第二版)
17
JSP方法的分析和设计步骤-4
• 第3步.从描述数据结构的Jackson图导出 描述程序结构的Jackson图,导出规则:
复旦大学计算机科学技术学院 软件工程(第二版) 12
结构正文的表示形式-3
• 重复结构正文
D Iter until cond A; D END 或者 D Iter while cond A; D END 重复 元素D是由1或多个元素A组成 元素D 是元素A的重复 重复 元素D是由0至多个元素A组成 cond为循环条件
复旦大学计算机科学技术学院
软件工程(第二版)
21
JSP方法的分析和设计步骤-8
• 第5步.把带有 操作的程序结 构图转换成结 构正文,同时 加入选择及迭 代条件
统计空格 seq 打开文件 读入字符串 totalsum := 0 程序体 iter until 文件结束 处理字符串 seq 印字符串 seq 打印字符串 印字符串 end sum := 0 pointer := 1 分析字符串 iter until 字符串结束 分析字符 select 字符是空格 处理空格 seq sum := sum + 1 pointer := pointer + 1 处理空格 end 分析字符 or 字符不是空格 处理非空格 seq pointer := pointer + 1 处理非空格 end 分析字符 end 分析字符串 end 印空格数 seq 打印空格数 印空格数 end totalsum := totalsum + 1 读入字符串 处理字符串 end 程序体 end 印空格总数 seq 打印空格总数 印空格总数 end 关闭文件 停止 复旦大学计算机科学技术学院 软件工程(第二版) 统计空格 end
– 重点不是自顶向下逐步求精,而是在数据结构基础 上进行构造 – 根据输入/输出的数据结构建立程序结构
• 目标:获得简单清晰的设计方案 • 设计原则:使程序结构与问题结构(数据 结构)相对应
5
复旦大学计算机科学技术学院
软件工程(第二版)
数据结构和程序结构
• 一般的数据处理系统处理的是具有层次结 构的数据,因而其问题结构可以用它所处 理的数据结构来表示
复旦大学计算机科学技术学院
软件工程(第二版)
11
结构正文的表示形式-2
• 选择结构正文
D Select cond1 选择 A 元素D或是由一个元素A Or cond2 B 或是由一个元素B Or cond3 C 或是由一个元素C组成 D END cond1、cond2、cond3分别是选择A,B,C的条件
软件工程
第6章 面向数据结构的分析与设计
面向数据结构的需求分析与设计
• 主要特点:
– 以信息对象及其操作为核心进行需求分析
– 认为复合信息对象具有层次结构,并且可按顺序、 选择、重复三种结构分解为成员信息对象
– 提供由层次信息结构映射为程序结构的机制,从而 为软件设计奠定良好的基础
• JSP:Jackson结构程序设计方法 • JSD:Jackson系统开发方法
复旦大学计算机科学技术学院
软件工程(第二版)
15
JSP方法的分析和设计步骤-2
• 第1步.分析并确定输入和输出数据结构的 逻辑结构,并用Jackson图画出
复旦大学计算机科学技术学院
软件工程(第二版)
16
JSP方法的分析和设计步骤-3
• 第2步.找出输入数据结构与输出数据结构 中有对应关系的数据元素
复旦大学计算机科学技术学院
软件工程(第二版)
10
结构正文的表示形式-1
• 结构正文又称伪码,完全与结构图相对应 • 分为:顺序结构正文、选择结构正文、重 复结构正文 • 顺序结构正文
D Seq A; B; C; D END 顺序 元素D是由一个元素A 跟随一个元素B 跟随一个元素C组成 元素D是元素A、元素B、元素C的序列
26
JSD方法步骤
复旦大学计算机科学技术学院
软件工程(第二版)
内容摘要
• JSP方法 • JSD方法简介 • 小结
复旦大学计算机科学技术学院
软件工程(第二版)
27
小结
• 面向数据结构的分析和设计方法是以数据 结构为中心,从输入/输出的数据结构导 出程序结构 • 由于这种方法在国内用得比较少,因此只 作了简单介绍,主要是通过一个实例来介 绍JSP方法,使读者对这种方法有一个大 致的了解
– 有对应关系的数据元素,按照它们在数据结构图中 的层次在程序结构图的相应层次上画一个处理框(如 果它们在输入和输出图中的层次不同,则程序结构 图中处理框层次与较低的那个对应 – 为输入数据结构图中剩余的每个数据元素,在程序 结构图的相应层次上画一个处理框, 在模块名称上 增加“分析”或“处理”或取一个具有实际含义的 名称 – 为输出数据结构图中剩余的每个数据元素,在程序 结构图的相应层次上画上一个处理框
复旦大学计算机科学技术学院
软件工程(第二版)
28
复旦大学计算机科学技术学院
软件工程(第二版)
20
JSP方法的分析和设计步骤-7
设变量sum存放一行字符串中的空格数;totalsum存放 空格总数;pointer用来指示当前分析的字符在字符串 中的位臵,可列出其所有操作,并对其编号如下: ①停止 ② 打开文件 ③ 关闭文件 ④ 打印字符串 ⑤ 打印空格数 ⑥ 打印空格总数 ⑦ sum:=sum+1 ⑧ totalsum:=totalsum+1 ⑨ 读入字符串 ⑩ sum:=013121113 totalsum:=0 11 pointer:=1 12 pointer:=pointer+1 13 条件列表如下: I(1):文件结束 I(2):字符串结束 S(3):字符是空格 将条件与相应的循环条件关联,并将①~ 13 操作按次 序与相当的模块进行关联,按从左至右决定先后顺序, 关联后的程序结构图
复旦大学计算机科学技术学院
软件工程(第二版)
6
数据结构与程序结构的表示
• JSP方法采用Jackson图来表示数据结 构和程序结构 • Jackson图是一种从左到右阅读的树状 层次结构图
– 数据结构图中方框表示数据,程序结构图中方框就表示 模块(过程或函数) – 底部的叶子节点称为基本元素 – 在底部枝干以上的节点称为结构元素 – 三种元素类型:顺序元素、选择元素、重复元素
复旦大学计算机科学技术学院
软件工程(第二版)
7
顺序元素
• 一个顺序元素由一个或多个从左到右的 元素组成 • 每个组成的元素只出现一次
复旦大学计算机科学技术学院
软件工程(第二版)
8
选择元素