软件工程软件总体设计

上传人:飞*** 文档编号:35704665 上传时间:2018-03-19 格式:DOC 页数:45 大小:717KB
返回 下载 相关 举报
软件工程软件总体设计_第1页
第1页 / 共45页
软件工程软件总体设计_第2页
第2页 / 共45页
软件工程软件总体设计_第3页
第3页 / 共45页
软件工程软件总体设计_第4页
第4页 / 共45页
软件工程软件总体设计_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《软件工程软件总体设计》由会员分享,可在线阅读,更多相关《软件工程软件总体设计(45页珍藏版)》请在金锄头文库上搜索。

1、1教案首页教案首页周次 日期 课时序 课课 题题软件总体设计教学目的教学目的要要 求求理解软件总体设计目标;掌握软件总体设计的手段与方法,理解模块独立性概念;理解模块化概念重重 点点软件总体设计目标、模块化难难 点点软件总体设计的手段与方法;模块独立性教学过程教学过程设设 计计及及时间分配时间分配第一章软件总体设计(2*45)第一节 总体设计的任务与步骤(15)第二节 软件设计原则(15)第三节 面向数据流的设计方法(30)第四节 面向数据结构的分析设计方法(25)第五节 总体设计文档评审(5)教学场所教学场所或教学方法或教学方法使用使用教具教具作作 业业课课 后后 记记授课教师 2第四章第四

2、章 软件总体设计软件总体设计问题定义、可行性研究和需求分析构成了软件计划阶段,在这个阶段确定了 需要做什么,解决了系统开发目标,系统需求规格。而软件开发阶段的任务 是回答系统如何实现的问题。软件开发阶段包括总体设计、详细设计、编码 和测试等。在总体设计中有两个主要任务: 将系统划分成物理元素,即 程序、文件、数据库、文档等。 设计软件结构,即将需求规格转换为软 件体系结构、划分出程序的模块组成、模块间的相互关系 、确定数据结构 和算法等。 总体设计过程首先寻找实现目标系统的各种不同的方案,需求分析阶段得到 的数据流图是设想的各种方案的基础与根据。然后从这些可供选择的方案中 选取若干个合理的方案

3、,为每个合理的方案都准备一份系统流程图、列出组 成系统的所有物理元素、进行成本效益分析,并且制定实现这个方案的进 度计划。应该综合分析比较这些合理的方案,从中选出一个最佳方案向用户 和使用部门负责人推荐。如果用户和使用部门的负责人接受了推荐的方案, 应该进一步为这个最佳方案设计软件结构。通常,设计出初步的软件结构后 还要进一步改进,从而得到更合理的结构,进行必要的数据库设计,确定测 试要求并且制定测试计划。 4.14.1 总体设计的任务与步骤总体设计的任务与步骤 4.1.14.1.1 总体设计任务总体设计任务 1.系统分析员审查软件计划、软件需求分析文档,提出最佳推荐方案,用系 统流程图描述,

4、组成系统物理元素清单,成本效益分析,系统的进度计划, 供专家审定,审定后进入设计。 2.划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块 间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。 3.编写总体设计说明书,用户手册,测试计划,选用相关的软件工具来描述 软件结构,结构图是经常使用的软件描述工具。选择分解功能与划分模块的 设计原则等。 4.1.24.1.2 总体设计的过程总体设计的过程 S1S1:设计系统方案:设计系统方案 为了实现要求的系统,系统分析员应该提出并分析各种可能的方案,并且从 中选出最佳的方案。而在分析阶段提供的用数据流图描述逻辑模型是总体设

5、计的出发点。数据流图中的某些处理可以逻辑地归并在一个边界内作为一组, 另一些处理可以放在另一个边界内作为另一组。这些边界代表某种实现策略。 在可供选择的多种方案中,进一步设想与选择较好的系统实现方案。这个方 案仅是边界的取舍,抛弃技术上行不通的方法,留下可能的实现策略,但并 不评价这个方案。 3S2S2:选取合理的方案:选取合理的方案 分析员在通过问题定义,可行性研究和需求分析后,产生了一系列可供选择 的方案,从中选取低成本,中成本,高成本三种方案,必要时再进一步征求 用户意见。并准备好系统流程图,系统的物理元素清单(即构成系统的程序、 文件、数据库、人工过程,文档等),成本效益分析,实现系统

6、的进度计划。S3S3:推荐最佳实施方案:推荐最佳实施方案 综合分析各种方案的优缺点,推荐最佳方案,并做详细的实现进度计划。用 户与有关技术专家认真审查分析员推荐的方案,然后提交使用部门负责人审 批,审批接受分析员推荐的最佳实施方案后,才能进入软件结构设计。 S4S4:功:功能分解分解 要把复杂的功能进一步分解成简单的功能,遵循模块划分独立性原则(即做 到模块功能单一,模块与外部联系很弱,仅有数据联系),使划分过的模块 的功能对大多数程序员而言都是易懂的。功能的分解导致对数据流图的进一 步细化,并选用相应图形工具来描述。 S5S5:软件:软件结构设计构设计 用层次图(HC)、结构图(系统结构)来

7、描述模块组成的层次系统,即反映 了软件结构。当数据流图细化到适当的层次,由结构化的设计方法(SD)可 以直接映射出结构图(系统结构)。 S6S6:数据库设计、文件结构的设计:数据库设计、文件结构的设计 根据系统的数据要求,确定系统的数据结构、文件结构。对需要使用数据库 的应用领域,分析员再进一步根据系统数据要求完成数据库的模式设计,确 定数据库物理数据的结构约束。进行数据库子模式设计,设计用户使用的数 据视图。再做数据库完整性与安全性设计,改进与优化模式和子模式(用户 使用的数据库视图)的数据存取。 S7S7:制定测试计划:制定测试计划 为保证软件的可测试性,软件设计一开始就要考虑软件测试问题

8、。这个阶段 的测试计划仅从 I/O 功能做的黑盒法测试计划,详细设计时才能做详细的测 试用例与计划。 S8S8:编写总体设计文档:编写总体设计文档 用户手册。对需求分析阶段编写的用户手册进一步修订。 测试计划。对测试的计划、策略、方法和步骤提出明确的要求。 详细项目开发实现计划。给出系统目标、总体设计、数据设计、处理方式 设计、运行设计和出错设计等。 数据库设计结果。使用的数据库简介数据模式设计和物理设计等。 4S9S9:审查与复审总体设计文档。:审查与复审总体设计文档。 根据总体设计阶段的结果,修改更正在需求分析阶段产生的初步的用户手册。总体设计过程如图 4-1 所示。 图 4-1 总体设计

9、过程 4.24.2 软件设计的原则软件设计的原则 软件设计经过多年发展,已经总结出一些基本的软件设计概念与原则,这些 概念与原则经过时间的考验成为软件设计人员完成复杂的软件设计问题的基 础。主要内容包括有: (1)将软件划分成若干独立成分的依据。 (2)怎样表示不同的成分内的功能细节和数据结构。 (3)怎样统一衡量软件设计的技术质量。 4.2.14.2.1 模块化模块化 模块是数据说明、可执行语句等程序对象的集合,可以对模块单独命名,而 且可通过名字访问,例如,过程、函数、子程序、宏等等都可作为模块。模 块化就是把程序划分成若干个模块,每个模块具有一个确定的子功能,把这 些模块集成一个整体,可

10、以完成指定的功能。 在软件开发过程中,大型软件由于其控制路径多、涉及范围广且变量数目多 使其总体结构更为复杂,这样与小型软件相比较其可理解性和可阅读性较差。5模块化增强了对复杂的大型程序的可理解性与可管理性。下面定量地描述模 块化的根据。 定义函数 C(x)为问题 x 的复杂程度,函数 E(x)为解决间题 x 需要的工 作量(时间)。对于问题 P 1 和问题 P 2 ,如 C(P 1 )C(P 2 ), 则有 E(P 1 )E(P 2 ) 因为由 P 1 和 P 2 两个问题组合而成一个问题的复杂程度大于分别考虑每个问题时的复杂程度 之和。C(P 1 +P 2 )C(P 1 )C(P 2 )综

11、上所述,可得到下面的不 等式: E(P 1 +P 2 )E(P 1 )E(P 2 ) 由此可知,把复杂的问题分解成许多容易解决的较小问题,原来的问题也就 容易解决了,这就是模块化提出的根据。 参阅图 4-2,如果无限地分割软件,最后为了开发软件而需要的工作量也就 小得可以忽略了。事实上,当模块数目增加时,每个模块的规模将减小,虽 然开发单个模块需要的工作量减少了,但是随着模块数目增加,设计模块间 接口所需要的工作量将增加。折衷考虑这两个因素,可得出了图中所示的总 成本曲线。每个程序都相应地有一个最适当的模块数目 M,使得系统的开发 工作量为最小。 图 4-2 模块数目与工作量关系 虽然目前还不

12、能精确地决定 M 的数值,但是在考虑模块化的时候模块数目与 工作量关系曲线是有用的指南。 采用模块化原理可以使软件结构清晰,不仅容易实现设计,也使设计出的软 件的可阅读性和可理解性大大增强。这是由于程序错误通常发生在有关的模 块及它们之间的接口中,所以采用了模块化技术会使软件容易测试和调试, 进而有助于提高软件的可靠性。因为变动往往只涉及少数几个模块,所以模 块化能够提高软件的可修改性。模块化也有助于软件开发工程的组织管理, 一个复杂的大型程序可以由许多程序员分工编写不同的模块。 4.2.24.2.2 抽象与逐步求精抽象与逐步求精 6在现实世界中,事物、状态或过程之间存在共性。把这些共性集中和

13、概括起 来,忽略它们之间的差异,这就是抽象。抽象就是抽出事物的本质特性而暂 时不考虑它们的细节。 处理复杂系统的有效的方法是用层次的方式构造和分析它。一个复杂的动态 系统首先可以用一些高级的抽象概念构造和理解,这些高级概念又可以用一 些较低级的概念构造和理解,如此进行下去,直至最低层次的具体元素。这 种层次的思维和解题方式必须反映在定义动态系统的程序结构之中,每级的 一个概念将以某种方式对应于程序的一组成分。 当考虑对任何问题的模块化解法时,可以提出许多抽象的层次。在抽象的最 高层次使用问题环境的语言,以概括的方式叙述问题的解法;在较低抽象层 次采用更过程化的方法,把面向问题的术语和面向实现的

14、术语结合起来叙述 问题的解法;最后,在最低的抽象层次用可以直接实现的方式叙述问题的解 法。 软件工程过程的每一步都是对软件解法的抽象层次的一次精化。在可行性研 究阶段,软件作为系统的一个完整部件;在需求分析期间,软件解法是使用 在问题环境内熟悉的方式描述的;当我们由总体设计向详细设计过渡时,抽 象的程度也就随之减少了;最后,当源程序写出来以后,也就达到了抽象的 最低层。 逐步求精与抽象是紧密相关,随着软件开发工程的进展,在软件结构每一层 中的模块,表示了对软件抽象层次的一次精化。层次结构的上一层是下一层 的抽象,下一层是上一层的求精。事实上,软件结构顶层的模块,控制了系 统的主要功能并且影响全

15、局;在软件结构底层的模块,完成对数据的一个具 体处理,用自项向下由抽象到具体的方式分配控制,简化了软件的设计和实 现,提高了软件的可理解性和可测试性,并且使软件更容易维护。 例: 开发一个 CAD 软件,能够实现绘图系统的全部功能,供低级 CAD 使用。抽象层次 1 用问题所处环境的术语描述这个软件 该软件系统具有与可视化通信的图形界面,能用鼠标代替绘图工具划出各种 曲线和直线。能完成几何计算和截面视图及辅助视图的设计,图形设计结果 存于图形文件中。 抽象层次 2 所用术语不再是问题所处环境的语言,但并没给出怎样做的信 息,不能直接实现。 CAD 软件任务 用户界面任务; 创建二维图形任务;

16、显示图形任务;管理图形任务; end CAD 7抽象层次 3 仅以二维图形任务为例 PROCEDURE 创建二维图形 REPEAT UNTIL 创建图形任务终止 DO WHILE 出现与数字仪的交互时 数字仪接口任务; 判断作图请求; 线:画线任务; 圆:画圆任务; .END; DO WHILE 出现与键盘的交互时 键盘接口任务; 选择分析或计算; 辅助视图:辅助视图任务; 截面视图:截面视图任务; .END .END PROCEDURE. 在这一抽象层次上,给出了初步过程表示,模块结构已清楚明朗,求精过程 还可进行下去,直到得到源代码。 4.2.34.2.3 信息隐蔽和局部化信息隐蔽和局部化 应用模块化原理时,将产生的一个问题:为了得到一组模块,应该如何分解 软件结构。信息隐蔽原理指出:每一个模块的实现细节对

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号