软件工程-总体设计ppt
合集下载
《软件工程》PPT课件

第四课时
第一章第四课时
喷泉模型 软件工程的任务与研究范围 软件开发的原则与开发方法
返回
喷泉模型
瀑布模型要求在软件开发的初期就完全确定软件的需求,这在很多 情况下往往是做不到的.螺旋模型试图克服瀑布模型的这一不足.SM 把软件开发过程安排为逐步细化的螺旋周期序列,每经历一个周期, 系统就细化和完善一些.SM每—螺旋周期由六个步骤组成: <1> 确定任务目标: 根据初始需求分析项目计划,确定任务目标、可选 方案和限制.<2>选择对象:对各种软硬件设备、开发方法、技术、 开发工具、人员、开发管理等对象进行选择:并决定软件是进行研 制、购买还是利用现有的.<3>分析约束条件:软件开发的时间、经 费等限制条件.<4>风险分析:评估目标、对象、约束条件三者之间 的联系,列出可能出.现的问题及问题的严重程度等,把最重要的问 题作为尚未解决的关键问题的风险.<5>制定消除风险的方法:应有 详尽的说明和周密的计划,并估计可能产生的后果.依此来开发软件, 为制订下一周期的计划打下基础.<6>制定下一周期的工作计划:在 第一个螺旋周期,确定目标、选择对象、分析约束,通过风险分析制 订消除风险的方法,初步开发原型1,制定系统生存周期计划.
软件工程的任务与研究范围
•软件产品的特点 •软件工程的研究内容与方法 •软件工具与软件支撑环境 •软件管理
软件开发的原则与方法
•软件开发的原则 • 自顶向下与模块结构 •软件开发的方法 •1.非自动形式的系统开发方法 •〔1〕系统流程图〔2〕结构分析法〔3〕结构化设计法 •〔4〕数据结构法〔5〕层次输入——处理——输出方法<HIPO法> • 2.半自动形式的系统开发方法 •〔1〕软件需求工程法〔2〕问题说明语言与分析法 • 3. 自动形式的系统开发方法 〔HOS方法〕:由计算机自动确定规 范、自动分析、自动编程、自动执行与模拟,以规范语言AXES、资 源分配工具RTA为工具.能自动进行分析、设计,工作量少、设计规范, 也能自动进行修改和维护.该方法适用于系统分析和设计.
第一章第四课时
喷泉模型 软件工程的任务与研究范围 软件开发的原则与开发方法
返回
喷泉模型
瀑布模型要求在软件开发的初期就完全确定软件的需求,这在很多 情况下往往是做不到的.螺旋模型试图克服瀑布模型的这一不足.SM 把软件开发过程安排为逐步细化的螺旋周期序列,每经历一个周期, 系统就细化和完善一些.SM每—螺旋周期由六个步骤组成: <1> 确定任务目标: 根据初始需求分析项目计划,确定任务目标、可选 方案和限制.<2>选择对象:对各种软硬件设备、开发方法、技术、 开发工具、人员、开发管理等对象进行选择:并决定软件是进行研 制、购买还是利用现有的.<3>分析约束条件:软件开发的时间、经 费等限制条件.<4>风险分析:评估目标、对象、约束条件三者之间 的联系,列出可能出.现的问题及问题的严重程度等,把最重要的问 题作为尚未解决的关键问题的风险.<5>制定消除风险的方法:应有 详尽的说明和周密的计划,并估计可能产生的后果.依此来开发软件, 为制订下一周期的计划打下基础.<6>制定下一周期的工作计划:在 第一个螺旋周期,确定目标、选择对象、分析约束,通过风险分析制 订消除风险的方法,初步开发原型1,制定系统生存周期计划.
软件工程的任务与研究范围
•软件产品的特点 •软件工程的研究内容与方法 •软件工具与软件支撑环境 •软件管理
软件开发的原则与方法
•软件开发的原则 • 自顶向下与模块结构 •软件开发的方法 •1.非自动形式的系统开发方法 •〔1〕系统流程图〔2〕结构分析法〔3〕结构化设计法 •〔4〕数据结构法〔5〕层次输入——处理——输出方法<HIPO法> • 2.半自动形式的系统开发方法 •〔1〕软件需求工程法〔2〕问题说明语言与分析法 • 3. 自动形式的系统开发方法 〔HOS方法〕:由计算机自动确定规 范、自动分析、自动编程、自动执行与模拟,以规范语言AXES、资 源分配工具RTA为工具.能自动进行分析、设计,工作量少、设计规范, 也能自动进行修改和维护.该方法适用于系统分析和设计.
软件工程总体设计课件PPT学习教案

这个不等式导致“各个击破” 的结论—把复杂的问题分解成 许多容易解决的小问题,原来
的问题也就容易解决了。这就
是模块化的根据。
第10页/共72页
最小成本区
M
总成本 接口成本
模块成本 模块数
4.2.2 抽象
人类在认识复杂现象的过程中使用的最强有力的思维工具是 抽象。
-- 就是抽出事物的本质特性(共性),而暂时不考虑它们的细节。 处理复杂系统的惟一有效的方法是用层次的方式构造和分析
如两个模块通过传
计算电费
递数据结构(不是 住户情况
住户情况
简单数据,而是
记录、数组等)加 以联系,或都与
水费 电费
计算水费
计算水电费
一个数据结构有 关系, 则称这两个
“住户情况”是一个数据结构,图中 模块都与此数据结构有关.“计算水 费”和“计算电费”本无关,由于引
模块间存在标记
用了此数据结构产生依赖关系,它们 之间也是标记偶合.
第9页/共72页
问题:模块该如何划分?
设:C(x)为复杂程度函数
E(x)为决定解决问题x所需的
工作量(时间)函数
软
件
对于两个问题P1和P2,
开
如果 C(P1)>C(P2)
发 工
则: E(P1)>E(P2)
作
量
如果 C(P1+P2)>C(P1)+C(P2)
则: E(P1+P2)>E(P1)+E(P2)
如果在测试期间和以后的软件维护期间需要修改软件, 那么使用信息隐藏原理作为模块化系统设计的标准就会 带来极大好处。
第15页/共72页
4.2.5 模块独立
软件工程--总体设计PPT课件

内聚:一个模块内各个元素彼此结合的紧密程度。
低内聚
偶然内聚:一个模块完成一组任务,任务之间的关系很松散。公共语句。 逻辑内聚:若干个逻辑功能类似的任务组成一个模块。
时间内聚:若干个任务必须在同一段时间内执行。如初始化工作。
模块A 模块B 模块C
模块A
模块A 模块B 模块C
S1;
模块B
模块C
S2;
模块D
11
2021
模块化和软件成本的关系
最小成本区 M
软件总成本 接口成本
成本或工作量
模块数目
12
2021
5.2.2 抽象
我们在考虑问题时,集中考虑和当前问题有关的方 面,而忽略和当前问题无关的方面,这就是抽象。或 者说抽象就是抽出事物的本质特性而暂时不考虑它们 的细节。
5.2.3 逐步求精
逐步求精是人类解决复杂问题时采用的基本技 术,也是许多软件工程技术(例如,规格说明技术, 设计和实现技术、测试和集成技术)的基础。逐步 求精定义为:“为了能集中精力解决主要问题而尽
模块化:把程序划分成若干个模块,每个模块完成一 个子功能,把这些模块集成起来组成一个整体,可以 完成指定的功能,满足问题的功能。
过程、函数、子程序和宏等,都可作为模块。
面向对象范型中的对象是模块,对象内的方法也是
模块。模块是构成程序的基本构件。
10
2021
3、模块化原理
有两个函数:C(x)表示问题x的复杂程度;E(x)表示解决 问题x所需要的工作量(时间)。
编辑学生记录
学号
学生数据 无此学生
读学生记录
36
2021
结构图的三种基本结构
A
A
A
A
软件工程课件第4章总体设计

PPT文档演模板
软件工程课件第4章总体设计
4.3 设计原理
•高内聚
•顺序内聚:模块的输出是下一模块的输入。
•
模块的各成分利用相同的输入或产
生相同的输出。
•功能内聚:为完成一个任务把所需的全部功能 组合在一起。
•原则:力争高内聚和识别低内聚,可以使得设 计的软件具有较高的功能独立性。
PPT文档演模板
l 解决方法:
l 通过使用信息隐藏来避免公共耦合。
PPT文档演模板
软件工程课件第4章总体设计
4.3 设计原理
•2. 耦合
l 外部耦合 external coupling
l 当模块与软件的外部环境联结在一起,并受到约 束时就出现较高程度的耦合,则它们之间为外部耦 合。
•A
•B
•C
•L
•M
•D
•E
•F
•2. 耦合
l 实现低耦合,采取下列措施:
l 耦合方式 l 采用非直接耦合,不采用直接耦合。
l 传递信息类型 l 尽量使用数据耦合,少采用控制耦合,外部 耦合和公共耦合限制使用。
•帐号 •密码
•考场 数据表
•考生 数据表
•录 用考 生
•考场号 •地点 •最多人数
•准考证号、姓 名、性别、地
•准考证号、
区、出生年月、 姓名、性
地 政 专址 业治、 课、专 、英业 总语、 分、、 别录、用专单业位、、
名次、是否录 总分
用、录用单位。
PPT文档演模板
软件工程课件第4章总体设计
4.1 案例分析一 —招聘考试成绩管理系统
•A: •………… •………… •V1++ •………… •…………
软件工程 总体设计PPT课件

于公共耦 的物理安
合,区 排。
别在于在
外部耦合
中不存在依
赖
设
计
原
理
**
28
第28页/共80页
(6)公共耦合
• 若一组模块都访问同一个公共数据环境,则它们
5.2
之间的耦合就称为公共耦合。
软 件
• 公共的数据环境可以是全局数据结构、共享的通 信区、内存的公共覆盖区等。
设
• 这种耦合会引起下列问题:
计 原
过
过程设计确定每个模块的处理过程。
程
• 为确定软件结构,首先需要从实现角度把复杂的功
能进一步分解。一般说来,经过分解之后应该使每
个功能对大多数程序员而言都是明显易懂的。功能 9 第9页/共80页
5.1.5 设计软件结构
• 通常程序中的一个模块完成一个适当的子功
能。
5.1
总
• 应该把模块组织成良好的层次系统,顶层模
**
上的操作全部集中在一个模块中,就可以消除
这种耦合。
26
第26页/共80页
(4)控制耦合
5.2
• 如果一个模块通过传送开关、标志、名字等控
软
制信息,明显地控制选择另一模块的功能,就
件
是控制耦合。
设
• 这种耦合的实质是在单一接口上选择多功能模块
计
中的某项功能。
原
理
• 对所控制模块的任何修改,都会影响控制模块。
• 总体设计阶段的另一项重要任务是设计软件的结构,也 就是要确定系统中每个程序是由哪些模块组成的,以及 这些模块相互间的关系。
总体设计的意义
• 在详细设计之前进行总体设计可以站在全局高度上,花 较少成本,从较抽象的层次上分析对比多种可能的系统 实现方案和软件结构,从中选出最佳方案和最合理的软 件结构,从而用较低成本开发出较高质量的软件系统。
第四章软件工程总体设计PPT课件

② 由经验得C(P1+P2)>C(P1)+C(P2) 由不等式① ② 得到不等式③
③ E(P1+P2)>E(P1)+E(P2)
18
一般地,分解会降低复杂度,减少工作量。
但划分模块的数量越多,模块间联系就越多。虽
然模块本身的工作量减少,但模块间接口的工作
量却要增大,因此总工作量可能增大。所以,应
将模块数控制在最小成本区,就可以使总工作量
11
§3.软件结构设计
一、模块化原理
❖软件设计中一般应遵循以下原则: 分解(模 块化)、抽象、局部化与信息隐蔽、一致性、 完整性和可验证性。
❖模块是数据说明、可执行语句等程序对象 的集合。模块化设计的基本原理是指把大型 软件按规定的原则划分为一个个较小的相对 独立又相关的模块,每个模块完成一个子功 能,把这些模块集成起来组成一个整体,以 完成指定的功能。
17
❖模块化设计的指导思想包括以下几点:
1、分解(模块化):
分解是将一个复杂的问题分解为几个较简 单的问题,这样可降低复杂度,减少解题的工 作量。
设C(x)表示问题x的复杂度,E(x)表示解决 问题x所需的工作量,若P1、P2表示两个问题, 则:
①若C(P1)>C(P2), 则E(P1)>E(P2)
将DFD细化,至每个子功能都明白 易懂,能体现出软件结构;每个模块完
成一个子功能。
主要工具有 层次图及HIPO图等。
5、数据库设计,界面设计,安全设计, 故障处理设计,可维护设计
6、测试计划
7、书写文档
7
§2.体系结构设计
在完成了需求分析之后,紧接着进行的是系统的 总体设计。总体设计又称为概要设计或初步设计, 主要目的是通过本阶段的工作,确定系统的实现方 案,完成软件结构设计,划分出构成系统的功能模 块、数据及设计出数据库结构、用户界面和文档等。
《软件工程》第五讲总体设计精品PPT课件

Learning Is To Achieve A Certain Goal And Work Hard, Is A Process To Overcome Various Difficulties For A Goal
48
5.4 描绘软件结构的图形工具
1 层次图和HIPO图
2 结构图
49
层次图和HIPO图(I)
层次图用来描绘软件的层次结构。
矩形框代表一个模块, 方框间的连线,表示调用关系,而表示组成关系。
50
HIPO图
层次图很适于在自顶向下设计软件的过程中使用。 HIPO图 = 层次图 + IPO图
为了能使HIPO图具有可追踪性,在H图(层次图)里除了最顶层 的方框之外,每个方框都加了编号。 和H图中每个方框相对应,应该有一张IPO图描绘这个方框代 表的模块的处理过程。 HIPO图中的每张IPO图内,都应该明显地标出它所描绘的模 块在H图中的编号,以便追踪了解这个模块在软件结构中的位 置。
变换流 事务流
55
1. 变换流
信息沿输入通路进入系统,同时由外部形式变换成内部形式, 进入系统的信息通过变换中心,经加工处理以后再沿输出通 路变换成外部形式离开软件系统。
56
2 事务流
这种数据流是“以事务为中心的”,即数据沿输入通路到达 一个处理T,这个处理T根据输入数据的类型,在若干个动作 序列中选出一个来执行。处理T称为事务中心,完成下述任务:
40
改进软件设计、提高软件质量
41
42
43
•扇出过大则模块过分复杂,可增加中间层次控制模块 •扇入大则该模块共享程度高,但不能违背模块独立性 •顶层扇出较高,中间层扇出较少,底层模块扇入较高
44
48
5.4 描绘软件结构的图形工具
1 层次图和HIPO图
2 结构图
49
层次图和HIPO图(I)
层次图用来描绘软件的层次结构。
矩形框代表一个模块, 方框间的连线,表示调用关系,而表示组成关系。
50
HIPO图
层次图很适于在自顶向下设计软件的过程中使用。 HIPO图 = 层次图 + IPO图
为了能使HIPO图具有可追踪性,在H图(层次图)里除了最顶层 的方框之外,每个方框都加了编号。 和H图中每个方框相对应,应该有一张IPO图描绘这个方框代 表的模块的处理过程。 HIPO图中的每张IPO图内,都应该明显地标出它所描绘的模 块在H图中的编号,以便追踪了解这个模块在软件结构中的位 置。
变换流 事务流
55
1. 变换流
信息沿输入通路进入系统,同时由外部形式变换成内部形式, 进入系统的信息通过变换中心,经加工处理以后再沿输出通 路变换成外部形式离开软件系统。
56
2 事务流
这种数据流是“以事务为中心的”,即数据沿输入通路到达 一个处理T,这个处理T根据输入数据的类型,在若干个动作 序列中选出一个来执行。处理T称为事务中心,完成下述任务:
40
改进软件设计、提高软件质量
41
42
43
•扇出过大则模块过分复杂,可增加中间层次控制模块 •扇入大则该模块共享程度高,但不能违背模块独立性 •顶层扇出较高,中间层扇出较少,底层模块扇入较高
44
《软件工程》课件 第5章总体设计

模块划分的工具,因此,这样得到的模块往往具有过程内聚的
特性
2014年春 • 软件工程
过程内聚模块
读入 成绩单
审查 成绩单
统计 成绩
打印 成绩
读入并 审查成绩单
统计并 打印成绩单
2014年春 • 软件工程
(5) 通信内聚:
一个模块中的各个部分使用同一个输入数据或产生同一个输出数 据,则称该模块的内聚为通信内聚。 由于通信内聚模块中的各个部分都与某个共同的数据密切相关,
2014年春 • 软件工程
时间内聚模块中的各个部分在时间上的联系,其内聚
程度比逻辑内聚高一些。
往往会和其他相关模块有着紧密的联系,因而会造成
耦合性的增加。
2014年春 • 软件工程
(4) 过程内聚:
一个模块中的各个部分相关,并且必须按特定的
次序执行,则称该模块的内聚为过程内聚。
• 在结构化程序中,通常采用程序流程图作为设计软件和确定
内容耦合是所有耦合关系中程度最高的,会使因 模块间的联系过于紧密而对后期的开发和维护工作带 来很大的麻烦。
许多高级程序设计语言在设计时就充分考虑到了内容耦合的危 害,因而在规定语法时就已经杜绝了任何形式的内容耦合。
2014年春 • 软件工程
内容耦合
A
B
A
一模块直接访问 另一模块的内部 信息 (程序代码 或数据)
2014年春 • 软件工程
1. 耦合
设计目标:低耦合
2014年春 • 软件工程
(1) 数据耦合: 两个模块之间仅通过模块参数交换信息,且交
换的信息全部为简单数据。
数据耦合的耦合性最低。通常软件中都包含有 数据耦合。
2014年春 • 软件工程
计算机软件工程ppt第五章 总体设计

SOFTWARE ENGINEERING
§5.2 软件设计的概念和原理
• 公共环境耦合:当两个或多个模块通过一个公共数据环 境相互作用时。
--公共数据环境:全局变量,文件等。 ---耦合的复杂程度随模块数量而变化,例如:2个模块: 一个读,一个写---较松散的耦合; 或 都读写---较紧密的耦合,处于数据耦合和控制耦合之间
§5.2 设计原理
①耦合—衡量不同模块彼此间互相依赖的紧密程度。
-- 耦合强弱取决于模块间接口的复杂程度,进入或访问一个 模块的点,以及通过接口的数据。 -- 模块间的耦合程度强烈影响到系统的可理解性、可测试性、 可靠性、可维护性。 最低程度的耦合—模块间完全独立,很少存在 根据耦合程序的强弱,对耦合的分类: • 数据耦合:如果两个模块彼此间通过参数交换信息,而且交 换的信息仅仅是数据。--低耦合 • 控制耦合:如果传递的信息中有控制信息(尽管有时以数据 的形式出现)。--中耦合 • 特征耦合:如果把真个数据作为参数传递但是调用的模块只 是用一部分数据时。 --导致访问失去控制,导致计算机犯罪
公共耦合
公共耦合会引起下列问题: 1、 所有公共耦合模块都于某一个公共数据 环境内部各项的物理安排有关,若修改某 个数据的大小,将会影响到所有的模块。 2、无法控制各个模块对公共数据的存取,严 重影响软件模块的可靠性和适应性。 3、公共数据名的使用,明显降低了程序的可 读性。
几种耦合的优劣评分
• • • • • • 内容耦合 0分 公共耦合 1分 控制耦合 5分 特征耦合 7分 数据耦合 9分 非直接耦合 10分
}
七种内聚的优劣评分
• • • • • • • 功能内聚 10分 顺序内聚 9分 通信内聚 7分 过程内聚 5分 时间内聚 3分 逻辑内聚 1分 偶然内聚 0分
§5.2 软件设计的概念和原理
• 公共环境耦合:当两个或多个模块通过一个公共数据环 境相互作用时。
--公共数据环境:全局变量,文件等。 ---耦合的复杂程度随模块数量而变化,例如:2个模块: 一个读,一个写---较松散的耦合; 或 都读写---较紧密的耦合,处于数据耦合和控制耦合之间
§5.2 设计原理
①耦合—衡量不同模块彼此间互相依赖的紧密程度。
-- 耦合强弱取决于模块间接口的复杂程度,进入或访问一个 模块的点,以及通过接口的数据。 -- 模块间的耦合程度强烈影响到系统的可理解性、可测试性、 可靠性、可维护性。 最低程度的耦合—模块间完全独立,很少存在 根据耦合程序的强弱,对耦合的分类: • 数据耦合:如果两个模块彼此间通过参数交换信息,而且交 换的信息仅仅是数据。--低耦合 • 控制耦合:如果传递的信息中有控制信息(尽管有时以数据 的形式出现)。--中耦合 • 特征耦合:如果把真个数据作为参数传递但是调用的模块只 是用一部分数据时。 --导致访问失去控制,导致计算机犯罪
公共耦合
公共耦合会引起下列问题: 1、 所有公共耦合模块都于某一个公共数据 环境内部各项的物理安排有关,若修改某 个数据的大小,将会影响到所有的模块。 2、无法控制各个模块对公共数据的存取,严 重影响软件模块的可靠性和适应性。 3、公共数据名的使用,明显降低了程序的可 读性。
几种耦合的优劣评分
• • • • • • 内容耦合 0分 公共耦合 1分 控制耦合 5分 特征耦合 7分 数据耦合 9分 非直接耦合 10分
}
七种内聚的优劣评分
• • • • • • • 功能内聚 10分 顺序内聚 9分 通信内聚 7分 过程内聚 5分 时间内聚 3分 逻辑内聚 1分 偶然内聚 0分
软件工程ppt课件完整版

缺陷跟踪
使用缺陷管理工具对缺陷进行 跟踪,确保每个缺陷都得到处 理。
缺陷修复
开发人员对缺陷进行分析并修 复,然后提交给测试人员进行 验证。
回归测试
对修复后的缺陷进行回归测试 ,确保修复没有引入新的缺陷
。
质量评估与改进
质量评估
定期对软件产品的质量进行评估,包括功能 、性能、安全等方面。
过程改进
对软件开发过程进行持续改进,提高开发效 率和软件质量。
,提高代码的可读性和可维护性。
模块化开发
02
采用模块化开发方式,将系统划分为不同的模块进行开发,提
高开发效率和质量。
错误处理
03
对可能出现的错误进行充分的考虑和处理,包括异常捕获、日
志记录和错误提示等,确保系统的稳定性和可靠性。
05 测试与质量保证
测试类型及方法
功能测试对软件产品的各项功 进行验证,确保符 合需求和设计。
同时引入了风险管理机制。
螺旋模型的主要阶段包括:制 定计划、风险分析、工程实施
和客户评估。
螺旋模型的优点在于其强调风 险分析和迭代开发,能够及时 发现并解决问题,降低项目风 险。
螺旋模型的缺点在于其需要较 高的项目管理能力和技术水平 ,且可能因为过度关注风险而 忽略其他重要因素。
敏捷开发模型
敏捷开发的主要实践包括:短周期迭代开发、 持续集成、持续交付和自动化测试等。
水平。
04
迭代增量模型的优点在于其能够逐步增加系统功能和 性能,降低项目风险,同时也能够及时发现并解决问 题。
03 需求分析与管理
需求获取与整理
确定需求来源
与客户、利益相关者、业务领域 专家等进行沟通,明确需求背景
和范围。
使用缺陷管理工具对缺陷进行 跟踪,确保每个缺陷都得到处 理。
缺陷修复
开发人员对缺陷进行分析并修 复,然后提交给测试人员进行 验证。
回归测试
对修复后的缺陷进行回归测试 ,确保修复没有引入新的缺陷
。
质量评估与改进
质量评估
定期对软件产品的质量进行评估,包括功能 、性能、安全等方面。
过程改进
对软件开发过程进行持续改进,提高开发效 率和软件质量。
,提高代码的可读性和可维护性。
模块化开发
02
采用模块化开发方式,将系统划分为不同的模块进行开发,提
高开发效率和质量。
错误处理
03
对可能出现的错误进行充分的考虑和处理,包括异常捕获、日
志记录和错误提示等,确保系统的稳定性和可靠性。
05 测试与质量保证
测试类型及方法
功能测试对软件产品的各项功 进行验证,确保符 合需求和设计。
同时引入了风险管理机制。
螺旋模型的主要阶段包括:制 定计划、风险分析、工程实施
和客户评估。
螺旋模型的优点在于其强调风 险分析和迭代开发,能够及时 发现并解决问题,降低项目风 险。
螺旋模型的缺点在于其需要较 高的项目管理能力和技术水平 ,且可能因为过度关注风险而 忽略其他重要因素。
敏捷开发模型
敏捷开发的主要实践包括:短周期迭代开发、 持续集成、持续交付和自动化测试等。
水平。
04
迭代增量模型的优点在于其能够逐步增加系统功能和 性能,降低项目风险,同时也能够及时发现并解决问 题。
03 需求分析与管理
需求获取与整理
确定需求来源
与客户、利益相关者、业务领域 专家等进行沟通,明确需求背景
和范围。
《软件工程导论》PPT课件-第4章-总体设计

3.软件结构的形态特征准则
(1)深度指软件结构中模块的层次数,它表示控制的层 数,一定意义上能粗略地反映系统的规模和复杂程度。
(2)宽度指同一层次中最大的模块个数,它表示控制的 总分布。
(3)扇出指一个模块直接调用的模块数目。经验证明, 良好的系统结构平均扇出数一般是3-4,不能超过5-9。
(4)扇入指有多少个上级模块直接调用它。
4.2 软件结构设计原理
4.2.2 抽象
抽出事物本质特性而不考虑细节
软件设计:从抽象概括到具体实现的过程
具体 抽象 具体
(系统功能) (建模) (程序代码)
4.2 软件结构设计原理
问题定义阶段: (具体)
用户给出对目标系统的实际需求。
系统定义阶段:(抽象)
软件可作为整个计算机系统的一个元素来看待。
一个功能,缺一不可。模块不能再分割。
4.2 软件结构设计原理
4.2.4 模块独立性
设计原则:
力争做到高内聚,并且能辨认出低内聚的模 块,通过修改设计提高模块的内聚程度并降低模 块间的耦合程度。
【注】耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分成模块时, 尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。 但也有内聚性与耦合性发生矛盾的时候,为了提高内聚性而可能使耦合性变差。在 这种情况下,建议给予内聚性以更高的重视。
数据结构的设计采用逐步细化的方法。在需求分析 阶段可通过数据字典对数据的组成、操作约束和数据之 间的关系等方面进行描述,确定数据的结构特性。在总 体设计阶段要加以细化,详细设计阶段则规定具体的实 现细节。
4.1 总体设计的目标及任务
3.确定测试要求并制定测试计划
软件开发早期阶段考虑测试问题,能促使软件设计 人员在设计时注意提高软件的可测试性。
(1)深度指软件结构中模块的层次数,它表示控制的层 数,一定意义上能粗略地反映系统的规模和复杂程度。
(2)宽度指同一层次中最大的模块个数,它表示控制的 总分布。
(3)扇出指一个模块直接调用的模块数目。经验证明, 良好的系统结构平均扇出数一般是3-4,不能超过5-9。
(4)扇入指有多少个上级模块直接调用它。
4.2 软件结构设计原理
4.2.2 抽象
抽出事物本质特性而不考虑细节
软件设计:从抽象概括到具体实现的过程
具体 抽象 具体
(系统功能) (建模) (程序代码)
4.2 软件结构设计原理
问题定义阶段: (具体)
用户给出对目标系统的实际需求。
系统定义阶段:(抽象)
软件可作为整个计算机系统的一个元素来看待。
一个功能,缺一不可。模块不能再分割。
4.2 软件结构设计原理
4.2.4 模块独立性
设计原则:
力争做到高内聚,并且能辨认出低内聚的模 块,通过修改设计提高模块的内聚程度并降低模 块间的耦合程度。
【注】耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分成模块时, 尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。 但也有内聚性与耦合性发生矛盾的时候,为了提高内聚性而可能使耦合性变差。在 这种情况下,建议给予内聚性以更高的重视。
数据结构的设计采用逐步细化的方法。在需求分析 阶段可通过数据字典对数据的组成、操作约束和数据之 间的关系等方面进行描述,确定数据的结构特性。在总 体设计阶段要加以细化,详细设计阶段则规定具体的实 现细节。
4.1 总体设计的目标及任务
3.确定测试要求并制定测试计划
软件开发早期阶段考虑测试问题,能促使软件设计 人员在设计时注意提高软件的可测试性。
软件工程--总体设计概述(ppt 113页)

模块化:就是把程序划分成独立命名且可独立 访问的模块,每个模块完成一个子功能,把这 些模块集成起来构成一个整体,可以完成指定 的功能满足用户的需求。
为什么要模块化? 模块化是为了使一个复杂的大型程序能被人的
智力所管理,软件应该具备的惟一属性。 如果一个大型程序仅由一个模块组成,它将很
难被人所理解。
} 继续对3.1和4.1细化,直到每个语句都能用程序设计语
言来表示
逐步求精的作用:
它能帮助软件工程师把精力集中在与当前开发 阶段最相关的那些方面上,而忽略那些对整体 解决方案来说虽然是必要的,然而目前还不需 要考虑的细节。
逐步求精方法确保每个问题都将被解决,而且 每个问题都将在适当的时候被解决,但是,在 任何时候一个人都不需要同时处理7个以上知 识块。
耦合程度的度量:
(1) 非直接耦合/完全独立(no direct coupling)
如果两个模块中的每一个都能独立地工作而不 需要另一个模块的存在,那么它们完全独立。
在一个软件系统中不可能所有模块之间都没有 任何连接。
无关系
A
B
(2) 数据耦合(data coupling)
如果两个模块彼此间通过参数交换信息,而 且交换的信息仅仅是数据,那么这种耦合称 为数据耦合。
在需求分析期间,软件解法是使用在问题环境 内熟悉的方式描述的;
当由总体设计向详细设计过渡时,抽象的程度 也就随之减少了;
最后,当源程序写出来以后,也就达到了抽象 的最低层。
5.2.3 逐步求精
逐步求精:为了能集中精力解决主要问题而尽 量推迟对问题细节的考虑。逐步求精是人类解 决复杂问题时采用的基本方法,也是许多软件 工程技术的基础。
1. 耦合
为什么要模块化? 模块化是为了使一个复杂的大型程序能被人的
智力所管理,软件应该具备的惟一属性。 如果一个大型程序仅由一个模块组成,它将很
难被人所理解。
} 继续对3.1和4.1细化,直到每个语句都能用程序设计语
言来表示
逐步求精的作用:
它能帮助软件工程师把精力集中在与当前开发 阶段最相关的那些方面上,而忽略那些对整体 解决方案来说虽然是必要的,然而目前还不需 要考虑的细节。
逐步求精方法确保每个问题都将被解决,而且 每个问题都将在适当的时候被解决,但是,在 任何时候一个人都不需要同时处理7个以上知 识块。
耦合程度的度量:
(1) 非直接耦合/完全独立(no direct coupling)
如果两个模块中的每一个都能独立地工作而不 需要另一个模块的存在,那么它们完全独立。
在一个软件系统中不可能所有模块之间都没有 任何连接。
无关系
A
B
(2) 数据耦合(data coupling)
如果两个模块彼此间通过参数交换信息,而 且交换的信息仅仅是数据,那么这种耦合称 为数据耦合。
在需求分析期间,软件解法是使用在问题环境 内熟悉的方式描述的;
当由总体设计向详细设计过渡时,抽象的程度 也就随之减少了;
最后,当源程序写出来以后,也就达到了抽象 的最低层。
5.2.3 逐步求精
逐步求精:为了能集中精力解决主要问题而尽 量推迟对问题细节的考虑。逐步求精是人类解 决复杂问题时采用的基本方法,也是许多软件 工程技术的基础。
1. 耦合
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.2.3 设计与软件质量
在整个设计过程中,设计每一步的质量都要进行正式 的技术评审(formal technical reviews)。要按照设 计准则对于设计表达式的质量的评价。我们这里给出 下列软件设计原则:
(1)设计应当模块化(modular),也就是说,软件 应被逻辑地划分为能完成特定功能和子功能的构件。
的信息。 (5)评价模块结构的质量。
总体设计基本任务(续)
2.数据结构及数据库设计 1)数据结构的设计 2)数据库的设计 (1)概念设计 (2)逻辑设计 (3)物理设计 3. 网络系统设计
总体设计基本任务(续)
4. 软件总体设计文档 总体设计说明书的主要内容如下: (1)引言:编写目的,背景,定义,参考资料。 (2)总体设计:需求规定,运行环境,基本设计概念和处理流
5.1 软件设计的重要性
软件设计处于软件工程过程的技术核心地位
图5-1 软件设计与软件工程
5.1 软件设计的重要性
软件设计的重要性还反映在质量上。
图5-2 设计的重要性
5.2 设计过程
软件设计是一个把需求转换为软件表达式的过 程。这个表达式过程一般情况下是分为两步走。
从软件工程的角度讲是分为总体设计和详细设 计。
程序结构可以用许多不同的符号来表示。 1 树形结构图。 2 Warnier-Orr图 3 Jackson图
5.4.6 数据结构
数据结构(data structure)定义是一种数据各 元素之间逻辑关系的表达式。
一个数据结构的组织和复杂性只受设计者创造 性的限制。但是典型的数据结构可以组成更复 杂的结构造块。
5.3 软件总体设计
需求分析阶段所形成的数据流图是软件总体设计的基 础。我们要从可供选择的方案中选取合理的方案,为 每一个方案准备一份系统流程图,列出系统组成的物 理元素,进行效益分析,制定实现方案的进度。我们 要从合理的方案中选择一个最佳的方案向用户推荐。
当用户接受方案后,就要为这个最佳的方案设计软件 结构,一般情况下,这个软件结构要通过反复修改使 之合理。
同时还要进行必要的数据库设计。在分布式系统中还 要进行网络设计。
另外,还要制定测试计划和确定测试要求。 在详细设计前一定要进行软件总体设计。
5.3.1 总体设计基本任务
1.软件系统结构设计 (1)采用某种设计方法,将一个复杂的系统
按功能划分成模块。 (2)确定每个模块的功能。 (3)确定模块之间的调用关系。 (4)确定模块之间的接口,即模块之间传递
软件工程
Software Engineering
第五章 总体设计
第五章 总体设计
软件设计的重要性 设计过程 软件总体设计 设计基本原理 体系结构设计 结构化设计 IDEF0图设计方法 软件结构优化
总体设计
总体设计的基本目标就是概要地回答系统应该 如何实现。所以设计在任何工程产品或系统中, 是开发阶段的第一步。设计(design)可以定 义为应用各种技术和原理,对一个设备、一个 过程或一个系统,作出足够详细的决策,使之 有可能在物理上得以实现的过程。
总体设计
系统的总体设计是在前面系统分析的基础上, 为后期将要构造的系统实体建立一个模型 (model)或表达式(representation)。构造 这样的模型需要有开发人员的直觉和以前开发 这类实体经验的判断、开发方法的采用、产品 质量的准则,是一个综合的过程。而且经过多 次的重复,直到最终拿出最后的设计模型。
(2)设计应形成具有独立功能特征的模块(如子程 序或过程)。
软件设计原则(续)
(3)设计应使模块之间和与外剖环境之间接 口的复杂性尽量地减少。
(4)设计应该有一个分层的组织结构,这样 人们可对软件各个构件进行理性的控制。
(5)设计应有性质不同的可区分的数据和过 程表达式。
(6)设计应利用软件需求分析中得到的信息 和可重复的方法。
程,结构。 (3)接口设计:用户接口,外部接口,内部接口。 (4)运行设计:运行模块组合,运行控制,运行时间。 (5)系统数据结构设计:逻辑结构设计,物理结构设计,数据
结构与程序的关系。 (6)系统出错处理设计:出错信息,补救措施,系统恢复设计。 5.评审
5.4 设计基本原理
软件设计要回答下列问题: (1)使用什么样的准则才能把软件划分成为
(1)过程构件(模块)的层次结构。 (2)数据结构。
软件的需求分析到设计的转换图
图5--5 结构化演化
不同结构的表示
从下图可以看出,一个问题可以有多种可供选 择的结构。选择某种结构又由软件设计方法来 决定。
5.4.5 程序结构
程序结构(program structure)给出了程序构 件(模块)的组织(通常叫分层),这种组织 包含了控制的层次。
各个单独的构件? (2)怎样把功能或数据结构的细节从软件概
念表达式中分离出来? (3)定义软件设计的技术质量有统一的准则
吗?
设计基本原理
5.4.1 抽象 5.4.2 细化 5.4.3 模块化
5.4.4 软件体系结构
软件总体设计的主要任务就是软件结构的设计。 软件体系结构(software architecture)包含 了计算机程序的两个重要特性:
总体设计主要是把需求转换为数据结构和软件 体系结构,而详细设计主要集中在体系结构表 达式的细化,从而产生详细的数据结构和软件 的算法表达式。
5.2.1 软件设计的发展
早期的设计工作中,着重在开发模块化程序模块所需 要的准则,以及按照自顶向下(top-down)的方式逐 步细化软件体系结构上。
接着,设计定义的过程方面逐渐发展成为一种叫做结 构化编程(structured programming)的原则。
之后,提出了把数据流和数据结构翻译成设计定义的 方法。
近年来,则建立采用OO的设计方法。 总结过去软件设计的发展,可以归纳为是一个持续发
展的过程。
5.2.2设计活动间的关系
总体设计和详细设计除了必须有先进的设计技 术外,还要有同步的管理技术支持。如图5-3 所示
图5-3 设计技术和管理方面之间的关系