国土资源业务复杂,业务类型多,包括行政审批业务、综合事务管理业务、调查评价业务和信息服务业务。国土资源管理的数据是海量的空间和非空间数据。行政审批业务流程复杂,有的业务可在本级办理,有的要跨部、省、市、县等多个级别,有的业务不仅涉及国土资主源管部门,还要涉及到多级政府部门,国土资源行政审批业务管理系统是典划的MIS系统;综合事务管理业务通常包括的公文管理、人事管理等综合事务,综合事务管理系统是典现的办公自动化系统;国土资源调查评价业务包括土地利用现状调查、土地分等定级估价、矿产资源调查评价等业务,国土资源调查评价业务系统基本都是与图形管理相关的GIS系统;国土资源信息服务业务主要指信息发布服务业务,国土资源信息服务业务系统主要指基于INTERNET的信息发布服务系统、此外,由于国土资源行政审批需要大量的空间数据支持,因此国土资源行政审批业务管理系统是GIS 与MIS技术的合成产物。
由于 MIS系统和GIS 系统的数据特点,应用特点,系统架构,系统规模,设计思想和开发方法都存在着非常大的差别;基于INTERNET的信息发布服务系统、基于INTERNET的国土资源行政审批业务系统以及单机运行的调查评价系统从架构上就存在明显差异;通用的综合事务管理系统侧重公文流转,国土资源行政审批业务系统侧重案件流转,两者之间既有共同之处,又有本质区别。因此,国土资源行政审批业务系统、审查评价系统、综合事务管理系统以及信息服务系统的开发方法必然存在差异。
20世纪 60年代以来,世界各地的软件研究人员在实践中不断探索新的软件开发方法,至今已形成八类软件开发方法,分别是PARNAS方法,SASD方法、面数据结构的软件开发方法、问题分析法(pAM)、面向对象的软件开发方法、可视化开发方法、基于构件的开发和自适应软件开发方法、这些开发方法是随着软件工程技术发展在不同时期产生的开发方法,各有特点,针对不同类型的软件开发,各有优势。
目前,对于复杂的国土资源应用,不同的国土资源专题应用系统应该选择什么样的软件开发方法或方法组合更加有利于开发呢?
2 软件开发方法对比
PARNAS方法没有给出明确的工作流程,不能独立使用.本文不加描述。
2.1 SASD方法
SASD方法即结构化方法,也称为面向功能的软件开发方法或面向数据流的软件开发方法.SASD方法首先用结构化分析(SA)对软件进行需求分析,然后用结构化设计(SD)方法进行总体设计,最后是结构化编程(SP)。此外,SASD方法给出了两类典型的软件结构(变换型和事务型)、使用SASD方法进行系统的开发要求软件开发人员经验丰富,只适用于中小型系统开发。
2.2 面向数据结构的软件开发方法
面向数据结构的软件开发方法从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其它细节,可得到完整的程序结构图。该方法对输入、输出数据结构明确的中小型系统特别有效、该方法也可与其它方法结合,用于模块的详细设计。
2.3 问题分析法
问题分析法(PAM) 的本质上是综合的自底向上的方法。它的具体步骤是先从输入、输出数据结构导出基本处理框架;再分析这些框架之间的先后关系;最后按先后关系逐步综合处理框,直到画出整个系统的PAD图,并且在逐步综合之前进行有目的的的分解, 这个目的就是充分考虑系统的输入、输出数据结构PAD图。PAD图是一种二维树形结构图,是到目前为止最好的详细设计表示方法之一,优于NS图和PDL语言。PAM问题分析法只适用于中小型问题。
2.4 面向对象的软件开发方法
面向对象的软件开发方法是一种自底向上和自顶向下相结合的方法,它以对象建模为基础不仅考虑了输入、输出数据结构,也包含了所有对象的数据结构、它彻底实现了PAM问题分析方法没有完全实现的目标。在需求分析、可维护性和可靠性三个软件开发的关键环节和质量指标上有了实质性的突破,彻底地解决了在这些方面存在的严重问题。随着OOP(面向对象编程)向OOD(面向对象设计)和00A (面向对象分析)的发展,面向对象的软件开发方法结束了软件危机。使用面向对象的软件开发方法初级软件开发人员即可掌握。面向对象的软件开发方法适合大、中、小型系统的开发。
2.4.1面向对象的软件开发方法实现了自底向上归纳和自顶向下分解的结合
面向对象的软件开发方法的第一步工作就是自底向上归纳 ,从问题的陈述入手,构造系统模型。系统模型由对象模型、动态模型和功能模型构成。系统模型建立后然后进行自顶向下的分解。与SASD方法按功能分解不同,在面向对象的软件开发方法中通常按服务(SERVICE)来分解。面向对象的软件开发方法能有效地控制模块的复杂化,避免了SASD方法中功能分解的困难和不确定性。
2.4.2面向对象的软件开发方法的需求分析更加彻底
传统的软件开发方法不允许在开发过程中用户的需求发生变化。因此,提出了原型化方法,推出探索原型、试验原型和进化原型,积极鼓励用户改进益需。在每次改进需求后又形成新的进化原型供用户试用,直到用户基本满意,大大提高了软件的成功率。
2.4.3面向对象的软件开发方法开发的可维护性大大改善
基于功能分解的软件是不易维护的。因为功能一旦有变化都会使开发的软件系统发生较大的变化,甚至推倒重来。在OO(面向对象)语言中,子类不仅可以继承父类的属性和行为,而且也可以重载父类的某个行为,开发人员可以方便地进行功能修改,彻底解决了软件的可修改性,从而彻底解决了软件的可维护性。在问题分析软件开发方法(PAM)中,当输入.输出数据结构(即系统的边界)发生变化时,整个软件必须推倒重来。
2.4.4面向对象的软件开发方法开发的软件稳定性强
面向对象的软件开发方法的基础是目标系统的对象模型,由于对象是客观存在的,当需求变化时对象的性质要比对象的使用更为稳定,使建立在对象结构上的软件系统也更为稳定、可靠。
2.5 可视化开发方法
可视化即 Visual 可视化开发方法是当今个软件编程最常用的方法。随着图形用户界面的兴起,用户界面在软件系统中所占的比例也越来越大,有的甚至高达60%-70%。为此 Windows 提供了应用程序设计接口 API(application programming interface) 它包含了 600 多个函数,极大地方便了图形用户界面的开发、由于基干 Windows API的开发相当困难。为此Borland C+十推出了上 ObjectWindows编程。随着基于Windows API 或 Borland c++的Object Windows 开发的一批可视开发工具,如Visual Basic,visual c 等的推出,使可视化开发变得简单快捷。
可视化开发工具提供两大类服务。一类是生成成图形用户界面及相关的消息响应函数。另一类服务是为各种具体的子应用的各个常规执行步骤提供规范窗口,它包括对话框、菜单、列表框、组合框、按纽和编辑框等,以供用户挑选。
可视化开发只能用于相当成熟的应用领域如目前流行的可视化开发工具基本上用于关系数据库的开发。从原理上讲,与图形界面有关的所有应用都可采用可视化开发方式。
2.6 基于构件的开发方法
基于构件的开发(Component-based Development.简称CBD)是一种软件开发新范型,它是在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合手段高效率、高质量地构造应用软件系统的过程。它由构件、接口、契约、接口描述语言、构件框架等基本概念构成,主要解决某于Internet和Intranet的,标准定义的、分布式、模块化的、多层次异构应用系统的开发问题,实现了分析、设计、类等多层次上的重用,使应用系统集成分成几个独立部分并发增量开发,引导软件开发从应用系统开发转变为应用系统集成,是最具潜力的软件工程发展方向之一,其开发过程如图1。
2.6.1基于构件的软件开发方法与传统方法的本质区别
传统的软件方法学是从面向机器、面向数据、面向过程、面向功能.面向数据流、面向对象等不断创新的观点反映问题的本质。基于构件的软件开发方法把系统应用和实现分离,即逻辑与数据的分离,提供标准接口框架,使软件开发方法变成构件的组合〔它是以接口为中心,面向行为的软件开发方法。把自顶向下和自底向上方法结合起来进行开发。
2.6.2基于构件的软件开发项目组组成与传统方法不同
传统软件的开发组织一般由分析员、设计员、程序员和测试员组成。对一个小的应用系统来说,一个熟练的开发人员,可能兼顾以上多个角色。基于构件的软件开发人员中构件开发与应用系统集成是分开进行的,因此开发过程由构件开发者、应用构件集成者、应用系统部署者、开发平台服务器供应商、应用系统开发工具供应商、系统管理员等六个角色组成。
2.6.3基于构件的软件的构造方法与传统方法不同
传统应用软件的构造是白盒子方法,应用系统的实现全在代码中,应用逻辑和数据粘结在一起。基于构件的软件的构造是用白盒子和黑盒子相结合的方法。它用两个概念来支持演变:第一个概念是构件有很强的性能接口,使构件逻辑功能和构件模型的实现都隐藏起来。第二个概念是隐式调用,即在基于构件的框架中,从来不直接给构件的接口分配地址,只在识别构件用户后才分配地址。
2.7 自适应软件开发方法
自适应软件开发方法也称敏捷软件开发方法是一种基于复杂自适应系统理论的新型软件开发方法,主要适用于高速率和高变化的软件项目。
自适应开发软件开发方法是一种刚好够用的方法学,是当今分布式异地开发、技术和服务知识密集型开发中的一种关键协作技能,是一种在混饨和有序间保持平衡的混饨观。它完全不同于传统的、按计划行事的项目管理策略,是一种随时、随地的调整的方法学。自适应开发软件开发方法是一种正在研究发展的方法学,正在逐步实用化。
综上所述,八种软件开发方法中SASD方法、面向数据结构的软件开发方法和问题分析法(PAM)以适合进行中、小型系统开发,面向数据结构的软件开发方法和问题分析法(PAM) 还可以作为大型系统的详细设计方法。面向对象的软件开发方法适合进行大.中、小型系统开发;基于构件的开发最适合进行大型的分布式系统开发自适应软件开发方法是一种理想开发方法还没有进入实用阶段,可视化开发方法只能作为其他开发方法的补充手段。
3 国土资源信息系统软件开发方法选择
3.1 国土资源信息系统软件体系
国土资源信息系统由电子政务子系统、调查评价子系统、综合事务管理子系统、信息服务子系统和其他辅助软件系统组成,其中每个子系统又由若干个应用软件构成,如图3所示。
这些子系统涵盖了GIS 和MIS技术领域的单机应用软件和网络应用软件(含二层结构、三层结构和多层结构),如电子政务基础平台软件、电子政务业务软件、GIS系统开发平台、国土资源GIS应用系统、国土资源基础数据采集软件、数据交换与共享平台软件、国土资源基础数据数据管理软件、数据维护软件和数据应用软件、信息发布软件等。
3.2 国土资源信息系统软件开发方法解决方案
通过软件开发方法分析对比可知SASD方法面向对象的软件开发方法和基于构件的开发方法是软件开发的基本方法、面向数据结构的软件开发方法、问题分析法(PAAI)和可视化开发方法主要作为基本方法的辅助方法,如:用于系统设计和程序开发等。自适应软件开发方法目前处于研究阶段。目前我国国土资源信息化工作迅猛开展,如何针对各类国土资源软件特点,选择合适的开发方法,提高软件开发效率,将影响信息化工作的进程。
3.2.1调查评价系统开发方法选择
国土资源调查评价系统包括城镇地籍调查软件、土地利用现状调查软件、土地规划图编制软件、土地估价软件等,这些软件的特点是:软件规模较小,软件的业务需求规范、清楚、稳定如城镇地籍调查软件有《城镇地籍调查规程》作为依据,主要作为采集国土资源空间基础数据和其他基础数据的工具软件。软件要求运行环境要求低,便于单机安装,甚至适合野外操作。
国土资源调查评价相关软件的开发自20世纪90年代初期至今已有10多年历史,其中的若干应用软件已经采用SASD方法利面向对象的软件开发方法进行开发。此外 面向数据结构的软件开发方法和PAM问题分析法也可以作为这类软件的开发方法。可视化开发语言如;Visual C、Visual Basic等,主要用于软件编程。
3.2.2国土资源电子政务系统开发方法选择
国土资源电子政务系统是一个典型的分布式、多层次的系统,是一个通用软件技术,如工作流管理技术,与专业技术,如建设用地审批、矿业权等相结合的应用系统;是包括文档数据处理和空间数据处理的综合图文系统。国土资源电子政务系统开发跨地域、周期长、涉开发人员多,必须“总体设计、分布式实施”, 因此,国土资源电子政务系统开发方法应该选择基于构件的软件开发方法,通过建立完整的构件框架、构件、契约、接口、接口描述等,由多个开发人员分头开发系统构件提供给系统分发人员进行系统集成可在较短时间内完成系统软件开发。
由于许多国土资源部门已经建立一此专业软件平台,如 OA平台,同时, 开发或使用了一些厂商提供的专业构件 如 ESRI的 Arcobjects 组件等。因此,在国土资源电子政务系统时,还必须对原有系统的构件进行挖掘。
国士资源电子政务系统规模庞大,选择基于构件的软件开发方法作为某本开发方法,同时,可以采用SASD方法、面向对象的软件开发方法、面向数据结构的软件开发方法或PAM问题分析法进行系统设计,采用面向对象的方法和可视化开发方法开发系统构件。
3.2.3 国土资源事务管理系统开发方法选择
国土资源事务管理系统包括人事管理、财务管地、车辆管理、公文管理等多种行政综合事务子系统,综合事务有些是规范业务,如财务管理,有些是特殊业务,每个单位各有差异。
国土资源事务管理系统包括的各子系统都是典型的MIS系统,结构上有单机、两层、三层或多层结构体系。国土资源事务管理系统的子系统一般采用面向对象的开发方法,也可选SASD方法进行软件开发。选用面向对象的开发方法时将采用面向对象分析、设计技术和面向对象的可视化开发语言编程。选用SASD方法时,将采用结构化分析、设计技术和结构化编程方法,编程方法也可以采用面向对象的可视化开发语言编程。
因国土资源事务管理系统一般将纳入电子政务系统平台统一管理,因此对于一层和多层结构的事务管理系统可以采用基于构件的软件开发方法开发,以便与电子政务系统开发方法保持一致。
3.2.4国土资源信息服务系统开发方法选择
国土资源信息服务系统主要包括政务外网与外网上运行的空间和非空间数据的发布、与共享的应用软件,如基于ARCIMS、MapXTeme等开发的空间数据发布软件和国土资源网站等公共信息共享平台。这些软件的特点是需求是变化频率较高,软件结构必须是一层或多层,空间信息的发布软件开发、网络通讯乃至普遍的页面出发布等都必须专业厂商提供的通讯平台、测览器平台和应用服务平台。
针对国土资源信息服务系统软件的特点目前主要采用面向对象软件开发方法进行系统分析设计与编程方法开发。因自适应开发软件开发方法最合适开发需求不断调整的软件,当自适应开发软件开发方法成熟后,国土资源信息服务系统软件将采用这种开发方法开发。
3.2.5其他国土资源子系统开发方法选择
其他国土资源子系统主要包括管理空间数据的GIS系统和空间数据转换、共享、同步等应用软件。国土资源 GIS应用系统主要基于GIS平台如 ARCINFO、Mapinfop平台等进行二次开发.其开发方法受GIS平台限制,如 ARCCIS平台,采用了基于组件(构件)的开发思想,因此,基于ARCGIS平台的国土资源GIS应用系统府采用基于构件的软件开发方法进行分析、设计。对于具体的功能构件则可采用面向对象的开发方法进行开发。 国土资源空间数据转换、交换、共享软件是解决不同格式的空间数据交换与共享的工具,由于软件的需求十分清楚,软件规模小,软件的分析、设计比较容易。因此,开发方法选择结构化方法和面向对象方法都可以。
4 结束语
国土资源信息系统的结构复杂,软件种类繁多,具体的开发方法、思路各不相同,因此,通过研究软件开发方法,分析各种的国土资源软件系统的特点,为各种国土资源子系统软件选择开发方法确定开发模式,提高软件系统开发效率,推进国土资源信息化工作,有实际意义、本文通过研究软件开发理论,分析国土资源软件系统的实际,提出了一套国土资源系统开发方法选配方案,希望能为同行借鉴,不合理处欢迎批评指正。