桃园文印室
信息局部化:是把一些关系密切的软件元素物理地放得彼此靠近 6、 什么是模块独立性?
答:模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准。
7、 模块独立性:是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中
的 其它的模块接口是简单的。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。
8、 为什么模块的独立性很重要?
答:1)有效的模块化的软件比较容易开发出来
2)独立的模块比较容易测试和维护。总之,模块独立是好设计的关键,而设计又是决定软件质量的关键环节。
9、 衡量模块独立的两个标准是什么?它们各表示什么含义?
答:衡量模块的独立性的标准是两个定性的度量标准:耦合性和内聚性。
(1)耦合性。也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
(2)内聚性。又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语句之间、程序段之间)联系得越紧密,则它的内聚性就越高。
耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。 模块的高内聚、低耦合的原则称为模块独立原则,也称为模块设计的原则。 10、启发规则:
1) 改进软件结构提高模块独立性 2) 模块规模应该适中
3) 深度、宽度、扇出、、和扇入都应适当
深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度。 宽度是软件结构内同一个层次上的模块总数的最大值;一般来说,宽度越大系统越复杂。对宽度影响最大的因素是模块的扇出。
一个模块的扇入是指直接调用该模块的上级模块的个数。 一个模块的扇出是指该模块直接调用的下级模块的个数。 设计原则:低扇出、高扇入。
11
计算机科学学院 软件工程(二)班 软件工程导论复习资料2 星光二班
桃园文印室
4) 模块的作用域应该在控制域内 5) 力争降低模块接口的复杂程度 6) 设计单入口和单出口的模块 7) 模块功能应该可以预测 三、概要设计的方法:
1、面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法。面向数据流的设计要解决的任务,就是上述需求分析的基础上,将DFD图映射为软件系统的结构。
2、数据流图的类型:交换型结构和事务型结构
交换型结构:由3部分组成,传入路径,变换中心,输出路径 系统的传入流经过变换中心的处理,变换为系统的传出流。
事务型结构:有至少一条接受路径,一个事务中心与若干条动作路径组成。当外部信息沿着接受路径进入系统后,经过事务中心获得某个特定值,就能据此启动某一条动作路径的操作。
四、结构化设计
1、结构化设计方法:是一种面向数据流的设计方法,中心任务就是把用DFD图表示的系统分析模型转换为软件结构的设计模型,确定软件的体系结构域接口。
12
计算机科学学院 软件工程(二)班 软件工程导论复习资料2 星光二班
桃园文印室
2、结构化方法的步骤:
1)复审DFD图,必要时刻再次进行修改或细化:
2)鉴别DFD图所表示的软件系统的结构特征,确定它所代表的软件结构是属于变换型还是事务型。
3)按照SD方法规定的一组规则,吧DFD图转换为初始的SC图。 变换型DFD图事务型DFD图3、结构设计的优化规则:
1)对模块分割、合并和变动调用关系的指导规则:以提高模块独立性为首要标准,除此之外,适当考虑模块的大小。 2)保持高扇 / 入低扇出原则 3)作用域 / 控制域规则: 作用域不要超出控制域的范围;
软件系统的判定,其位置离受它控制的模块越近越好。
初始SC图 初始SC图
六、 详细设计
重点掌握的内容:详细设计的任务和方法
一般掌握的内容:详细设计的原则和详细设计的规格与评审 考核知识点: 一、详细设计
1、详细设计目的:对模块的算法设计和数据结构设计(设计出的处理过程应该尽可能简明易懂)。
2、详细设计的任务:详细设计就是在概要设计的结果的基础上,考虑“怎样实现”这个软件系统,直到对系统中个的每个模块给出足够详细的过程描述,主要任务如下:
编写软件的“详细设计说明书”.软件人员要完成的工作:
(1) 为每一个模块确定采用的算法, 选择某种适当的工具表达算法的过程,写出模块的详细过程描述.
13
计算机科学学院 软件工程(二)班 软件工程导论复习资料2 星光二班
桃园文印室
(2) 确定每一模块使用的数据结构.
(3) 确定模块结构的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及关于模块输入数据、输出数据及局部数据的全部细节.
(4) 为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试.模块的测试用例是软件测试计划的重要组成部分,通常包括输入数据,期望输出等内容。
3、详细设计的原则:过程描述是否易于理解、复审和维护,进而过程描述能够自然装换成代码,并保证详细设计与代码完全一致。
4、详细设计的描述工具应具备什么功能?
答:无论哪类描述工具不仅要具有描述设计过程,如控制流程、处理功能、数据组织及其它方面的细节的能力,而且在编码阶段能够直接将它翻译为用程序设计语言书写的源程序。
二、结构化程序设计
4、结构程序设计:如果一个程序的代码块仅仅通过顺序、选择和循环这3种进本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。
5.结构化程序设计的基本原则:在详细设计中所有模块都使用单入口、单出口的顺序、选择、循环三种基本控制结构. 四、过程设计
1、描述程序处理过程的工具称为过程设计工具,它们可以分为图形、表格和语言3类。 2、详细设计的方法:程序流程图、N-S图、PAD图
程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。在流程图中只能使用下述的五种基本控制结构。1)顺序型、2)选择型、3)while型 4)Until型循环 5)多情况型选择 N-S图:规定了五种基本图形构件:1)顺序型、2)选择型、3)while重复型 4)Until重复型循环 5)多分支选择型
PAD图:它是用结构化程序设计思想表现程序逻辑结构的图形工具。PAD图也设置了五种基本控制结构的图示,并允许递归使用。
判定表:能够清晰地表示复杂的条件组合与应该做的动作之间的关系。
判定树的优点:它的形式简单到不需要任何说明,一眼就可以看出其含义,因此易于掌握和使用。 过程设计语言(PDL)也称伪码,它是正文形式表示数据和处理过程的设计工具。
4.比较面向数据流和面向数据结构两类设计方法的异同? 相同点:
14
计算机科学学院 软件工程(二)班 软件工程导论复习资料2 星光二班
桃园文印室
(1) 遵守结构程序设计“由顶向下”逐步细化的原则,并以其为共同的基础;
(2) 均服从“程序结构必须适应问题结构”的基本原则,各自拥有从问题结构(包括数据结构)导出程序结构的一组映射规则。
不同点:
(1) 面向数据流的设计以数据流图为基础,在分析阶段用DFD表示软件的逻辑模型,在设计阶段按数据流类型,将数据流图转换为软件结构。面向数据结构的设计以数据结构为基础,从问题的数据结构出发导出它的程序结构。
(2) 面向数据流的设计的最终目标是软件的最终SC图,面向数据结构的设计的最终目标是程序的过程性描述。
过程设计的原则和方法:
1) 清晰第一的设计风格:大多数情况下,应该优先考虑程序的清晰度,把效率的考虑放在第二位。(除
少数使用特别频繁,或者实时程序)
2) 结构化的控制结构:所有的模块都只使用单入口单出口的3种基本循环结构——顺序、选择、循环 3) Goto语句不应滥用,但也不必完全禁止 4) 逐步细化实现方法。
五、 面向数据结构的设计方法(Jackson方法和Warnier方法)
1、 Jackson设计方法:Jackson方法是最著名的面向数据结构的设计方法,而不是面向数据流的设计方法。它是以信息驱动的,是将信息转换成软件的程序结构 2、Jackson方法的基本步骤是:
(1)分析并确定输入数据和输出数据的逻辑结果,并用Jackson图描绘这些数据结构. (2)找出输入数据结构和输出数据结构中有对应关系的数据单元。 (3)从描绘数据结构的Jackson图导出描绘程序结构的Jackson图
(4)列出所有操作和条件(包括分支条件和循环结束条件),并且把他们分配到程序结构图的适当位置 (5)用伪代码表示程序
3、比较Jackson方法和LCP方法的异同?
答:Jackson与LCP设计方法都是以数据结构为出发点,以程序的过程描述为最终目标,设计步骤基本相似。它们的主要差别是:
(1)使用不同的表达工具,其中LCP方法中的表达工具Warnier图比Jackson设计方法中的表达工具Jackson图有更大的通用性;
15
计算机科学学院 软件工程(二)班 软件工程导论复习资料2 星光二班