SE04第4章节结构化设计幻灯片

上传人:E**** 文档编号:89707874 上传时间:2019-05-31 格式:PPT 页数:175 大小:3.57MB
返回 下载 相关 举报
SE04第4章节结构化设计幻灯片_第1页
第1页 / 共175页
SE04第4章节结构化设计幻灯片_第2页
第2页 / 共175页
SE04第4章节结构化设计幻灯片_第3页
第3页 / 共175页
SE04第4章节结构化设计幻灯片_第4页
第4页 / 共175页
SE04第4章节结构化设计幻灯片_第5页
第5页 / 共175页
点击查看更多>>
资源描述

《SE04第4章节结构化设计幻灯片》由会员分享,可在线阅读,更多相关《SE04第4章节结构化设计幻灯片(175页珍藏版)》请在金锄头文库上搜索。

1、1/174,第4章 结构化设计 (Structured Design, SD),4.1 结构化设计与结构化分析的关系 4.2 软件设计的概念和原理 4.3 模块独立 4.4 启发规则 4.5 表示软件结构的图形工具 4.6 *面向数据流的设计方法(概要设计) 4.7 人机界面设计 4.8 *过程设计(详细设计) 4.9 *过程设计的工具 4.10 面向数据结构的设计方法(详细设计),2/174,软件设计是后续开发步骤及软件维护工作的基础。没有设计,只能建立一个不稳定的系统结构。,软件设计的意义,3/174,软件设计的任务,4/174,软件设计的任务(技术角度),根据用信息域表示的软件需求,以及

2、功能和性能需求,进行 数据设计 结构设计(体系结构设计、系统结构设计) 接口设计(界面设计) 过程设计(过程处理设计),5/174,数据设计:将分析阶段创建的信息域模型转变成实现软件所需要的数据结构。 系统结构设计:定义软件系统各主要成份之间的关系(计算机程序的模块框架)。 接口设计:描述软件内部、软件与协作系统之间以及软件与使用者之间的通信方式。 过程设计:把程序体系结构中的结构元素转换成软件构件的过程性描述。在编码阶段根据这种过程性描述,生成源程序代码。,软件设计的任务(技术角度),6/174,软件设计任务(管理角度),从工程管理的角度来看,软件设计分两步完成: 概要设计:通过分析软件规格

3、说明,对软件进行适当的功能分解,将软件划分为模块,并设计出完成预定功能的模块结构。 详细设计(即过程设计):详细地设计每个模块,确定完成每个模块功能所需要的数据结构和算法。,7/174,4.1结构化设计与结构化分析的关系,分析模型中的每一个成份都提供了建立设计模型所需的信息。 软件设计的信息流如图4.1所示。根据用数据、功能和行为模型表示的软件需求,采用某种设计方法进行数据设计、体系结构设计、接口设计和过程设计。,8/174,图4.1 将分析模型转变成软件设计,9/174,4.2 软件设计的概念和原理,模块化 抽象化 自顶向下,逐步细化 信息隐蔽,10/174,4.2.1 模块化,模块(Mod

4、ule)(组件):由边界元素()限定的相邻的程序元素的序列,有一个总体标识符来代表它。 例如:过程、函数、子程序、宏 模块一般具有如下三个基本属性: 功能:描述该模块实现什么功能 逻辑:描述模块内部怎么做 状态:该模块使用时的环境和条件,11/174,模块化的基本概念,模块化:将整个程序划分成若干独立命名且可独立访问的模块,每个模块完成一个子功能。这些模块集成起来构成一个整体,可以完成指定的功能、满足用户的需求。 能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。,12/174,模块大小、模块数目与费用的关系,13/174,4.2.2 抽象,抽象:抽出事物的本质特性(共性)而暂不

5、考虑其细节(差异) 进行模块设计时,可有不同的抽象层次。 最高抽象层次:可以使用问题所处环境的语言概括地描述问题的解法。 较低抽象层次:更过程化的方法。 最低抽象层次:以直接实现的方式叙述问题的解法。,14/174,例:开发一个CAD软件时的三种抽象层次,抽象层次. 用问题所处环境的术语来描述这个软件: 该软件包括一个计算机绘图界面,向绘图员显示图形,以及一个数字化仪界面,用以代替绘图板和丁字尺。所有直线、折线、矩形、圆及曲线的描画、所有的几何计算、所有的剖面图和辅助视图都可以用这个CAD软件实现。,15/174,任务需求的描述。 CAD SOFTWARE TASKS user interac

6、tion task; 2-D drawing creation task; graphics display task; drawing file management task; end. 在这个抽象层次上,未给出“怎样做”的信息,不能直接实现。,抽象层次.,16/174,程序过程表示。以2-D 绘图生成任务为例: PROCEDURE:2-D drawing creation REPEAT UNTIL (drawing creation task terminates) DO WHILE (digitizer interaction occurs) digitizer interface t

7、ask; DETERMINE drawing request CASE; line: line drawing task; rectangle:rectangle drawing task; circle: circle drawing task; ,抽象层次.,17/174,4.2.3 逐步求精,定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。 基本思想:将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,最后确立整个体系结构。,18/174,4.2.4 信息隐藏,问题:为了得到最好的一组模块,应该怎样分解软件? 信息隐藏

8、原理:应该这样设计和确定模块,使得一个模块内包含的信息(数据和过程)对于不需要这些信息的模块来说是不能访问的。(细节隐藏) 给测试和维护带来的好处,19/174,模块独立性:指软件系统中每个模块只涉及软件要求的具体的子功能, 和软件系统中其它模块的接口是简单的。 例如, 若一个模块只具有单一的功能且与其它模块之间没有过多的相互作用, 则称此模块具有模块独立性 一般采用两个准则度量模块独立性。即模块间耦合和模块内聚,4.3 模块独立,20/174,耦合:一个软件结构内不同模块之间互连程度的度量。 内聚:一个模块内各个元素彼此结合的紧密程度(模块功能强度)的度量。 模块独立性比较强的模块应是高内聚

9、低耦合的模块。,模块独立性度量准则,21/174,4.3.1模块间的耦合,22/174,非直接耦合(Nondirective Coupling),如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,就是非直接耦合。这种耦合的模块独立性最强。,23/174,数据耦合 (Data Coupling) 如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据 (不是控制参数、公共数据结构或外部变量) 则称这种耦合为数据耦合。 标记耦合 (Stamp Coupling) 如果一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。

10、,24/174,A,B,C,D,X,传递数据,传递数据结构,AB为非直接耦合 AC为数据耦合 AD为标记耦合,25/174,控制耦合 (Control Coupling),如果传递的信息中有控制信息,如开关、标志、名字等(尽管有时这种控制信息以数据的形式出现),称为控制耦合。,26/174,外部耦合(External Coupling) 一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,称为外部耦合。 公共耦合(Common Coupling) 当两个或多个模块通过一个公共数据环境,相互作用时,它们之间的耦合称为公共耦合。公共环境可以是全程变量、共享

11、的通信区、内存的公共覆盖区、任何存储介质上的文件和物理设备等。,27/174,Example of common coupling,28/174,松散的公共耦合,紧密的公共耦合,公共耦合的复杂程度随耦合模块的个数增加而显著增加。若只是两模块间有公共数据环境,则公共耦合有两种情况:松散公共耦合和紧密公共耦合。,29/174,内容耦合 (Content Coupling),如果发生下列情形之一,两个模块间就发生了内容耦合 一个模块访问另一个模块的内部数据; 一个模块不通过正常入口而转到另一模块的内部; 两个模块有一部分程序代码重叠(只可能出现在汇编程序中); 一个模块有多个入口(意味着一个模块有几

12、种功能)。,30/174,进入另一模块内部,多入口模块,模块代码重叠,内容耦合,31/174,示例1:,下面的程序段出现了哪种类型的耦合? public class Emailer public void sendEmail(Employee e, String text) ,32/174,示例2:,下面的程序段出现了哪种类型的耦合? public routineX(String command) if (command .equals(“driwCircle”) drawCircle(); else drawRectangle(); ,33/174,示例3:,下面的程序段出现了哪种类型的耦合

13、? public class Line private point start, end ; public point getStart() return start public point getEnd() return end public class Arch private Line baseline; void slant(int) point theEnd = baseline.getEnd; theEnd.setLocation(theEnd.getX, newY); ,34/174,耦合是影响软件复杂程度的一个重要因素 应该采取下述设计原则 尽量使用数据耦合,少用控制耦合和标

14、记耦合,限制公共耦合的范围,完全不用内容耦合,35/174,c,4.3.2 内聚,36/174,功能内聚 (Functional Cohesion),一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。功能内聚是最高程度的内聚。 例如,计算工资、打印月报表等。由于这类模块的功能明确、模块间的耦合简单,所以便于维护。,37/174,顺序内聚,如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据),则称为顺序内聚。顺序内聚是次高程度的内聚。 例

15、如,“录入和汇总”模块、“统计和打印”模块都是顺序内聚模块。顺序内聚的模块中有可能包含几个功能,因而会给维护带来不便。,38/174,信息内聚(Informational Cohesion),这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。 这个模块将根据不同的要求,确定该执行哪一个功能。 由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。(例),39/174,40/174,信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。 即把某个数据结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓。,41/174,

16、通信内聚 (Communication Cohesion),如果一个模块内所有元素都使用同一个输入数据和(或)产生同一个的输出数据,则称之为通信内聚。通常,通信内聚模块是通过数据流图来定义的。 例如报表打印模块,各成分都从若干共同的数据来源接收数据,然后转换、汇总并打印出各种报表。,42/174,读文件,打印检 验结果,计算A,计算B,合并,新 文 件,文件,加工记录模块,通信内聚,43/174,过程内聚(Procedural Cohesion),如果一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚。 使用流程图作为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。 例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。,44/174,时间内聚,如果一个模块包含的任务必须在同一段时间内执

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

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

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