资源描述
,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,在系统定义阶段确定系统建设的目标和任务之后,需要进行系统的总体设计。,GIS,总体设计阶段的主要任务是将系统需求转换为数据结构和软件体系结构,即数据设计和体系结构设计。数据设计就是把分析阶段所建立的信息域模型变换成软件实现中所需的数据结构。体系结构设计则是把系统的功能需求分配给软件结构,形成软件的模块结构图,并设计模块之间的接口关系。在总体设计阶段,各模块还处于黑盒子状态,模块通过外部特征标识符(如名字)进行输入和输出。使用黑盒子的概念,设计人员可以站在较高的层次上进行思考,从而避免过早地陷入具体的条件逻辑、算法和过程步骤等实现细节,以便更好地确定模块和模块间的结构。,在系统定义阶段确定系统建设的目标和任务之后,需要进行系统的总,1,教学提纲,一、总体设计的任务、方法和准则,二、系统总体设计工具,退出,教学提纲一、总体设计的任务、方法和准则退出,2,一、总体设计的任务、方法和准则,(一) 总体设计的任务和方法,(二) 总体设计的准则,返回,一、总体设计的任务、方法和准则(一) 总体设计的任务和方法返,3,总体设计的任务是要求系统设计人员遵循统一的准则和采用标准的工具来确定系统应包含哪些模块、用什么方法联结在一起,以构成一个最优的系统结构。,总体设计一般采用结构化设计方法进行实现。结构化设计强调软件总体结构的设计,是一种自顶向下、逐步求精和分阶段实现的设计策略。,总体设计的任务和方法,总体设计的任务是要求系统设计人员遵循统一的准则和采,4,结构化设计的基本特点,由问题结构导出系统结构,即问题结构到系统结构的映射。问,题结构主要用数据流图(,DFD,)来描述系统的逻辑模型,而系,统结构是指用系统的模块结构图来描述软件结构,通过自顶向下分解和层次组织的方法来简化系统,产生模块结,构,运用一系列的图表工具。为使系统设计流程易于理解,结构化,设计使用了两种主要的图表工具:伪码和结构图。伪码描述的,是模块的处理逻辑,用来表达程序的设计思路;结构图用于描,述软件的总体结构,采用自顶向下、层次组织的方法,结构化设计的基本特点,5,提供一系列的系统设计策略。结构化设计提供了两种设计,策略,它们分别是面向过程的数据流方法与面向数据结构,的,Jackson,方法和,Warnier-Orr,方法。,提供一组评价系统设计质量的准则。结构化设计方法提供,了一系列评估准则,如耦合、内聚、扇入和扇出、信息隐,蔽以及模块化等。,提供一系列的系统设计策略。结构化设计提供了两种设计,6,结构化设计方法,一般设计方法,设计工具,数据流图,模块结构图,图表工具,系统流程图,设计思想,自顶向下,逐层分解,自底向上,统一组装,设计重心,强调软件总体结构,其次才考虑软件模块的内部处理逻辑,(,程序结构,),采用系统流程图描述源程序的处理逻辑,强调的是系统实现,设计过程,分为总体设计和详细设计,没有明确的阶段划分,性 能,系统具有较好灵活性和可维护性,系统整体性好,易于把握用户需求目标,系统结构性差,缺乏灵活性和可维护性,并且可靠性和效率不高,结构化设计方法与一般设计方法的比较,结构化设计方法一般设计方法设计工具数据流图,模块结构图,图表,7,设计方法和策略问题,如何构造(导出)软件的总,体结构,软件评估准则问题,什么样的软件结构是“最优”,的,软件设计工具问题,如何表述软件的结构,采用结构化设计方法需解决的问题,设计方法和策略问题如何构造(导出)软件的总采用结构化设计,8,在结构化设计过程中,模块是一个重要的概念。模块指的是具有输入和输出、逻辑功能、运行程序、内部数据四种属性的一组程序语句。其中,输入、输出和逻辑功能是其外部属性,反映功能,是可见的;运行程序、内部数据是其内部属性,反映具体实现途径,是不可见的。除了上述四个主要属性外,模块还有其它的属性。例如,它有一个名称,可以使用别的模块,也可以被别的模块使用,即,“,调用,”,和,“,被调用,”,。在结构化系统总体设计中,主要关心的是模块的外部属性,即它的功能,而不是它的内部属性,即如何去实现。,结构化设计中的模块,返回,在结构化设计过程中,模块是一个重要的概念。模块指的是具有输入,9,总体设计的准则,采用结构化设计方法进行系统总体设计的最大优势是它提供了一种便于衡量软件设计质量的广泛的评价准则。这些评价软件设计质量的主要准则包括:,模块化,抽象和信息隐蔽,模块独立性,总体设计的准则采用结构化设计方法进行系统总体设计的最大优势是,10,软件可以简单地理解为模块的集成。目前,几乎所有的软件体系结构都体现为模块化。模块化是软件设计的一个基本准则,它使得一个程序易于为人们所理解、设计、测试和维护。高层模块可使我们从整体上把握问题,隐蔽细节以免分散我们的注意力,在需要时,又可以深入到较低的层次以了解进一步的细节。模块化往往将较复杂的问题转化为一些简单问题的集合,使我们可以将工作量分散到各个工作组以集中力量解决各个问题。,模块化,软件可以简单地理解为模块的集成。目前,几乎所有的软件体系结构,11,每一个模块表示一个自我包含的逻辑任务;,每个模块都是简单的;,每个模块都是封闭的;,每个模块都是可以独立测试的;,每个模块对应单一、独立的程序功能;,每个模块有单一的入口和出口;,每个模块都由一个标准返回点返回上层模块开始执行该模块的那,一点;,可以把多个模块组合成较大的模块,而不必了解模块内部构造的,知识;,每个模块都有严格规定的接口,其中包括由入口和出口形成的控,制连接、由参数和共享的公用数据形成的数据连接以及由模块间,的服务支持形成的功能连接。,模块化原则,每一个模块表示一个自我包含的逻辑任务;模块化原则,12,抽象和信息隐蔽,抽象是抽出事物的本质特性而暂时不考虑它们的细节,它反映在数据和过程两方面。在模块化问题求解时,在最高抽象级可以采用面向问题环境语言的抽象术语进行叙述;而在较低抽象级,则可采用过程性术语。模块化的概念加上逐步求精的方法将面向问题的术语和面向实现的术语两者结合起来,前者是后者的一种抽象。在软件模块结构图中,下层模块是上层模块的细化,因此顶层或上层模块的抽象程度较高,而在下层模块中则体现功能实现的细节。,抽象和信息隐蔽抽象是抽出事物的本质特性而暂时不考虑它们的细节,13,信息隐蔽是模块的另一重要特征。“信息隐蔽”意味着有效的模块化可以通过定义一组独立的模块来实现,这些独立的模块彼此之间仅仅交换那些为了完成系统功能所必须交换的信息。一个模块内部所包含的信息(数据或过程),如果它不允许外部的模块访问的话,其它模块是不能对它们访问的。,抽象和信息隐蔽从两个不同方面说明了模块化设计的特征。“抽象”帮助定义构成软件的过程实体,而“信息隐蔽”实施对过程细节的存取约束。,信息隐蔽是模块的另一重要特征。“信息隐蔽”意味着有效的模块化,14,模块独立性,模块独立性的概念是模块抽象和信息隐蔽的直接结果,是保证软件质量的关键性因素。采用结构化设计方法进行系统总体设计强调把系统设计成具有层次式的模块化结构。模块独立性程度较高的软件,其功能易于划分,接口简单,因此开发、测试和维护都较容易,修改引起的副作用也较小。,模块独立性有两个定性的标准来度量,即内聚(,cohesion,,又称块内联系)和耦合(,coupling,,又称块间联系)。内聚是模块内部各成分之间的联系,如果一个模块的内聚度大,模块的独立性则会提高。耦合是指模块间的联系,耦合度是对模块独立性的直接衡量,很显然,块间联系越小,模块的独立性则会越高,耦合度就会降低。在系统中,内聚度和耦合度是相互联系的,模块的内聚度越高,则耦合度就越低。,模块独立性模块独立性的概念是模块抽象和信息隐蔽的直接结果,是,15,采用好的设计规则,改进软件结构,提高模块独立性,设计出软件初步结构以后,应该审查和分析这个结构,通过模块的分解和合并,力求降低模块耦合度,提高模块内聚度。例如,多个模块公用的一个子功能可以独立成一个模块,供这些模块调用。有时则可通过分解或合并模块以减少控制信息的传递及对全局数据的引用,降低接口的复杂程度。经验表明,模块规模应当适中,过大则可能导致独立性降低,引起开发、测试和维护的不便。,返回,采用好的设计规则,改进软件结构,提高模块独立性,设计出软件,16,二、系统总体设计工具,(一) 层次图,(二),HIPO,图,(三) 结构图,返回,二、系统总体设计工具 (一) 层次图返回,17,层次图,层次图(,hierarchical chart,)是在软件总体设计阶段最常用的工具之一,用来描绘软件的层次结构。,下图,为某土地定级信息系统的局部层次图,图中的每个方框代表一个模块,方框间的连线表示模块的调用关系。层次图适合于在自顶而下设计软件的过程中使用。,层次图,18,某土地定级信息系统,数据输入,数据编辑,因子分析,因素复合,级别划定,面积量算,专题制图,成果输出,空间内插分析,地形坡度分析,平均高程分析,曲面分级,引力模型,空间扩散分析,分值频率分析,分值分级,样点级别提取,级差收益测算,返回,某土地定级信息系统数据输入数据编辑因子分析因素复合级别划定面,19,HIPO,图,HIPO,图是由美国,IBM,公司发明的“层次输入处理输出图”的英文缩写。,HIPO,图实际上由,H,图(即层次图)和,IPO,图两部分组成。这里的,H,图是在层次图的基础上对每个方框进行编号,使其具有可跟踪性。编号规则如下:最顶层方框不编号,第一层中各模块的编号依次为,1.0,,,2.0,,,3.0,,,;如果模块,2.0,还有下层模块,那么下层模块的编号依次为,2.1,,,2.2,,,2.3,,,;如果模块,2.2,又有下层模块,则下一层各模块的编号根据上面的规律依次为,2.2.1,,,2.2.2,,,2.2.3,,,,依次类推。,HIPO图,20,某土地定级信息系统,数据输入,1.0,数据编辑,2.0,因子分析,3.0,因素复合,4.0,级别划定,5.0,面积量算,6.0,专题制图,7.0,成果输出,8.0,空间内插分析,3.1,地形坡度分析,3.2,平均高程分析,3.3,曲面分级,3.4,引力模型,3.5,缓冲区分析,3.6,分值频率分析,5.1,分值分级,5.2,样点级别提取,5.3,级差收益测算,5.4,H,图举例(某土地定级信息系统的局部,H,图),某土地定级信息系统数据输入数据编辑因子分析因素复合级别划定面,21,和,H,图中每个方框相对应,应该有一张,IPO,图描述这个方框所代表的模块的信息处理过程。,IPO,图使用简洁的方框来方便地描述数据输入、数据处理和数据输出三部分之间的关系。值得强调的是,,HIPO,图中的每个,IPO,图都应该明显地标出它们所描绘的模块在,H,图中的编号,以便跟踪了解这个模块在软件结构中的位置。如下图描述的是缓冲区分析模块,对应的编号是,3.6,。,净化后数据,影响度,空间影响半径,1.,选择影响模型,2.,提取影响主体,3.,计算模型参数,4.,缓冲带操作,图形输出,数据存储,输入,处理,输出,IPO,图举例(缓冲区分析模块的,IPO,图),返回,和H图中每个方框相对应,应该有一张IPO图描述这个方框所代表,22,结构图,Yourdon,提出的结构图(,Structured chart,)是进行软件结构化设计的另一种有力的工具。结构图和层次图类似,也是用来描述软件结构的,但其描述能力比层次图更强。如下图,图中每个方框代表一个模块,框内注明模块的名字或主要功能,模块的名称通常是动宾结构的名词,方框之间的箭头(或直线)表示模块间的调用关系。,结构图,23,模块,A,模块,B,调用模块,(Caller),被调用模块,(Subordinate),控制标识,数据传递,在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息,如果希望进一步标明传递的信息是数据还是控制信息,则可以利用注释箭头尾部的形状来区分:尾部是空心圆表示传递的是数据,尾部是实心圆表示传递的是控制信息。此外,还可以附加一些符号以表示模块的选择调用或循环调用关系。,模块A模块B调用模块(Caller)被调用模块(Subord,24,在结构图中,关键要描述的内容有两个:一是模块的功能,通常是由模块的名称来标识的;二是要描述模块与模块之间的接口。构造结构图时,要注意以下几个问题:首先,一个模块可以被不同的模块所调用;其次,在同一层次中,模块的调用次序不一定是自左向右。结构图并不严格地表示模块的调用次序,虽然多数人习惯于按照调用次序从左到右描述模块,但也可以出于其它考虑(例如为了减少交叉线),完全不按这种次序画。模块的调用次序在很多情况下可以根据模块所传递的数据和控制来区分。此外,结构图和层次图一样,并不指明什么时候调用下层模块。通常上层模块中除了调用下层模块的语句外还有其它语句,究竟是先执行调用下层模块的语句还是先执行其它语句,在图中并没有表示。,返回,在结构图中,关键要描述的内容有两个:一是模块的功能,通常是由,25,
展开阅读全文