惠州学院 软件工程导论 第五节__总体设计 刘宇芳老师.docVIP

惠州学院 软件工程导论 第五节__总体设计 刘宇芳老师.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章 总体设计 一、总体设计概述 1、软件设计概述 一旦软件需求确定之后,就进入开发阶段。开发阶段由三个互相关联的步骤组成:设计、实现(编码)和测试。每个步骤实际上都按某种方式进行信息变换,最后得到有效的计算机软件。其中“设计”活动是获取高质量、低耗费、易维护软件的一个最重要环节。 可行性分析 -- Why ? Do or not ? Who ? 需求分析 -- What ? 设计 -- How do ? 在软件需求分析阶段已经完全弄清楚了软件的各种需求,较好地解决了目标软件系统要“做什么”的问题,并已在软件需求规格说明中详尽和充分地阐明了这些需求。下一步就要着手实现软件的需求,即要着手解决“怎么做”这个软件的问题。 总体设计 (概要设计)--将软件需求转化为软件的数据结构和 系统结构,确定各组成成分(子系统或模块)之间的相互关系 设计 详细设计--确定每个模块内部的算法和数据结构,产生描述 各模块处理过程的详细文档。 在技术上,概要设计和详细设计又由若干活动组成。除上述的软件结构设计、数据结构设计和过程设计外,对现代应用软件,还应该包括一个独立的界面设计。 2、总体设计的任务 划分出组成系统的物理元素--程序、文件、数据库、人工过程和文档等等。但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。 设计软件的体系结构,也就是要确定系统是由哪些模块组成的,以及这些模块相互间的关系。 3、总体设计的必要性 可以站在全局高度上,花较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构,从中选出最佳方案和最合理的软件结构,从而用较低成本开发出较高质量的软件系统。 二、总体设计的过程 典型的总体设计过程包含以下两个阶段,共9个步骤: 系统设计阶段,确定系统的物理实现方案 (1) 设想供选择的方案 在设想供选择方案时,以需求分析得到的数据流图为出发点,画出自动化边界,形成不同的实现的物理方案。P6-8 (2) 选取合理的方案 P9 (3) 推荐最佳方案 P10 结构设计阶段,确定软件的结构 (4) 功能分解,从实现的角度细化逻辑模型 P12 (5) 设计软件结构 P13 (6) 设计数据库 P14 (7) 制定测试计划 P14 (8) 书写文档 P15~16 (9) 审查和复审 P16 三、模块化设计原理 是软件设计过程中应遵循的基本原理和相关概念。包括:模块化、抽象、逐步求精、信息隐藏和局部化、模块独立。 1、模块与模块化 模块是软件中可独立命名和编制的部件,每个部件称为一个模块,当把所有模块组装到一起时,便可获得满足问题需要的一个解。 按照模块的定义,过程、函数、子程序和宏等,都可作为模块。面向对象方法学中的对象是模块,对象内的方法(或称为服务)也是模块。模块是构成程序的基本构件。 模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能,满足用户的需求。 模块化的依据: C(P1+P2) C(P1)+C(P2); E(P1+P2) E(P1)+E(P2) C为问题的复杂度,E为解题需要的工作量。P18 这个不等式导致“各个击破”的结论----把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。这就是模块化的根据。 模块化与软件成本: P20~P21 导致一个结论:应该模块化,但不能过分模块化。 模块化给软件设计带来益处: P22 模块间关系:层次关系、通信关系----软件结构是模块化的和分层次的 层次关系 通信关系 2、抽象与逐步求精 抽象就是抽出事物的本质特性(共性),而暂时不考虑它们的细节。 抽象是人类认识复杂现象和解决复杂问题时使用的思维方法,是控制复杂性的基本策略。抽象要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。 抽象的特点 (1) 忽略细节和差异 (2) 分层理解问题 (3) 自顶向下分解模块 逐步求精最初是由Niklaus Wirth提出的一种自顶向下的设计策略。按照这种设计策略,程序的体系结构是通过逐步精化处理过程的层次结构而设计出来的。通过逐步分解对功能的宏观陈述而开发出层次结构,直至最终得出用程序设计语言表达的程序。 软件工程过程的每一步都是对软件解法的抽象层次的一次精化;P25 随着软件开发工程的推进,在软件结构每一层中的模块,表示了对软件抽象层次的一次精化。 抽象与求精是一对互补的概念。抽象代表有些细节放到更底的层次去考虑;求精代表在设计过程中低层逐步揭示出其高层的细节。抽象使得设计者能够简要说明过程和数据,同时忽略低层细节;求精则帮助设计者在设计过程中逐步揭示出低层细节。 ----在软件设计中,我们

文档评论(0)

187****5045 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档