第五章总体设计Word文件下载.docx

上传人:b****5 文档编号:20260492 上传时间:2023-01-21 格式:DOCX 页数:23 大小:719.84KB
下载 相关 举报
第五章总体设计Word文件下载.docx_第1页
第1页 / 共23页
第五章总体设计Word文件下载.docx_第2页
第2页 / 共23页
第五章总体设计Word文件下载.docx_第3页
第3页 / 共23页
第五章总体设计Word文件下载.docx_第4页
第4页 / 共23页
第五章总体设计Word文件下载.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

第五章总体设计Word文件下载.docx

《第五章总体设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《第五章总体设计Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。

第五章总体设计Word文件下载.docx

(4)功能分解,从实现的角度细化逻辑模型P10

(5)设计软件结构P11

(6)设计数据库P12

(7)制定测试计划P12

(8)书写文档P13~14

(9)审查和复审P14

三、模块化设计原理

是软件设计过程中应遵循的基本原理和相关概念。

包括:

模块化、抽象、逐步求精、信息隐藏和局部化、模块独立。

1、模块与模块化

模块是软件中可独立命名和编制的部件,每个部件称为一个模块,当把所有模块组装到一起时,便可获得满足问题需要的一个解。

按照模块的定义,过程、函数、子程序和宏等,都可作为模块。

面向对象方法学中的对象是模块,对象内的方法(或称为服务)也是模块。

模块是构成程序的基本构件。

模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能,满足用户的需求。

模块化的依据:

C(P1+P2)>

C(P1)+C(P2);

E(P1+P2)>

E(P1)+E(P2)

C为问题的复杂度,E为解题需要的工作量。

P16

这个不等式导致“各个击破”的结论--把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。

这就是模块化的根据。

模块化与软件成本:

P18~P19

导致一个结论:

应该模块化,但不能过分模块化。

模块间关系:

层次关系、通信关系----软件结构是模块化的和分层次的

层次关系

通信关系

2、抽象与逐步求精

抽象就是抽出事物的本质特性(共性),而暂时不考虑它们的细节。

抽象是人类认识复杂现象和解决复杂问题时使用的思维方法,是控制复杂性的基本策略。

抽象要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。

抽象的特点P22

(1)忽略细节和差异

(2)分层理解问题(3)自顶向下分解模块

逐步求精最初是由NiklausWirth提出的一种自顶向下的设计策略。

按照这种设计策略,程序的体系结构是通过逐步精化处理过程的层次结构而设计出来的。

通过逐步分解对功能的宏观陈述而开发出层次结构,直至最终得出用程序设计语言表达的程序。

软件工程过程的每一步都是对软件解法的抽象层次的一次精化;

P23

随着软件开发工程的推进,在软件结构每一层中的模块,表示了对软件抽象层次的一次精化。

抽象与求精是一对互补的概念。

抽象代表有些细节放到更底的层次去考虑;

求精代表在设计过程中低层逐步揭示出其高层的细节。

抽象使得设计者能够简要说明过程和数据,同时忽略低层细节;

求精则帮助设计者在设计过程中逐步揭示出低层细节。

----在软件设计中,我们在一层的模块中考虑软件设计的一些细节,而将另一部分软件细节放到更底的层次去考虑

 

3、信息隐藏与局部化

信息隐藏(细节隐藏)

(1)信息隐藏原理指出:

设计和确定模块时,应使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的;

(2)模块对其它模块隐藏模块内部的数据和过程,独立模块间仅仅交换为完成系统功能而必须交换的信息;

(3)提高模块的独立性,减少修改或维护时的影响面

局部化

是指把一些关系密切的软件元素物理地放得彼此靠近。

在模块中使用局部数据元素是局部化的一个例子。

显然,局部化有助于实现信息隐藏。

----软件模块设计时信息隐藏很重要。

4、模块的独立性

模块的独立性是指软件系统中每个模块完成一个相对独立的子功能,并且与其他模块之间关系很简单。

独立的模块

(1)比较容易开发,

(2)比较容易维护。

因此在设计软件结构时,应充分考虑模块的独立性。

模块独立性的衡量指标是耦合和内聚:

耦合(Coupling)

是对软件结构内不同模块之间相互关联程度的强弱的度量。

它取决于各个模块之间接口的复杂程度、调用模块的方式以及哪些信息通过接口传递。

模块间的耦合程度直接影响系统的可理解性、可测试性、可靠性和可维护性。

在设计软件时应追求尽可能松散耦合的系统。

如果模块间联系较少,错误在模块间传播的可能性也随之变小。

耦合度可以分为若干级别:

(1)非直接耦合--两个模块没有直接关系(如模块1和模块2),每一个都能独立地工作而不需要另一个模块的存在。

非直接耦合两个模块间的独立性最强。

非直接耦合

(2)数据耦合--两个模块彼此间通过参数交换信息,而且交换的信息仅仅是简单的数据。

这属于松散耦合。

(3)标记耦合--两个模块通过传递数据结构参数加以联系(不是简单数据,而是记录、数组等),或都与一个数据结构有关系,则称这两个模块间存在标记偶合。

数据耦合标记耦合

(4)特征耦合--把整个数据结构作为参数传递,而被调用的模块只需要使用其中一部分数据元素。

P37

(5)控制耦合--一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能。

控制耦合增加了理解和编程的复杂性,调用模块必须知道被调模块的内部逻辑,增加了相互依赖。

去除模块间控制耦合的方法:

a.将被调用模块内的判定上移到调用模块中进行

b.被调用模块分解成若干单一功能模块

控制耦合公共环境耦合

(6)外部耦合--一组模块都访问同一全局简单变量,而且不是通过参数传递该全局变量的信息。

(7)公共环境耦合--两个或多个模块通过一个公共数据环境相互作用。

公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等等。

P37-38

公共环境偶合必不可少,但耦合模块的数目应尽量少。

(8)内容耦合--P39

内容耦合

模块化设计原则

以上给出了几种耦合类型,这只是从耦合的机制上所做的分类,按耦合的强弱程度的排列只是相对的关系。

但它给设计人员在设计程序结构时提供了一决策准则。

实际上,开始时两个模块之间的耦合不只是一种类型,而是多种类型的混合。

这就要求设计人员按照实际情况进行分析、比较和分析,逐步加以改进,以提高模块的独立性。

耦合是影响软件复杂程度的一个重要因素。

应该采取下述设计原则:

尽量使用数据耦合,少量使用控制耦合和特征耦合,限制公共环境耦合的范围,完全不允许内容耦合,最终降低模块间接口的复杂性。

内聚(Cohesion):

标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。

高内聚:

模块内部完成单一的处理;

低内聚:

模块内部各部分关联不紧密,完成分散的多个处理任务;

设计时应该力争做到高内聚。

内聚度也可以分为若干级别:

(1)偶然内聚--当模块内各部分之间没有联系,或者即使有联系,这种联也很松散,则称这种模块为偶然内聚模块,它的内聚程度最低。

(2)逻辑内聚--把几种相关功能或逻辑上相似的功能组合在一个模块内,每次调用由传给模块的参数确定执行哪种功能。

(3)时间内聚--一个模块包含若干的任务必须在同一段时间内执行。

例如系统初始化模块、系统结束模块、紧急故障处理模块等均是时间性聚合模块。

(4)过程内聚--一个模块内的处理元素是相关的且仅有控制联系,各处理元素必须以特定次序执行。

(5)通信内聚--模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据。

(6)顺序内聚--一个模块内的处理元素既包含数据联系也包含控制联系,而且这些处理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据)。

(7)功能内聚--一个模块中各个部分都是完成某单一功能必不可少的组成部分,或者说该模块中所有部分都是为了完成同一项具体功能而协同工作,紧密联系,不可分割的,则称该模块为功能内聚模块。

功能内聚是最高程度的内聚。

功能内聚信息内聚

信息内聚--这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。

这个模块将根据不同的要求,确定该执行哪一个功能。

由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。

信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。

即把某个数据结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓。

设计原则:

设计时应该力求做到高内聚,通常中等程度的内聚也是可以采用的,而且效果和高内聚相差不多;

但是,低内聚很坏,不要使用。

耦合、内聚、模块独立性间的关系:

耦合,描述两个或多个模块之间的相互关联程度;

内聚,描述一个模块内部各处理元素之间的互关联程度。

耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。

内聚与耦合密切相关。

同其它模块强耦合的模块意味着它自己是弱内聚的;

强内聚模块意味着与其它模块间松散耦合。

所以设计的目标应该是力争高内聚、低耦合。

四、启发式规则(模块化设计的经验)P46~56

五、描绘软件结构的图形工具

1、层次图:

是用来描绘软件层次结构的图形工具。

一个矩形框代表一个模块,方框间的连线表示模块间的调用关系。

(注意它和其他类似工具的区别)

示例:

P58

特点:

图形清晰,能表明软件系统组成的模块关系,可粗略估算程序规模;

但无法表明模块间的接口关系。

2、HIPO图:

即层次图+输入/处理/输出图,

由一张H图和一组IPO图组成。

H图,是给每个模块加上编号的层次图。

P60(关于1.0)、59

IPO图,一般采用图3.8(教材P69)形式。

要为H图中的每个模块画一张IPO图。

通常将HIPO图作为软件结构的描绘,列入设计文档。

3、结构图(SC):

描述了软件的模块结构,表示了一个系统的层次分解关系;

反映了模块间的联系以及块内联系;

反映了模块间的信息传递。

(1)组成元素:

A

方框,内有名称,表示模块;

直线,表示上层模块对下层模块的调用;

尾部带空心圆的箭头,表示按方向传递的数据信息;

尾部带实心圆的箭头,表示按方向传递的控制信息;

表示判定表示循环

(2)示例:

P63

(3)注意:

P66

(4)作用:

描述模块间参数交换情况、评价模块间耦合情况、确定模块间的接口。

结构图一般不列入设计文档,只用于设计阶段检查模块设计的正确性和模块独立性。

六、结构化设计(SD)方法(面向数据流的设计方法)

1、概述

SD是一种面向数据流的设计方法,是目前使用最广泛的一种软件设计方法,它可以和SA相衔接。

它给出了设计软件结构的一种系统化途径,它提出了“高内聚、低偶合”的评价模块结构质量的具体标准。

结构化设计是在模块化、自顶向下逐步细化、结构化程序设计等程序设计技术基础上发展起来的。

其基本思想是将系统设计成由相对独立、功能单一的模块组成的软件结构。

该方法实施的要点是:

(1)首先研究、分析和审查数据流图。

从软件的需求规格说明中弄清数据流加工的过程,对于发现的问题及时解决。

(2)根据数据流图确定数据处理的类型。

典型的类型有两种:

变换型和事务型。

针对两种不同类型分别进行分析处理。

(3)由数据流图推导出系统的初步的软件结构图。

(4)根据结构化设计的原则,利用一些启发式规则改进初步的软件结构图,直到得到符合要求的结构图为止。

(5)修改和补充数据字典。

(6)制定测试计划。

2、交换流与事物流

变换流事物流

SD方法把信息流(数据流图)映射成软件结构,信息流的类型决定了映射的方法。

DFD中的数据流可分为两类:

变换型数据流、事务型数据流;

可转换为相应的软件结构:

变换型结构、事务型结构。

变换流与变换型结构

(1)变换流:

信息沿输入通路流入系统(输入流),同时由外部形式变换成内部形式;

进入系统的信息通过变换中心,经加工处理;

处理后的数据再沿输出通路变换成外部形式流出系统(输出流)。

(2)变换型结构:

变换流的数据流图基本呈线性特征,明显地分为输入、变换(加工)和输出三部分。

事物流与事务型结构

(1)事物流

一个事务项(输入的数据),经事务中心(处理)触发成一些处理分支。

对于一个特定的事务,只触发一个分支。

事物中心的任务是:

接收输入数据;

分析每个事务以确定它的类型;

根据事务类型在若干条活动通路中选取一条。

(2)事务型结构

事物流的数据流图呈辐射状特征,有一个输入通路、一个事务中心和多个处理、输出通路。

在数据流图中变换流和事务流两种结构往往是并存。

事物型结构混合结构

3、SD的一般步骤

4、在系统结构图中的模块

传入模块--从下属模块取得数据,经过某些处理,再将其传送给上级模块。

它传送的数据流叫做逻辑输入数据流。

传出模块--从上级模块获得数据,进行某些处理,再将其传送给下属模块。

它传送的数据流叫做逻辑输出数据流。

变换模块--它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。

它加工的数据流叫做变换数据流。

协调模块--对所有下属模块进行协调和管理的模块。

5、变换分析----从变换流到变换型结构的映射过程

(1)~(3)P76~77

(4)确定输入流和输出流的边界,从而孤立出变换中心;

(5)完成第一级分解,输入流映射成输入模块,变换部分映射成变换(处理)模块,输出流映射成输出模块;

顶层增加主控协调模块;

(6)完成第二级分解,从变换中心的边界开始

,沿输入流外推,先遇到的为上级模块;

沿输出流外推,先遇到的为上级模块;

变换部分变为水平模块;

第二级分解后的SC图

(7)得到完整的SC图和对应的层次图,变换完成后,对每个模块进行简要的说明。

数据流图

对应的层次图

稍复杂一点的映射例子:

P109-110

模块的说明:

P85-86

(8)根据模块独立性原则和启发式规则,对得到的软件结构进一步优化。

对以上得到的软件结构进行模块分解或组合,让模块尽可能高的内聚、尽可能松散的耦合,最重要的是,要得到一个易于实现、易于测试和易于维护的软件结构。

P110~111图5.16~5.19

6、事物分析----从事物流到事物型结构的映射过程

基本步骤与变换分析相同(前三步相同),只是由数据流图到软件结构的变换方法不同:

第一级分解,输入通路映射为接收模块、事务中心直接变换为调度模块、每个输出通路映射成一个动作模块,另加一个主控模块;

输入分支的第二级分解与变换流的方法类似;

对输出分支进行第二级分解(每个分支进行下一级的变换分析或事物分析);

第一级分解

第二级分解

书上的例子:

P95

注意:

P96

模块说明:

为每一个模块写一份处理说明(IPO图)、为每一个模块提供一份接口说明、确定全局数据结构和局部数据结构、指出所有的设计约束和限制。

关于分层数据流图转换为软件结构图的方法

*7、设计的优化:

我们努力追求的设计应该是既满足功能和性能的要求,又符合软件设计原理和启发式设计规则。

对软件结构的修改越早越好。

必要时,可以并行地开发若干个软件结构,通过评比,求得“最佳”结果。

结构优化是一个精益求精的过程。

优化过程可以在设计的早期,也还要延续到详细设计乃至编码阶段。

简洁的程序结构容易测试、容易维护,应该使用尽可能少的模块;

只要满足信息要求,应该使用尽可能简单的数据结构。

对时间有特殊要求的软件,应根据普遍存在的“百分之二十规则”(即20%的代码占用80%的处理时间,80%的错误出自20%的代码)采用下述对策:

(1)在不考虑时、空耗费的情况下,设计并精化软件结构;

(2)借用CASE工具模拟分析运行时的性能,定位出低效的部分,加以改进;

(3)详细设计时对最耗时的模块,认真地设计它们的处理过程(算法),以便减少时间的开销;

(4)尽量用高级语言编程以利于软件的优化;

(5)对大量占用计算机系统资源的模块必要时用低级语言重新编码,以提高效率。

设计优化的格言----“先让它干起来,再让它快起来”。

七、总体设计需书写的文档

1、总体设计说明

主要内容包括用系统流程图描绘的系统构成方案,组成系统的物理元素清单,成本/效益分析;

对最佳方案的概括描述,精化的数据流图,用层次图或结构图描绘的软件结构,各模块的模块说明(用IPO图或其他工具简要描述的各个模块的算法,模块间的接口关系等,见上面),以及需求、功能和模块三者之间的交叉参照关系等等。

2、用户手册

根据总体设计阶段的结果,修改更正在需求分析阶段产生的初步的用户手册。

3、测试计划

包括测试策略,测试方案,预期的测试结果,测试进度计划等等。

4、详细的实现计划

5、数据库设计结果

文档书写提示:

1引言

1.1简介(对整个设计说明作综述)

1.2编写目的(本设计说明的编写目的与阅读对象)

1.3定义(提供正确理解本设计说明所必须的术语、缩写词和简写的定义)

1.4参考资料(列举编写本设计说明时所参考的资料或其它资源)

2系统概述

2.1软件的功能概述

在此说明本软件包含哪些主要功能模块,并对每个模块的主要功能进行文字说明。

在此引入分析精化的功能级数据流图,作为设计的起点。

2.2系统总体的处理流程,例如:

✧系统启动时激活身份验证模块;

✧通过身份验证后进行相应的系统初始化。

根据系统配置文件将数据库导入,并设置各全局变量;

✧系统进入消息循环状态,通过事件驱动机制激活各功能模块,并在指定模块中运行;

✧各功能模块执行完毕后重新进入消息循环状态;

✧由关闭系统事件激活关闭系统模块,退出系统。

3概要设计结果

3.1软件层次图(H图)

3.2模块分解说明

对H图中的每个模块进行模块说明(卡片形式的IPO图),包括:

模块名称、编号、局部数据、内部处理过程说明、接口设计、设计约束和限制。

3.3出错处理设计

✧出错输出信息:

描述系统可能出现的错误信息。

用表格方式说明各种可能的错误或故障出现时,系统输出的信息、含义及处理方法。

✧出错补救措施:

说明错误或故障出现时,可采用的补救措施,如性能降级、恢复及再启动等。

✧系统恢复设计:

描述当系统出现错误和异常时,如何使系统恢复到正常状态。

3.4安全保密设计

说明软件的哪些地方要设安全保密处理,如何处理(数据备份、密码管理等等)。

3.5模块间的相互依赖关系

说明哪些模块间有相互同步(合作)或互斥的关系。

3.6维护设计

说明为方便维护工作而采取的措施。

4数据库设计结果

根据前期设计结果,设计出数据库,表结构、表间关系;

全局数据;

数据间的相互依赖和制约关系。

5外部接口设计

5.1硬件平台

用系统流程图描述最终选择的系统物理实现方案(物理模型),用表格形式对物理模型中元素的规格逐一进行说明。

5.2软件环境

说明操作系统平台、数据库及其他软件工具,与其他软件组件的正确连接。

5.3主控用户交互界面

6系统中需求、功能和模块三者之间的交叉参照关系(复审时使用)

……

参考概要设计说明书(GB8567—2006)

八、本阶段工作总结

1、精化数据流图

2、根据数据流图,划分边界,用系统流程图描述系统的物理模型,对模型中的元素逐一进行说明

3、根据数据流图,用变换分析和事务分析的方法,将数据流图转换成软件结构图(层次图或结构图)

4、按照模块化设计的原则、启发式规则等,对得到的软件结构图进行优化

5、用IPO图或其他工具简要描述的各个模块的算法

6、描述模块间的接口关系

7、制定、修改测试计划

本章作业P1141、3-(3)

对自选项目进行总体设计

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1