第八章软件设计基础.docVIP

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

第八章 软件设计基础 教学内容: (1)软件设计基本过程,抽象与逐步求精,模块化与信息隐藏; (2)软件总体结构设计 (3)数据结构和软件过程设计 (4)过程设计技术和工具:N-S图、判定表、过程设计语言、GANTT图: (5)设计规格说明与评审 重点: △过程设计技术和工具 难点: ※体系结构的设计 基本要求:了解设计规格说明书的撰写 软件设计概述 软件设计的任务: 把需求阶段所产生的软件需求说明转换为用适当手段表示的软件设计文档。“做什么”——>“怎么做”。 软件设计划分两个阶段: 概要设计:确定软件的结构,即软件组成,以及各组成成分(子系统或模块)之间的相互转换。 详细设计:确定模块内部算法和数据结构,产生描述各模块程序的详细设计文档。 软件设计的方法:面向数据流,面向数据结构。 软件设计的策略 模块化设计: 模块、模块化: 模块:是数据说明,可执行语句等程序对象的集合。例:过程,函数,子程序,宏等。 模块化:是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集中起来组成一个整体,可以完成指定的功能,满足问题的要求。 分解:将一个复杂的问题,划分为几个较小问题。 “将一个复杂的问题分解为许多小问题,可以减少解决问题的工作量。使原来的问题也就容易解决了。”- 这是模块化设计的依据。 论证:假设C(P)是度量对一个问题P理解复杂性的函数。Z(P)是度量为解决问题P所需工作量(用时间计算)的函数,则给定问题P1,P2,如果C(P1)>C(P2),那么有Z(P1)>Z(P2),即一个问题越复杂,解决它所需要的工作量就越大,需要花费更多的时间。 根据人们解决一般问题的实践的经验,有下面一条客观规律存在: C(P1+P2)>C(P1)+C(P2) 则可得到:Z(P1+P2)>Z(P1)+Z(P2) “无限分解软件,最后为了开发软件而需要的工作量小的可以忽略”- 不成立。 论证:随着模块数目增加,每个模块的规模减少,成本降低。但相应的设计模块间的接口成本将增加,使得软件总成本呈抛物线形状,存在最小成本区。(如图所示) 信息隐蔽:指每个模块的实现细节对于其他模块来说是隐蔽的,即模块中所包含的信息(数据与过程)。应不允许其他不需要这些信息的模块使用(即隐蔽起来)。只有为了完成软件的总体功能而必须在模块间交换的信息。才允许在模块间进行传递。 目的:是软件的修改或错误局限在一个或几个模块内部,不会涉及软件其他部分。 模块独立性:模块具有独立功能,且和其他模块之间没有过多的相互作用。即每个模块完成一个相对独立的特定子功能,且和其他模块之间的关系很简单。是软件划分模块时要遵守的准则,也是判断模块构造是否合理的标准。 度量模块独立性的准则:内聚、耦合。 内聚:是模块功能强度(即一个模块内部各个元素彼此结合的紧密程度)的度量。模块内部各元素之间联系越紧密,内聚性越强。 耦合:是模块之间相对独立性(即互相连接的紧密程度)的度量。模块间连接越紧密,联系越多,耦合性越强。 模块的独立性越高,其块内联系越紧密(内聚性强),块间联系越弱(耦合性越弱) 内聚: 弱 强 偶然内聚 逻辑内聚 时间内聚 过程内聚 通信内聚 顺序内聚 功能内聚 低 内 聚 中 内 聚 高 内 聚 偶然内聚:模块内部各组成成分在功能上是互不相关的。 例:几个模块都需要执行“读A”,“写B”等相同的一组操作,为避免重复书写,可把这些操作记成一个模块,供有关模块调用。 逻辑内聚:通常由若干个逻辑功能相似的成分组成。 例:一个用于计算机全班学生平均分和最高分的模块,无论计算那种分数,都要经过读入全班学生分数。进行计算、输出计算结果等步骤,除了中间计算外均相同。(两种逻辑相似的功能放入同一模块省去程序中的重复。但却引入用作判断的开关量,增加了块间耦合)。 时间内聚:模块所包含的成分是由相同的执行时间联结在一起的。 例:初始化模块中可能包含“为变量赋初值”,“打开某个文件”等为正式处理做准备的功能。 过程内聚:一个模块内部的处理是相关的,是必须按某一特定次序执行。 例:打开文件,读写文件,关闭文件。 通信内聚:模块内部各个成分都使用同一个输入数据。或者产生同一个输出数据。借共用数据联系在一起。 例: 顺序内聚:模块中各组成成分是顺序执行的,一个处理框的输出是下一处理框的输入。 例:读入分数,计算平均分,输出结果。 功能内聚:模块中的所有成分结合在一起,用于完成一个单一的功能。 例:对一个数开平方;求一组数的最大值;从键盘读入一行字符等。 耦合: 弱

文档评论(0)

18273502 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档