第5章 软件总体的设计.ppt

  1. 1、本文档共115页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设 计 数据设计 体系结构设计 过程设计 从工程管理的角度来看,软件设计分两步完成: 总体设计 详细设计 第5章 总体设计 5.2 设计原理 软件设计过程中应该遵循的基本原理和相关概念 (1) 模块化 模块化就是对一个复杂问题,自顶向下,逐层把软件系统划分成独立命名且可独立访问的模块的过程,每个模块完成一个子功能,模块集成起来构成一个整体,完成指定功能满足用户的需要。 模块,程序中的数据说明、可执行语句等程序对象组成的集合,可单独命名,并通过名字来进行访问。 过程、函数、子程序、对象 软件结构清晰,容易理解 软件容易测试和调试 软件易于修改 提高软件开发效率 (2)抽象 抽象就是把事物本质的共同特性提取出来而不考虑其它细节。 抽象可以有不同的抽象层次,从定义阶段到编码阶段抽象层次逐步降低,最后当源程序写出来,抽象达到最低层次。 抽象简化了软件的设计和实现,提高了软件的可理解性和可测试性,使软件更容易维护。 (3)自顶向下,逐步求精 逐步求精:为了能集中精力解决主要问题,而推迟对问题细节的考虑。 (4)信息隐蔽 设计模块时,使模块所包含的信息,不允许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信息。 例如:对象 局部化 把一些关系密切的软件元素物理的放的比较靠近。 同一个模块里 有利于软件的修改,减少修改引入的错误传播到其它模块的机会。 (5)模块的独立性 模块独立的含义: 模块独立是指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系简单。 具有独立性的模块的软件比较容易开发 接口简单、相互影响小有利于分工合作 独立的模块比较容易测试和维护 修改设计和程序的工作量比较小、 错误传播范围小 需要扩充功能是能够“插入模块” 模块独立性的度量 模块独立性取决于模块的 内部和外部特征。 SD方法提出的定性的度量标准: 模块之间的耦合性 模块自身的内聚性 耦合衡量不同模块彼此间相互依赖的紧密程度。 内聚衡量模块内部各个元素彼此结合的紧密程度。 1.模块独立性的度量之一:耦合性 不同模块彼此间相互依赖的紧密程度。 耦合性越高,模块独立性越弱 模块间的耦合的类型 (1) 非直接耦合 同级的两个模块没有直接关系(模块1和模块2),他们之间的联系完全通过主模块的控制和调用实现的,模块独立性最强。 (2) 数据耦合 一个模块访问另一个模块时,彼此之间是通过数据参数交换信息,而且参数都是简单的数据。模块独立性也比较强。 属松散耦合。 数据耦合举例 (3) 标记耦合(特征耦合) 如两个模块通过传递数据结构 (不是简单数据,而是记录、数组 等)加以联系,共享这一数据结构,则称这两个模块间存在标记偶合。 标记耦合举例 标记耦合把整个数据结构作为参数传递而被调用模块可能只需要其中一部分数据元素,将导致对数据访问失去控制。 将标记耦合修改为数据耦合举例 把在数据结构上的操作全部集中在一个模块中,也可以消除这种耦合。 (4) 控制耦合 一模块向下属模块传递的信息 (开关量、标志等控制被调用模块决策的变量) 控制了被调用模块的内部逻辑。 控制耦合举例 控制耦合增加了理解和编程的复杂性, 调用模块必须知道被调模块的内部逻 辑,增加了相互依赖,对被控制模块 的修改,都会影响控制模块。 去除模块间控制耦合的方法: (1)将被调用模块内的判定上移到调 用模块中进行 (2)被调用模块分解成若干单一功 能模块 改控制耦合为数据耦合举例 (6) 公共耦合(公共数据区耦合) 一组模块引用同一个公用数据区 (也称全局数据区、公共数据环境)。 公共数据区指: 磁盘文件 共享通讯区 内存公共覆盖区等 公共耦合举例 公共耦合有两种情况:松散的公共耦合、紧密的公共耦合。 公共耦合有两种情况:松散的公共耦合、紧密的公共耦合。 (7) 内容耦合 2. 模块独立性的度量之二:内聚性 一个模块内各元素之间的关联程度。 模块的内聚性类型 (1)偶然内聚(巧合内聚) 模块内各部分间无联系,或者有联系也很松散。 例如:编写一个程序时,有一组没有任何联系的语句在许多模块中重复出现多次,为了节省空间,于是把这些语句抽出来放在一个模块中,使用时调用。 (2) 逻辑内聚 把几种相关任务(逻辑上相似 的任务)组合在一模块内,每次调用由传给模块的参数确定执行哪种任务,通常为单入口多任务模块。 一个子程序将打印季度开支报告、月份开支报告和日开支报告.具体打印哪一个,将由传入的控制标

文档评论(0)

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

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

1亿VIP精品文档

相关文档