第四讲软件设计softwaredesign.ppt

  1. 1、本文档共131页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四讲 设计工程 (Design Engineering) 目标: 掌握设计工程的基本知识; 了解基本的体系结构设计方法和模型; 了解构件级设计的基本原则与方法; 掌握用户界面设计的一些原则与基本设计活动。 内容 设计工程 体系结构设计 构件设计 用户界面设计 设计文档与有效性验证 1 设计工程 1.1 软件工程中的设计 设计是一个把问题转换成解决方案的创造性过程; 设计解决的是“如何实现系统”的问题; 从工程管理的角度,软件设计可以分成概要设计(总体设计、系统设计)与细节设计(详细设计) 设计的重要性 设计提供了软件的表示,使得软件的质量评价成为可能。 软件设计是将用户要求准确地转化成为最终软件产品的唯一途径。 软件设计在软件过程中处于技术核心,它是建模活动的最后一个软件工程活动,是后续开发步骤及软件维护工作的基础。 如果没有设计,建立的将是一个不稳定的系统 : 设计的重要性 从分析模型到设计模型 从分析模型到设计模型 1.2 设计概念 1.2.1 模块化 1.2.1 模块化 在计算机软件领域,模块化的概念已被推崇了近四十年。目前,几乎所有的软件体系结构都体现了模块化的思想,即把软件划分为可独立命名和编址的构件,每个构件称为一个模块,每个模块完成一个子功能,当把所有模块组装到一起成为一个整体时,便可以完成指定的功能。 模块组成系统或子系统。 “一个复杂问题分割成若干个容易解决、容易管理的小问题后更易于求解”,模块化正是以此为依据把系统划分成若干个模块,各个击破。 模块划分与成本 如果模块是相互独立的,模块越小,每个模块的工作量越少;但当模块数增加时,模块间的联系随之增加,把这些模块联接起来的工作量也随之增加。 1.2.2 信息隐藏与独立性 信息隐藏原理告诉我们,模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息的模块来说不可访问;每个模块只完成一个相对独立的特定功能;模块之间仅交换那些为完成系统功能必须交换的信息,即模块应该功能独立的。 采用信息隐藏原理指导模块设计有很多好处: 1)它支持模块的并行开发; 2)减少测试和后期维护的工作量。因为测试和维护阶段不可避免地要修改设计和代码,模块对大多数数据和过程处理细节的隐藏可以减少错误向外传播。 3)整个系统扩充功能只需“插入”新模块,原有的多数模块无须改动。 1.2.2 信息隐藏与独立性 模块独立性(Independency) 如果说,一个模块在不需要另一个模块的情况下,能够完整地执行其功能,我们就称这两个模块是完全独立的。 模块独立性的概念是模块化、抽象和信息隐藏概念的直接产物,模块独立性是通过开发具有“专一”功能和“避免”与其他模块过多交互作用的模块来达到的。 模块独立性可用两个定性准则来度量:耦合性(coupling)和内聚性(cohesion)。 耦合是模块之间相对独立性的量度,而内聚则是模块功能相对强度的量度。 耦合性(coupling) 耦合性是对软件程序结构中各个模块之间相互关联程度的一种度量。 耦合的强弱取决于模块间接口的复杂性、进入或调用模块的位置、方式以及通过接口传送数据的多少等。 在设计软件时应追求尽可能松散耦合的系统。因为对这类系统中任一模块的设计、测试和维护相对独立。由于模块间联系较少,错误在模块间传播的可行性也随之变小。模块间的耦合程度直接影响系统的可理解性、可测试性、可靠性和可维护性。 内聚性(cohesion) 内聚是信息隐藏和局部化概念的自然扩展,它标志一个模块内部各成分彼此结合的紧密程度。 内聚和耦合是相互关联的。在程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。但这也不是绝对的。 软件概要设计的目标是力求增加模块的内聚,尽量减少模块间的耦合。但增加内聚比减少耦合更重要,应当把更多的注意力集中到提高模块的内聚程度上来。 1.2.3 抽象 人类在认识复杂现象的过程中使用的最强有力的思维工具就是抽象。人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。 把这些相似的地方集中和概括起来,暂时忽略它们之间的差异,这就是抽象。或者说,抽象就是抽出事物的本质特性而暂时不考虑它们的细节。 一个复杂的动态系统首先可以用一些高级的抽象概念构造和理解,这些高级概念又可以用一些较低级的概念构造和理解,如此进行下去,直至最低层次的具体元素。 软件工程过程的每一步都是对较高一级抽象的解作一次较具体化的描述。 过程抽象与数据抽象 过程抽象与数据抽象 “逐步求精”是与“抽象”密切相关的一个概念,它由N.Wirth提出,可视为一种早期的自顶向下设计策略,其主要思想是:针对某个功能的宏观描述,用逐步求精的方法不断地分解,逐步确立过程细节,直至该功能

文档评论(0)

报告论文库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档