GIS软件工程的总体设计-课件_第1页
GIS软件工程的总体设计-课件_第2页
GIS软件工程的总体设计-课件_第3页
GIS软件工程的总体设计-课件_第4页
GIS软件工程的总体设计-课件_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章GIS系统总体设计第一节总体设计的基本理论第二节软件体系结构设计第三节空间数据库设计第四节GIS应用分析模型设计第五节GIS用户界面设计第六节系统总体设计报告1第五章GIS系统总体设计第一节总体设计的基本理论1从技术和管理的角度看设计的关系一、系统设计概述

系统设计是一个把系统需求变换成软件表示的过程。最初这种表示只是描绘出系统的总的框架,然后进一步细化,在此框架中填入细节,把它加工成在程序细节上非常接近于源程序的软件表示。第一节总体设计的基本理论2从技术和管理的角度看设计的关系一、系统设计概述两类软件工程的简单比较3两类软件工程的简单比较3翻译分析模型到软件设计THEANALYSISMODELproceduraldesigninterfacedesignarchitecturaldesigndatadesignTHEDESIGNMODELDataobjectdescriptionProcessspecificationControlspecificationE-RDFDSTDDD4翻译分析模型到软件设计THEANALYSISMODELp翻译分析模型到软件设计数据设计将分析时创建的信息域模型变换为软件所需的数据结构,侧重于数据结构的定义。体系结构设计定义软件系统各主要结构构件之间的关系。过程设计则是把结构构件转换成软件的过程性描述。在编码步骤,根据这种过程性描述,生成源程序代码,然后通过测试最终得到完整有效的软件。接口设计是建立软件内部的关系以及软件人-机之间的交互机制。5翻译分析模型到软件设计数据设计将分析时创建的信息域模型变换为软件设计的重要性软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构。6软件设计的重要性软件设计是后续开发步骤及软件维护工作的基础二、总体设计的任务GIS总体设计阶段的主要任务是将系统需求转换为数据结构和软件体系结构。数据设计:把分析阶段所建立的信息域模型变换成软件实现中所需的数据结构。体系结构设计:则是把系统的功能需求分配给软件结构,形成软件的模块结构图、并设计模块之间的接口关系。总体设计从回答“做什么”到回答“怎样做”;7二、总体设计的任务GIS总体设计阶段的主要任务是将系模块指的是具有输入和输出、逻辑功能、运行程序、内部数据四种属性的一组程序语句。除了上述四个主要属性外,模块还有其他的属性。例如,它有一个名称,可以使用别的模块,也可以被别的模块使用,即“调用”和“被调用”。模块:8模块指的是具有输入和输出、逻辑功能、运行程序、内部数据四种属软件结构:即由模块组成的层次系统;应该把模块组织成良好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能。模块(续):9软件结构:即由模块组成的层次系统;应该把模块组织成良好的层次三、总体设计的方法由问题结构导出系统结构,即问题结构到系统结构的映射。通过自顶向下分解和层次组织的方法来简化系统,产生模块结构。运用一系列的图表工具。提供一系列的系统设计策略。提供一组评价系统设计质量的准则。10三、总体设计的方法由问题结构导出系统结构,即问题结构到系统

模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。1.模块化(Modularity)四、设计基本原理11模块化就是把程序划分成独立命名且可独立访问的模模块化论据:C(x)定义为问题x的感知复杂性E(x)定义为解决问题x所需要的工作量对p1和p2两个问题,若C(p1)>C(p2),则E(p1)>E(p2)C(p1+p2)>C(p1)+C(p2)E(p1+p2)>E(p1)+E(p2)这个不等式“各个击破”的结论——把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。这就是模块化的根据。12模块化论据:这个不等式“各个击破”的结论——把如何确定最小成本区?成本成本/模块最小成本区接口成本软件总成本模块数目模块化和软件成本:不要过度模块化!每个模块的简单性将被集成的复杂性所掩盖。每个程序都相应地有一个最适当的模块数目M,使得系统的开发成本最小。13如何确定最小成本区?成本成本/模块最小成本区接口成本软件模块化的优点:使软件结构清晰;使软件容易测试和调试,因而有助于提高软件的可靠性;模块化能够提高软件的可修改性;提高程序编写的可分解性;14模块化的优点:14抽象是抽出事物的本质特性而暂时不考虑它们的细节。随着软件规模的不断增大,设计的复杂性也不断增大,抽象便成了控制复杂性的基本策略之一;软件工程过程的每一步都是对软件解法的抽象层次的一次精化;软件设计其实就是在不同抽象级别考虑和处理问题的过程。在由高级抽象到低级抽象的转换过程中,要进行一连串的过程抽象和数据抽象。2.抽象(abstraction)152.抽象(abstraction)15过程抽象:把完成一个特定功能的动作序列抽象为一个过程名和参数表;数据抽象:数据抽象把一个数据对象的定义抽象为一个数据类型名。用此类型名可以定义多个具有相同性质的数据对象。过程抽象与数据抽象:16过程抽象:把完成一个特定功能的动作序列抽象为一个过程名和参数1971年,N.Wirth发表了“用逐步细化的方法开发程序”的文章,强调程序设计是一个“渐进”的过程。抽象与细化是互补的概念。细化实际是一个详细描述的过程。细化的实质就是分解。在逐步细化中,特别强调这种分解的“逐步”性质,这样,在相邻两步之间就只有微小的变化,不难验证它们的内容是否等效。3.细化(Refinement)171971年,N.Wirth发表了“用逐步细化的方法开发程序”信息隐藏是把系统分解为模块时应遵守的指导思想。模块内部的数据与过程,应该对不需要了解这些数据与过程的模块隐藏起来;这一指导思想的目的,是为了提高模块的独立性;4.信息隐藏(InformationHiding)184.信息隐藏(InformationHiding)18为什么模块的独立性很重要呢?第一,有效的模块化的软件比较容易开发出来。第二,独立的模块比较容易测试和维护。5.模块独立性195.模块独立性19模块独立性的度量标准:

内聚(cohesion)和耦合(coupling)耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。20模块独立性的度量标准:20简单地说,理想内聚的模块只做一件事情;内聚级别:偶然内聚逻辑内聚时间内聚过程内聚通信内聚顺序内聚功能内聚设计时应该力求做到高内聚;最差最好(1)内聚cohesion21简单地说,理想内聚的模块只做一件事情;最差最好(1)内聚cA.低内聚偶然内聚(Coincidentalcohesion):Unrelatedfunctions,processes,ordataarefoundinthesamemodule.例:readdiskfile;calculatecurrentvalues;produceuseroutput;…严重的缺点:产品的可维护性退化;模块是不可复用的,增加软件成本。解决途径:将模块分成更小的模块,每个小模块执行一个操作。22A.低内聚22A.低内聚逻辑内聚(Logicalcohesion):Logicallyrelatedfunctionsordataareplacedinthesamemodule.例:问题:接口难于理解;完成多个操作的代码互相纠缠在一起,导致严重的维护问题。A:Readinputsfromdiskfromtapefromkeyboard23A.低内聚A:fromdiskfromtapefromA.低内聚时间内聚(Temporalcohesion):Thefunctionsarerelatedonlybythetiminginvolved.例如:系统的初始化openoldmasterfile;newmasterfile,transactionfileandprintfile;initializesalesregiontable;readfirsttransactionrecordandfirstoldmaster

……24A.低内聚24B.中内聚过程性内聚(Proceduralcohesion):Functionsaregroupedtogetherinamoduletoensureacertainorderofperformance.例子:Readpartnumberfromdatabaseandupdaterepairrecordonmaintenancefile.25B.中内聚25B.中内聚通信内聚(Communicationalcohesion):Allthefunctionsinamoduleoperateonorproducethesamedataset.这类模块的标志是,模块内部的各个成分都使用同一种输入数据,或者产生同一个输出数据。它们靠用公用数据而联系在一起,故称为通信性内聚。26B.中内聚26C.高内聚顺序内聚(Sequentialcohesion):Theoutputfromonepartofamoduleistheinputtothenextpart.顾名思义,这类模块中的各组成部分是顺序执行的,在通常情况下,上一个处理框的输出就是下一个处理框的输入。27C.高内聚27C.高内聚

功能内聚(Functionalcohesion):Everyprocessingelementisessentialtotheperformanceofasinglefunction.原则:在实际工作中,确定内聚的精确级别是不必要的,重要的是力争高内聚和识别低内聚,可以使得设计的软件具有较高的功能独立性。28C.高内聚原则:在实际工作中,确定内聚的精确级别是不必要耦合是度量系统中模块之间的交互程度。Goal:aslooseaspossible=asindependentaspossible耦合从低到高依次为:非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合和内容耦合。GreatdealofdependenceIndependent

HighlycoupledLooselycoupledUncoupled

(2)耦合29耦合是度量系统中模块之间的交互程度。Greatdealo非直接耦合nodirectcoupling

两个模块之间没有联系,则它们之间为非直接耦合。数据耦合datacoupling模块之间交换的是简单变量,便构成数据耦合;特征耦合stampcoupling模块之间交换的是数据结构,便构成特征耦合;

Themostdesirable.A.弱耦合30非直接耦合nodirectcouplingThe弱耦合示例图31弱耦合示例图31房租水电=房租+用水量+用电量32房租水电=32控制耦合controlcoupling

如果两个模块中的一个模块给另一个模块传递控制信息,则它们具有控制耦合。ABFlagF2F1Fn…………Flag特点:接口单一,但仍然影响被控模块的内部逻辑。B.中耦合33控制耦合controlcouplingABFlagF2外部耦合externalcoupling

若允许一组模块访问同一个全局变量,可称它们为外部耦合;C.较强耦合公共耦合commoncoupling 若允许一组模块访问同一个全局性数据结构,则称之为公共耦合。34外部耦合externalcouplingC.较强耦合公公共耦合示意图35公共耦合示意图35D.强耦合内容耦合contentcoupling如果一个模块可以直接调用另一个模块中的数据,或者允许一个模块直接转移到另一个模块中去,就称它们间的耦合为内容耦合。……ABCDA:……………………gotoC1……………………C:……………………C1:…………例1:A访问C的内部数据或不通过正常入口而转入C的内部。36D.强耦合……ABCDA:C:例1:A访问C的内部数据或不通原则:尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内容耦合。37372.模块规模适中模块过大,分解不充分不易理解;模块太小,则开销过大、接口复杂;1.改进软件结构提高模块独立性争取低耦合、高内聚;五、启发式规则382.模块规模适中1.改进软件结构提高模块独立性五、启发式规则3.深度、宽度、扇入、扇出都要适当控制

(1)深度=分层的层数。过大表示分工过细。(2)宽度=同一层上模块数的最大值。过大表示系统复杂度大。393.深度、宽度、扇入、扇出都要适当控制39(3)扇出=一个模块直接调用\控制的模块数3fan-out9AA的扇出如果一个模块的扇出数过大,就意味着该模块过分复杂,需要协调和控制过多的下属模块,应当适当增加中间层次的控制模块;扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去;40(3)扇出=一个模块直接调用\控制的模块数AAA的扇入(4)扇入=直接调用该模块的模块数在不破坏模块独立性的前提下,fan-in大的比较好;41AA的扇入(4)扇入=直接调用该模块的模块数41

一般来说,顶层扇出高,中间扇出少,低层高扇入。尽可能减少高扇出结构,随着深度增大扇入。42一般来说,顶层扇出高,中间扇出少,低层高扇入。作用域是指该模块中一个判断所影响的所有其它模块;控制域指该模块本身以及所有直接或间接从属于它的模块;4.模块的作用范围保持在该模块的控制范围内在一个设计得很好的系统中,所有受判定影响的模块应该都从属

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论