第4章软件设计PPT课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
规分律别二考:虑如每果个一问个 题问时题的复Q分杂别程由度P之1和和P。2组成而成,那么它的复杂程度大于
由工此作可量以之得和出。,解决问题Q需要的工作量大于分别解决问题P1和P2需要的
C(P1 + P2)>C(P1)+C(P2) 也就是说,如果一个问题由和两个问题组合而成,那么它的复杂程序大 于分别考虑每个问题时的复杂程度之和。
-
14
第4章 软件设计
模块化的依据
规大律于一解:决如问果题问P2需题要P1的的复工杂作性量大。于问题P2 ,则解决问题P1需要的工作量
C(P1)>C(P2)
显然
E(P1)>E(P2)
这个不等式导致“各个击破”的结论——把复杂的问题分解成许多容易
解决的小问题,原来的问题也就容易解决了。这就是模块化的根据。
ⅱ 数据库设计说明书:给出所使用数据库简介、数据模式设计、物 理设计等。
ⅲ 用户手册:对需求分析阶段编写的初步用户手册进行审定; ⅳ 制定初步的测试计划:对测试的策略方法和步骤,提出明确要求。
-
10
第4章 软件设计
4.1.2 软件设计的任务
⑺ 概要设计评审
在完成前几项工作后,就应组织对概要设计进行评审,其内容为: ⅰ 可追溯性:即分析该软件的系统结构、子系统结构,确认该软件设计是
否覆盖了所有已确定的软件需求,软件的每一成分是否可追溯到某一项 需求。 ⅱ 接口:即分析软件各部分之间的联系,确认该软件的内部接口与外部接 口是否已经明确定义,模块的作用范围是否在其控制范围之内。 ⅲ 风险:即确认该软件设计在现有的技术条件下和预防范围内是否能按时 实现。 ⅳ 实用性:即确认该软件设计对于需求的解决方案是否实用。 ⅴ 技术清晰度:即确认该软件是否以一种易于翻译成代码的形式表达。 ⅵ 可维护性:从软件维护的角度出发,确认该软件设计是否考虑了方便未 来的维护。 ⅶ 质量:即确认该软件设计是否表现出良好的质量特征。 ⅷ 各种选择方案:看是否考虑过其它方案,比较各种选择方案的标准是什 么。 ⅸ 限制:评估对该软件的限制是否现实,是否于需求一致。 ⅹ 其它具体问题:对文档、可测试性、设计过程等进行评估。
-
18
第4章 软件设计
信息隐藏
3.信息隐藏
信息隐藏是指在设计和确定模块时,使得一个模块内 包含的信息(过程或数据)对于不需要这些信息的模 块来说是不能访问的。
例:
在操作系统中,有几个进程都要使用缓冲区队列中的 缓冲区。要实现为进程分配缓冲区的功能可以有两种 不同方法。
方法一:由申请缓冲区的进程首先对缓冲区队列上锁 以防止多个进程同时访问缓冲队列;然后调用分配模 块为其分配缓冲区;可能还要对缓冲区指针进行移动 指针的操作;最好还要对缓冲区队列开锁以便其它进 程可以使用缓冲区队列。
-
22
第4章 软件设计
信息局部化
4.信息局部化 信息局部化是指在设计和确定模块时,把一些关系密切 的软件元素,物理地放得彼此靠近。 所谓“关系密切”是指这些软件元素(数据和所有有关 过程)是共同解决某问题或实现某功能所需的。 如上面举例中的缓冲区队列和缓冲区分配过程和缓冲 区的释放过程。 所谓“物理地放得彼此靠近”,是指最好是放在同一个 模块内。 其优点是可维护性好、可靠性好、可理解性好。 信息隐藏和信息局部化不光适用于总体设计阶段,而 是适用于整个软件开发阶段。
-
3
第4章 软件设计
4.1.2 软件设计的任务
软件设计的任务就是把分析阶段产生的软件需 求转换成用适当手段表示的软件设计文档,即 把软件的需求翻译成软件的描述性过程。 换句话说,软件设计就是在明确了系统必须 “做什么”之后,下一步就是要明确系统“怎 么做”的问题。 从工程管理的角度来看,软件设计分为两个阶 段:概要设计(总体设计)和详细设计,他们 是软件开发时期的一个十分重要的阶段。
⑵可靠性改善。因为缓冲区分配工作除管程外, 不会受进程或其它软件成分的影响。缓冲区队 列数据因不允许其它软件成分访问,从而受到保 护,不会受到破坏(例如死锁或任意修改)。 ⑶理解性好。进程中不在需要缓冲区分配的具 体代码,只有进程向管程发送“申请缓冲区”的 消息(调用“消息发送”原语),简单多了,易于理 解。
在进行科学计算或工程计算时,运算精确度的要求。 ③取得外部信号的接收发送形式。
-
7
第4章 软件设计
4.1.2 软件设计的任务
⑷ 数据结构设计 确定软件涉及的文件的结构及数据库的模式, 子模式进行数据完整性和安全性的设计。 ① 确定输入:输出文件的详细的数据结构; ② 组合算法设计:确定算法所必须的逻辑结构 及操作; ③ 确定对逻辑数据结构所必须的那些操作的程 序模块(软件包),限制和确定各个数据设计决策 等影响范围; ④ 若需要与操作系统或调度程序接口所必须的 控制表等数据时,确定其详细的数据结构和使用 规则。
-
4
Байду номын сангаас
第4章 软件设计
4.1.2 软件设计的任务
1.概要设计 概要设计的基本任务就是将需求转换为数据结构和软件的体系结 构。 其具体的工作有以下几个方面: ⑴ 制定规范 在进入软件开发阶段之初,应为软件开发组制定软件设计时应遵 守的标准,以便协调组内成员的工作。 ① 阅读和理解软件需求说明书,在给定预算范围内和技术现状下, 确认用户的要求能否实现,如不能实现,则需明确实现的条件, 从而取得设计的目标。 ② 根据目标确定最合适的设计方法。 ③ 规定文档的编制标准,包括文档体系,用纸及样式,记述详细 的程度,图形的画法等。 ④ 规定编码的信息(代码体系)与硬件、操作系统的接口规约, 命令规则等。
-
8
第4章 软件设计
4.1.2 软件设计的任务
⑤ 数据保护性设计 ⅰ 防卫性设计 在软件设计中,插入能自动检错、报错和纠错的功能。 ⅱ 一致性 其一,是保证软件运行过程中所使用的数据类型和取 值范围不变;其二,是在并发处理过程中使用封锁和 解除封锁机制保持数据不被破坏。 ⅲ 冗余设计 针对同一问题,由两个开发者采用不同的程序设计风 格,不同的算法设计软件,当两者运行结果之差不在 允许范围之内时,利用检错系统予以纠正,或使用表 决技术,决定一个正确的结果,以保证软件容错。
-
17
第4章 软件设计
抽象的概念 下面我们看一个由于使用抽象手段使软件系统 设计获得很大成功的例子。 1993年,美国微软公司推出了它的90年代操作 系统——Windows NT。在它的许多特色中, 有一个特点是它的一体化的“输入/输出系统” 的设计。设计者们利用抽象原则,把操作系统 的文件管理、网络管理、设备管理和高速缓冲 存储器这四个十分不同的事物进行分析,抽取 其共性,最后将其统一为“对虚拟文件的字节 流,虚拟文件可以为任何设备和实体”,从而 设计出具有统一外貌、统一处理模式和规范一 体化的输入/输出系统,获得极大成功。
-
11
第4章 软件设计
4.1.2 软件设计的任务
2. 详细设计 详细设计要完成的工作有: ⑴ 确定软件各个组成部分内的算法及各部分的内部数 据组织。 ⑵ 选定某种过程的表达形式来描述各种算法。 ⑶ 进行详细设计评审。 软件设计的最终目的是要取得最佳方案,以节省开发 经费,降低资源消耗,缩短开发时间的条件,选择能 够赢得较高的生产率,较高的可靠性和可维护性的方 案。在整个设计过程中,各个时期的设计结果需要经 过一系列的设计质量评审,以便及时发现和解决软件 设计中出现的问题,防止把问题遗留到开发的最后阶 段,造成后患。
综上所述,得到下面的不等式
E(P1 + P2)>E(P1)+E(P2)
-
15
第4章 软件设计
模块化两方面的问题
1) 在软件开发过程中,要自顶向下地把系 统分解成若干个模块,实现模块化,这 有利于降低系统的复杂性,增加结构性 和可理解性。 2) 过多地分解模块、或分解不合理,不但 不会降低系统的复杂性,还会使复杂性 增加。
-
6
第4章 软件设计
4.1.2 软件设计的任务
⑶ 处理方式设计 ① 确定为实现软件系统的功能需求所必需的算法的性能; ② 确定为满足软件条件的性能需求所必需的算法和模块之间的控 制方式,性能主要指标; ⅰ 周转时间 即一旦向计算机发出要求处理的请求之后,从输入开始,经过处 理直到输出结果为止的整个时间。 ⅱ 响应时间 这是对实时联机系统的性能需求。 ⅲ 吞吐量 单位时间内能够处理的数据量。 ⅳ 精度
-
9
第4章 软件设计
4.1.2 软件设计的任务
⑸ 可靠性设计 可靠性设计也叫做质量设计,在计算机的使用过程中,可靠性是 很重要的,软件的可靠性简言之是指程序和文档中错误少,软件 使用的越多,可靠性就越高。
⑹ 编写概要设计文档 概要设计阶段完成后,应编写以下文档:
ⅰ 概要设计说明书:给出系统的目标、总体设计、数据设计、处理 方式设计、运行设计和出错设计等。
-
19
第4章 软件设计
信息隐藏
它存在如下缺点: ⑴不易修改。例如想改变缓冲区队列结构形式,那么参与
缓冲区分配和释放实现细节操作(如移动指针方法)的所 有进程的代码均需修改。 ⑵容易出错、可靠性差。例如进程要先上锁后开锁。假 如在这些进程中,某个进程的编写者写错了代码,那么锁 变量永远开不了,就会造成系统死琐而引起系统瘫痪。 而且这种错误很难发现,因为从缓冲区管理程序中查不 出错误,只有查找所有进程代码才行。 ⑶理解性不好,进程程序代码中关于缓冲区的这一段操作, 与进程自己的功能是不一致、不协调的。所以不好理 解。 ⑷增加了应用程序开发者的负担(还要编制缓冲区分配代 码)。
-
12
第4章 软件设计
4.2 软件设计的概念和设计原则
-
13
第4章 软件设计
模块化的概念
在软件开发的整个过程中,为了获得高质量的 软件,人们已经总结出了许多必须遵守的原则, 并把这些原则主要有:模块化、抽象、信息隐 藏、信息局部化、一致性、完整性、确定性。 1.模块化 模块化就是“按照一定原则把程序划分成若干 个模块、使每个模块完成一个子功能”。 反之,把这些模块按某种方式组装结构成一个 软件系统后,该系统可以完成指定的功能要求。
-
16
第4章 软件设计
抽象的概念
2.抽象 抽象是对事物共同的本质特性进行抽取和概括,忽略 次要因素。 对同一事物的抽象可以从不同层次或不同方面进行。 抽象的层次取决于客观问题的需要。上层的抽象要由 下层的抽象来实现。 例如:磁盘机。 当我们研究数据库系统的管理问题时,则把数据库文 件的集合。 当我们研究操作系统的读写问题时,则把磁盘机及其 上的信息抽象为数据块或扇区的集合。 当我们研究磁盘机物理设备的读写的物理操作时,则 把磁盘机抽象为柱面、盘面号和扇区的集合。 要选取抽象描述能力高的程序语言作为开发工具。
-
20
第4章 软件设计
信息隐藏
方法二:是对缓冲区资源设置专门的管 理者,例如缓冲管程,由它专管缓冲区的分 配和释放,进程要求分配缓冲区时,唯一 要做的工具是向管程发送一个消息“请 求管程分给一个缓冲区”。 这种方法就符合信息隐藏的原则。
-
21
第4章 软件设计
信息隐藏
方法二的优点在于: ⑴便于修改。如要修改缓冲区队列数据的结构 和属性,或要修改缓冲区分配的算法。其修改范 围只局限于管程内部,不会涉及对进程或其他软 件部分进行修改。
-
5
第4章 软件设计
4.1.2 软件设计的任务
⑵ 软件系统结构的总体设计 总体设计过程通常由两个阶段组成:系统设计,确定 系统实现的方案;结构设计,确定软件的结构。 其中结构设计是概要设计的重点,在这个阶段主要完 成四个任务,这就是: ① 采用某种设计方法,将一个复杂的软件系统按功能 划分成模块的层次结构; ② 决定每个模块的功能,建立与已确定软件需求的对 应关系; ③ 决定每个模块的调用关系; ④ 决定模块间的接口,即模块之间的传递信息,设计 接口的信息结构。 ⑤ 评估模块划分的质量及寻出模块结构的规则。
第4章 软件设计
-
1
第4章 软件设计
4.1 软件设计的目标和基本任务
-
2
第4章 软件设计
4.1.1 软件设计在开发阶段中的重要性
在软件需求分析阶段已经完全弄清楚了软件的各种需求,较好地 了解所开发的软件需要“做什么”的问题,并已在软件需求规格 说明书和数据要求说明书中详细和充分地阐明了这些需求。 在软件设计中根据需求分析的软件需求及功能、性能需求,采用 某种设计方法进行数据设计,系统结构设计和过程设计。 ➢ 数据设计侧重于数据结构的定义。 ➢ 结构设计则定义软件系统各主要成分之间的关系。 ➢ 过程设计则是把结构成分转换为软件的过程性描述。 软件设计在整个开发阶段占有非常重要的地位。在这个阶段做出 的决策最终会影响软件实现的成败,从而使得软件设计成为开发 阶段最重要的一个环节,因此,它是软件开发中质量得以保证的 关键步骤。同时,软件设计又是将用户要求准确地转换成为最终 软件产品的唯一途径。