《软件工程》各章节重点.ppt

  1. 1、本文档共211页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
--软件设计 内容提要 软件设计基础原理 概要设计 详细设计 软件设计 软件设计是软件开发的最重要阶段; 是保证软件质量的重要步骤; 软件设计是把用户需求准确转化为软件系统的唯一途径。 软件设计 软件设计是把软件需求转换为软件表示的过程。它包含两个阶段: 概要设计 将软件需求转化为数据结构和软件的系统结构。 详细设计 通过对结构表示进行细化,得到软件详细的数据结构和算法。 软件设计的基础概念 软件结构 软件结构包括两部分,一是软件模块的层次结构;二是数据的结构。 通常软件的体系结构通过一个划分过程来完成。该划分过程从需求分析确立的目标系统模型出发,对整个问题进行分解,使其每一部分用一个或几个软件成分加以解决,从而解决整个问题。该过程可用下图形象表示: 软件设计的基本原理 抽象 模块化 逐步求精 信息隐藏与局部化 模块的独立性 抽象 抽象,即析取出事物的本质特征而不考虑他们的细节。抽象是人类认识复杂问题的重要思维工具之一。 抽象的过程是从特殊到一般的过程,上层概念是下层概念的抽象。下层概念是上层概念的精化和细化。 模块化 模块是数据说明、可执行语句等程序对象的集合,它是单独命名的,并且可以通过名字来访问的。例如,过程。函数、子程序、宏等等都可作为模块。 模块具有三个基本属性: 功能—模块实现的功能 逻辑—描述模块内部怎么做 状态—模块使用时的环境和条件 模块化 模块的特征: 内部特征—模块的名字、参数等; 外部特征—完成模块功能的程序代码和模块内部数据。 模块化,即把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件。模块化实际上是系统分解和抽象的过程。 模块化 理想的模块 每个模块只解决一个问题; 每个模块的功能应该明确,使人容易理解; 模块之间的联结关系简单,具有独立性; 用理想模块构建的系统,容易使人理解,易于编程,易于测试,易于修改和维护。 对用户来说,其感兴趣的是模块的功能,而不必理解模块内部的结构和原理。 模块化的理论依据 设函数C(x)定义问题x的复杂程度,函数E(x)确定解决问题x需要的工作量。对于两个问题P1和P2,如果有:C(P1)C(P2), 则显然有:E(P1)E(P2); 根据人类解决一般问题的经验,有: C(P1+P2)C(P1)+C(P2); 进而获得: E(P1+P2)E(P1)+E(P2)。 模块化的理论依据 此不等式表明: 单独解决问题P1和P2所需的工作量之和,比把P1和P2合起来作为一个问题来解决所需要的工作量要少。 这种“分而治之”的思想提供了模块化的理论依据:把复杂问题分解成许多容易解决的小问题,则原来复杂的问题也就容易解决了。 模块化与软件成本 模块化 采用模块化原理使软件结构清晰,不仅容易设计也容易阅读和理解: 因为程序错误通常局限在有关的模块及它们之间的接口中,所以模块化使软件容易调试和测试,有助于提高软件的可靠性; 因为变动往往只涉及少数几个模块,所以模块化能够提高软件的可修改性; 模块化也有助于软件项目的组织管理,一个复杂的大型软件可以有许多程序员分工编写,进而提高了开发效率。 逐步求精 逐步求精是人类解决复杂问题的基本技术之一,它是把问题的求解过程分解成若干步骤或阶段,每步都比上步更精化,更接近问题的解法。为了能集中精力解决主要问题而尽量推迟问题细节的考虑。 它可以看作是一项把一个时期必须解决的种种问题按优先级别排序的技术。逐步求精和抽象是一对互补的概念。 信息隐藏和局部化 应用模块化原则,自然会产生一个问题“为了得到一组模块,应该怎样分解软件呢?” 信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息对不需要这些信息的模块来说是不能访问的。 局部化指把一些关系密切的软件元素放得彼此靠近。 显然,局部化有助于信息隐藏。 信息隐藏和局部化 实际上应该隐藏的不是模块的一切信息,而是模块的实现细节。因此这条原理也被称作“细节隐藏”。 隐藏,意味着有效的模块化可以通过定义一组独立的模块而实现,这些独立的模块彼此间仅仅交换那些为了完成系统功能而必须交换的信息。 信息隐藏和局部化有助于软件测试和维护! 模块独立性 模块独立性是模块化、信息隐藏和局部化等概念的直接结果。 模块独立的度量 模块的独立程度可由两个定性标准来衡量: 耦合 耦合衡量不同模块彼此间相互依赖的紧密程度; 内聚 内聚衡量同一模块内部各元素彼此组合的紧密程度; 耦合性 耦合是程序结构内不同模块之间相互关联的度量,是影响软件复杂程度和设计质量的重要因素。 耦合强度依赖的因素: 一模块对另一模块的引用 一模块向另一模块传递的数据量 一模块施加到另一模块控制的数量 模块间接口的复杂程度 耦合度 非直接耦合(Nodirect Coupling) 两个模

文档评论(0)

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

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

1亿VIP精品文档

相关文档