自学考试“软件工程”复习大纲及试验指导(三
第三章 结构化设计
1. 软件设计阶段的主要任务、方法、阶段:
需求分析阶段的主要任务是确定系统必须“做什么”,形成软件的需求规格说明书,软件设计阶段的主要任务是确定系统“怎么做”,从软件需求规格说明书出发,形成软件的具体设计方案,软件设计可以采用多种方法,如结构化设计方法、面向数据结构的设计方法、面向对象的设计方法等,结构化软件设计可以分为总体设计和详细设计两个阶段。
2. 总体设计阶段的主要任务及其内容:
总体设计阶段的主要任务是把系统的功能需求分配给软件结构,形成软件的模块结构图(MSD),在结构图中矩形表示功能单元,称为“模块”,连接上下层模块的线段表示它们之间的调用关系,在总体设计阶段,每个模块还处于黑盒子级,模块通过外部特征标识,名字、输入、输出。
3. 总体设计的表示形式及其内容(层次图、HIPO图、结构图):
层次图是软件总体设计阶段最常使用的表示形式之一,用来描绘软件的层次结构,图中的每个方框代表一个模块,方框间的连线表示模块的调用关系,层次图很适合于在自顶向下设计软件的过程中使用;
HIPO图是由美国IBM公司发明的“层次图+输入/处理/输出图”的英文缩写,HIPO图实际上由H图和IPO图两部分组成,H图就是上面提到的层次图,为了能使HIPO图具有可跟踪性,在H图里除了最顶层的方框之外,每个方框都加了编号;
结构图和层次图类似,图中每个方框代表一个模块,方框之间的箭头(或直线)表示模块的调用关系,在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息,尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。
4. 模块及其组成:
模块是执行一个特殊任务或实现一个特殊的抽象数据类型的一组例程和数据结构,模块由两部分组成,接口和实现模块功能的执行机制。
5. 面向数据流的设计方法(综合应用):
面向数据流的设计方法把数据流图映射成为软件结构,数据流图的类型决定了映射的方法,数据流图可以分为变换型数据流图和事务型数据流图,具有较明显的输入、变换(或称主加工)和输出界面的数据流图称为变换型数据流图,数据沿输入通路到达一个处理模块,这个处理模块根据输入数据的类型在若干动作序列中选出一个来执行,这类数据流图称为事务型数据流图,并且称这个模块为事务中心,它完成如下任务,接收输入数据、分析数据并确定数据类型、根据数据类型选取一条活动通路。
6. 评价软件设计质量的主要准则(模块化、抽象、耦合、内聚)及详细内容:
模块化是好的软件设计的一个基本准则;
抽象就是抽出事务的本质特性而暂时不考虑它们的细节,模块是按照不同的抽象级别安排的,高层抽象模块向读者隐藏了功能实现的细节,这就是信息隐蔽,模块之间相互隐藏自身的实现细节对一个好的设计来说是至关重要的;
耦合是对不同模块之间相互依赖程度的度量,紧密耦合是指两个模块之间存在着很强的依赖关系,松散耦合是指两个模块之间存在一些依赖关系,但他们之间的连接比较弱,无耦合是指模块之间根本没有任何连接;
耦合的强度依赖于以下四个因素,一个模块对另一个模块的引用,一个模块向另一个模块传递的数据量,一个模块施加到另一个模块的控制的数量,模块之间接口的复杂程度;
从强到弱的几种常见的耦合类型,内容耦合,一个模块直接修改或操作另一个模块的数据;公共耦合,两个以上的模块共同引用一个全局数据项;控制耦合,一个模块在界面上传递一个信号控制另一个模块,接收信号的模块的动作根据信号值进行调整,称为控制耦合;标记耦合,若两个模块至少有一个通过界面传递的公共参数包含内部结构;数据耦合,模块间通过参数传递基本类型的数据,数据耦合是最简单的耦合形式,系统中至少必须存在这种类型的耦合;
内聚度量的是一个模块内部各成分之间相互关联的强度,如果一个模块的所有成分都直接参与并且对于完成同一功能来说都是最基本的,则该模块是高内聚的;
从低到高的几种常见的内聚类型,偶然内聚,一个模块的各个成分之间毫无关系;逻辑内聚,几个逻辑上相关的功能被放在同一模块中;时间内聚,一个模块完成的功能必须在同一时间内执行,但这些功能只是因为时间因素关联在一起;过程内聚,一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行;通信内聚,一个模块的所有成分都操作同一数据集或生成同一数据集;顺序内聚,一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个的成分;功能内聚,最理想的内聚是功能内聚,模块的所有成分对于完成单一的功能都是基本的;
内聚和耦合是密切相关的,在进行软件设计时,应力争做到强内聚、弱耦合。
7. 结构化设计的启发式规则:
改进软件结构提高模块独立性,模块规模应该适中,深度、宽度、扇入和扇出应适中,模块的作用域应该在控制域之内,力争降低模块接口的复杂性,模块功能应该可以预测;
模块的作用域定义为受该模块内一个判定影响的所有模块的集合,模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合。
8. 结构化分析与结构化设计的区别:
结构化分析得到数据流图、数据字典等,属于逻辑模型,结构化设计得到模块结构图,属于程序模型。
9. 详细设计阶段的目标、表现、内容:
详细设计阶段的根本目标是确定怎样具体的实现所要求的系统,详细设计以总体设计阶段的工作为基础,但又不同于总体设计,主要表现在,在总体设计阶段,数据项和数据结构以比较抽象的方式描述,详细设计要提供关于算法的更多细节;
详细设计的模块包含实现对应的总体设计的模块所需要的处理逻辑,主要有,详细的算法,数据表示和数据结构,实施的功能和使用的数据之间的关系。
10.结构化程序的三种基本结构,结构化设计的目标:
结构化程序设计技术采用自顶向下逐步求精的设计方法和单入口单出口的控制结构,并且只包含顺序、选择和循环三种结构,结构化程序设计的目标之一是使程序的控制流程线性化,即程序的动态执行顺序符合静态书写结构,结构化程序设计的观点是要求设计好结构的程序。
11.详细设计的任务,详细设计的工具及其内容特点:
详细设计的任务是给出软件模块结构中各个模块的内部过程描述,也就是模块内部的算法设计,详细设计的工具可以分为图形、表格、语言三种,包括程序流程图、盒图(N-S图)、PAD图、类程序设计语言(PDL);
程序流程图中使用的主要符号包括顺序、选择、循环结构,它的主要缺点如下,程序流程图本质上不是逐步求精的好工具,它诱使程序员过早的考虑程序的控制流程,而不去考虑程序的全局结构,程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制,程序流程图不易表示数据结构;
PAD是问题分析图的英文缩写,它用二维树形结构的图表示程序的控制流,PAD图的主要优点如下,使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序,PAD图所描述的程序结构十分清晰,用PAD图表现程序逻辑,易读、易懂、易记,很容易将PAD图转换成高级语言源程序,既可用于表示程序逻辑,也可用于描述数据结构,PAD图的符号支持自顶向下逐步求精的使用,PAD图是面向高级程序设计语言的;
类程序设计语言也称为伪码,它是用正文形式表示数据结构和处理过程的设计工具,PDL具有以下特点,关键字的固定语法,提供了结构化控制结构、数据说明和模块化的手段,自然语言的自由语法,用于描述处理过程和判定条件,数据说明的手段,既包括简单的数据结构,又包括复杂的数据结构,模块定义和调用的技术,提供各种接口描述模式;
PDL作为一种设计工具有如下一些优点,可以作为注释直接插在源程序中间,可以使用普通的正文编辑程序或文字处理系统,很方面的完成PDL的书写和编辑工作,已经有自动处理程序存在,而且可以自动由PDL生成程序代码,PDL的缺点是不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表或判定树清晰简单。
本章设计题为DFD到模块结构图的转换和详细设计工具的具体应用,为笔试和试验的必考题型,非常重要,请考生参考辅导第256页(1)~(7)题,务必每一种题型都熟练掌握。
本章与上一章的设计题是软件工程科目的重点,大约占笔试的35%,占试验的70%,并且前面四章的所有内容大约占笔试的60%,希望读者重点掌握。
安徽自考网声明:
1、由于各方面情况的调整与变化,本网提供的考试信息仅供参考,考试信息以省考试院及院校官方发布的信息为准。
2、本网信息来源为其他媒体的稿件转载,免费转载出于非商业性学习目的,版权归原作者所有,如有内容与版权问题等请与本站联系。联系邮箱:952056566@qq.com