工欲善其事,必先利其器。 孔子 第十六章地理信息系统软件工程技术 导读:本章介绍了软件工程的基本概念,软件开发活动,过程模型以及两种重要的 开发方法:结构化方法和面向对象的方法。在GIS开发过程中应用软件工程技术, 可以提高软件开发效率和质量。本章讲述了软件工程技术在GIS系统开发中的几个 应用方面 GIS软件构件和构架 需求分析 数据管理设计 用户界面设计 设计模式在GiS软件开发中的应用 应用配置管理来实现空间过程支持 这些方面涉及了GS开发过程中不同的阶段以及不同的层次,有些方法之间是互斥 的,如UML和code方法,但是软件工程技术最重要的是实用,开发者可以根据具 体的情况选用不同的技术。 1.软件工程简介 1.1基本概念 计算机软件工程是一类求解的工程。它应用计算机科学、数学及管理科学等原理,借鉴 传统工程的原则、方法,创建软件以达到提高质量,降低成本的目的。其中,计算机科学 数学应用于构造模型与算法,工程科学用于制定规范、设计范型,评估成本及确定权衡,管 理科学用于计划、资源、质量、成本等管理。从学科角度来看,软件工程是一门指导计算机 软件开发和维护的工程学科
工欲善其事,必先利其器。 孔子 第十六章 地理信息系统软件工程技术 导读:本章介绍了软件工程的基本概念,软件开发活动,过程模型以及两种重要的 开发方法:结构化方法和面向对象的方法。在 GIS 开发过程中应用软件工程技术, 可以提高软件开发效率和质量。本章讲述了软件工程技术在 GIS 系统开发中的几个 应用方面: GIS 软件构件和构架 需求分析 数据管理设计 用户界面设计 设计模式在 GIS 软件开发中的应用 应用配置管理来实现空间过程支持 这些方面涉及了 GIS 开发过程中不同的阶段以及不同的层次,有些方法之间是互斥 的,如 UML 和 Code 方法,但是软件工程技术最重要的是实用,开发者可以根据具 体的情况选用不同的技术。 1.软件工程简介 1.1 基本概念 计算机软件工程是一类求解的工程。它应用计算机科学、数学及管理科学等原理,借鉴 传统工程的原则、方法,创建软件以达到提高质量,降低成本的目的。其中,计算机科学、 数学应用于构造模型与算法,工程科学用于制定规范、设计范型,评估成本及确定权衡,管 理科学用于计划、资源、质量、成本等管理。从学科角度来看,软件工程是一门指导计算机 软件开发和维护的工程学科
软件工程的提出,是为了解决60年代出现的软件危机,当时在大型软件开发中存在着 价格高,开发不容易控制,软件开发工作量估计困难,软件质量低,项目失败率高等许多问 题,给软件行业带来了巨大的冲击。软件工程的研究,提出了一系列理论、原则、方法以及 工具,试图解决软件危机。 和其它工程一样,软件工程有其目标、活动和原则,其框架可以概括为图16-1所表示 的内容 确 实 开发范型 需 设计方法 现 支持过程 管理过程 图16-1:软件工程框架[王立福 软件工程的目标可以概括为“生产具有正确性、可用性以及开销合宜的产品”,其活动 包括需求、设计、实现、确认以及支持等活动,围绕工程设计、支持以及管理,有以下的四 条基本原则: 1)选取适宜的开发模型,可以认识需求易变性,并加以控制,以保证软件产品满足用 户的需求 2)采用合适的设计方法,通常要考虑实现软件的模块化、抽象与信息隐蔽、局部化、 致性以及适应性等特征 3)提供高质量的工程支持,在软件工程中,软件工具与环境对软件过程的支持颇为重 要 4)重视开发过程的管理,软件工程的管理,直接影响可用资源的有效利用、生产满足 目标的软件产品,提高软件组织的生产能力等问题。只有当软件过程予以有效管理时,才能 实现有效的软件工程 1.2软件工程活动 软件工程活动包括需求、设计、实现、确认及支持等,它们对应于软件开发活动的不同 阶段,一般来说,软件开发都要经历从分析设计到实现确认的过程。在每个阶段按照相应的 规范进行工作,并得到该阶段的成果,是保证整个开发活动成功的关键。 1.2.1需求分析 需求分析阶段处于软件开发的前期,其基本活动是准确定义未来系统的目标,确定为了 满足用户的需求必须做什么。需求分析又划分为两个阶段,即需求获取和需求规约,前者是
软件工程的提出,是为了解决 60 年代出现的软件危机,当时在大型软件开发中存在着 价格高,开发不容易控制,软件开发工作量估计困难,软件质量低,项目失败率高等许多问 题,给软件行业带来了巨大的冲击。软件工程的研究,提出了一系列理论、原则、方法以及 工具,试图解决软件危机。 和其它工程一样,软件工程有其目标、活动和原则,其框架可以概括为图 16-1 所表示 的内容。 图 16-1:软件工程框架[王立福] 软件工程的目标可以概括为“生产具有正确性、可用性以及开销合宜的产品”,其活动 包括需求、设计、实现、确认以及支持等活动,围绕工程设计、支持以及管理,有以下的四 条基本原则: 1)选取适宜的开发模型,可以认识需求易变性,并加以控制,以保证软件产品满足用 户的需求; 2)采用合适的设计方法,通常要考虑实现软件的模块化、抽象与信息隐蔽、局部化、 一致性以及适应性等特征; 3)提供高质量的工程支持,在软件工程中,软件工具与环境对软件过程的支持颇为重 要; 4)重视开发过程的管理,软件工程的管理,直接影响可用资源的有效利用、生产满足 目标的软件产品,提高软件组织的生产能力等问题。只有当软件过程予以有效管理时,才能 实现有效的软件工程。 1.2 软件工程活动 软件工程活动包括需求、设计、实现、确认及支持等,它们对应于软件开发活动的不同 阶段,一般来说,软件开发都要经历从分析设计到实现确认的过程。在每个阶段按照相应的 规范进行工作,并得到该阶段的成果,是保证整个开发活动成功的关键。 1.2.1 需求分析 需求分析阶段处于软件开发的前期,其基本活动是准确定义未来系统的目标,确定为了 满足用户的需求必须做什么。需求分析又划分为两个阶段,即需求获取和需求规约,前者是
用自然语言清楚地描述用户的要求,而需求规约的目的是消除获取需求的二义性和不一致 性 在软件生命周期中,一个错误发现得越晩,修复错误的费用也越高,所以,高质量的需 求工程是软件项目得以正确、高效完成的前提。对于系统分析人员,建立需求面临着以下三 个方面的困难: 1)问题空间的理解,系统开发人员通常是计算机专业人员,难以深入理解各种业务系 统所要解决的问题空间 2)人与人之间的通信,对于系统分析人员而言,通信主要包括同用户的通信以及同事 之间的通信,由于自然语言的二义性,会给准确刻画需求造成障碍 3)需求的不断变化,造成需求变化的原因很多,包括技术,用户方,市场等等,作为 分析人员,必须采用一些策略以适应变化 面向对象的分析方法被认为是解决上述困难较好的技术,但是完整、准确的刻划问题空 间始终是分析人员所面临的挑战 1.2.2系统设计 一般来说,需求分析阶段的主要任务是确定系统“做什么”,而设计阶段则要解决“怎 么做”的问题。通常·设计阶段又划分为总体设计和详细设计,总体设计确定系统的总体结 构框架;而详细设计要具体地描述如何具体地实现系统,通常可以依据详细设计的结果进行 编码。详细设计包括:详细的算法:数据表示和数据结构:实施的功能和使用数据之间的关 系。详细设计过程中,采用了一些工具,以便对数据、算法等进行描述,包括流程图, PAD( Problem Analysis Diagram),盒图(N-S图),伪码等等 2.3实现阶段 在软件实现阶段,要将设计的结果变换成程序设计语言编写的程序。在实现阶段,首先 要确定程序设计语言,其影响因素包括:开发人员对语言的熟悉程度,语言的可移植性,编 译程序的效率,编译工具的支持等等。目前,C艹语言是普遍被采用的构造系统软件的编程 语言,而Java则更多地应用于编写网络程序 无论采用哪一种编程语言,都要求编写高质量的源程序代码,程序质量通常包含正确性、 可读性、可移植性、程序效率等指标。考虑到系统的维护和演化,提高源程序的可读性是实 现阶段的一个重要目标,其途径包括添加注释,规范书写格式,确定标识符命名原则',采 用结构化的程序设计(不用或减少使用goto语句)等等。 1.2.4确认活动 尽管确认活动贯穿于软件开发活动的始终,但是系统完成后的软件测试是主要的确认活 动。软件测试是指按照特定规程,发现软件错误的过程。软件测试的技术大体上可以分为两 类,即白盒测试技术和黑盒测试技术,前者依据的是程序逻辑结构,后者依据的是软件行为 描述。根据测试的步骤,测试活动又可以划分为单元测试,集成测试,确认测试和系统测试, 其中确认测试是为了检验软件的功能和性能是否与用户需求一致,而系统测试主要是测试软 这里实际上是指结构化的设计,在面向对象方法学中,各个阶段的分界己经被模糊化了 微软所采用的匈牙利命名法是一个较好的对标识符进行命名的方法
用自然语言清楚地描述用户的要求,而需求规约的目的是消除获取需求的二义性和不一致 性。 在软件生命周期中,一个错误发现得越晚,修复错误的费用也越高,所以,高质量的需 求工程是软件项目得以正确、高效完成的前提。对于系统分析人员,建立需求面临着以下三 个方面的困难: 1)问题空间的理解,系统开发人员通常是计算机专业人员,难以深入理解各种业务系 统所要解决的问题空间; 2)人与人之间的通信,对于系统分析人员而言,通信主要包括同用户的通信以及同事 之间的通信,由于自然语言的二义性,会给准确刻画需求造成障碍; 3)需求的不断变化,造成需求变化的原因很多,包括技术,用户方,市场等等,作为 分析人员,必须采用一些策略以适应变化。 面向对象的分析方法被认为是解决上述困难较好的技术,但是完整、准确的刻划问题空 间始终是分析人员所面临的挑战。 1.2.2 系统设计 一般来说,需求分析阶段的主要任务是确定系统“做什么”,而设计阶段则要解决“怎 么做”的问题。通常*设计阶段又划分为总体设计和详细设计,总体设计确定系统的总体结 构框架;而详细设计要具体地描述如何具体地实现系统,通常可以依据详细设计的结果进行 编码。详细设计包括:详细的算法;数据表示和数据结构;实施的功能和使用数据之间的关 系。详细设计过程中,采用了一些工具,以便对数据、算法等进行描述,包括流程图, PAD(Problem Analysis Diagram),盒图(N-S 图),伪码等等。 1.2.3 实现阶段 在软件实现阶段,要将设计的结果变换成程序设计语言编写的程序。在实现阶段,首先 要确定程序设计语言,其影响因素包括:开发人员对语言的熟悉程度,语言的可移植性,编 译程序的效率,编译工具的支持等等。目前,C++语言是普遍被采用的构造系统软件的编程 语言,而 Java 则更多地应用于编写网络程序。 无论采用哪一种编程语言,都要求编写高质量的源程序代码,程序质量通常包含正确性、 可读性、可移植性、程序效率等指标。考虑到系统的维护和演化,提高源程序的可读性是实 现阶段的一个重要目标,其途径包括添加注释,规范书写格式,确定标识符命名原则*,采 用结构化的程序设计(不用或减少使用 goto 语句)等等。 1.2.4 确认活动 尽管确认活动贯穿于软件开发活动的始终,但是系统完成后的软件测试是主要的确认活 动。软件测试是指按照特定规程,发现软件错误的过程。软件测试的技术大体上可以分为两 类,即白盒测试技术和黑盒测试技术,前者依据的是程序逻辑结构,后者依据的是软件行为 描述。根据测试的步骤,测试活动又可以划分为单元测试,集成测试,确认测试和系统测试, 其中确认测试是为了检验软件的功能和性能是否与用户需求一致,而系统测试主要是测试软 * 这里实际上是指结构化的设计,在面向对象方法学中,各个阶段的分界已经被模糊化了。 * 微软所采用的匈牙利命名法是一个较好的对标识符进行命名的方法
件同硬件、其它支持软件、数据等结合在一起,在实际的运行情况下,同用户需求的匹配程 度 1.2.5软件维护 当软件开发完成并交付用户使用后,就进入运行/维护阶段,在运行/维护阶段仍需要对 软件进行修改,称为软件维护,软件维护活动可以分为以下几类 1)改正性维护,其目的是为了纠正运行阶段发现的软件错误,性能上的缺陷以及排除 实施中的误用 2〕适应性維护,随着计算机的发展,软件的外部环境或者数据环境发生变化,为了使 之适应这种变化而对软件的修改称为适应性维护 3)完普性维护,在使用过程中,用户往往会对软件提出新的功能和性能需求,为了满 足这些需求,需要修改或再开发软件,称为完善性维护。 4)预防性维护,预防性维护的目的是为了提高软件的可维护性,可靠性等,为进一步 的软件维护打下良好的基础。预防性维护一般由开发单位主动进行。 1.3结构化方法和面向对象方法 在进行系统分析设计的过程中,逐渐形成了一些系统化的方法,以便于更好地描述问题 域及进行系统设计,目前经常采用的两种方法是结构化方法和面向对象的方法 1.3.1结构化分析和设计 结构化的方法基于模块化的思想,采用“自顶向下,逐步求精”的技术对系统进行划分, 分解和抽象是它的两个基本手段 结构化分析将软件视为一个数据变换装置,接受各种输入,通过变换产生输出。数据流 图(DFD, Data-Flow Diagram)是一种描述数据变换的工具,是结构化分析普遍采用的表示 手段。数据流图由五个部分组成,即:加工,数据流,数据存储,数据源和数据潭,其中数 据流表示数据和数据的流向,而加工是对数据进行处理的单元(图16-2)。除了数据流图以 外,还需要数据字典和说明分别对数据流和加工进行描述
件同硬件、其它支持软件、数据等结合在一起,在实际的运行情况下,同用户需求的匹配程 度。 1.2.5 软件维护 当软件开发完成并交付用户使用后,就进入运行/维护阶段,在运行/维护阶段仍需要对 软件进行修改,称为软件维护,软件维护活动可以分为以下几类: 1)改正性维护,其目的是为了纠正运行阶段发现的软件错误,性能上的缺陷以及排除 实施中的误用。 2)适应性维护,随着计算机的发展,软件的外部环境或者数据环境发生变化,为了使 之适应这种变化而对软件的修改称为适应性维护。 3)完善性维护,在使用过程中,用户往往会对软件提出新的功能和性能需求,为了满 足这些需求,需要修改或再开发软件,称为完善性维护。 4)预防性维护,预防性维护的目的是为了提高软件的可维护性,可靠性等,为进一步 的软件维护打下良好的基础。预防性维护一般由开发单位主动进行。 1.3 结构化方法和面向对象方法 在进行系统分析设计的过程中,逐渐形成了一些系统化的方法,以便于更好地描述问题 域及进行系统设计,目前经常采用的两种方法是结构化方法和面向对象的方法。 1.3.1 结构化分析和设计 结构化的方法基于模块化的思想,采用“自顶向下,逐步求精”的技术对系统进行划分, 分解和抽象是它的两个基本手段。 结构化分析将软件视为一个数据变换装置,接受各种输入,通过变换产生输出。数据流 图(DFD,Data-Flow Diagram)是一种描述数据变换的工具,是结构化分析普遍采用的表示 手段。数据流图由五个部分组成,即:加工,数据流,数据存储,数据源和数据潭,其中数 据流表示数据和数据的流向,而加工是对数据进行处理的单元(图 16-2)。除了数据流图以 外,还需要数据字典和说明分别对数据流和加工进行描述
订票单 航班 旅行社 预订 准备 机票 机票 费用 机票 记帐 航班目录 旅客 记帐文件 图16-2:一个典型的数据流图:飞机订票 结构化的系统总体设计主要是确定模块结构图,以描述功能模块之间的关系,一些主要 的表示形式有:层次图,HPO(层次+输入/处理输出)图,结构图等等。结构化的设计定 义了一些原则和方法,可以将数据流图“映射”成为模块结构图。 1.3.2面向对象的分析和设计 面向对象的方法学认为,客观世界是由许多各种各样的类组成的,每种对象都有各自的 内部状态和运动规律,对象之间的作用和联系就构成了各种不同的系统。面向对象方法学所 追求的是使解决问题的方法空间与客观世界的问题空间结构达成一致。由于面向对象的技术 在理解问题空间、控制需求变化、消除从分析设计到编码的“鸿沟”、支持软件复用等各个 方面优于其它方法,使之称为目前软件开发的主流方法 目前已经提出了多种不同的面向对象的分析、设计方法,如Cord- Yourdon方法, Booch 方法,OMI方法, Jacobson的 use case驱动方法等等,这些方法在侧重点、符号表示和实 施策略上有所不同,但是其基本的概念是一致的,这些概念有:对象,类,属性,服务 息,继承,封装等等 近年来,综合 Booch方法、OMT方法以及 use case的UML( Unified modeling language 统一建模语言)逐渐成为主要的面向对象方法。图16-3给出了用UML表达几何体的例子 图的具体含义请参阅ULM和 OpenGIs的相关规范
旅行社 预订 机票 准备 机票 订票单 航班 记帐 费用 旅客 记帐文件 航班目录 机票 图 16-2:一个典型的数据流图:飞机订票 结构化的系统总体设计主要是确定模块结构图,以描述功能模块之间的关系,一些主要 的表示形式有:层次图,HIPO(层次+输入/处理/输出)图,结构图等等。结构化的设计定 义了一些原则和方法,可以将数据流图“映射”成为模块结构图。 1.3.2 面向对象的分析和设计 面向对象的方法学认为,客观世界是由许多各种各样的类组成的,每种对象都有各自的 内部状态和运动规律,对象之间的作用和联系就构成了各种不同的系统。面向对象方法学所 追求的是使解决问题的方法空间与客观世界的问题空间结构达成一致。由于面向对象的技术 在理解问题空间、控制需求变化、消除从分析设计到编码的“鸿沟”、支持软件复用等各个 方面优于其它方法,使之称为目前软件开发的主流方法。 目前已经提出了多种不同的面向对象的分析、设计方法,如 Cord-Yourdon 方法,Booch 方法,OMT 方法,Jacobson 的 use case 驱动方法等等,这些方法在侧重点、符号表示和实 施策略上有所不同,但是其基本的概念是一致的,这些概念有:对象,类,属性,服务,消 息,继承,封装等等。 近年来,综合 Booch 方法、OMT 方法以及 use case 的 UML(Unified modeling language, 统一建模语言)逐渐成为主要的面向对象方法。图 16-3 给出了用 UML 表达几何体的例子*。 * 图的具体含义请参阅 ULM 和 OpenGIS 的相关规范
> TP Primitive (from Topology > TP Edge TP Node (from Topo OD) /Orientation Node rose > +side TP_-DirectedEdge 0. TP- Object: dimension= 1 TP_Object: position type = GM_Curve 图16-3:用UML表达的线几何体类以及和其它类的关系( OpenGIS Consortium) 1.4开发过程模型 软件开发模型是软件开发全部过程、活动和任务的结构框架。软件开发模型能够清晰、 直观的表达软件开发过程,明确规定要完成的主要活动和任务,可以作为软件项目工作的基 础 随着软件工程了实践,相继提出了一系列开发模型,如下: 1.4.1瀑布模型 在瀑布模型中,将各项活动规定为依照固定顺序连接的若干阶段工作,形如瀑布流水(图 16-4),瀑布模型的特征是:每一阶段接受上一阶段的工作结果作为输入:其工作输出传入 下一阶段:每一阶段工作都要进行评审,得到确认后,才能继续下阶段工作。瀑布模型较好 地支持结构化软件开发,但是缺乏灵活性,无法通过软件开发活动澄清本来不够确切的需求
图 16-3:用 UML 表达的线几何体类以及和其它类的关系(OpenGIS Consortium)。 1.4 开发过程模型 软件开发模型是软件开发全部过程、活动和任务的结构框架。软件开发模型能够清晰、 直观的表达软件开发过程,明确规定要完成的主要活动和任务,可以作为软件项目工作的基 础。 随着软件工程了实践,相继提出了一系列开发模型,如下: 1.4.1 瀑布模型 在瀑布模型中,将各项活动规定为依照固定顺序连接的若干阶段工作,形如瀑布流水(图 16-4),瀑布模型的特征是:每一阶段接受上一阶段的工作结果作为输入;其工作输出传入 下一阶段;每一阶段工作都要进行评审,得到确认后,才能继续下阶段工作。瀑布模型较好 地支持结构化软件开发,但是缺乏灵活性,无法通过软件开发活动澄清本来不够确切的需求
系统需求 软件需求 需求分析 设计 编码 测试 运仃 图16-4:瀑布模型 1.4.2演化模型 演化模型主要针对事先不能完整定义需求的软件开发。用户可以先给出核心需求,当开 发人员将核心需求实现后,用户提出反馈意见,以支持系统的最终设计和实现。 1.4.3螺旋模型 螺旋模型是在瀑布模型以及演化模型的基础上,加入风险分析所建立的模型。在螺旋模 型每一次演化的过程中,都经历以下四个方面的活动: 1)制定计划—一确定软件目标,选定实施方案,弄清项目开发的限制条件。 2)风险分析—一分析所选方案,考虑如何识别和消除风险。 3)实施工程一一实施软件开发。 4)客户评估一一评价开发工作,提出修正建议。 每一次演化都开发出更为完善的一个新的软件版本,形成了螺旋模型的一圈。螺旋模型 借助于原型,获取用户需求,进行软件开发的风险分析,对于大型软件的开发,是颇为实际 的方法。 1.4.4喷泉模型 喷泉模型体现了软件开发过程中所固有的迭代和无间隙的特征(图16-5)。喷泉模型表 明了软件刻画活动需要多次重复。例如,在编码之前,再次进行分析和设计,并添加有关功 能,使系统得以演化。同时,该模型还表明活动之间没有明显的间隙,例如在分析和设计之 间没有明确的界限 在面向对象技术中,由于对象概念的引入,使分析、设计、实现之间的表达连贯而一致
系统需求 软件需求 需求分析 设计 编码 测试 运行 图 16-4:瀑布模型 1.4.2 演化模型 演化模型主要针对事先不能完整定义需求的软件开发。用户可以先给出核心需求,当开 发人员将核心需求实现后,用户提出反馈意见,以支持系统的最终设计和实现。 1.4.3 螺旋模型 螺旋模型是在瀑布模型以及演化模型的基础上,加入风险分析所建立的模型。在螺旋模 型每一次演化的过程中,都经历以下四个方面的活动: 1)制定计划——确定软件目标,选定实施方案,弄清项目开发的限制条件。 2)风险分析——分析所选方案,考虑如何识别和消除风险。 3)实施工程——实施软件开发。 4)客户评估——评价开发工作,提出修正建议。 每一次演化都开发出更为完善的一个新的软件版本,形成了螺旋模型的一圈。螺旋模型 借助于原型,获取用户需求,进行软件开发的风险分析,对于大型软件的开发,是颇为实际 的方法。 1.4.4 喷泉模型 喷泉模型体现了软件开发过程中所固有的迭代和无间隙的特征(图 16-5)。喷泉模型表 明了软件刻画活动需要多次重复。例如,在编码之前,再次进行分析和设计,并添加有关功 能,使系统得以演化。同时,该模型还表明活动之间没有明显的间隙,例如在分析和设计之 间没有明确的界限。 在面向对象技术中,由于对象概念的引入,使分析、设计、实现之间的表达连贯而一致
所以,喷泉模型主要用于支持面向对象开发过程。 演化 维护 确认 实现 设计 分析 图16-5:喷泉模型 目前,随着面向对象技术的发展和UML建模语言的成熟,统一软件开发过程(USDP, Unified Software Development Process被提出以指导软件开发,它是一个用例( use case)驱 动的、体系结构为中心的、增量迭代的开发过程模型,适用于利用面向对象技术进行软件开 发 2.G|S领域的体系结构和构件 按照应用目的,地理信息系统可以分为区域地理信息系统、专题地理信息系统以及地理 信息系统工具,它们共同组成了GS领域( Domain)。所谓领域,是指共享某种功能性 ( Functionality))的系统或应用程序的集合,换言之,领域表现了一组应用系统共性的方面。对 于地理信息系统而言,其共享的功能就是对空间数据输入、管理、分析和表现,而这恰好是 地理信息系统工具所提供的功能(图16-6) 具体,专用 应用系统区域GS|专题GS 领域 地理信息系统工具 操作系统 抽象,通用 图16-6:GIS领域 与具体应用领域相对应,对于领域,可以实施领域工程,得到领域模型,并建立领域特 定的软件体系结构(DSSA, Domain- Specific Software Architecture)。DSSA是能够适应领域 中多个系统的需求的一个高层次的设计,在开发具体应用系统时,可以利用DSSA将领域 构件( Component)连接和组织起来,以支持软件复用,提高软件开发的效率和质量。 对于地理信息系统,实施领域工程,得到DSSA,不仅可以指导具体应用系统的开发 而且DSSA可以直接作为地理信息系统工具的软件体系结构。 地理信息系统的核心功能包括空间数据的输入、管理、分析以及表现,并且这些功能形
所以,喷泉模型主要用于支持面向对象开发过程。 演化 维护 确认 实现 设计 分析 图 16-5:喷泉模型 目前,随着面向对象技术的发展和 UML 建模语言的成熟,统一软件开发过程(USDP, Unified Software Development Process)被提出以指导软件开发,它是一个用例(use case)驱 动的、体系结构为中心的、增量迭代的开发过程模型,适用于利用面向对象技术进行软件开 发。 2.GIS 领域的体系结构和构件 按照应用目的,地理信息系统可以分为区域地理信息系统、专题地理信息系统以及地理 信息系统工具,它们共同组成了 GIS 领域(Domain)。所谓领域,是指共享某种功能性 (Functionality)的系统或应用程序的集合,换言之,领域表现了一组应用系统共性的方面。对 于地理信息系统而言,其共享的功能就是对空间数据输入、管理、分析和表现,而这恰好是 地理信息系统工具所提供的功能(图 16-6)。 操作系统 地理信息系统工具 区域 GIS 专题 GIS 领域 应用系统 具体,专用 抽象,通用 图 16-6:GIS 领域 与具体应用领域相对应,对于领域,可以实施领域工程,得到领域模型,并建立领域特 定的软件体系结构(DSSA, Domain-Specific Software Architecture)。DSSA 是能够适应领域 中多个系统的需求的一个高层次的设计,在开发具体应用系统时,可以利用 DSSA 将领域 构件(Component)连接和组织起来,以支持软件复用,提高软件开发的效率和质量。 对于地理信息系统,实施领域工程,得到 DSSA,不仅可以指导具体应用系统的开发, 而且 DSSA 可以直接作为地理信息系统工具的软件体系结构。 地理信息系统的核心功能包括空间数据的输入、管理、分析以及表现,并且这些功能形
成了一个比较完全的数据处理流程,此外考虑到与遥感以及全球定位系统的结合,形成如下 的系统结构(图16-7)。该视图更多地体现了地理信息系统的业务逻辑,为了适用于具体的 应用系统,该结构可以被特化一一类似于面向对象中,从父类派生一个子类一一形成更加具 体的体系结构。 依赖于DSSA,可以将构件组装起来,形成具体的应用系统,基于构件的技术已经成为 软件开发技术的主流,它从面向对象技术发展而来,是开发高效、低成本程序的重要实现途 径 为了能够通过组装以构造系统,构件必须能够互相合作,即具有互操作性,这是通过定 义构件的接口规范来实现的。对于构件而言,除了互操作性之外,还要支持分布式的网络计 算,即构件的互操作可以是基于异种平台的,其实现需要分布计算平台(DCP- Distributed Computing Paltform)的支持。 数据录入 数据官理 查询分析 遥感数据转入 数据规范化处理空间炸据库 空间模型 GPS数据转入 数据表现 图16-7:GIS领域体系结构:一个工作流视图 目前存在着多种构件技术标准,其中OMG(对象管理组织)的 CORBA(公共请求对 象代理体系结构- Common object request broker architecture)和 Microsoft的 OLE/COM/DCOM 技术是其中两个主要的、被广泛采用的标准 COBRA定义了一个带有开放软总线的分布式结构,在这一结构中,来自不同厂商、运 行于不同操作系统上的对象,能够进行互操作。 CORBA对象的互相通信通过对象请求代理 (ORB, Object Request Broker)为中介,可以在多种流行网络通信协议上实现。接口描述 语言(IDL, Interface Description Language)用于描述对象接口,它与语言无关,使得所有 CORBA对象以一致的方式被描述。 Microsoft的DCOM(分布式对象构件模型, Distributed Component Object Model)技术 是对原有的COM技术的扩展,以支持在网络上不同计算机的对象之间的通信。COM定义 了接口的二进制标准,包括接口交互、管理对象及其资源等等。而DCOM通过增加网络协 议的支持,使得对象可以通过网络互操作。DCOM技术很好的支持复用,位置独立,可扩 展等,并且其执行性能较好,目前被基于 Windows平台的软件开发商所广泛支持
成了一个比较完全的数据处理流程,此外考虑到与遥感以及全球定位系统的结合,形成如下 的系统结构(图 16-7)。该视图更多地体现了地理信息系统的业务逻辑,为了适用于具体的 应用系统,该结构可以被特化——类似于面向对象中,从父类派生一个子类——形成更加具 体的体系结构。 依赖于 DSSA,可以将构件组装起来,形成具体的应用系统,基于构件的技术已经成为 软件开发技术的主流,它从面向对象技术发展而来,是开发高效、低成本程序的重要实现途 径。 为了能够通过组装以构造系统,构件必须能够互相合作,即具有互操作性,这是通过定 义构件的接口规范来实现的。对于构件而言,除了互操作性之外,还要支持分布式的网络计 算,即构件的互操作可以是基于异种平台的,其实现需要分布计算平台(DCP-Distributed Computing Paltform)的支持。 图 16-7:GIS 领域体系结构:一个工作流视图 目前存在着多种构件技术标准,其中 OMG(对象管理组织)的 CORBA(公共请求对 象代理体系结构-Common object request broker architecture)和 Microsoft 的 OLE/COM/DCOM 技术是其中两个主要的、被广泛采用的标准。 COBRA 定义了一个带有开放软总线的分布式结构,在这一结构中,来自不同厂商、运 行于不同操作系统上的对象,能够进行互操作。CORBA 对象的互相通信通过对象请求代理 (ORB,Object Request Broker)为中介,可以在多种流行网络通信协议上实现。接口描述 语言(IDL,Interface Description Language)用于描述对象接口,它与语言无关,使得所有 CORBA 对象以一致的方式被描述。 Microsoft 的 DCOM(分布式对象构件模型,Distributed Component Object Model)技术 是对原有的 COM 技术的扩展,以支持在网络上不同计算机的对象之间的通信。COM 定义 了接口的二进制标准,包括接口交互、管理对象及其资源等等。而 DCOM 通过增加网络协 议的支持,使得对象可以通过网络互操作。DCOM 技术很好的支持复用,位置独立,可扩 展等,并且其执行性能较好,目前被基于 Windows 平台的软件开发商所广泛支持
数生形专 /Gs构伟 数据管理接口 构件私有数据 人机交互界面服务 构件私有算法 DcP接口 分布计算平台服务 机界面接口 操作系统 硬件环境 图16-8:基于DCP的GS体系结构和构件:一个实现视图[ OpenGis Consortium 对于GS软件开发,构件技术带来的除了实现复用、支持分布的互操作外,还具有以 下两个方面的优势∵: 1)数据是GIS中最为重要的部分,目前各个软件数据格式不同,不便于共享和保护用 户已有投资,构件技术通过互操作的支持可以实现数据共享 2)地理信息系统功能的涵盖范围非常广泛,包括图形操作、图像处理、地图制图、数 据库管理、投影变换等等,它们涉及不同的专业领域。利用构件技术,可以将不同专业领域 的具体功能实现为构件,组装形成软件系统,避免了需要同时学习多个专业领域的状况。 图16-8给出了一个GS体系结构以及构件的概念模型,在该模型中,体系结构具有多 个“插槽”,而构件是“可插入( Plugable)”的,这种类似于计算机主板的结构,通过DCP 的支持,依照图16-7中所描述的工作流结构,可以很容易的实现跨平台的地理信息系统软 件 3.G|s需求分析 3.IGIS需求获取 需求获取是软件开发活动的第一步,获得正确的需求描述是成功软件的前提。一般而言, 用户需求分为两类,功能性需求和非功能性需求,前者定义了系统做什么,包括输入、输出 以及其间的转换:后者定义了系统工作时的特性,如效率、可靠性、安全性、可维护性、可 移植性等等要求。具体的需求获取内容包括: )物理环境,物理设备的位置以及其分布的集中程度: 2)接口,与其它软件系统的接口以及对数据格式的要求: 3)用户或人的因素,包括系统用户熟练程度,使用系统需要接受的训练 4)功能,系统要完成什么,性能如何 5)文档,需要哪些文档以及其针对的读者 6)数据,数据格式、数据精度、数据量、接收和发送数据的频率: 7)资源,使用系统需要的设备,开发需要的人力资源、计算机资源、时间表 关于这点,在地理信息系统标准以及 OpenGIs中还将详细论述
图 16-8:基于 DCP 的 GIS 体系结构和构件:一个实现视图[OpenGIS Consortium] 对于 GIS 软件开发,构件技术带来的除了实现复用、支持分布的互操作外,还具有以 下两个方面的优势*: 1)数据是 GIS 中最为重要的部分,目前各个软件数据格式不同,不便于共享和保护用 户已有投资,构件技术通过互操作的支持可以实现数据共享; 2)地理信息系统功能的涵盖范围非常广泛,包括图形操作、图像处理、地图制图、数 据库管理、投影变换等等,它们涉及不同的专业领域。利用构件技术,可以将不同专业领域 的具体功能实现为构件,组装形成软件系统,避免了需要同时学习多个专业领域的状况。 图 16-8 给出了一个 GIS 体系结构以及构件的概念模型,在该模型中,体系结构具有多 个“插槽”,而构件是“可插入(Plugable)”的,这种类似于计算机主板的结构,通过 DCP 的支持,依照图 16-7 中所描述的工作流结构,可以很容易的实现跨平台的地理信息系统软 件。 3.GIS 需求分析 3.1 GIS 需求获取 需求获取是软件开发活动的第一步,获得正确的需求描述是成功软件的前提。一般而言, 用户需求分为两类,功能性需求和非功能性需求,前者定义了系统做什么,包括输入、输出 以及其间的转换;后者定义了系统工作时的特性,如效率、可靠性、安全性、可维护性、可 移植性等等要求。具体的需求获取内容包括: 1)物理环境,物理设备的位置以及其分布的集中程度; 2)接口,与其它软件系统的接口以及对数据格式的要求; 3)用户或人的因素,包括系统用户熟练程度,使用系统需要接受的训练; 4)功能,系统要完成什么,性能如何; 5)文档,需要哪些文档以及其针对的读者; 6)数据,数据格式、数据精度、数据量、接收和发送数据的频率; 7)资源,使用系统需要的设备,开发需要的人力资源、计算机资源、时间表; * 关于这点,在地理信息系统标准以及 OpenGIS 中还将详细论述