软件工程电子教案第4章Word下载.docx

上传人:b****2 文档编号:3988073 上传时间:2023-05-02 格式:DOCX 页数:14 大小:98.58KB
下载 相关 举报
软件工程电子教案第4章Word下载.docx_第1页
第1页 / 共14页
软件工程电子教案第4章Word下载.docx_第2页
第2页 / 共14页
软件工程电子教案第4章Word下载.docx_第3页
第3页 / 共14页
软件工程电子教案第4章Word下载.docx_第4页
第4页 / 共14页
软件工程电子教案第4章Word下载.docx_第5页
第5页 / 共14页
软件工程电子教案第4章Word下载.docx_第6页
第6页 / 共14页
软件工程电子教案第4章Word下载.docx_第7页
第7页 / 共14页
软件工程电子教案第4章Word下载.docx_第8页
第8页 / 共14页
软件工程电子教案第4章Word下载.docx_第9页
第9页 / 共14页
软件工程电子教案第4章Word下载.docx_第10页
第10页 / 共14页
软件工程电子教案第4章Word下载.docx_第11页
第11页 / 共14页
软件工程电子教案第4章Word下载.docx_第12页
第12页 / 共14页
软件工程电子教案第4章Word下载.docx_第13页
第13页 / 共14页
软件工程电子教案第4章Word下载.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

软件工程电子教案第4章Word下载.docx

《软件工程电子教案第4章Word下载.docx》由会员分享,可在线阅读,更多相关《软件工程电子教案第4章Word下载.docx(14页珍藏版)》请在冰点文库上搜索。

软件工程电子教案第4章Word下载.docx

1、软件设计方法的内容

软件开发阶段由设计、编码和测试三个基本活动组成,其中“设计”活动是获取高质量、低耗费、易维护软件的一个最重要环节。

需求分析阶段获得的需求规格说明书包括对将要实现的系统在信息、功能和行为等各个方面的描述,这是软件设计的基础。

对此不论采用何种软件设计方法都将产生:

系统的总体结构设计(architecturaldesign);

系统的数据设计(datadesign);

系统的过程设计(proceduraldesign)。

软件设计也可看作将需求规格说明逐步转换为软件源代码的过程。

2、从工程管理的角度理解软件设计

软件设计可分概要(preliminary)设计和详细(detail)设计两大步骤。

概要设计是根据需求确定软件和数据的总体框架,详细设计是将其进一步精化成软件的算法表示和数据结构。

而在技术上,概要设计和详细设计又由若干活动组成,除总体结构设计、数据结构设计和过程设计外,许多现代应用软件,还包括一个独立的界面设计活动。

二、抽象与逐步求精

1、抽象

抽象是控制复杂性的基本策略。

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

软件设计过程应当是在不同抽象级别上考虑和处理问题的过程。

最初,应在最高抽象级别上,用面向问题域的语言叙述“问题”,概括“问题解”的形式,而后不断地具体化,不断地用面向过程的语言描述问题,最后,在最低的抽象级别上给出可直接实现的“问题解”,即程序。

软件工程过程的每一步都是对较高一级抽象的解作一次进一步具体化的描述。

在上述由高级抽象到低级抽象的转换过程中,伴随着一连串的过程抽象和数据抽象。

2.逐步求精

关于“逐步求精”,N.Wirth曾经做过如下说明:

“我们对付复杂问题的重要办法是抽象,因此,对一个复杂的问题不应该立即用计算机指令、数字和逻辑符号来表示,而应该用较自然的抽象语言来表示,从而得出抽象程序。

抽象程序对抽象的数据进行某些特定的运算并用某些合适的记号(可能是自然语言)来表示。

对抽象程序做进一步分解,进入下一个抽象层次,重复这一精化过程直到程序能被计算机接受为止。

这时的程序可能是用某种高级语言或机器指令书写的。

(1)过程求精

因为求精的每一步都是用更为详细的描述替代上一层次的抽象描述,所以在整个设计过程中产生的,具有不同详细程度的各种描述,组成了系统的层次结构。

层次结构的上一层是下一层的抽象,下一层是上一层的求精。

(2)与数据求精

在过程求精的同时自然伴随着数据的求精,无论是过程还是数据,每一步细化都蕴涵着某些设计决策,因此设计人员必须掌握一些基本的准则,比较各种可能的候选方案。

补充例子:

学习辅导P59习题第1题:

用逐步求精方法解决下述更新顺序主文件的问题

三.模块化与信息隐藏

1.模块化

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

假设:

函数C(X)——问题X的复杂性;

函数E(X)——求解问题X需要花费的工作量(时间);

对于问题P1和P2,如果:

C(P1)>

C(P2)

则有:

E(P1)>

E(P2)

结论:

解决一个复杂问题总比解决一个简单问题耗费更多的工作量。

同时有:

C(P1+P2)>

C(P1)+C(P2)

由P1、P2组合而成的问题的复杂性往往比考虑单个问题复杂性的和更大。

于是有:

E(P1+P2)>

E(P1)+E(P2)

"分而治之":

把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。

2.信息隐藏

信息隐蔽原理告诉我们,模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息的模块不可访问;

每个模块只完成一个相对独立的特定功能;

模块之间仅仅交换那些为完成系统功能必须交换的信息,即模块应该独立。

3.内聚度(cohesion)

内聚度是前述信息隐蔽和局部化概念的自然扩展,它标志一个模块内部各成分彼此结合的紧密程度。

内聚度按其高低程度可分为七级,内聚度越高越好。

(1)偶然性内聚(coincidentalcohesion)。

(2)逻辑性内聚

(3)时间性内聚

(4)过程性内聚

(5)通信性内聚度

(6)顺序性内聚

(7)功能性内聚

学习辅导P59第2题:

给出一层次图,确定每个模块的内聚类型

4.耦合度

耦合度是对软件结构中模块间关联程度的一种度量。

耦合的强弱取决于模块间接口的复杂性、进入或调用模块的位置以及通过界面传送数据的多少等。

耦合度也可以分为七级

(1)非直接耦合(nodirectcoupling)

(2)数据耦合(datacoupling)

(3)特征耦合(stampcoupling)

(4)控制耦合(controlcoupling)

(5)外部耦合(externalcoupling)

(6)公共耦合(commoncoupling)

(7)内容耦合(contentcoupling)

学习辅导P59第3题:

给出模块互连图,确定模块的耦合类型

四.软件总体结构设计

软件总体结构(softwarearchitecture)应该包括两方面内容:

1)由系统中所有过程性部件(即模块)构成的层次结构,即程序结构;

2)对应于程序结构的输入输出数据结构。

软件总体结构设计的目标就是产生一个模块化的程序结构并明确各模块之间的控制关系,此外还要通过定义界面,说明程序的输入输出数据流,进一步协调程序结构和数据结构。

1.结构演变

2.同一个“问题”的多种软件解

3.表示程序结构的工具

类树图(treelikediagram)

WarnierOrr图

Jackson图

4.有关程序结构的术语

一个软件的深度(depth)—控制的层数;

一个软件的宽度(width)—其控制的层数和跨度;

一个模块的“扇出数”(fanout)—该模块直接控制的其他模块数;

一个模块的“扇入数”(fanin)指能直接控制该模块的模块数。

五.数据结构设计

数据结构描述各数据分量之间的逻辑关系,数据结构一经确定,数据的组织形式、访问方法、组合程度及处理策略等随之而定,所以数据结构是影响软件总体结构的重要因素。

数据结构与程序结构一样,也可以在不同的抽象级别上表示。

六.设计过程

总体设计过程通常由两个主要阶段组成:

系统设计阶段,确定系统的具体实现方案;

结构没计阶段,确定软件结构。

典型的总体设计过程包括下述9个步骤:

1.设想供选择的方案

2.选取合理的方案

3.推荐最佳方案

4.功能分解

5.设计软件结构

6.设计数据库

7.制定测试计划

8.书写文档

9.审查和复审

5.2 设计原理

一.模块化

二.抽象

三.逐步求精

四.信息隐藏和局部化

5.3 启发规则

1.改进软件结构提高模块独立性

2.模块规模应该适中

3.深度、宽度、扇出和扇入都应适当

4.模块的作用域应该在控制域之内

5.力争降低模块接口的复杂程度

6.设计单入口单出口的模块

7.模块功能应该可以预测

5.4 描绘软件结构的图形工具

一.层次图

二.HIPO图

三.结构图

补充两个例子讲解结构图的画法

例1:

火车售票系统的数据流程图

例2:

已知某定货系统的需求分析DFD图如下,请按SD方法的设计步

骤画出结构图

带编号的层次图

产生最佳解结构图

5.5 面向数据流的设计方法

面向数据流的设计方法,即通常所说的结构设计法(StructureDesign,简称SD方法),由Yourdon和Constantine等人于1974年提出的,与结构化分析(SA)相衔接,根据对数据流的分析设计软件结构。

一.SD方法的设计过程和有关概念

1.SD方法能方便地将数据流图转换为软件结构的步骤:

(1).确定信息流的类型;

(2).划定流界;

(3).将数据流图映射为程序结构;

(4).提取层次控制结构;

(5).通过设计复审和使用启发式策略进一步精化所得到的结构。

2.变换流

变换流—在基本系统模型(即顶级数据流图)中信息通常以“外部世界”所具有的形式进入系统,经过处理后又以这种形式离开系统。

3.事务流——单个数据项称为事务(transaction)沿传入路径(也称接受通道)进入系统,由外部形式变换为内部形式后到达事务中心,事务中心根据数据项计值结果从若干动作路径中选定一条继续执行。

4.设计过程

面向数据流的设计过程

二.变换分析

变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图按预先确定的模式映射成软件结构。

下面通过一个汽车数字仪表板的设计来介绍变换分析的过程。

1、复查基本系统模型

2、复查并精化数据流图

确保数据流图给出目标系统的正确的逻辑模型,且使数据流图中每个处理都代表一个规模适中相对独立的子功能

3、确定数据流图的类型

确定数据流图是变换型数据流图还是事务型数据流图。

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

5、进行“第一级分解”

软件结构代表对控制的自顶向下的分配,所谓分解就是分配控制的过程。

对于变换流的情况,数据流图被映射成一个特殊的软件结构,这个结构控制输入、变换和输出等信息处理过程。

6、进行“第二级分解”

第二级分解就是把数据流图中的每个处理映射成软件结构中一个适当的模块。

完成第二级分解的方法是,从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个处理映射成软件结构中Ca控制下的一个低层模块;

然后沿输出通路向外移动,把输出通路中每个处理映射成直接或间接受模块Ce控制的一个低层模块;

最后把变换中心内的每个处理映射成受Ct控制的一个模块。

7、使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化

对第一次分割得到的软件结构,总可以根据模块独立原理进行精化。

为了产生合理的分解,得到尽可能高的内聚、尽可能松散的耦合,最重要的是,为了得到一个易于实现、易于测试和易于维护的软件结构,应该对初步分割得到的模块进行再分解或合并。

补充:

以”家庭保安系统”为例,进一步对变换分析的各步骤进行讲述.

三.事务分析

当数据流具有明显的事务特征时,即能找到一个事务(亦称触发数据项)和一个事务中心,采用事务分析法更为适宜。

事务分析法可概括为七个步骤:

步骤一、复审基本系统模型;

步骤二、复审并精化软件数据流图;

步骤三、确定数据流图的特征;

步骤四、指出事务中心,确定接收部分和发送部分的流界;

步骤五、映射出系统上层模块结构;

步骤六、分解并精化事务结构以及每条动作路径所对应的结构。

步骤七、使用启发式设计策略,精化所得程序结构雏形,改良软件质量。

这一步骤与变换分析法相同。

四、设计优化原则

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

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

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

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

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

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

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

对时间有特殊要求的软件,采用下述对策:

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

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

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

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

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

补充:

5.6 总体设计案例分析

通过总体设计的目标引出软件设计过程

英语序列化要求

通过实际事例引入"分而治之"的思想

给出每种内聚的概念并举说明例

给出每种耦合的概念并举说明例

设计软件时应尽量使用数据耦合,减少控制耦合,限制外部环境耦合和公共数据耦合,杜绝内容耦合。

由类树图引出有关程序结构的术语

给出每个步骤的详细解释

在第1节讲过,在此强调一下

结合事例对每条规则进行阐述

让学生根据流程图试着画出结构图

本章重点内容

对面向数据流的设计过程进行详细讲解

结合实例对变换分析的每一步骤进行详细阐述

根据前面的基础,让学生自己的对补充的”家庭保安系统”进行变换分析

以”家庭保安系统”进行事务分析

如果时间剩余对第四章课后习题进行讲解

案例分析以学生为中心进行

小结:

总体设计阶段的基本目的是用比较抽象概括的方式确定系统的物理配置方案,并且进而确定组成系统的每个程序的结构。

层次图和结构图是描绘软件结构的常用工具。

设计软件结构设计时应该遵循模块独立原理。

在进行软件结构设计时一种有效的方法就是,由抽象到具体地构造出软件的层次结构。

在软件开发过程中既要充分重视和利用启发式规则。

自顶向下逐步求精是进行软件结构设计的常用途径;

有了详细的数据流图,也可用面向数据流的设计方法,用形式化的方法由数据流图映射出软件结构--软件的初步结构,再根据设计原理并参考启发式规则,得到高质量模块和更合理的软件结构。

作业:

P114 习题5:

3 4 

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2