软件工程结构化分析与设计PPT学习课件
合集下载
软件结构设计ppt课件

25
低
偶然内聚 逻辑内聚 低内聚
时间内聚
过程内聚 中内聚 通信内聚
高
顺 功
序 能
内 内
聚 聚
高
内
聚
图4.2 内聚性的排列
26
3. 抽象 抽象是人类在解决复杂问题时经常采用的一种思维方式,它是指将现实世界中具 有共性的一类事物的相似的、本质的方面集中概括起来,而暂时忽略它们之间的细节 差异。在软件开发中运用抽象的概念,可以将复杂问题的求解过程分层,在不同的抽 象层上实现难度的分解。在抽象级别较高的层次上,可以将琐碎的细节的信息暂时隐 藏起来,以利于解决系统中的全局性的问题。软件开发过程中从问题定义到最终的软 件生成,每一阶段都是在前一阶段基础上对软件解法的抽象层上的一次求精和细化。
(4)数据结构以及接口的设计。 (5)系统性能设计。 (6)系统安全性能设计:系统的自保护设计;数据
一致性设计;容错设计。 (7)系统可靠性设计。 (8)设计文档的编写:结构设计说明书;用户手册
;系统初步的测试计划说明书。 (9)设计的审查和复审。
6
软件结构设计过程:
1. 设想供选择方案; 3.推荐最优方案; 5.设计软件结构; 7.制订测试计划; 9.审查和复审;
21
(3) 时间内聚。若一个模块包含了需要在同一时间段中执行的多个任务,则称该 模块的内聚为时间内聚。例如,将多个变量的初始化放在同一个模块中实现,或将需 要同时使用的多个库文件的打开操作放在同一个模块中,都会产生时间内聚的模块。 由于时间内聚模块中的各个部分在时间上的联系,其内聚程度比逻辑内聚高一些。但 这样的模块往往会和其他相关模块有着紧密的联系,因而会造成耦合性的增加。
2.选择合理的方案; 4.功能分解; 6.设计数据库; 8.书写文档;
低
偶然内聚 逻辑内聚 低内聚
时间内聚
过程内聚 中内聚 通信内聚
高
顺 功
序 能
内 内
聚 聚
高
内
聚
图4.2 内聚性的排列
26
3. 抽象 抽象是人类在解决复杂问题时经常采用的一种思维方式,它是指将现实世界中具 有共性的一类事物的相似的、本质的方面集中概括起来,而暂时忽略它们之间的细节 差异。在软件开发中运用抽象的概念,可以将复杂问题的求解过程分层,在不同的抽 象层上实现难度的分解。在抽象级别较高的层次上,可以将琐碎的细节的信息暂时隐 藏起来,以利于解决系统中的全局性的问题。软件开发过程中从问题定义到最终的软 件生成,每一阶段都是在前一阶段基础上对软件解法的抽象层上的一次求精和细化。
(4)数据结构以及接口的设计。 (5)系统性能设计。 (6)系统安全性能设计:系统的自保护设计;数据
一致性设计;容错设计。 (7)系统可靠性设计。 (8)设计文档的编写:结构设计说明书;用户手册
;系统初步的测试计划说明书。 (9)设计的审查和复审。
6
软件结构设计过程:
1. 设想供选择方案; 3.推荐最优方案; 5.设计软件结构; 7.制订测试计划; 9.审查和复审;
21
(3) 时间内聚。若一个模块包含了需要在同一时间段中执行的多个任务,则称该 模块的内聚为时间内聚。例如,将多个变量的初始化放在同一个模块中实现,或将需 要同时使用的多个库文件的打开操作放在同一个模块中,都会产生时间内聚的模块。 由于时间内聚模块中的各个部分在时间上的联系,其内聚程度比逻辑内聚高一些。但 这样的模块往往会和其他相关模块有着紧密的联系,因而会造成耦合性的增加。
2.选择合理的方案; 4.功能分解; 6.设计数据库; 8.书写文档;
软件工程概论参考课件ch03_2_结构化分析方法

3.2.1 结构化分析的概念 3.2.2 细化数据流图 3.2.3 数据流程图应用实例
23
3.2.3 数据流程图应用实例
某汽车配件公司设有销售、采购、仓库、会计等业 务部门。公司每天都要处理大量的销售订单业务。 当配件缺货或库存量低于保险贮备量时,就要进货。 如果暂不考虑配件公司内部的仓库和会计业务细节, 那么,配件公司的TOP图,如3-3所示。
26
(3)销售子系统第二层图——细化数据流图
27
End
28
29
合作愉快
2011
图3-1 数据流图与加工的关系
15
在调研阶段产生的高层数据流图,许多具体的细节 没有包括在里面,因此沿数据流程回溯时常常遇到 下述问题:
为了得到某个数据元素需要用到数据流图中目前还 没有的数据元素,或者得出这个数据元素需要用的 算法尚不完全清楚。为了解决这些问题,往往需要 向用户和其他有关人员请教,他们的回答会使分析 师对目标系统的认识更深入更具体,数据流图中的 更多的成分就可以被分解出来。
16
通常把分析过程中得到的有关数据元素的信息描述在 数据字典中,把对算法的简明描述记录在IPO图中 (输入/处理/输出图)。通过挖掘分解出来的数据流、 数据存贮和处理逻辑及时添加到数据流图中,这就是 细化的过程。一个原则 是:数据流程图不可能一步细化到位,需要按照概 括程度逐步细化,逐层分解。
这种用高度概括的手法,先把握主要的功能,忽略 细节,避免眉毛胡子一把抓的做法,就用到了“抽 象”的手法。
20
在研究用户业务系统的数据流程时,是以“功能” 为对象进行不同级别“抽象”的。
在数据流图的细化方面,把处理功能按抽象层次进 行逐层分解,把握好抽象的粒度,使其与层次对应。
21
23
3.2.3 数据流程图应用实例
某汽车配件公司设有销售、采购、仓库、会计等业 务部门。公司每天都要处理大量的销售订单业务。 当配件缺货或库存量低于保险贮备量时,就要进货。 如果暂不考虑配件公司内部的仓库和会计业务细节, 那么,配件公司的TOP图,如3-3所示。
26
(3)销售子系统第二层图——细化数据流图
27
End
28
29
合作愉快
2011
图3-1 数据流图与加工的关系
15
在调研阶段产生的高层数据流图,许多具体的细节 没有包括在里面,因此沿数据流程回溯时常常遇到 下述问题:
为了得到某个数据元素需要用到数据流图中目前还 没有的数据元素,或者得出这个数据元素需要用的 算法尚不完全清楚。为了解决这些问题,往往需要 向用户和其他有关人员请教,他们的回答会使分析 师对目标系统的认识更深入更具体,数据流图中的 更多的成分就可以被分解出来。
16
通常把分析过程中得到的有关数据元素的信息描述在 数据字典中,把对算法的简明描述记录在IPO图中 (输入/处理/输出图)。通过挖掘分解出来的数据流、 数据存贮和处理逻辑及时添加到数据流图中,这就是 细化的过程。一个原则 是:数据流程图不可能一步细化到位,需要按照概 括程度逐步细化,逐层分解。
这种用高度概括的手法,先把握主要的功能,忽略 细节,避免眉毛胡子一把抓的做法,就用到了“抽 象”的手法。
20
在研究用户业务系统的数据流程时,是以“功能” 为对象进行不同级别“抽象”的。
在数据流图的细化方面,把处理功能按抽象层次进 行逐层分解,把握好抽象的粒度,使其与层次对应。
21
软件结构设计ppt课件

C(P1)> C(P2) 即问题P1的复杂度比P2高,则显然有:
E(P1)> E(P2) 即解决问题P1比P2所需的工作量大。
精选课件
9
第4章 软件结构设计 在人们解决问题的过程中,发现存在有另一个有趣的规律:
C(P1+P2)> C(P1)+C(P2) 即解决由多个问题复合而成的大问题的复杂度大于单独解决各 个问题的复杂度之和。也就是说,对于一个复杂问题,将其分 解成多个小问题分别解决比较容易。由此我们可以推出:
E(P1+P2)> E(P1)+E(P2) 即将复杂问题分解成若干个小问题,各个击破,所需要的工作 量小于直接解决复杂问题所需的工作量。
精选课件
10
第4章 软件结构设计
根据上面的推理,我们可以得到这样一个结论,模块化可 以降低解决问题的复杂度,从而降低软件开发的工作量。虽然 增加程序中的模块数可以降低开发每个模块的工作量,但同时 却增加了设计模块接口的工作量。通过图4.1所示的模块数与软 件开发成本的关系图中可以看出,当划分的模块数处于最小成 本区时,开发软件的总成本最低。
耦合是影响软件复杂度的一个重要因素,设计过程中应力 求降低程序的耦合性。在以上所介绍的耦合中,数据耦合的程 度最低,其次是公共耦合,再其次是控制耦合,程度最高的是 内容耦合。
精选课件
18
第4章 软件结构设计
2) 内聚性
内聚性是对一个模块内部各个组成元素之间相互结合的紧密 程度的度量指标。模块中组成元素结合的越紧密,模块的内聚性 就越高,模块的独立性也就越高。模块的内聚性和耦合性是两个 相互对立且又密切相关的概念。事实上,它们是同一事物的两个 方面,模块的高内聚性往往就意味着模块间的低耦合性。因为程 序中的各个部分必定是有联系的,若将其中密切相关的部分放在 同一个模块中,模块间的联系就会降低;反之,若将密切相关的 部分分散放在不同的模块之中,模块间的联系必然会加强。在进 行模块化设计时,耦合性和内聚性都是必须考虑的重要指标。但 在软件设计时应将更多的注意力集中在提高模块的内聚性上。模 块的内聚性主要可划分为如下几种不同的类型。
E(P1)> E(P2) 即解决问题P1比P2所需的工作量大。
精选课件
9
第4章 软件结构设计 在人们解决问题的过程中,发现存在有另一个有趣的规律:
C(P1+P2)> C(P1)+C(P2) 即解决由多个问题复合而成的大问题的复杂度大于单独解决各 个问题的复杂度之和。也就是说,对于一个复杂问题,将其分 解成多个小问题分别解决比较容易。由此我们可以推出:
E(P1+P2)> E(P1)+E(P2) 即将复杂问题分解成若干个小问题,各个击破,所需要的工作 量小于直接解决复杂问题所需的工作量。
精选课件
10
第4章 软件结构设计
根据上面的推理,我们可以得到这样一个结论,模块化可 以降低解决问题的复杂度,从而降低软件开发的工作量。虽然 增加程序中的模块数可以降低开发每个模块的工作量,但同时 却增加了设计模块接口的工作量。通过图4.1所示的模块数与软 件开发成本的关系图中可以看出,当划分的模块数处于最小成 本区时,开发软件的总成本最低。
耦合是影响软件复杂度的一个重要因素,设计过程中应力 求降低程序的耦合性。在以上所介绍的耦合中,数据耦合的程 度最低,其次是公共耦合,再其次是控制耦合,程度最高的是 内容耦合。
精选课件
18
第4章 软件结构设计
2) 内聚性
内聚性是对一个模块内部各个组成元素之间相互结合的紧密 程度的度量指标。模块中组成元素结合的越紧密,模块的内聚性 就越高,模块的独立性也就越高。模块的内聚性和耦合性是两个 相互对立且又密切相关的概念。事实上,它们是同一事物的两个 方面,模块的高内聚性往往就意味着模块间的低耦合性。因为程 序中的各个部分必定是有联系的,若将其中密切相关的部分放在 同一个模块中,模块间的联系就会降低;反之,若将密切相关的 部分分散放在不同的模块之中,模块间的联系必然会加强。在进 行模块化设计时,耦合性和内聚性都是必须考虑的重要指标。但 在软件设计时应将更多的注意力集中在提高模块的内聚性上。模 块的内聚性主要可划分为如下几种不同的类型。
软件工程19(结构化设计基本原则)PPT幻灯片

图4.2 模块化和软件成本
4.1 软件设计的概念及原则
(2) 模块独立性 • 模块的独立性是指软件系统中每个模块只涉及软
件要求的具体的子功能,而和软件系统中其他的 模块的接口是简单的。例如,若一个模块只具有 单一的功能且与其他模块没有太多的联系,那么 ,我们则称此模块具有模块独立性。 • 一般采用两个准则度量模块独立性。即模块间的 耦合和模块的内聚。
清晰性 差 很差 中 好 好 好 好
可复用 性 很差 很差 很差 差 差 中 好
可修改性 很差 很差 中 中 中 好 好
可理解性 很差 差 中 中 中 好 好
内聚性
内聚性设计内聚原则:设计时应力争做到高内聚, 并且能够辨认出低内聚的模块,并采取措施进行 修改,以提高模块的内聚程度、降低模块间的耦 合程度,从而获得较高的模块独立性。
小结
• 本次课主要讲述软件设计的概念与原则。重点 掌握模块化和模块独立性度量。
下课了。。。
休息一会儿。。。
多次重复使用。将复用的思想用于软件开发, 称为软件复用。 • 我们将软件的重用部分称为软构件。 • 也就是说,在构造新的软件系统时不必从零做 起,可以直接使用已有的软构件即可组装(或 加以合理修改)成新的系统。
4.1 软件设计的概念及原则
(5) 灵活性设计 • 保证软件灵活性设计的关键是抽象。 • 面向对象系统中的类结构类似一座金字塔,越
度,它是信息隐蔽和局部化概念的自然扩展。简单 地说,理想内聚的模块只做一件事情。 • 设计时应该力求做到高内聚,通常中等程度的内 聚也是可以采用的,而且效果和高内聚相差不多; 但是,低内聚很坏,不要使用。
内聚与模块属性的关系
偶然内聚 逻辑内聚 时间内聚 过程内聚 通信内聚 顺序内聚 功能内聚
软件工程面向数据流的分析与设计方法PPT课件

第15页/共174页
3. 加工
加工也称为数据处理,是对系统中的数据流进行的某些操作或变换。 图中每个加工都要有对应的名称,最常见的名称是由一个表明具体动作 的动词和一个表明处理对象的名词构成的,如计算应发工资、打印工资 清单等。
4. 数据存储
在数据流图中用于保存数据的数据文件被称为数据存储,它可以是数 据库文件或任何其他形式的数据组织。流向数据存储的数据流可理解为 向文件写入数据或对文件进行查询,流出数据存储的数据流可理解为从 文件中读取数据或得到查询结果。
数据流 数据项(数据元素) 数据结构 数据存储 处理逻辑(基本加工) 外部实体
第34页/共174页
数据字典
数据字典的提出背景: 虽然数据流图能够形象、清晰地描述数据在系统中流动、
加工、存储的情况,但数据流图中的许多构成元素,如数据 流、数据存储、加工,仅依靠名称并不能反映其本质含义, 因此必须对这些构成元素进行严格的定义。作为对数据流图 的补充,数据字典(DD,Data Dictionary)能够准确地定义数 据流图中各组成成分的具体含义,二者共同构成了系统的逻 辑模型。
第9页/共174页
数据流图的图形记号
外部实体 位于软件系统边界之外的信息生产者或消费者
转换
转换数据流的处理过程,又称泡(bubble)
数据流
在转换之间有向流动的数据项或数据项集合
数据源
*
+
⊕
为一个或多个转换提供数据源或数据存储服务的缓冲 区、文件或数据库
“与”,即同时输入/出;
“或”,即至少一项输入/出; “异或”,即非同时输入/出。
4.应按照层次给每个加工编号,用于表明该加工所处的 层次及上 、下层的父图第与31页子/共图174的页 关系 。 编号的规则为 :
软件工程第5章-结构化分析与设计

软件工程(第二版)
16
对数据流图进行分层
• George Miller在著名的论文“神奇的数 字7加减2:我们处理信息的能力的某种 限制”中指出:人们在一段时间内的短期 记忆似乎限制在5~9件事情之内 • 根据自顶向下逐层分解的思想将数据流图 画成层次结构 • 每个层次画在独立的数据流图中,加工个 数可大致控制在“7加减2”的范围中
避免如图a那样的平铺形态较好的结构图形态是如图b那样的椭圆型a平铺形态b椭圆形态复旦大学计算机科学技术学院软件工程第二版8022模块的影响范围应限制在该模块的控制范围内例如下图中图a中模块b2的影响范围模块a不在其控制范围模块b2内图b中决策控制是在顶层模块其影响范围ab2在控制范围内但是从决策控制模块到被控模块之间相差多个层次b2topb2b1topb2复旦大学计算机科学技术学院软件工程第二版8133模块接口上应尽可能传递简单数据而且传递的数据应保持与模块的功能相一致即不传递与模块功能无关的数据模块的功能应是可预测的避免对模块施加过多的限制单入口和单出口的模块能有效地避免内容耦合复旦大学计算机科学技术学院软件工程第二版82将整个软件看作一个大的功能模块通过功能分解不断将其分解成若干个较小的功能模块直至得到一组不必再分解的模块结构图中的底层模块书写设计规格说明特别要为每个模块书写模块的功能接口约束和限制等设计评审复旦大学计算机科学技术学院软件工程第二版83数据流图到软件体系结构的映射数据流图到软件体系结构的映射小结复旦大学计算机科学技术学院软件工程第二版84结构化设计是将结构化分析的结果数据流图映射成软件的体系结构结构图根据信息流的特点可将数据流图分为变换型数据流图和事务型数据流图其对应的映射分别称为变换分析和事务分析事务流transaction复旦大学计算机科学技术学院软件工程第二版85复旦大学计算机科学技术学院软件工程第二版86复旦大学计算机科学技术学院软件工程第二版87数据流沿着输入通路到达一个事务中心事务中心根据输入数据的类型在若干条动作通路actionpath中选出一条来执行具有这种特征的信息流称为事务流根据事务类型选取一条动作通路复旦大学计算机科学技术学院软件工程第二版88复旦大学计算机科学技术学院软件工程第二版89复审dfd的顶层图确保系统的输入输出数据流符合系统规格说明的要求根据软件设计准则采用启发式设计策略对初始结构图进行改进以改善软件质量复旦大学计算机科学技术学院软件工程第二版90
软件工程结构化分析与设计
航班=航班号+出发地+目的地+{停靠站}+(头等舱数量 )+(头等舱价格)+公务舱数量+公务舱价格+普通……
例题
请给出购书申请的数据字典定义:一份
申请对应一个学生,内容包括学生的学 号、姓名、班级和他(她)所领全部教 材的书号、书名和数量。其中学号由阿 拉伯数字组成,姓名可选。
购书申请=学号+(姓名)+{书号+书名+数量}
工资 奖金 ≤1000—8%+500 >1000—8%
≤1000—5%+300 >1000—5%
≤1000—6%+300 >1000—6%
≤1000—4%+200 >1000—4%
例题
一个加工用来完成商店促销活动中的金
额计算,规定:消费不超过100元,享受 8折;消费100-500,享受7折;消费超过 500享受6折。且如果是会员则再减20。
用判定树描述该加工说明
消费额
<100
会员
是 否
优惠
8折-20 8折
优惠策略
100-500
是 否
>500
是 否
7折-20 7折
6折-20 6折
(4)E-R图
备注:若关系没有属性,则可以省略
E-R图向数据表的转换
一对一:两个实体可合并成一个表
0:1
学生
1:1
床铺
学生{学号,姓名,床铺号,上下,……}
(2)数据字典(DD)
对软件中的每个数据规定一个定义条目,
以保持数据在系统中的一致性
数据项:只含一个数据,又称为数据元素 数据流:由多个相关数据项组成
例题
请给出购书申请的数据字典定义:一份
申请对应一个学生,内容包括学生的学 号、姓名、班级和他(她)所领全部教 材的书号、书名和数量。其中学号由阿 拉伯数字组成,姓名可选。
购书申请=学号+(姓名)+{书号+书名+数量}
工资 奖金 ≤1000—8%+500 >1000—8%
≤1000—5%+300 >1000—5%
≤1000—6%+300 >1000—6%
≤1000—4%+200 >1000—4%
例题
一个加工用来完成商店促销活动中的金
额计算,规定:消费不超过100元,享受 8折;消费100-500,享受7折;消费超过 500享受6折。且如果是会员则再减20。
用判定树描述该加工说明
消费额
<100
会员
是 否
优惠
8折-20 8折
优惠策略
100-500
是 否
>500
是 否
7折-20 7折
6折-20 6折
(4)E-R图
备注:若关系没有属性,则可以省略
E-R图向数据表的转换
一对一:两个实体可合并成一个表
0:1
学生
1:1
床铺
学生{学号,姓名,床铺号,上下,……}
(2)数据字典(DD)
对软件中的每个数据规定一个定义条目,
以保持数据在系统中的一致性
数据项:只含一个数据,又称为数据元素 数据流:由多个相关数据项组成
软件工程第6章-面向数据结构的分析与设计PPT课件
• 第4步.列出所有操作和条件,并将它 们分配到程序结构图的适当位置
– 首先从输出操作开始,再回到输入操作 – 加入必须的与条件有关的操作 – 最后把每个操作都分配到程序结构中去
-
20
JSP方法的分析和设计步骤-7
设变量sum存放一行字符串中的空格数;totalsum存放 空格总数;pointer用来指示当前分析的字符在字符串 中的位置,可列出其所有操作,并对其编号如下: ①停止 ② 打开文件 ③ 关闭文件 ④ 打印字符串 ⑤ 打印空格数 ⑥ 打印空格总数 ⑦ sum:=sum+1 ⑧ totalsum:=totalsum+1 ⑨ 读入字符串 ⑩ sum:=013121113
构正文,同时
分析字符 select 字符是空格 处理空格 seq sum := sum + 1
加入选择及迭
pointer := pointer + 1 处理空格 end 分析字符 or 字符不是空格
代条件
处理非空格 seq pointer := pointer + 1
处理非空格 end
分析字符 end
软件工程
第6章 面向数据结构的分析与设计
-
1
面向数据结构的需求分析与设计
• 主要特点:
– 以信息对象及其操作为核心进行需求分析 – 认为复合信息对象具有层次结构,并且可按顺序、
选择、重复三种结构分解为成员信息对象 – 提供由层次信息结构映射为程序结构的机制,从而
为软件设计奠定良好的基础
• JSP:Jackson结构程序设计方法 • JSD:Jackson系统开发方法
结构)相对应
-
5
数据结构和程序结构
• 一般的数据处理系统处理的是具有层次结 构的数据,因而其问题结构可以用它所处 理的数据结构来表示
– 首先从输出操作开始,再回到输入操作 – 加入必须的与条件有关的操作 – 最后把每个操作都分配到程序结构中去
-
20
JSP方法的分析和设计步骤-7
设变量sum存放一行字符串中的空格数;totalsum存放 空格总数;pointer用来指示当前分析的字符在字符串 中的位置,可列出其所有操作,并对其编号如下: ①停止 ② 打开文件 ③ 关闭文件 ④ 打印字符串 ⑤ 打印空格数 ⑥ 打印空格总数 ⑦ sum:=sum+1 ⑧ totalsum:=totalsum+1 ⑨ 读入字符串 ⑩ sum:=013121113
构正文,同时
分析字符 select 字符是空格 处理空格 seq sum := sum + 1
加入选择及迭
pointer := pointer + 1 处理空格 end 分析字符 or 字符不是空格
代条件
处理非空格 seq pointer := pointer + 1
处理非空格 end
分析字符 end
软件工程
第6章 面向数据结构的分析与设计
-
1
面向数据结构的需求分析与设计
• 主要特点:
– 以信息对象及其操作为核心进行需求分析 – 认为复合信息对象具有层次结构,并且可按顺序、
选择、重复三种结构分解为成员信息对象 – 提供由层次信息结构映射为程序结构的机制,从而
为软件设计奠定良好的基础
• JSP:Jackson结构程序设计方法 • JSD:Jackson系统开发方法
结构)相对应
-
5
数据结构和程序结构
• 一般的数据处理系统处理的是具有层次结 构的数据,因而其问题结构可以用它所处 理的数据结构来表示