GIS软件工程GISSoftwareEngineering(四)教材:毕硕本等.地理信息系统软件工程的原理与方法.科学出版社.2004.参考材料:(1)李存珠.软件工程概论——传统方法学和面向对象软件工程.南京大学计算机科学与技术系.1999.(2)任一本软件工程书籍.——系统分析中使用结构化分析方法SA面向对象分析方法OOACoad分析方法OMT分析方法第4章GIS软件工程的分析方法第一节结构化分析方法软件工程产生后,首先出现一、概述1.结构化方法——根据某种原理,使用一定工具,按照特定步骤的软件开发方法3部分组成:结构化分析(StructureAnalysis,SA)结构化设计(StructuredDesign,SD)结构化程序设计(StructuredProgramming,SP)2.发展历程结构化程序设计——1960s末,Dijkstra提出3种控制结构:顺序选择重复结构化设计——1970s中期,L.L.Constantine,E.Yourdon提出基于:数据流、功能分解、人工复审测试结构化分析——1970s末,Demarco提出分析的对象——结构化的功能说明3.基本思想及其特点指导思想——自顶向下,逐步求精基本原则——抽象、分解特点使用最早,使用时间最长应用最广,特别适合数据处理支持工具最多,较成熟4.优点和存在问题优点简单、实用适合于瀑布模型,易掌握成功率高特别适合于数据处理领域,其他领域亦适用存在问题不太适应规模大、特别复杂的项目软件重用困难难以适应需求的变化难以解决维护问题二、结构化分析的方法1.自顶向下、逐层分解的分析策略2.描述工具数据流图数据字典结构化语言、判定表/树——描述数据流图中,不能再被分解的每个基本加工的处理逻辑3.SA分析步骤建立当前/现行系统的物理模型抽象出当前/现行系统的逻辑模型建立目标系统的逻辑模型作进一步的补充和优化——人机界面,出错处理,I/O格式,存储容量,响应时间等第二节面向对象基础一、面向对象概念1.面向对象的基本思想——对象:研究的事物、概念2.面向对象的基本概念对象对象的状态/属性和行为/操作类类的关系——IS-A,HAS-A消息和方法消息——对象之间的通信。调用对象的成员函数方法——类中操作/成员函数的实现3.面向对象的特征对象唯一性分类性继承性多态性4.面向对象的要素抽象封装性(信息隐蔽)共享性同一类中对象的共享——该类的数据结构、行为特征同一应用中具有继承关系的类的共享不同应用中类库的共享——软件重用强调对象结构而非程序结构二、面向对象的方法1.面向对象方法的形成——1980s,随着OOP的成熟而形成2.面向对象的开发方法Booch方法——1983,Booch提出基于:词法分析——名词→对象,动词→方法Coad方法——1989,Coad和Yourdon提出从大系统中总结、升华OMT方法——1991,JamesRumbaugh提出面向对象建模技术(ObjectModelingTechnique)将OO贯穿于软件生存周期的各阶段第三节Coad分析方法基础:信息模型化技术OOP语言知识库系统组成:OOA——面向对象分析OOD——面向对象设计一、概述1.系统需求的变动因素和稳定因素——分析2.思维组织模式——人类典型的思维过程:区分出现实世界特定的客体及其属性区分客体的整体和组成部分给出不同种类客体的表示3.面向对象分析方法的表示——对象,分类,继承性,基于消息的通信4.OOA的任务任务:形式地说明所面对的应用问题——对象,规则、约束明确地规定对象如何协作,完成指定功能OOA的结果——OOA概念模型OOA概念模型的组成:5个层次类与对象——引进类和该类的对象属性服务结构主题——类和对象的特定组合表示5.OOA的步骤5步:找到类和对象——从应用领域开始确定结构——IS-A结构,HAS-A结构定义主题——相关的类和对象的组合定义属性定义服务——确定对象状态,定义类的操作二、Coad分析方法1.对象认定简单的认定方法——1983,Booch提出——基于:词法名词——候选对象动词——候选方法(服务)实例:字处理系统注意:这里提到的对象——OOP中的类实例——实例、对象复杂系统对象的认定5个问题:到什么地方去找候选对象——寻找对象的范围:问题空间文本——一切能得到的文字材料图——能收集到的一切图:块结构图、接口图、系统构件图、数据流图、控制流图找什么——可能成为对象的东西:结构——分类结构、组装结构其他系统——外部系统、外界的“终结点”设备——需交互的设备事件——系统及时观察的、历史的扮演的角色——各种人员在系统中的位置——系统安装、运行的物理位置组织和单位——系统涉及的人员所属的单位考察候选对象的什么——认定对象需要记忆——系统是否有必要记忆对象的某些/全部成分?需要服务——系统是否有必要对该对象的行为提供服务?多于一个属性——只有一个属性的对象常应被看成其他对象的属性共有属性——对于一种对象的所有实例,能否认定一组属性?共有服务——对于一种对象的所有实例,能否认定一组加工?提出什么质疑记忆和服务的必要性——必要则认定单个实例——若拥有单个实例的对象与其他对象存在共有属性,则合并为一个对象派生结果——可通过计算机得出值的属性,不认定怎样命名认定的对象单数名词/形容词+名词词汇符合系统主题、标准可读的名字——基于内容、内在本质、确切意义2.结构的认定结构——多种对象的组织方式——反映问题空间中复杂事物和复杂关系2种结构:分类结构——事物类别之间的组织关系组装结构——事物的整体与成员之间的关系问题:分类结构——用C++中的什么关系表示/构造?组装结构认定分类结构原则——先从:一般→特殊考虑后从:特殊→一般考虑从一般到特殊先认定对象的一般含义,然后考虑其可能的特殊性:是否可用不同的属性和服务来描述?是否反映了现实世界中有意义的特殊性?是否在问题空间之内?令:共有属性、服务——一般含义的对象扩充的特殊属性、服务——特殊含义的对象从特殊到一般认定对象的某种特殊含义后,再从特殊向一般考虑:问题空间是否存在其他对象与该对象具有共有的属性/服务?若引入某种更一般的对象,是否反映了现实世界中有意义的一般性?若引入某种更一般的对象,则该对象是否存在于问题空间之中?认定组装结构原则——先从:整体→成员考虑后从:成员→整体考虑从整体到成员先认定对象是一个整体,然后考虑其可能的成员:组成成员是什么?对于它的一个成员,系统是否必要记录每个实例/值?对于它的一个成员,每个实例是否都有属性来描述?它的成员是否反映现实世界中存在的成员?它的成员是否限定在目标系统之内?挖掘事物的构成细节从成员到整体假定一个对象可能是另一种对象的成员,考虑:这种对象适合什么样的组装关系?还需要哪些对象与这种对象一起构成另一种对象?对于这样组装而成的对象,系统是否有必要记录其每一个实例?这样组装而成的对象,在现实世界中是否有意义?这样组装而成的对象,是否限定在目标系统之内?将某些事物纳入某种含义更广、可作为整体看待的事物之中——聚集角度3.认定主题主题——关于OOA模型的抽象、概貌起控制作用名词/名词短语认定主题的方法:为每个主题,追加一个主题为每种对象,追加一个主题若当前主题数目超过7个,则对已有主题归并归并原则——2个主题对应的属性、服务存在密切联系主题之间的联系——消息关联主题——单独的层次,各主题有序号4.定义属性属性——数据元素——描述对象/结构的实例5步骤:认定属性3原则:对相应对象/分类结构的每个实例,是否都适用?在现实世界中,它与这种事物的关系是否最密切?认定的属性应是一种相对的原子概念,不依赖于并列的其他属性就可理解确定属性的位置——确定属性与特定对象之间的从属关系,针对分类结构中的对象——继承观点认定和定义实例关联实例关联——一个实例集合到另一个实例集合的映射4种实例关联:——类似于:ER图中的实体联系1:11:m0:10:m重新修改认定的对象对属性和实例关联进行说明——说明属性的名字、描述、约束、范畴属性的类型:定义型——标识、命名各个实例派生型——由其他属性的数据计算得到参考型——与另一个实例的属性值关联5.定义服务服务——接收到一条消息后,所要进行的加工认定基础服务3类:存在服务——最一般的服务计算服务——一个实例需要另一个实例加工的结果时,所需的服务。监控服务——模型中某些部件需要快速适时处理时,所需服务。认定辅助服务对象生存史——定义基础服务的顺序状态-事件-响应——定义状态的主要状态,外部事件及其响应,扩充服务,消息关联认定消息关联消息关联——事件-响应和数据流的一种结合——表示一种要发出的消息和收到该消息后作出的一个响应——实例关联之间的一种映射对服务进行说明——主要说明外部可观察到的行为6.对象的规格说明以对象为单位的系统规格说明的模板:specification(对象名)描述型属性(……)定义型属性(……)派生型属性(……)外部型属性(……)外部系统输出(……)实例关联(……)状态事件响应表(……)对象生存史图(……)服务(……)服务(……)……Endspecification7.应用实例“传感器”控制系统问题陈述传感器控制系统分析模型第四节OMT分析方法一、OMT方法的发展——1991,美国,通用电器公司提出通过构造一组模型——认识问题对象模型(ObjectModel)——系统中静态的、结构方面的特性动态模型(DynamicModel)——系统对象之间的时间的、行为的、控制方面的特性功能模型(FunctionalModel)——值-值之间的函数关系OMT分析软件3方面:数据结构——对象模型按时间顺序的操作——动态模型改变的值——功能模型三、OMT方法的分析过程二、三种模型介绍1.对象模型对象模型的作用——事件将发生在什么上面——描述系统中对象的结构——对象的标识,与其他对象的关系,属性,操作对象模型的表示——对象关系图——对象图2种对象图:类图实例图类的对象模型符号——对象的结构信息关系——类之间的联系多元性——一个类的多少个实例,可能与相关类的一个实例有关多元性的符号表示OMT对象模型中类的3种基本关系相关关系——什么方面相关关系包容关系——部分-整体关系继承关系抽象类具体类——子类OMT建立对象模型的步骤:确定对象类定义数据词典——类,属性,关系的描述增加类之间的关系增加对象、联系的属性用继承组织、简化对象类用场景测试访问路径如需要,则重复上述5步基于:相近关系、相关功能,将成组的对象组成模块对象模型的2部分:对象模型图数据词典2.动态模型——与时间有关的模型动态模型的作用——事件将什么时间发生——描述系统中与时间有关的方面——操作执行的顺序包括:引起变化的事件事件的序列定义事件序列上下文的状态事件和状态的主次主要概念事件——一个对象给另一个对象的单个消息状态——对象所拥有的属性值和连接关系场景——一个特定过程中发生的一系列事件抓住了“控制流”特性,即系统中的各个操作发生的顺序,而对这些操作到底做什么,作用在什么上面,以及如何实现都不必关心——对象的控制信息事件跟踪图——表示一系列事件和交换事件的对象垂直线——每个对象水平箭头——一个事件——对应对象模型中的操作——从发送对象指向接收对象打电话者接电话者状态图——表示一个类的事件、状态、状态转移方式不同的状态图,通过共享的事件组成——动态模型状态——结点事件箭头线——状态转移活动——代表事件完成的一个操作,与状态相关对应功能模型中的功能行为——一个瞬时操作,与事件相关活动的关键字do:转移上行为的关键字/建立动