软件工程导论class6总体设计.ppt
《软件工程导论class6总体设计.ppt》由会员分享,可在线阅读,更多相关《软件工程导论class6总体设计.ppt(67页珍藏版)》请在三一办公上搜索。
1、软件工程导论第 6 课,第 5 章 总体设计,第5章 总体设计,分析阶段“做什么”软件设计“怎样做”将分析模型转换为软件设计,第5章 总体设计,总体设计的两项任务:划分出组成系统的物理元素-程序、文件、数据库、人工过程和文档 设计软件的结构-确定每个程序的模块组成及模块之间的相互关系。,第5章 总体设计,软件设计是后续开发步骤及软件维护工作基础如果没有设计,只能建立一个不稳定的系统结构,第5章 总体设计,从工程管理的角度来看,软件设计分两步完成总体设计(概要设计),将软件需求转化为数据结构和软件的系统结构。详细设计,即过程设计。通过对结构表示进行细化,得到软件详细的数据结构和算法。,5.1 设
2、计过程,总体设计的过程(两个主要阶段):系统设计:确定系统的具体实现方案。结构设计:确定软件结构。,软件设计的9个步骤,1设想供选择的方案,提出各种可能的实现方案以需求分析阶段的数据流图为出发点,画自动化边界,形成不同的实现系统方案设想把数据流图中的处理分组的各种可能方法,抛弃在技术上行不通的分组方法余下的分组方法代表可能的实现策略,并且可以启示供选择的物理系统,2 选取合理的方案,从前一步得到的一系列供选择的方案中选取若干个合理的方案通常至少选取低成本、中等成本和高成本的三种方案在此基础上分析员对每种方案准备四份文档:(1)系统流程图(2)组成系统的物理元素清单(3)成本/效益分析(4)实现
3、这个系统的进度计划,3 推荐最佳方案,综合分析对比各种合理方案的利弊,从中选出一种自己认为是最理想的方案推荐用户和技术专家应认真审查所推荐的最佳系统如果该系统确实符合用户的需要,并且是在现有条件下完全能够实现的,则应该提请使用部门负责人进一步审批在使用部门的负责人也接受了分析员所推荐的方案之后,将进入总体设计过程的下一个重要阶段结构设计,4 功能分解,首先是进行结构设计,确定系统是由哪些模块组成 的,以及这些模块之间的关系,确定软件体系结构、数据结构其次是过程设计,确定每个模块的处理过程确定详细的数据结构、算法为确定软件结构首先需要从实现角度把复杂的功能进一步分用算法描述仔细分析数据流图中的每
4、个处理,如果一个处理 的功能过分复杂,必须把它的功能适当地分解成一系列比较 简单的功能应该使每个功能对大多数程序员而言都是明显易懂的工具:系统层次图System Design Hierarchy及(输入/输出图)HIPO,5 设计软件结构,任务:确定模块组织成良好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块 再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能:方法:层次图 结构图 面向数据流的设计方法,6 设计数据库,任务:在需求分析阶段所确定的系统数据需求的基础上,进一步设计数据库模式设计:确定数据库的逻辑结构,常见的数据库形式有关系、层次或
5、网状等子模式设计:为系统中各用户设计出各自的数据视图存储模式设计:确定数据库的空间需求、存储格式、索引组成等,7 制定测试计划,优点:早期阶段考虑测试问题,促使软件设计人员在设计时注意提高软件的可测试性,8 书写文档,(1)系统说明主要内容 系统流程图:描绘系统构成方案、组成系统的物理元素 成本/效益分析 对最佳方案的概括描述、精化的数据流图 用层次图或结构图描绘的软件结构 用IPO图或其它工具简要描述各个模块的算法 模块间接口关系、建立需求、功能和模块三者之间的交叉参照关 系,8 书写文档,用户手册:根据总体设计阶段的结果,修改更正在需求分 析阶段产生的初步的用户手册测试计划:包括测试策略,
6、测试方案,预期的测试结果,测试进度计划等等。详细的实现计划数据库设计结果,9审查和复审,技术审查管理复审:部门的负责人从事,5.2 设计原理,5.2.1 模块化模块:由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个 总体标识符代表它模块化:把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足 用户的需求。,5.2 设计原理,模块化依据:设函数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x需要的工作量(时间)。对于两个问题P1和P2如果 C(P1)C(P2),显然E(P1)E(P2)C(P1
7、+P2)C(P1)+C(P2)E(P1+P2)E(P1)+E(P2)结论:如果一个问题由P1和P2两个问题组合而成,那么它的复杂程度大于分别考虑每个问题时的复杂程度之和,即把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了,5.2 设计原理,模块化优点软件结构清晰使软件容易测试和调试,提高软件的可靠性模块化能够提高软件的可修改性模块化有助于软件开发工程的组织管理。,5.2.2 抽象,定义:抽出事物的本质特性而暂时不考虑它们的细节。处理复杂问题的方法:忽略细节,分层理解问题,自顶向下层层加细。模块化可以提出许多抽象的层次,不同的层次用不同的方法解决问题 例:开发一个CAD软件,实现
8、一个二维绘图系统的全部功能,供低级计算机辅助设计使用。,5.2.2 抽象,抽象层次I:用问题所处环境的术语来描述这个软件。该软件包括一个计算机绘图界面,向绘图员显示图 形,以及一个数字化仪界面,用以代替绘图板和丁字 尺。所有直线、折线、矩形、圆及曲线的描画、所有 的几何计算、所有的剖面图和辅助视图都可以用这个 CAD软件实现。,5.2.2 抽象,抽象层次II:任务需求的描述。列出“What”而不是“How”。CAD SOFTWARE TASKS:user interaction task;2-D drawing creation task;graphics display task;drawi
9、ng file management task;END,5.2.3 逐步求精,定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。依据:Miller法则-一个人在任何时候都只能把注意力集中在(72)个知识块上原则:把精力集中在与当前开发阶段最相关的那些方面上,而忽略那些对整体解决方案来说虽然是必要的,然而目前还不需要考虑的细节,这些细节将留到以后再考虑,5.2.3 逐步求精,实质:把一个时期内必须解决的种种问题按优先级排序的技术,确保每个问题都将被解决,而且每个问题都将在适当的时候被解决,一个细化的过程抽象与求精是互补的过程 抽象过程,数据,忽略底层细节 求精设计中揭示出低层细节,5.
10、2.4 信息隐藏和局部化,信息隐藏原理:应该这样设计和确定模块,使得一 个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的隐藏模块的实现细节,“细节隐藏”独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息局部化:把一些关系密切的软件元素物理地放得彼此靠近优点:易于软件的修改,错误传播大大减少,5.2.5 模块独立,模块独立:每个模块完成一个相对独立的子功能,并且和其他模块之间的关系很简单独立性的重要性有效的模块化的软件比较容易开发出来独立的模块比较容易测试和维护定性标准度量 内聚Cohesion:衡量一个模块内部各个元素彼此结合的紧密程度耦合Coupling:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 导论 class6 总体 设计
链接地址:https://www.31ppt.com/p-6441954.html