SET04-设计基础幻灯片

上传人:E**** 文档编号:89707185 上传时间:2019-05-31 格式:PPT 页数:71 大小:1.33MB
返回 下载 相关 举报
SET04-设计基础幻灯片_第1页
第1页 / 共71页
SET04-设计基础幻灯片_第2页
第2页 / 共71页
SET04-设计基础幻灯片_第3页
第3页 / 共71页
SET04-设计基础幻灯片_第4页
第4页 / 共71页
SET04-设计基础幻灯片_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《SET04-设计基础幻灯片》由会员分享,可在线阅读,更多相关《SET04-设计基础幻灯片(71页珍藏版)》请在金锄头文库上搜索。

1、2019/5/31,1,将分析模型转换为设计,数据词典,状态转换图,过程设计,接口设计,体系结构设计,数据设计,2019/5/31,2,第八章 软件设计基础,软件设计是软件工程的重要阶段。 软件设计过程是对程序结构、数据结构和过程细节逐步求精、复审并编制文档的过程。 经过软件工程师们多年的努力形成了一些软件设计技术、质量评估标准和设计表示法并用于软件工程实践。 本章讨论与软件设计有关的主要概念, 介绍几个具体的软件设计方法。,2019/5/31,3,8.1软件设计过程,软件开发阶段由设计、编码和测试三个基本活动组成,其中“设计活动”是 获取高质量、低耗费、易维护软件最重要的一个环节。 需求分析

2、阶段获得的需求规格说明书包括对欲实现系统的信息、功能和行为方面的描述, 这是软件设计的基础。对此采用任一种软件设计方法都将产生系统的总体结构设计(archite ctural design)、系统的数据设计(data design)和系统的过程设计(procedural design)( 图81)。,第八章 软件设计基础,2019/5/31,4,软件设计过程,不同的软件设计方法会产生不同的设计形式。 数据设计把信息描述转换为实现软件所要求的数据结构。 总体结构设计旨在确定程序各主要部件之间的关系。 过程设计要完成每一部件的过程化描述。 根据设计结果编制代码。 设计阶段做的决策直接影响软件质量,

3、没有良好的设计就没有稳定的系统,也不会有易维护的软件。 统计表明:设计、编码和测试这三个活动一般占用整个软件开发费用(不包括维护阶段)的75%以上。,8.1软件设计过程,2019/5/31,5,图8.1 开发阶段的信息流,8.1软件设计过程,2019/5/31,6,软件设计过程,软件设计也可看作将需求规格说明逐步转换为软件源代码的过程。 从工程管理的角度看,软件设计可分为概要设计和详细设计两大步骤。 概要设计是根据需求确定软件和数据的总体框架 详细设计是将其进一步精化成软件的算法表示和数据结构。 概要设计和详细设计由若干活动组成,除总体结构设计、数据结构设计和过程设计外,许多现代应用软件,还包

4、括一个独立的界面设计活动。,8.1软件设计过程,2019/5/31,7,8.2软件设计基本概念,软件设计基本概念是过去三十年里陆续提出的。 软件设计者根据这组概念进行设计决策, 如: 划分子部件的标准; 从软件的概念表示中分离出功能和数据结构的细节; 以统一的标准衡量软件设计质量等等。,第八章 软件设计基础,2019/5/31,8,8.2.1抽象与逐步求精,抽象是管理、控制复杂性的基本策略 。 “抽象”是心理学概念,它要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。 使用抽象技术便于人们用“问题域”的概念和术语描述问题,而无须过早地转换为那些不熟悉的结构。 软件设计过程是,在

5、不同抽象级别上考虑、处理问题的过程。 ()在最高抽象级别上,用面向问题域的语言叙述“问题”,概括“问题解”的形式。 ()不断地具体化,不断地用面向过程的语言描述问题。 ()在最低的抽象级别上给出可直接实现的“问题解”,即程序。,8.2软件设计基本概念,2019/5/31,9,抽象与逐步求精,软件工程过程的每一步都是对较高一级抽象的解作一次较具体化的描述。 在系统定义阶段, 软件系统被描述为基于计算机的大系统的一个组成部分; 在软件规划和需求分析阶段,软件用问题域约定的习惯用语表达; 从概要设计过渡到详细设计时,抽象级再一次降低; 编码完成后,达到了抽象的最低级。,8.2软件设计基本概念,201

6、9/5/31,10,抽象与逐步求精,在由高级抽象到低级抽象的转换过程中,伴随着一连串的过程抽象和数据抽象。 过程抽象把完成一个特定功能的动作序列抽象为一个过程名和参数表,通过指定过程名和实际参数调用此过程; 数据抽象把一个数据对象的定义(或描述 )抽象为一个数据类型名,用此类型名可定义多个具有相同性质的数据对象。,8.2软件设计基本概念,2019/5/31,11,8.2.2模块化与信息隐藏,模块化的概念 把软件划分为可独立命名和编址的部件,每个部件称为一个模块,当把所有模块组装到一起时则获得满足问题需要的一个解。 软件总体结构体现了模块化思想。 “模块化是软件唯一能使程序获得智能化管理的一个属

7、性”, 没有模块的程序控制路径错综复杂,变量被远距离引用等难于被人掌握。,8.2软件设计基本概念,2019/5/31,12,模块的独立性,模块(Module) “模块”,又称“组件”。它一般具有如下三个基本属性: 功能:描述该模块实现什么功能 逻辑:描述模块内部怎么做 状态:该模块使用时的环境和条件,2019/5/31,13,模块化与信息隐藏,求解问题的过程 假设 函数C(X)定义了问题X已被觉察到的复杂性, 函数E(X)定义了求解问题X所要求的工作量(按时间计), 对于问题P1和P2, 如果 C(P1)C(P2) (81a) 则 E(P1)E(P2) (81b) C(P1+P2)C(P1)+

8、C(P2) (82) E(P1+P2)E(P1)+E(P2) (83) 解决一个复杂问题,比解决一个简单问题耗费多。 由P1、P2组合而成的问题复杂性,比单个问题复杂性的和更大。,8.2软件设计基本概念,2019/5/31,14,模块化与信息隐藏,“分治法” 一个复杂问题分割成若干个可管理的小问题后更易于求解。 当模块总数增加时,每个模块的成本减少了,但模块接口所需代价随之增加。 如果模块数为M时将获得最小开发成本,那么模块数在M附近选择,就能避免模块分割过度和不足。 这些问题涉及信息隐藏、内聚度与藕合度的概念。,8.2软件设计基本概念,2019/5/31,15,模块化与信息隐藏,怎样保证模块

9、数“在M附近”? 依据什么标准划分模块?,8.2软件设计基本概念,2019/5/31,16,1信息隐藏,模块独立的概念 模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息的模块不可访问; 每个模块只完成一个相对独立的特定功能; 模块之间仅仅交换那些为完成系统功能必须交换的信息,即模块应该独立。 采用信息隐藏原理指导模块设计优点: 支持模块的并行开发 减少软件测试和软件维护的工作量。,8.2软件设计基本概念,2019/5/31,17,模块独立性 模块独立性, 是指软件系统中每个模块只涉及软件要求的具体的子功能, 而和软件系统中其它的模块的接口是简单的 例如, 若一个模块只具有单一的功

10、能且与其它模块没有太多的联系, 则称此模块具有模块独立性 一般采用两个准则度量模块独立性。即模块间耦合和模块内聚,2019/5/31,18,2内聚度,内聚度 模块内部各成分彼此结合的紧密程度。 内聚度按其高低程度可分为七级,内聚度越高越好。 低级内聚度 ()偶然性内聚(Coincidental Cohesion)。 模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系,也很松散。 ()逻辑性内聚(Logical Cohesion) 模块完成的诸任务逻辑上相关,如,一个模块产生所有与类型无关的输出。 ()时间性内聚(Temporal Cohesion) 模块包含的诸任务必须在同一时间段

11、内执行,如一个初始化模块。,8.2软件设计基本概念,2019/5/31,19,模块化与信息隐藏,中级内聚度 ()过程性内聚(Procedural Cohesion) 模块具有过程性内聚度指,模块内成分彼此相关,并且必须按特定的次序执行; ()通信性内聚(Communicational Cohesion) 模块中各成份都将对数据结构的同一区域进行操作,以达到通信的目的。,8.2软件设计基本概念,2019/5/31,20,模块化与信息隐藏,高级内聚度 ()顺序性内聚(Sequential Cohesion) 模块内的各处理成份均与同一功能相关,且这些处理必须顺序执行,则称顺序内聚。 ()功能性内聚

12、(Functional Cohesion) 模块内所有成分形成一个整体,完成单个功能。 设计软件时,应该能够识别内聚度的高低,并通过修改设计尽可能提高模块内聚度,从而获得较高的模块独立性,8.2软件设计基本概念,2019/5/31,21,模块内聚,2019/5/31,22,3耦合度,耦合度 软件结构中模块间关联程度的一种度量。 耦合的强弱取决于模块间接口的复杂性、进入或调用模块的位置以及通过界面传送数据的多少等。 设计软件应追求尽可能松散耦合的系统。 松散耦合系统中,任一模块的设计、测试和维护都相对独立。 松散耦合系统模块间联系较少,错误在模块间传播的可能性随之变小。 模块间的耦合程度直接影响

13、系统的可理解性、可测试性、可靠性和可维护性。,8.2软件设计基本概念,2019/5/31,23,模块化与信息隐藏,耦合度也分为七级: ()非直接耦合(Nodirect Coupling) 两模块中任一个都不依赖对方能独立工作, 这类耦合度最低。 ()数据耦合(Data Coupling) 两模块通过参数交换信息,信息仅限于数据。 ()控制耦合(Control Coupling) 传递的信息含有控制信息。控制耦合通常会增加系统的复杂性,适当分解模块可望消除控制耦合。 ()特征耦合(Stamp Coupling)。 介于数据耦合与控制耦合之间,8.2软件设计基本概念,2019/5/31,24,模块

14、化与信息隐藏,()外部耦合(External Coupling) 当若干模块均与同一个外部环境关联,如,I/O处理使所有I/O模块与特定的设备、格式和通信协议相关联。 外部耦合尽管需要,但应限制在少数几个模块上。 ()公共耦合(Common Coupling) 若干模块通过全局的数据环境相互作用, 全局数据环境中可能含有全局变量、公用区、内存公共复盖区、任何存储介质上的文件、物理设备等。 ()内容耦合(Content Coupling) 一个模块使用另 一模块内部的数据或控制信息;一个模块直接转移到另一模块内部等等。 设计软件时应尽量使用数据耦合,减少控制耦合,限制外部环境耦合和公共数据耦合,

15、杜绝内容耦合。,8.2软件设计基本概念,2019/5/31,25,模块间的耦合,2019/5/31,26,模块化与信息隐藏,模块化设计的思想适用于任何软件系统的设计。当某些软件系统,如实时软件和部分微处理机软件,因不能容忍子程序调用引起的时间开销而必须以整块软件的形式出现时,软件设计仍然应该以模块化设计的思想为指导,直至编码时再改用代入式(inline)方法。这样,源程序中虽不含明显的模块,但模块化设计所带来的大部分益处却已被系统获得。,8.2软件设计基本概念,2019/5/31,27,8.2.3软件总体结构设计,软件总体结构(software architecture)应该包括两方面内容 (

16、)由系统中所有过程性部件(即模块)构成的层次结构, 亦称为程序结构; ()输入输出数据结构。 软件总体结构设计的目标是产生一个模块化的程序结构并明确各模块之间的控制关系,此外还要通过定义界面,说明程序的输入输出数据流,进一步协调程序结构和数据结构。,8.2软件设计基本概念,2019/5/31,28,软件总体结构设计,程序结构、数据结构是逐步求精、分而治之的结果。 软件设计从需求定义开始,逐步分层导出程序结构和数据结构,当需求定义中所述的每个部分最终都能由一个或几个软件元素实现时,整个求解过程即告结束。,8.2软件设计基本概念,2019/5/31,29,软件总体结构设计,依据任何一种软件设计方法总能推导出一个软件结构。 模块内聚度和耦合度是判断结构好坏的主要标准 。,8.2软件设计基本概念,2019/5/31,30,软件总体结构设计,表示程序结构的工具 类树图(Treelike diagram) WarnierOrr图 Jac

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号