好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

软件工程软件总体设计.doc

45页
  • 卖家[上传人]:鲁**
  • 文档编号:508613153
  • 上传时间:2023-10-30
  • 文档格式:DOC
  • 文档大小:717KB
  • / 45 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 教案首页周次 日期 课时序 课 题软件总体设计教学目的要 求理解软件总体设计目标;掌握软件总体设计的手段与方法,理解模块独立性概念;理解模块化概念重 点软件总体设计目标、模块化难 点软件总体设计的手段与方法;模块独立性教学过程设 计及时间分配第一章 软件总体设计(2*45‘)第一节 总体设计的任务与步骤(15‘)第二节 软件设计原则(15‘)第三节 面向数据流的设计方法(30‘)第四节 面向数据结构的分析设计方法(25‘)第五节 总体设计文档评审(5‘)教学场所或教学方法使用教具作 业课 后 记授课教师 第四章 软件总体设计问题定义、可行性研究和需求分析构成了软件计划阶段,在这个阶段确定了需要做什么,解决了系统开发目标,系统需求规格而软件开发阶段的任务是回答系统如何实现的问题软件开发阶段包括总体设计、详细设计、编码和测试等在总体设计中有两个主要任务: ① 将系统划分成物理元素,即程序、文件、数据库、文档等。

      ② 设计软件结构,即将需求规格转换为软件体系结构、划分出程序的模块组成、模块间的相互关系 、确定数据结构和算法等 总体设计过程首先寻找实现目标系统的各种不同的方案,需求分析阶段得到的数据流图是设想的各种方案的基础与根据然后从这些可供选择的方案中选取若干个合理的方案,为每个合理的方案都准备一份系统流程图、列出组成系统的所有物理元素、进行成本/效益分析,并且制定实现这个方案的进度计划应该综合分析比较这些合理的方案,从中选出一个最佳方案向用户和使用部门负责人推荐如果用户和使用部门的负责人接受了推荐的方案,应该进一步为这个最佳方案设计软件结构通常,设计出初步的软件结构后还要进一步改进,从而得到更合理的结构,进行必要的数据库设计,确定测试要求并且制定测试计划 4.1 总体设计的任务与步骤 4.1.1 总体设计任务 1.系统分析员审查软件计划、软件需求分析文档,提出最佳推荐方案,用系统流程图描述,组成系统物理元素清单,成本效益分析,系统的进度计划,供专家审定,审定后进入设计 2.划分功能模块,将软件功能需求分配给所划分的最小单元模块确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。

      3.编写总体设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具选择分解功能与划分模块的设计原则等 4.1.2 总体设计的过程 S1:设计系统方案 为了实现要求的系统,系统分析员应该提出并分析各种可能的方案,并且从中选出最佳的方案而在分析阶段提供的用数据流图描述逻辑模型是总体设计的出发点数据流图中的某些处理可以逻辑地归并在一个边界内作为一组,另一些处理可以放在另一个边界内作为另一组这些边界代表某种实现策略在可供选择的多种方案中,进一步设想与选择较好的系统实现方案这个方案仅是边界的取舍,抛弃技术上行不通的方法,留下可能的实现策略,但并不评价这个方案 S2:选取合理的方案 分析员在通过问题定义,可行性研究和需求分析后,产生了一系列可供选择的方案,从中选取低成本,中成本,高成本三种方案,必要时再进一步征求用户意见并准备好系统流程图,系统的物理元素清单(即构成系统的程序、文件、数据库、人工过程,文档等),成本效益分析,实现系统的进度计划 S3:推荐最佳实施方案 综合分析各种方案的优缺点,推荐最佳方案,并做详细的实现进度计划用户与有关技术专家认真审查分析员推荐的方案,然后提交使用部门负责人审批,审批接受分析员推荐的最佳实施方案后,才能进入软件结构设计。

      S4:功能分解 要把复杂的功能进一步分解成简单的功能,遵循模块划分独立性原则(即做到模块功能单一,模块与外部联系很弱,仅有数据联系),使划分过的模块的功能对大多数程序员而言都是易懂的功能的分解导致对数据流图的进一步细化,并选用相应图形工具来描述 S5:软件结构设计 用层次图(HC)、结构图(系统结构)来描述模块组成的层次系统,即反映了软件结构当数据流图细化到适当的层次,由结构化的设计方法(SD)可以直接映射出结构图(系统结构) S6:数据库设计、文件结构的设计 根据系统的数据要求,确定系统的数据结构、文件结构对需要使用数据库的应用领域,分析员再进一步根据系统数据要求完成数据库的模式设计,确定数据库物理数据的结构约束进行数据库子模式设计,设计用户使用的数据视图再做数据库完整性与安全性设计,改进与优化模式和子模式(用户使用的数据库视图)的数据存取 S7:制定测试计划 为保证软件的可测试性,软件设计一开始就要考虑软件测试问题这个阶段的测试计划仅从I/O功能做的黑盒法测试计划,详细设计时才能做详细的测试用例与计划 S8:编写总体设计文档 ·用户手册对需求分析阶段编写的用户手册进一步修订 ·测试计划。

      对测试的计划、策略、方法和步骤提出明确的要求 ·详细项目开发实现计划给出系统目标、总体设计、数据设计、处理方式设计、运行设计和出错设计等 ·数据库设计结果使用的数据库简介数据模式设计和物理设计等 S9:审查与复审总体设计文档 根据总体设计阶段的结果,修改更正在需求分析阶段产生的初步的用户手册 总体设计过程如图 4-1所示 图 4-1 总体设计过程 4.2 软件设计的原则 软件设计经过多年发展,已经总结出一些基本的软件设计概念与原则,这些概念与原则经过时间的考验成为软件设计人员完成复杂的软件设计问题的基础主要内容包括有: (1)将软件划分成若干独立成分的依据 (2)怎样表示不同的成分内的功能细节和数据结构 (3)怎样统一衡量软件设计的技术质量 4.2.1 模块化 模块是数据说明、可执行语句等程序对象的集合,可以对模块单独命名,而且可通过名字访问,例如,过程、函数、子程序、宏等等都可作为模块模块化就是把程序划分成若干个模块,每个模块具有一个确定的子功能,把这些模块集成一个整体,可以完成指定的功能 在软件开发过程中,大型软件由于其控制路径多、涉及范围广且变量数目多使其总体结构更为复杂,这样与小型软件相比较其可理解性和可阅读性较差。

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

      采用模块化原理可以使软件结构清晰,不仅容易实现设计,也使设计出的软件的可阅读性和可理解性大大增强这是由于程序错误通常发生在有关的模块及它们之间的接口中,所以采用了模块化技术会使软件容易测试和调试,进而有助于提高软件的可靠性因为变动往往只涉及少数几个模块,所以模块化能够提高软件的可修改性模块化也有助于软件开发工程的组织管理,一个复杂的大型程序可以由许多程序员分工编写不同的模块 4.2.2 抽象与逐步求精 在现实世界中,事物、状态或过程之间存在共性把这些共性集中和概括起来,忽略它们之间的差异,这就是抽象抽象就是抽出事物的本质特性而暂时不考虑它们的细节 处理复杂系统的有效的方法是用层次的方式构造和分析它一个复杂的动态系统首先可以用一些高级的抽象概念构造和理解,这些高级概念又可以用一些较低级的概念构造和理解,如此进行下去,直至最低层次的具体元素这种层次的思维和解题方式必须反映在定义动态系统的程序结构之中,每级的一个概念将以某种方式对应于程序的一组成分 当考虑对任何问题的模块化解法时,可以提出许多抽象的层次在抽象的最高层次使用问题环境的语言,以概括的方式叙述问题的解法;在较低抽象层次采用更过程化的方法,把面向问题的术语和面向实现的术语结合起来叙述问题的解法;最后,在最低的抽象层次用可以直接实现的方式叙述问题的解法。

      软件工程过程的每一步都是对软件解法的抽象层次的一次精化在可行性研究阶段,软件作为系统的一个完整部件;在需求分析期间,软件解法是使用在问题环境内熟悉的方式描述的;当我们由总体设计向详细设计过渡时,抽象的程度也就随之减少了;最后,当源程序写出来以后,也就达到了抽象的最低层 逐步求精与抽象是紧密相关,随着软件开发工程的进展,在软件结构每一层中的模块,表示了对软件抽象层次的一次精化层次结构的上一层是下一层的抽象,下一层是上一层的求精事实上,软件结构顶层的模块,控制了系统的主要功能并且影响全局;在软件结构底层的模块,完成对数据的一个具体处理,用自项向下由抽象到具体的方式分配控制,简化了软件的设计和实现,提高了软件的可理解性和可测试性,并且使软件更容易维护 例: 开发一个 CAD软件,能够实现绘图系统的全部功能,供低级CAD使用 抽象层次 1 用问题所处环境的术语描述这个软件 该软件系统具有与可视化通信的图形界面,能用鼠标代替绘图工具划出各种曲线和直线能完成几何计算和截面视图及辅助视图的设计,图形设计结果存于图形文件中 抽象层次 2 所用术语不再是问题所处环境的语言,但并没给出怎样做的信息,不能直接实现。

      CAD 软件任务 用户界面任务; 创建二维图形任务; 显示图形任务;管理图形任务; end CAD 抽象层次 3 仅以二维图形任务为例 PROCEDURE 创建二维图形 REPEAT UNTIL 创建图形任务终止 DO WHILE 出现与数字仪的交互时 数字仪接口任务; 判断作图请求; 线:画线任务; 圆:画圆任务; .END; DO WHILE 出现与键盘的交互时 键盘接口任务; 选择分析或计算; 辅助视图:辅助视图任务; 截面视图:截面视图任务; .END .END PROCEDURE. 在这一抽象层次上,给出了初步过程表示,模块结构已清楚明朗,求精过程还可进行下去,直到得到源代码 4.2.3 信息隐蔽和局部化 应用模块化原理时,将产生的一个问题:为了得到一组模块,应该如何分解软件结构信息隐蔽原理指出:每一个模块的实现细节对于其他模块来说是隐蔽的,也就是说,模块中所包括的信息不允许其它不需要这些信息的模块调用隐蔽表明有效的模块化可以通过定义一组独立的模块而实现,这些独立的模块间仅交换为完成系统功能而必须交换的信息 模块间的通信仅使用对于。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.