- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)