模块和模块化.ppt

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模块和模块化

概要设计的表示形式 正文加工系统的层次图 带编号的层次图( HIPO ) 与层次图( H )中每个方框相对应(按编号),都有一张IPO图描述该框代表的模块的处理过程,称为HIPO图。 IPO图的一个例子 软件的模块结构图: 描述一个软件系统由哪些模块组成,以及模块之间的调用关系 结构图的基本成分有:模块、调用和数据 模块是指具有一定功能并可以用模块名调用的一组程序语句,如函数、子程序等,它们是组成程序的基本单元 一个模块具有其外部特征和内部特征 外部特征包括:模块的接口(模块名、输入/输出参数、返回值等)和模块的功能 内部特征包括:模块的内部数据和完成其功能的程序代码 在结构图中,模块用矩形框表示,每个模块都有一个应能适当反映该模块功能的名字 调用(call):用从一个模块指向另一个模块的箭头来表示,其含义是前者调用了后者 为了方便,有时常用直线替代箭头,此时,表示位于上方的模块调用位于下方的模块 数据(data):模块调用时需传递的参数可通过在调用箭头旁附加一个小箭头和数据名来表示,其中小箭头的方向是数据的传输方向 结构图的几个概念 深度:程序结构图中控制的层数,例如图中所示的结构图的深度是5 宽度:程序结构图中同一层次上模块总数的最大值,例如图中所示的结构图的宽度为7 扇出(fan out):该模块直接调用的模块数目。例如,例如图中模块M的扇出是4,模块A的是2,模块B的扇出是1 扇入(fan in):能直接调用该模块的模块数目。例如图中模块G的扇入是1,模块I的扇入是2,模块R的扇入是4 深度和宽度在一定程度上反映了程序的规模和复杂程度 相对而言,如果程序结构图的深度和宽度较大,则说明程序的规模和复杂程度都较大。 模块的扇入扇出会影响结构图的深度和宽度,例如减少模块的扇出,可能导致宽度变小而深度增加 一个模块的扇出过大通常意味着该模块比较复杂,然而扇出太少,可能导致深度的增加 一般情况,一个模块的扇出以3~9为宜 一个模块的扇入表示有多少模块可直接调用它,它反映了该模块的复用(reuse)程度,因此模块的扇入越大越好 模块和模块化 模块化:当系统的每项功能恰好由一个输入输出都明确定义的组件完成的时候,我们称这个系统模块化。 模块——表示能够用计算机程序代码实现的,相对独立的单一数据处理功能,所以模块有时也叫功能模块。 进一步明确模块是拥有明确定义的输入、输出和特性的程序实体。 设计方法的选择 应该允许不同的设计者使用他们喜欢的技巧,只要他们的文档能让其他设计者明白就可以了。 设计方法的选择又是取决于设计者的偏好,而更多的时候取决于系统要求的结构或数据。 软件设计中涉及的问题 抽象(abstract)与细化(refinement) 抽象:分层次考虑和处理问题(数据和过程) 细化:从高到低的逐步分解过程 信息隐藏 对其它模块隐藏模块内部的数据和过程 抽象 抽象是对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。 先注意问题的本质及描述,其次是实现过程或细节。 数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。 代码抽象:描述某类对象的共有的行为特征或具有的功能。 抽象的实现:通过类的声明。 模块化设计的好处 信息隐藏 从不同角度了解系统 将难以解决的问题独立出来;抽象层次通过逐层分析来了解问题 允许不同的模块采用不同的设计方法 模块化设计 把大型软件按照规定的原则划分成一个个较小的、相对独立但又相互关联的模块 重要指导思想: 分解 模块独立性 分解(Decomposition) 模块化是为了使一个复杂的大型程序能被人的智力所管理 设函数c(x)定义问题x的复杂程度,函数E(X)确定解决问题x需要的工作量(时间)。对于两个问题P1 和P2,如果 模块化的依据 人类解决一般问题时一个有趣的规律: C (P1+P2)C (P1)+C (P2) E (P1+P2)E (P1)+E (P2) 结论:各个击破——把复杂的问题分解成容易解决的小问题,原来的问题也就容易解决了 问题提出 如果无限的分割软件,最后为了开发软件而需要的工作量也就小得可以忽略了。 ? 模块数与开发工作量的关系 模块划分的基本原则 概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准。 但是到目前为止,没有统一的标准判断一个系统化分成几个模块是最优的。 模块划分的四项基本原则 1.模块独立性强 块内联系强 块间联系弱 2.高内聚 模块内部各成分之间 3.低耦合 一个模块与其它模块之间 4.公共(共享)模块 多个模块公用 模块独立性 问什么模块的独立性很重要? 有效模块化的软件容易开发出来 独立的模块比

文档评论(0)

yy558933 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档