第5章-概要设计(5.1-5.3).pptVIP

  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文档。上传文档
查看更多
主要内容 概要设计任务和过程 软件设计基本原则 面向数据流图的设计方法 5.1 概要设计的任务和过程 需求分析:软件系统必须“做什么” ;软件设计:“如何做”才可以满足需求规格说明中规定的各项需求。 从工程管理的角度来看,软件设计通常分为两步,即概要设计和详细设计。 概要设计的基本目的是回答“概括地说,软件系统应如实现”这一问题。因此,概要设计有时称为初步设计或总体设计。概要设计的关键是确定软件的总体结构,即确定软件系统的组成成份(子系统或模块)以及各组成成份之间的相互关系。 详细设计是对概要设计结果的进一步细化,其主要任务是确定软件系统各组成成份内部的数据结构和算法过程。 方法:结构化方法、面向对象方法 结构化设计 面向对象设计 5.2 软件设计基本原则 5.2.1 抽象与求精 抽象是一种常用的思考和解决问题的方式,即抽取事物的本质的共同特性而暂时避开不必要的低层细节。 方式:过程抽象、数据抽象和控制抽象。 抽象过程是指具有特定功能的一个命名的指令序列。(如:二维图形创建 ) 抽象数据则是描述数据对象的一个命名的数据集合。(如:“图画”数据对象 ) 抽象控制包含了一种程序控制机制而无须刻画其内部细节。(如:操作系统中的“同步信号量”) 求精 求精是由N. Wirth最初提出的一种自顶向下设计策略,其主要思想是:将某个宏观功能不断分解,逐步确定过程细节,直至用程序设计语言描述的算法实现为止。 抽象使得设计人员能够避开过早地陷入细节之中刻画过程和数据。 求精能够帮助设计人员随着设计过程的深入而不断呈现更低层次的信息。 5.2.2 模块化和信息隐藏 软件应该分解成可单独命名的且可访问的部件,这些部件称为模块。 分而治之:把一个大问题分解成若干小问题来解决时将会更加容易。 (成本?) 信息隐藏 如何确保模块数落在“最小代价区”?依据什么标准划分模块? 由Parnas倡导的“信息隐藏”是指模块中所包含的信息(包括数据和过程)对不需要这些信息的其它模块是不可访问的。 抽象有助于定义组成软件的过程(或信息)实体; 隐藏定义并加强了对模块内部访问的约束,有助于分离模块的实现者和使用者。 5.2.3 模块独立性 模块独立性是模块化、抽象和信息隐藏的直接产物,其基本含义是每一个模块只完成功能需求中的一个特定的子功能,而且从程序结构的其它部分来看这一模块只具有一个简单的接口。 模块的功能独立性可以使得模块既容易开发又容易维护。 模块独立性有两个定性的度量标准:内聚度和耦合度。 内聚度 内聚度(Cohesion)是指模块内部各成分联系紧密的程度。 通常,内聚度越高,模块的独立性就越强。 G. Myers定义了七种类型的内聚,大致按照内聚程度从高到低的顺序是:功能内聚、信息内聚、通信内聚、过程内聚、时间内聚、逻辑内聚和偶然内聚。 设计模块时,应该尽可能避免使用偶然内聚等低级内聚的模块,争取高级内聚的模块,以提高模块的独立性。 偶然内聚 模块内部各成分在功能上不相关或关系松散。 例如:程序员在写程序时,发现一组不同语句分别在多个子程序中出现,于是将这组语句单独组成一个模块,这样的模块便是偶然内聚模块。 缺点:模块不易理解,不易维护,不易复用。 逻辑内聚 模块完成多个逻辑上相近或相关的功能,并且每一次调用只选择该模块中的一个功能执行。 (多个逻辑功能交织) 例如:模块完成所有类型的输入和输出,如磁盘、磁带等。 与偶然内聚相比,它表明了模块各成分之间在功能上的关系。 但为了执行不同的功能,需要传递控制信息(控制耦合)。 时间内聚 模块完成多个具有时间相关性的功能。 例如:初始化模块。(时间相关) 时间内聚的模块其内部的多个功能通常都是弱相关的,但是,这些功能通常与其它模块中的功能强相关。在一般情况下,时间内聚模块的各部分可以以任意次序执行,因而与逻辑内聚相比,其内部逻辑要简单些。 过程内聚 模块完成多个需要按一定的步骤依次完成的功能。(过程相关---控制耦合) 例如:在用程序流程图设计模块时,若将程序流程图中的一部分划出各自组成模块,便形成过程内聚。 为何比时间内聚的内聚度高? 通信内聚 模块完成多个需要按一定的步骤依次完成的功能,并且这些功能的完成都依赖于相同的公用数据。(数据相关—数据或标记耦合) 例如:一个模块的各功能部分都使用了相同的输入数据和(或)产生了相同的输出数据。在使用数据流图来划分模块时,通常会得到通信内聚的模块。 信息内聚 模块完成多个功能,而每一个功能都有各自的入口点和独立的代码,但功能都依赖于同样的数据结构。(数据相关) 通常,信息内聚的模块,其前一成分的输出是后一成分的输入。 功能内聚 模块只完成一个单一的功能或者只实现一个单一的目标,则称为功能内聚。 这样的模块很容易被复用,也很容易维护

文档评论(0)

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

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

1亿VIP精品文档

相关文档