软件工程上课PPT内容详细

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
21ຫໍສະໝຸດ Baidu
22
信息隐蔽:在设计和确定模块时,使得一个模块内 包含的信息(过程或数据),不允许其它不需要这 些信息的模块访问,独立的模块间仅仅交换为完成 系统功能而必须交换的信息。
局部化:将一些关系密切的软件元素物理地放得彼 此靠近。
23
3.1.1 软件设计的原则 1、模块化 2、抽象 3、逐步求精 4、信息隐蔽和局部化 5、模块的相对独立(高内聚、低耦合)
小结
软件需求:解决“做什么” 软件设计:解决“怎么做”. 软件设计的任务:以软件需求规格说明书为依据,
着手实现软件的需求,并将设计的结果反映在“设 计规格说明书”文档中。 软件设计的重要性:是软件开发阶段的第一步,最 终影响软件实现的成败和软件维护的难易程度。
软件设计的两个阶段 第一阶段:概要设计(总体设计) 根据软件需求,设计软件系统结构和数据结构,
程的表达形式来描述各种算法;产生精确描述各模 块程序过程的详细文档,并进行评审。
Structured Analysis与Structured Design的关系。
将需求分析摸型转换为软件设计 软件结构设计以需求分析中得到的数据流图为
基础而进行。
软件总体设计的核心内容就是依据需求规格说明书,合
设计目标:高内聚
44
块内各组成成份在功能上是互不相关的。
模块 M 中的三个语句没有任何联系。 缺点:可理解性差,可修改性差
45
把几种相关功能(逻辑上相似的功能)组合在一模块内, 每次调用由传给模块的参数确定执行哪种功能。
46
模块完成的功能必须在同一时间内执行,这些功能 只因时间因素关联在一起。
62
接口传递信息应简单且和模块功能一致。 模块的接口要简单、清晰、含义明确,便于理解,
易于实现、测试与维护。
63
不要使模块间出现内容耦合。
64
如果一个模块可以当作一个黑盒子,相同输入产生 相同输出,其功能为可预测的。
若模块带有内部“存储器”,其功能可能是不可预 测的,难理解、难测试、难维护。
38
( 1 )软件可理解性降低 ( 2 )诊断错误困难 ( 3 )软件可维护性差 ( 4)软件可靠性差
39
有下列情况之一的。是最不好的耦合形式!
40
41
一模块对另一模块的引用 一模块向另一模块传递的数据量 一模块施加到另一模块的控制的数量 模块间接口的复杂程度
42
1、根据问题特点,选择合适的 耦合类型。 尽量使用数据耦合,少用控制耦合和外部耦合,限 制公共耦合的范围,完全不用内容耦合
软件系统就是通过这些模块的组合来实现。
12
模块化是软件解决复杂问题所具备的手段, 可降低软件复杂性,减少开发工作量,从而降低 开发成本,提高软件生产率,是模块化的依据。
13
接口
14
接口:指模块的输入与输出。 功能:指模块实现什么功能。 模块化好处: 模块化使软件容易测试和调试,因而有助提高软件
小结
1、软件结构化的图形工具 1) HIPO图 2) IPO图 3) 结构图
2、面向数据流的设计方法 3、面向数据结构的设计方法
1、 层次图 通常使用层次图描绘软件的层次结构
一个矩形框代表一个模块 框间的连线表示调用关系
正文加工系统的层次图
为表示层间所属关系,可在框图中加入相应编号,表明对应所属层级。 正文加工系统的H图
设计目标:低耦合
29
属松散耦合。一模块访问另一模块时,通过数据参 数交换输入、输出信息。
30
模块之间传递的是控制信息(如开关、标志、名字 等),控制被调用模块的内部逻辑。
31
控制藕合增加了理解和编程的复杂性,调用模块必 须知道被调模块的内部逻辑,增加了相互依赖。去 除控制藕合方法: ( 1 )将被调用模块内的判定上移到调用模块中进行 ( 2 )被调用模块分解成若干单一功能模块
2 、降低模块接口的复杂性。 减少每个模块的参数个数;尽量使用标准过程调用
方式,少用直接引用的方式;传送的信息以标准、 直接的方式提供。 3 、把模块的通信信息放在缓冲区中。
43
又称模块内联系。指一个模块内部各个元素彼此结 合的紧密程度的度量。
若一个模块内各元素(语句之间、程序段之间)联 系的越紧密,则它的内聚性就越.
小结
1、模块化 2、抽象 3、逐步求精 4、信息隐蔽和局部化 5、模块的相对独立(高内聚、低耦合)
什么是模块和模块化思想? 采取自顶向下的方式,逐层把软件系统划分成
若干可单独命名和可编址的部分- “ 模块” ,每 个模块完成一个特定的子功能;
所有模块按某种方法组成一个整体,完成整个 系统所要求的功能。
55
通过模块分解或合并,降低耦合提高内聚
56
模块过大:可理解程度下降
模块过小:开销大于有效操作系统接口复杂
在考虑模块的独立性同时,为了增加可理解性,
模块的大小最好在 50 一 150 条语句左右,可以
用 1 一 2 页打印纸打印,便于人们阅读与研究。
57
软件结构度量术语
58
59
60
32
33
两个模块通过传递数据结构加以联系,或都与一个 数据结构有关系,则称这两个模块间存在特征耦合。
可能出现的情况:当把整个数据结构作为参数传递 时,被调用的模块虽然只需要使用其中的一部分数 据元素,但实际可以使用的数据多于它真正需要的 数据,这将导致对数据访问失去控制。
34
说明:
“住户情况”是一个数据结构,图中模块都与此
确定程序的组成模块及模块之间的相互关系。 其重要性是:站在全局高度,从较抽象的层次上
分析对比多种可能的系统实现方案和软件结构,从 中选出最佳方案和最合理的软件结构,从而用较低 成本开发出较高质量的软件系统。
软件设计的两个阶段 第二阶段:详细设计(过程设计) 确定模块内部的算法和数据结构;选定某种过
衡量模块独立性的两个准则 ① 耦合性( coupling ) ② 内聚性( cohesion )
27
耦合性几种类型
1、数据耦合 2、控制耦合 3、通信耦合 4、标记耦合 5、公共耦合 6、内容耦合
28
也称块间的联系。是对软件系统结构中,各模块间 相互联系紧密程度的一种度量。
17
抽象
外表
形体 衣着 性格
18
逐步求精:为了能集中精力解决主要问题而尽量推 迟对问题细节的考虑。
可把逐步求精看作是一项把一个时期内必须解决的 种种问题按优先级排序的技术。
逐步求精是一种自顶向下的设计策略,按这种设计 策略,程序的体系结构是通过逐步精化处理过程的 层次而设计出来的。
19
外表 抽象 形体 衣着 性格
头发 脸形 领带 逐步求精
20
将功能、信息的说明分为多个层次,最高层也最抽 象 ― 仅仅只是概念性地描述功能或信息,不提供功 能的内部工作情况或信息的内部结构;
设计者从最高层开始,仔细推敲,进行功能和信息 的细化,给出下层实现的细节;
随着每个后续细化逐步的完成,提供越来越多的细 节,最终得出用程序设计语言表达的程序。
例:初始化系统模块 系统结束模块、 紧急故障处理模块等
47
模块内各处理成分相关,且必须以特定次序执行。
48
模块内各部分使用相同的输入数据,或产生相同的 输出结果
49
模块完成多个功能,各功能都在同一数据结构上操 作,每一功能有唯一入口。
50
模块仅包括为完成某个功能所必须的所有成分。 模块所有成分共同完成一个功能,缺一不可 内聚性最强
的可靠性。 模块化能提高软件的可修改性。 模块化有助于软件开发工程的组织管理。
15
① 什么是抽象?
学生
认识复杂事物和现象时, 大学生 抽出事物本质的共同特
性而暂不考虑它们的细 吕梁学院学
节。

② 软件开发中的抽象 吕梁学院计
过程的抽象
算机系学生
数据的抽象
吕梁学院计
算机系15级
学生
抽象
单一的模块具有高内聚。但模块功能过分局限,可 使用范围将过分狭窄,缺乏灵活性和扩充性。
65
3.0 软件设计概述 3.1 软件设计的原则---模块设计 3.2 结构化软件设计的方法 3.3 面向数据流的软件结构 3.4 软件的体系结构 3.5 数据库结构设计 3.6 接口、环境设计 3.7 总体设计实例 3.8 软件总体设计说明书
51
52
耦合与内聚都是模块独立性的定性标准,都反映模 块独立性的良好程度。
但耦合是直接的主导因素,内聚则辅助耦合共同对 模块独立性进行衡量。
设计要求:高内聚,低耦合
53
衡量模块独立性的两个准则 ① 耦合性( coupling ) ② 内聚性( cohesion )
54
改进原则 :高内聚、低耦合 ① 改进软件结构,提高模块独立性 ② 模块规模适中 ③ 深度、宽度、扇出和扇入适中 ④ 将模块的影响限制在控制范围内 ⑤ 降低模块接口的复杂性 ⑥ 设计单入口单出口的模块 ⑦ 模块功能可预测
1 、什么是模块独立性( module independence)
模块只完成系统要求的相对独立的功能 符合信息隐蔽原则 模块间关联和依赖程度尽量小
2 、模块独立的优点 容易开发、测试和维护
25
衡量模块独立性的两个准则 ① 耦合性( coupling ) ② 内聚性( cohesion )
26
数据结构有关。 “计算水费”和“计算电费”本无关,由于引用
了此数据结构产生依赖关系,它们之间也是标记 偶合。
35
36
一组模块引用同一个公用数据区(也称全局数 据区、公共数据环境)。 公共数据区指:
全局数据结构。 共享通讯区。 内存公共覆盖区等
37
模块 A 、 B 、 C 间存在错综复杂的联系
面向数据流的设计方法是常用的结构化设计方法,
多在概要设计阶段使用。
④ 将模块的影响限制在控制范围内
作用域是指受模块内一个判定影响的所有模块的集合 控制域是指这个模块本身及其所有的下属模块的集合
A
A
受 E 中判 定影响
B
C
D
A A
C
D
E
F
FE
B
61
模块 C 的控制范围: C、D、E、F、 G、H。
如果模块 C 作出的 决策影响了模块 L , L超出了 C 的控制范 围
2、 IPO图 IPO图是表示: 输入处理输出 调用关系
IPO图的一个例
改进的IPO图(IPO表)的形式
◦ 一个方框代表一个模块,框内注明模块的名字或主要功能 ◦ 方框之间的箭头(或直线)表示模块的调用关系 ◦ 带注释的箭头表示模块调用过程中来回传递的信息 ◦ 箭头尾部是空心圆表示传递的是数据,实心圆表示传递的
是控制信息
结构图的例子——产生最佳解的一般结构
3.0 软件设计概述 3.1 软件设计的原则---模块设计 3.2 结构化软件设计的方法 3.3 面向数据流的软件结构 3.4 软件的体系结构 3.5 数据库结构设计 3.6 接口、环境设计 3.7 总体设计实例 3.8 软件总体设计说明书
小结
1、面向数据流的设计方法 2、面向数据结构的设计方法
理、有效地设计软件产品规格说明 书。
总体设计的主要内容:
1、系统的体系结构设计 8、评审各部分设计
2、总体结构设计
9、编写总体设计说明书
3、构件(模块)设计
4、数据设计
5、接口设计
6、网络环境设计
7、硬件和软件平台设计
3.0 软件设计概述 3.1 软件设计的原则---模块设计 3.2 结构化软件设计的方法 3.3 面向数据流的软件结构 3.4 软件的体系结构 3.5 数据库结构设计 3.6 接口、环境设计 3.7 总体设计实例 3.8 软件总体设计说明书
具体
16
什么是抽象思想?
在认识事物、分析和解决问题的过程中,忽略那些与当前研究 目标不相关的部分, 以便将注意力集中于与当前目标相关的方面
软件开发实际上就是一个从高层次抽象到低层次抽象逐 步过渡的过程。
一个复杂的系统先用一些高级的抽象概念构造和理解, 这些高级概念又用较低级的概念构造和理解,如此进行下 去,直到具体元素。
第一章 第二章 第三章 第四章 第五章
软件工程概述 可行性研究及需求分析 总体设计 详细设计 软件编码
第六章 第七章 第八章 第九章
软件测试 软件维护 面向对象的软件工程 软件项目管理
3.0 软件设计概述 3.1 软件设计的原则---模块设计 3.2 结构化软件设计的方法 3.3 面向数据流的软件结构 3.4 软件的体系结构 3.5 数据库结构设计 3.6 接口、环境设计 3.7 总体设计实例 3.8 软件总体设计说明书
相关文档
最新文档