《第二章GIS软件工程概述》由会员分享,可在线阅读,更多相关《第二章GIS软件工程概述(95页珍藏版)》请在金锄头文库上搜索。
1、GIS设计与应用设计与应用第二章第二章 GIS软件工程概述软件工程概述第一节第一节 GIS软件工程软件工程一、一、GIS软件的主要特点软件的主要特点(1)在存储技术上,传统的)在存储技术上,传统的GIS采用两库结构,即空间数据库采用两库结构,即空间数据库和属性数据库的分离。和属性数据库的分离。(2)在数据组织与处理模式上,传统的)在数据组织与处理模式上,传统的GIS仍然沿袭地图处理仍然沿袭地图处理的模式。在实现上,将空间数据组织成物理实体(点、线、的模式。在实现上,将空间数据组织成物理实体(点、线、面等)、图层、地图和图库几个层次。面等)、图层、地图和图库几个层次。(3)在网络和分布式环境下系
2、统组成方面,传统的)在网络和分布式环境下系统组成方面,传统的GIS支持树支持树型的系统结构和主从工作模式,上下级数据交换基本上以型的系统结构和主从工作模式,上下级数据交换基本上以图层为单位进行。图层为单位进行。(4)在空间数据管理范围方面,目前的)在空间数据管理范围方面,目前的GIS可以比较有效地处可以比较有效地处理二维空间数据,并能较好地处理理二维空间数据,并能较好地处理DEM数据、实现三维实体数据、实现三维实体的表面显示。的表面显示。(5)在数据共享和功能共享方面,虽然目前开始注意元数据)在数据共享和功能共享方面,虽然目前开始注意元数据问题,已经解决了不同格式空间数据之间转换问题,可以实问
3、题,已经解决了不同格式空间数据之间转换问题,可以实现有缝的数据共享。但是现有缝的数据共享。但是GIS功能共享和互操作问题尚未得功能共享和互操作问题尚未得到解决。以系统为中心的问题没有得到根本克服。到解决。以系统为中心的问题没有得到根本克服。 因此,传统的因此,传统的GIS软件的特点可以简要地归纳为:以系软件的特点可以简要地归纳为:以系统为中心,以地图为基础,二维处理,静态管理,尺度割裂,统为中心,以地图为基础,二维处理,静态管理,尺度割裂,数据集中。数据集中。二、二、GIS软件开发过程中的问题软件开发过程中的问题(1)经费预算经常突破,完成时间一再拖延。)经费预算经常突破,完成时间一再拖延。
4、由于缺乏由于缺乏GIS软件开发的经验和软件开发的经验和GIS软件开发数据的积累,软件开发数据的积累,使得软件开发计划很难制定。主观盲目制定的计划,执行起使得软件开发计划很难制定。主观盲目制定的计划,执行起来和实际情况有很大的差距,使得开发经费一再突破。由于来和实际情况有很大的差距,使得开发经费一再突破。由于对工作量和开发难度估计不足,进度计划无法按时完成,开对工作量和开发难度估计不足,进度计划无法按时完成,开发时间一再拖延。发时间一再拖延。 (2)开发的软件不能满足用户的要求。)开发的软件不能满足用户的要求。开发的初期对用户的要求了解不够明确,未能得到明确表达。开发的初期对用户的要求了解不够明
5、确,未能得到明确表达。开发工作开始后,软件人员和用户未能及时交换意见,使得开发工作开始后,软件人员和用户未能及时交换意见,使得一些问题不能及时解决,导致开发软件不能满足用户的要求,一些问题不能及时解决,导致开发软件不能满足用户的要求,使得开发工作失败。使得开发工作失败。 (3)开发的软件可维护性差。)开发的软件可维护性差。 软件开发人员按各自的风格工作,各行其是。程软件开发人员按各自的风格工作,各行其是。程序结构不好,运行维护时发现错误也很难修改,导致维序结构不好,运行维护时发现错误也很难修改,导致维护性差。统计数据表明,软件的维护费用占整个软件系护性差。统计数据表明,软件的维护费用占整个软件
6、系统费用的统费用的2/3,而软件开发费用只占,而软件开发费用只占1/3。软件维护之所。软件维护之所以有如此大的花费,是因为已经运行的软件还需排除隐以有如此大的花费,是因为已经运行的软件还需排除隐含的错误,新增加的功能要加入进去,维护工作又是非含的错误,新增加的功能要加入进去,维护工作又是非常困难的,效率是非常低下的。因此,如何提高软件的常困难的,效率是非常低下的。因此,如何提高软件的可维护性,减少软件维护的工作量,也是软件工程面临可维护性,减少软件维护的工作量,也是软件工程面临的主要问题之一。的主要问题之一。(4)开发的软件可靠性差。)开发的软件可靠性差。 在软件开发过程中,若在测试时,没有严
7、格的、在软件开发过程中,若在测试时,没有严格的、完整的测试,那么提交给用户的软件质量差,在运完整的测试,那么提交给用户的软件质量差,在运行中就会暴露出大量的问题。这种不可靠的软件,行中就会暴露出大量的问题。这种不可靠的软件,经常会影响系统正常工作,甚至会发生事故,造成经常会影响系统正常工作,甚至会发生事故,造成生命财产的重大损失。在软件开发中,通常要花费生命财产的重大损失。在软件开发中,通常要花费40的代价进行测试和排错,即使这样还不能保证的代价进行测试和排错,即使这样还不能保证以后不再发生错误,为了提高软件可靠性,就要付以后不再发生错误,为了提高软件可靠性,就要付出足够的代价。出足够的代价。
8、(5)数据工程量特别大,特别是数据采集工作量十分大。)数据工程量特别大,特别是数据采集工作量十分大。 而由数据工程又带来一系列问题,如可靠性差、周期而由数据工程又带来一系列问题,如可靠性差、周期延长、费用增长等等。延长、费用增长等等。(6)软件需求与软件生产的矛盾日益加剧,突出表现在软)软件需求与软件生产的矛盾日益加剧,突出表现在软件生产率低。件生产率低。 软件是知识高度密集的综合产物,计算机的广泛应用软件是知识高度密集的综合产物,计算机的广泛应用使得软件的需求量大幅度上升,软件的发展远远不能适应使得软件的需求量大幅度上升,软件的发展远远不能适应社会对迅速增长的要求,而软件的生产又牌手工开发的
9、状社会对迅速增长的要求,而软件的生产又牌手工开发的状态,软件生产率低下,使得各国都感到软件开发人员的不态,软件生产率低下,使得各国都感到软件开发人员的不足,所以足,所以,如何提高软件生产率,是软件工程的又一重要问题。,如何提高软件生产率,是软件工程的又一重要问题。 (7)软件可重用性差。)软件可重用性差。 提高软件的重用性,对于提高软件生产率、降低提高软件的重用性,对于提高软件生产率、降低软件成本有差重要意义。当前的软件开发存在着大量软件成本有差重要意义。当前的软件开发存在着大量的、重复的劳动,耗费了不少人力资源。软件的重用的、重复的劳动,耗费了不少人力资源。软件的重用有各种级别,软件规格说明
10、、软件模块、软件代码、有各种级别,软件规格说明、软件模块、软件代码、软件文档等都可以是软件重用的单位。软件重用是软软件文档等都可以是软件重用的单位。软件重用是软件工程中的一个重要研究课题,软件重用的理论和技件工程中的一个重要研究课题,软件重用的理论和技术至今尚未彻底解决。术至今尚未彻底解决。三、三、GIS软件开发存在问题的原因分析软件开发存在问题的原因分析(1)软件的规模越来越大,结构越来越复杂。)软件的规模越来越大,结构越来越复杂。 随着计算机应用的日益广泛,需要开发的软件规模日益随着计算机应用的日益广泛,需要开发的软件规模日益庞大,软件结构也日益复杂。庞大,软件结构也日益复杂。1968年美
11、国航空公司订票系统年美国航空公司订票系统达到达到30万条指令;万条指令;IBM360 OS第第16版达到版达到100万条指令,花万条指令,花了了5000个人年;个人年;1973年美国阿波罗计划达到年美国阿波罗计划达到1000万条指令。万条指令。这些庞大软件的功能非常复杂,体现在处理功能的多样性和这些庞大软件的功能非常复杂,体现在处理功能的多样性和运行环境的多样性。有人曾估计,软件设计与硬件设计相比,运行环境的多样性。有人曾估计,软件设计与硬件设计相比,其逻辑量要多达其逻辑量要多达10100倍。对于这种庞大规模的软件,其倍。对于这种庞大规模的软件,其调用关系、接口信息复杂,数据结构也复杂,这种复
12、杂程度调用关系、接口信息复杂,数据结构也复杂,这种复杂程度超过了人所能接受的程度。超过了人所能接受的程度。(2)软件开发的管理困难。)软件开发的管理困难。 由于软件规模大,结构复杂又具有无形性,导致管由于软件规模大,结构复杂又具有无形性,导致管理困难,进度控制困难,可靠性无法保证。理困难,进度控制困难,可靠性无法保证。 (3)软件开发费用不断增加。)软件开发费用不断增加。 软件生产是一种智力劳动,它是资金密集、人力密软件生产是一种智力劳动,它是资金密集、人力密集的产业,大型软件投入人力多,周期长,费用上升很集的产业,大型软件投入人力多,周期长,费用上升很快。快。(4)软件开发技术落后。)软件开
13、发技术落后。 在在20世纪世纪60年代,人们注重一些计算机理论问题的年代,人们注重一些计算机理论问题的研究,如编译原理、操作系统原理、数据库原理、人工研究,如编译原理、操作系统原理、数据库原理、人工智能原理、形式语言理论等,不注重软件开发技术的研智能原理、形式语言理论等,不注重软件开发技术的研究,用户要求的软件复杂性与软件技术解决复杂性的能究,用户要求的软件复杂性与软件技术解决复杂性的能力不相适应,它们之间的差距越来越大。力不相适应,它们之间的差距越来越大。(5)生产方式落后。)生产方式落后。 软件仍然采用个体手工方式开发,根据个人习惯爱软件仍然采用个体手工方式开发,根据个人习惯爱好,无章可循
14、、无规范可依据,工作靠言传身教方式,好,无章可循、无规范可依据,工作靠言传身教方式,缺乏工程化思想方法的指导。缺乏工程化思想方法的指导。(6)开发工具落后,生产率提高缓慢。)开发工具落后,生产率提高缓慢。 软件开发工具过于原始,没有出现高效率的开发软件开发工具过于原始,没有出现高效率的开发工具,因而软件生产率低下。在工具,因而软件生产率低下。在19601980年期间,年期间,计算机硬件的生产由于采用计算机辅助设计、自动生计算机硬件的生产由于采用计算机辅助设计、自动生产线等先进工具,使硬件生产提高了产线等先进工具,使硬件生产提高了100万倍,而软万倍,而软件生产率只提高了件生产率只提高了2倍,相
15、差十分悬殊。倍,相差十分悬殊。(7)通用)通用GIS软件处在快速上升分化发展过程中,更软件处在快速上升分化发展过程中,更新变化很快,不可避免存在不少发展过程中的衔接问新变化很快,不可避免存在不少发展过程中的衔接问题。题。四、四、GIS软件工程软件工程1.软件工程的定义软件工程的定义软件工程是用科学知识和技术原理来定义、开发、维护软件的软件工程是用科学知识和技术原理来定义、开发、维护软件的一门学科。其主要思想是在软件生产中用工程化的方法代替传一门学科。其主要思想是在软件生产中用工程化的方法代替传统手工方法。统手工方法。GIS软件工程就是在软件工程就是在GIS软件的开发整个过程中,遵循一般软件软件
16、的开发整个过程中,遵循一般软件开发的工程化原理和方法,并照顾到开发的工程化原理和方法,并照顾到GIS软件开发的特殊规律软件开发的特殊规律和要求,对和要求,对GIS软件从可行性研究、需求分析、总体设计、详软件从可行性研究、需求分析、总体设计、详细设计、软件编制、软件测试,直到软件维护的各个阶段进行细设计、软件编制、软件测试,直到软件维护的各个阶段进行工程化规范的一门技术。工程化规范的一门技术。2.工程的性质工程的性质软件工程是涉及计算机科学、工程科学、数学等领域的软件工程是涉及计算机科学、工程科学、数学等领域的一门综合性的交叉学科。计算机科学中的研究成果均可一门综合性的交叉学科。计算机科学中的研
17、究成果均可用于软件工程,但是计算机科学着重于原理和理论,而用于软件工程,但是计算机科学着重于原理和理论,而软件工程着重于如何建造一个软件系统。软件工程着重于如何建造一个软件系统。GIS软件工程涉及的学科门类更为繁多,包括地理学、软件工程涉及的学科门类更为繁多,包括地理学、测量学、地图制图学、摄影测量与遥感学、计算机科学、测量学、地图制图学、摄影测量与遥感学、计算机科学、数学、统计学、以及一切与处理和分析空间数据有关的数学、统计学、以及一切与处理和分析空间数据有关的学科。学科。GIS软件工程明显地具有多学科交叉的特征,它软件工程明显地具有多学科交叉的特征,它既要吸收诸多相关学科的精华和营养,又将
18、被多个相关既要吸收诸多相关学科的精华和营养,又将被多个相关学科所运用。学科所运用。 3.工程的目标工程的目标软件工程是一门性学科,目的是从技术上和管理上采取软件工程是一门性学科,目的是从技术上和管理上采取了多项措施,组织实施软件工程项目来建造一个大型系了多项措施,组织实施软件工程项目来建造一个大型系统,并最终希望得到项目的成功。所谓成功,是要达到统,并最终希望得到项目的成功。所谓成功,是要达到以下几个目标:以下几个目标:付出较低的开发成本;达到要求的软件付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护
19、费用;能按时完成开发任务,及时交付使要较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。用;开发的软件可靠性高。这里提到的几个目标很自然这里提到的几个目标很自然地成为判断软件开发管理方地成为判断软件开发管理方法优劣的衡量尺度。实际上,法优劣的衡量尺度。实际上,实施软件开发项目就是力图实施软件开发项目就是力图在以上目标的冲突取得一定在以上目标的冲突取得一定程度的平衡。程度的平衡。 4软件工程的内容软件工程的内容软件工程研究的主要内容主要内容是指软件开发技术和软件开软件开发技术和软件开发管理两个方面。在软件开发技术中,它主要研究软发管理两个方面。在软件开发技术中,它主要研究软件
20、开发方法、软件开发过程、软件开发工具和环境。件开发方法、软件开发过程、软件开发工具和环境。在软件开发管理中,它主要是研究软件管理学、软件在软件开发管理中,它主要是研究软件管理学、软件经济学和软件心理学。经济学和软件心理学。软件工程包括三个要素:软件工程包括三个要素:方法、工具和过程。方法、工具和过程。 软件工程方法为软件开发提供了软件工程方法为软件开发提供了“如何做如何做”的的技术。技术。它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等。软件工程方法常采用某一种特殊的语言或图形的表达方法及一套质量保证标准。软件工程的过
21、程则是将软件工程的方法和工具软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件综合起来以达到合理、及时地进行计算机软件开发的目的。开发的目的。过程定义了方法使用的顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各个阶段完成的里程碑。软件工程就是包含上述方法、工具及过程在内的一些步骤。 GIS软件工程的内容按照软件开发过程的软件工程的内容按照软件开发过程的先后顺序,包括先后顺序,包括前期工程前期工程、设计工程设计工程、数数据工程据工程、工程实施工程实施和和维护工程维护工程等五个阶段,等五个阶段,每个阶段都以工程化原理作指导,以工程每个阶段都以工
22、程化原理作指导,以工程化方法做手段,并以质量控制、工程标准化方法做手段,并以质量控制、工程标准和工程管理作为保障,确保和工程管理作为保障,确保GIS软件的开软件的开发成功发成功。 五、五、GIS工程的特色工程的特色GIS与其他信息系统的最大区别最大区别是它能够处理它能够处理具有空间特性的对象,与一般制图系统相比具有空间特性的对象,与一般制图系统相比较,它不仅能够进行空间数据的存储、显示、较,它不仅能够进行空间数据的存储、显示、绘制、输出,而且能够对空间数据进行查询、绘制、输出,而且能够对空间数据进行查询、分析。也就是说,分析。也就是说,GIS处理的对象不仅包括文处理的对象不仅包括文本、表格、多
23、媒体等数据,而且要处理大量本、表格、多媒体等数据,而且要处理大量的空间数据,是基于空间数据的信息系统。的空间数据,是基于空间数据的信息系统。 GIS软件工程具有如下特点软件工程具有如下特点:1.系统复杂度大系统复杂度大 软件的复杂度与如下几个因素密切相关:软件的复杂度与如下几个因素密切相关:(1)交付文档的质量和数量。)交付文档的质量和数量。 交付的的文档都包括软件需求说明、系统设计书、用户手册、程交付的的文档都包括软件需求说明、系统设计书、用户手册、程序清单、测试报告等序清单、测试报告等 (2)软件的微观复杂度。)软件的微观复杂度。 即理解和处理单个程序或子程序内部结构与操作的难易程度。即理
24、解和处理单个程序或子程序内部结构与操作的难易程度。 (3)软件的宏观复杂性。)软件的宏观复杂性。 指理解和处理整个程序的结构与功能的难易程序。指理解和处理整个程序的结构与功能的难易程序。 从从GIS软件工程系统结构上分析,在上面几个软件工程系统结构上分析,在上面几个方面都增长较大,如图所示。方面都增长较大,如图所示。不难发现,功能规划相不难发现,功能规划相似的信息系统,似的信息系统,GIS的的复杂度可能比一般信息复杂度可能比一般信息系统高数个级别,这也系统高数个级别,这也是我国是我国GIS建设费用与建设费用与建设周期高居不下的实建设周期高居不下的实质性因素,如果对此估质性因素,如果对此估计不足
25、,就容易导致系计不足,就容易导致系统建设的失败。统建设的失败。 2数据在系统中具有特别地位数据在系统中具有特别地位GIS的另一个特色在于支持导质海量数据处理,的另一个特色在于支持导质海量数据处理,可以说,多数可以说,多数GIS本身就是一个强大的数据处本身就是一个强大的数据处理系统,数据甚至被称为理系统,数据甚至被称为GIS的的“核心核心”和和“血液血液”,所以数据库建设在,所以数据库建设在GIS建设中占有非建设中占有非常重要的地位。根据有关专家统计,系统投常重要的地位。根据有关专家统计,系统投资的三个主要部分资的三个主要部分数据、硬件、软件的数据、硬件、软件的比例一般高达比例一般高达8:1:1
26、,可见数据在系统中有,可见数据在系统中有重要的地位。重要的地位。 在系统开发过程中,在数据准备方面需要注意如下各方面: (1)数据的质量)数据的质量。 (2)数据的现势性。)数据的现势性。 (3)合理的数据组织结构。)合理的数据组织结构。 3系统表达方式复杂系统表达方式复杂(1)表达的内容复杂。)表达的内容复杂。GIS同时能够处理文本数据、空间数据、多媒体数据等,甚至也能够接受遥感遥测的实时数据,这是其他信息系统无法比拟的,相应地它的表达方式的组成上也是非常复杂的,如输出方面包括专题图、报表、业务表格等。(2)表达的对象具有时空特性。)表达的对象具有时空特性。GIS处理的主要对象为城市地理对象
27、,它具有鲜明的空间特性,系统必须能够将这些对象的空间性直观地表达给用户;同时许多地理现象是具有一定时间序列的,系统需要模拟地理现象的时空演化,如土地利用现状图,它需要系统能够追溯到历史上的一定时刻,以支持地籍管理。所以,目前3DGIS、虚拟现实(VR)等技术在GIS的应用中发展十分迅速。 4系统更新速度更快系统更新速度更快我国从我国从20世纪世纪80年代开始了年代开始了GIS的建设,经历了项目型的建设,经历了项目型GIS、管理型、管理型GIS、社会型、社会型GIS等几个阶段,其技术和认识等几个阶段,其技术和认识发生了翻天覆地的改变,其发展可以说与计算机技术完全发生了翻天覆地的改变,其发展可以说
28、与计算机技术完全同步了,这也导致同步了,这也导致GIS用户在建立相应系统时,所面临的用户在建立相应系统时,所面临的一个复杂环境,往往系统刚刚建设完毕,整个系统就不能一个复杂环境,往往系统刚刚建设完毕,整个系统就不能够满足当前需要了,从而导致大面积的投资失误与浪费,够满足当前需要了,从而导致大面积的投资失误与浪费,这也是这也是GIS建设周期长的一个后果,也反映了建设周期长的一个后果,也反映了GIS技术和技术和用户需求的发展速度。所以在开展用户调查、系统设计、用户需求的发展速度。所以在开展用户调查、系统设计、系统维护等阶段必须对这种状况进行认真考虑,才能积极系统维护等阶段必须对这种状况进行认真考虑
29、,才能积极预防。预防。5系统维护工作量大系统维护工作量大由于系统变化速度快,而且对外部数据依赖大,需要不断输入数据,所以系统本身的建设是一个长期的过程,其系统的开发工作可以说是“万时长征的第一步”,目前一些用户没有意识到这一点,有一种急功近利的思想,特别是国家政府部门领导把它当作一段时期的一件工作来抓,当时投资大,但是后继无力,致使系统不能够正常运转。一方面要求长期的投资,另一方面在系统设计开发过程中,要坚持“总体规划、分步实施、灵活调整、急用先行”的设计思想,最后,要注意逐步发挥系统的效益,争取系统能够产生社会效益的同时,产生一定的经济效益,来确保系统长期的发展。6易操作性要求高易操作性要求
30、高 正如前面所述,一个GIS中具有多个用户层次:专业维护人员、领导决策人员、一般业务人员,后两类用户并不是GIS专业人士,往往仅仅具备一般计算机操作能力,而GIS功能复杂,这两者之间需要通过良好的界面设计来协调,系统应该引导用户来完成操作,同时必须保证数据的安全性。由于处理对象的功能的复杂性导致系统的界面设计有较大困难,例如在同一屏幕上必须很好地同时显示图形和属性数据,如何解决这两者显示要求的矛盾关系就是界面设计的重要课题。 第二节第二节 软件生存周期模型软件生存周期模型一、概一、概 述述 软件生存周期模型是描述软件开发过程中各种活动如软件生存周期模型是描述软件开发过程中各种活动如何执行的模型
31、。何执行的模型。 软件生存周期模型确立了软件开发和演绎中各阶段的软件生存周期模型确立了软件开发和演绎中各阶段的次序限制以及各阶段活动的准则,确立开发过程所遵次序限制以及各阶段活动的准则,确立开发过程所遵守的规定和限制,便于各种活动的协调以及各类人员守的规定和限制,便于各种活动的协调以及各类人员的有效通信,有利于活动重用和活动管理。的有效通信,有利于活动重用和活动管理。 二、瀑布模型二、瀑布模型 瀑布模型是将软件生存周期各活动规定为依线性瀑布模型是将软件生存周期各活动规定为依线性顺序联接的若干阶段的模型。它包括可行性分析、项顺序联接的若干阶段的模型。它包括可行性分析、项目开发计划、需求分析、总体
32、设计、详细设计、编码、目开发计划、需求分析、总体设计、详细设计、编码、测试和维护。它规定了由前至后、相互衔接的固定次测试和维护。它规定了由前至后、相互衔接的固定次序,如同瀑布流水,逐级下落。序,如同瀑布流水,逐级下落。1模型表示模型表示瀑布模型的表示如瀑布模型的表示如 图所示。该模型说明整个软件开发过程按图中图所示。该模型说明整个软件开发过程按图中5个阶段进行的。每个阶段的任务完成之后,产生右边相应的文个阶段进行的。每个阶段的任务完成之后,产生右边相应的文档(图中只列出该阶段最主要的文档),这些文档经过确认,表档(图中只列出该阶段最主要的文档),这些文档经过确认,表明该阶段工作完成,并进入下一
33、阶段的工作。每个阶段均以上一明该阶段工作完成,并进入下一阶段的工作。每个阶段均以上一阶段的文档作为开发的基础,如果某一文档出现问题,则要返回阶段的文档作为开发的基础,如果某一文档出现问题,则要返回上一阶段去重新进行工作。上一阶段去重新进行工作。2瀑布模型的特点瀑布模型的特点 瀑布模型严格按照生存周期各个阶段的目标、任务、瀑布模型严格按照生存周期各个阶段的目标、任务、文档和要求来进行开发。它强调了每一个阶段的严格性,文档和要求来进行开发。它强调了每一个阶段的严格性,尤其是开发前期的良好需求说明,这样就能解决在开发尤其是开发前期的良好需求说明,这样就能解决在开发阶段后期修正不完善的需求说明将花费巨
34、大的费用问题。阶段后期修正不完善的需求说明将花费巨大的费用问题。 在这种严格定义的模型中,开发人员试图在每一活在这种严格定义的模型中,开发人员试图在每一活动过程结束后,通过严格的阶段性复审与确认,得到该动过程结束后,通过严格的阶段性复审与确认,得到该阶段结束的标志,保持不变,作为下一阶段活动的唯一阶段结束的标志,保持不变,作为下一阶段活动的唯一基础,从而形成一个理想的线性开发序列,以每一步的基础,从而形成一个理想的线性开发序列,以每一步的正确性和完整性来保证最终系统的质量。正确性和完整性来保证最终系统的质量。 瀑布模型是以文档形式驱动的,为合同双方最终确认瀑布模型是以文档形式驱动的,为合同双方
35、最终确认产品规定了蓝本,为管理者进行项目开发管理提供了基础,产品规定了蓝本,为管理者进行项目开发管理提供了基础,为开发过程施加了为开发过程施加了“政策政策”或纪律限制,约束了开发过程或纪律限制,约束了开发过程中的活动。中的活动。 瀑布模型是一种整体开发模型,在开发过程中,用户瀑布模型是一种整体开发模型,在开发过程中,用户看不见系统是什么样,只有开发完成向用户提交整个系统看不见系统是什么样,只有开发完成向用户提交整个系统时,用户就能看到一个完整的系统。时,用户就能看到一个完整的系统。 瀑布模型适合于功能和性能明确、完整、无重大变化瀑布模型适合于功能和性能明确、完整、无重大变化的软件开发。大部分的
36、系统软件就有这些特征,例如编译的软件开发。大部分的系统软件就有这些特征,例如编译系统、数据库管理系统和操作系统等。在开发前均可完整、系统、数据库管理系统和操作系统等。在开发前均可完整、准确、一致和无二义性地定义其目标、功能和性能等。准确、一致和无二义性地定义其目标、功能和性能等。 3瀑布模型的局限性瀑布模型的局限性 对于当前的大型软件项目,特别是应用软件项目,在开发对于当前的大型软件项目,特别是应用软件项目,在开发前期用户常常对系统只有一个模糊的想法,很难明确确定前期用户常常对系统只有一个模糊的想法,很难明确确定和表达对系统的全面要求。经过详细的要求定义,尽管这和表达对系统的全面要求。经过详细
37、的要求定义,尽管这可得到一份较好的需求说明书。但很难期望该需求说明能可得到一份较好的需求说明书。但很难期望该需求说明能将系统的一切都描述得完整、准确、一致并与实际环境相将系统的一切都描述得完整、准确、一致并与实际环境相符,很难通过它在逻辑上推出系统的运行效果,并以此达符,很难通过它在逻辑上推出系统的运行效果,并以此达到种类人员对系统的共同理解。因此,要保证每个阶段特到种类人员对系统的共同理解。因此,要保证每个阶段特别是定义阶段是正确的、完整的,这是属于理想情况,实别是定义阶段是正确的、完整的,这是属于理想情况,实际上是做不到或很难做到的。际上是做不到或很难做到的。 由于知识背景的不同,工作中的
38、疏漏和通讯媒介由于知识背景的不同,工作中的疏漏和通讯媒介的局限性,使通讯中的误解无法避免;随着项目向前的局限性,使通讯中的误解无法避免;随着项目向前推进,用户会产生新的要求,或因环境变化希望系统推进,用户会产生新的要求,或因环境变化希望系统也能随之变化。开发者也可能在设计中遇到某些未曾也能随之变化。开发者也可能在设计中遇到某些未曾预料的实际困难,希望在需求量中有所权衡。这些都预料的实际困难,希望在需求量中有所权衡。这些都成为进行严格线性开发的重大障碍,尽管通过加强复成为进行严格线性开发的重大障碍,尽管通过加强复审与确认、全面测试和设立维护阶段来缓解上述困难,审与确认、全面测试和设立维护阶段来缓
39、解上述困难,但均未在根本上解决这些问题。但均未在根本上解决这些问题。 作为整体开发的瀑布模型,由于不支持软件产品作为整体开发的瀑布模型,由于不支持软件产品的演化,对开发过程中的一些很难发现的错误只有在的演化,对开发过程中的一些很难发现的错误只有在最终产品运行时才能发现。瀑布模型缺乏应付变化的最终产品运行时才能发现。瀑布模型缺乏应付变化的机制,所以最终产品将难以维护。机制,所以最终产品将难以维护。 瀑布模型是一种理想的线性开发模式,缺乏灵瀑布模型是一种理想的线性开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确活性,特别是无法解决软件需求不明确或不准确的问题。这些缺点对软件开发带来了严重
40、影响,的问题。这些缺点对软件开发带来了严重影响,最终可能导致开发出的软件并不是用户真正需要最终可能导致开发出的软件并不是用户真正需要的软件,并且这一点在开发过程完成后才能发现,的软件,并且这一点在开发过程完成后才能发现,已为时太晚。已为时太晚。 三、增量模型三、增量模型 在瀑布模型的开发过程中,人们花费很大的精力进行严格开在瀑布模型的开发过程中,人们花费很大的精力进行严格开发,但终究难以接近理想目标,一切活动都掺杂着若干未能预料的发,但终究难以接近理想目标,一切活动都掺杂着若干未能预料的疏漏。于是人们不再追求开发活动的极度严格性和准确性,而开始疏漏。于是人们不再追求开发活动的极度严格性和准确性
41、,而开始考虑传统思想中的一些基本观念是否应当改变,能否尽早提供部分考虑传统思想中的一些基本观念是否应当改变,能否尽早提供部分产品给用户?能否一部分一部分地开发?通融在需求说明难以完善、产品给用户?能否一部分一部分地开发?通融在需求说明难以完善、难以明确的情况下,由快速分析而构造一个小的原型系统,满足用难以明确的情况下,由快速分析而构造一个小的原型系统,满足用户的某些要求后,使用户在使用过程中受其启发,逐步确定各种需户的某些要求后,使用户在使用过程中受其启发,逐步确定各种需求?回答是肯定的,因而产生了增量模型。求?回答是肯定的,因而产生了增量模型。 软件在该模型中是逐渐开发出来的,开发出一部分,
42、软件在该模型中是逐渐开发出来的,开发出一部分,向用户展示一部分,可让用户及时看到部分软件,及早向用户展示一部分,可让用户及时看到部分软件,及早发现问题。或者先开发一个原型软件,完成部分主要功发现问题。或者先开发一个原型软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。满意的软件产品。 四、螺旋模型四、螺旋模型 对于复杂的大型软件,开发一个原型往往达不到要对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型与增量模型结合起来,加入了求。螺旋模型将瀑布模型与增量模型结合起来,加入了两种模型均忽略的风险分
43、析,弥补了这两种模型的不足。两种模型均忽略的风险分析,弥补了这两种模型的不足。 螺旋模型是一种风险驱动模型。在软件开发中,有螺旋模型是一种风险驱动模型。在软件开发中,有各种各样的风险。对于不同的软件项目,其开发风险有各种各样的风险。对于不同的软件项目,其开发风险有大有小。实践表明,项目越复杂,设计方案、资源、成大有小。实践表明,项目越复杂,设计方案、资源、成本和进度等因素的不确定性越大,项目开发的风险也越本和进度等因素的不确定性越大,项目开发的风险也越大。因此,应及时对风险进行识别、分析和采取对策,大。因此,应及时对风险进行识别、分析和采取对策,从而消除或减少风险的危害。从而消除或减少风险的危
44、害。 螺旋模型将开发过程分为几个螺旋周期,每个螺旋周螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合。期大致和瀑布模型相符合。 五、喷泉模型五、喷泉模型 瀑布模型的不足之处在于,它对软件重用和生瀑布模型的不足之处在于,它对软件重用和生存期中多项开发活动的集成并未提供支持,因而难存期中多项开发活动的集成并未提供支持,因而难于支持面向对象的开发方法。于支持面向对象的开发方法。“喷泉喷泉”一词体现了一词体现了迭代和无间隙特性。系统某个部分常常重复工作多迭代和无间隙特性。系统某个部分常常重复工作多次,相关功能在每次迭代中随之加入演进的系统。次,相关功能在每次迭代中随之加入演进的系统
45、。无间隙是指在开发活动,即分析、设计和编码之间无间隙是指在开发活动,即分析、设计和编码之间不存在明显的边界。不存在明显的边界。六、智能模型六、智能模型 智能模型也称为基于知识的软件开发模型,它智能模型也称为基于知识的软件开发模型,它纵使了上述若干模型,并把专家系统结合在一起。纵使了上述若干模型,并把专家系统结合在一起。该模型应用基于规则的系统,采用归纳和推理机制,该模型应用基于规则的系统,采用归纳和推理机制,帮助软件人员完成开发工作,并使维护在系统规模帮助软件人员完成开发工作,并使维护在系统规模说明一级进行。为此,建立了知识库,为模型、软说明一级进行。为此,建立了知识库,为模型、软件工程知识与
46、特定领域的知识分别存入数据库。以件工程知识与特定领域的知识分别存入数据库。以软件工程知识为基础的生成规则构成的专家系统与软件工程知识为基础的生成规则构成的专家系统与含有应用领域知识规则的其他专家系统相结合,构含有应用领域知识规则的其他专家系统相结合,构成了这一应用领域软件的开发系统。成了这一应用领域软件的开发系统。第三节第三节 GIS软件工程的生存周期软件工程的生存周期 GIS软件工程生存周期是指一个软件工程生存周期是指一个GIS软件从提软件从提出开发要求开始直到该软件报废为止的整个出开发要求开始直到该软件报废为止的整个时期。把事个生存周期划分为若干阶段,使时期。把事个生存周期划分为若干阶段,
47、使得每个阶段有明确的任务,把规模大、结构得每个阶段有明确的任务,把规模大、结构复杂和管理复杂的软件开发变得容易控制和复杂和管理复杂的软件开发变得容易控制和管理。管理。 GIS的开发不仅有其既定的目标,而且有其阶段性。的开发不仅有其既定的目标,而且有其阶段性。GIS软件工程整个生存周期划分为四个阶段,一般而言,软件工程整个生存周期划分为四个阶段,一般而言,包括以下四个阶段:系统分析、系统设计、系统实施、包括以下四个阶段:系统分析、系统设计、系统实施、系统评价及维护。系统评价及维护。 软件生存周期的各个阶段有不同的划分。软件规模、种类、开软件生存周期的各个阶段有不同的划分。软件规模、种类、开发环境
48、以及开发使用的方法都有影响软件生存周期的划分。在划分发环境以及开发使用的方法都有影响软件生存周期的划分。在划分软件生存周期的阶段时,应遵循的软件生存周期的阶段时,应遵循的基本原则基本原则是是各阶段的任务应尽可各阶段的任务应尽可能的相应独立,同一阶段各项任务的性质尽可能相同,从而降低每能的相应独立,同一阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂程度,简化不同阶段之间的联系,有得软件项目个阶段任务的复杂程度,简化不同阶段之间的联系,有得软件项目开发组织管理。开发组织管理。通常,软件生存周期包括可行性研究和项目开发计通常,软件生存周期包括可行性研究和项目开发计划、需求分析、总体设计、详
49、细设计、程序编制、测试、维护等活划、需求分析、总体设计、详细设计、程序编制、测试、维护等活动,可将这些活动以适当方式分配到不同阶段去完成。动,可将这些活动以适当方式分配到不同阶段去完成。 GIS软件工程过程没有规定一个特定的生存周软件工程过程没有规定一个特定的生存周期模型或软件开发方法,各软件开发机构可为其开发期模型或软件开发方法,各软件开发机构可为其开发项目选择一种生存周期模型,并将软件工程过程所含项目选择一种生存周期模型,并将软件工程过程所含的过程、活动和任务影射到该模型中,也可以选择和的过程、活动和任务影射到该模型中,也可以选择和使用软件开发方法来执行适合于其软件项目的活动和使用软件开发
50、方法来执行适合于其软件项目的活动和任务。任务。 按照工程化的思想进行划分,按照工程化的思想进行划分,GIS软件工程生存软件工程生存周期包括:前期工程、设计工程、数据工程、工程实周期包括:前期工程、设计工程、数据工程、工程实施、维护工程等五个阶段。以下简要介绍各个工程阶施、维护工程等五个阶段。以下简要介绍各个工程阶段的情况。段的情况。一、前期工程一、前期工程GIS软件前期工程阶段,包括工程调研、可行性研究、软件前期工程阶段,包括工程调研、可行性研究、制定项目计划、需求分析等子阶段。制定项目计划、需求分析等子阶段。1工程调研工程调研根据软件开发的基本目标和技术要求,对国内外相关根据软件开发的基本目
51、标和技术要求,对国内外相关项目通过走访、交谈、函件往来、资料检索等方式进项目通过走访、交谈、函件往来、资料检索等方式进行调研,确定该领域的行调研,确定该领域的GIS软件的发展现状、存在问软件的发展现状、存在问题,从而为拟开展的软件工程项目提供有价值的参考题,从而为拟开展的软件工程项目提供有价值的参考资料。资料。2可靠性研究和项目开发计划可靠性研究和项目开发计划 根据软件和项目开发计划阶段必须要回答的问题是根据软件和项目开发计划阶段必须要回答的问题是“要解决的问题是什么要解决的问题是什么”。这问题有行得通的解决办法。这问题有行得通的解决办法吗?若有解决问题的办法,则需要多少费用?需要多少吗?若有
52、解决问题的办法,则需要多少费用?需要多少资源?需要多少时间?要回答这些问题,就要进行问题资源?需要多少时间?要回答这些问题,就要进行问题定义、可行性研究,制定项目开发计划。定义、可行性研究,制定项目开发计划。 用户提出一个软件开发要求后,系统分析员首先要解用户提出一个软件开发要求后,系统分析员首先要解决该软件项目的性质是什么,它是数据处理问题还是实决该软件项目的性质是什么,它是数据处理问题还是实时控制问题,它是科学计算问题还是人工智能问题等。时控制问题,它是科学计算问题还是人工智能问题等。还要明确该问题的目标是什么,该项目的模型如何等。还要明确该问题的目标是什么,该项目的模型如何等。 在清楚了
53、问题的性质、目标、规模后,还要确定问题在清楚了问题的性质、目标、规模后,还要确定问题有没有行得通的解决办法。系统分析员要进行压缩和简化有没有行得通的解决办法。系统分析员要进行压缩和简化的需求分析和设计,也就是在高层次上进行分析和设计,的需求分析和设计,也就是在高层次上进行分析和设计,探索这个问题是否值得去解决,是否有可行的解决办法。探索这个问题是否值得去解决,是否有可行的解决办法。最后要提交可行性研究报告。最后要提交可行性研究报告。 经过可行性研究后,确定该问题值得去解决,然后制经过可行性研究后,确定该问题值得去解决,然后制定项目开发计划。根据开发项目的目标、功能、性质及规定项目开发计划。根据
54、开发项目的目标、功能、性质及规模,估计项目需要的资源,即需要的计算机硬件资源,需模,估计项目需要的资源,即需要的计算机硬件资源,需要的软件开发工具和应用软件包,需要的开发人员数目及要的软件开发工具和应用软件包,需要的开发人员数目及层次。还要对软件开发费用做出估算,对开发进度做出估层次。还要对软件开发费用做出估算,对开发进度做出估计,制定完成任务实施计划。最后,将项目开发计划和可计,制定完成任务实施计划。最后,将项目开发计划和可行性研究报告一起提交管理部门审查。行性研究报告一起提交管理部门审查。 3需求分析需求分析 需求分析阶段的任务不是具体的解决问题,而是准需求分析阶段的任务不是具体的解决问题
55、,而是准确地确定确地确定“软件系统必须做什么软件系统必须做什么”,确定软件系统必须,确定软件系统必须具备哪些功能。具备哪些功能。 用户了解他们所面对的问题,知道必须做什么,但用户了解他们所面对的问题,知道必须做什么,但是通常不能完整、准确地表达出来,也不知道怎样用计是通常不能完整、准确地表达出来,也不知道怎样用计算机解决他们的问题。而软件开发人员虽然知道怎样用算机解决他们的问题。而软件开发人员虽然知道怎样用软件完成人们提出的各种功能要求,但是,对用户的具软件完成人们提出的各种功能要求,但是,对用户的具体业务和需求不完全清楚,这是需求分析阶段的困难所体业务和需求不完全清楚,这是需求分析阶段的困难
56、所在。在。 系统工程分析员要和用户密切配合,充分交流各自系统工程分析员要和用户密切配合,充分交流各自的理解,充分理解用户的业务流程,完整、准确地表达的理解,充分理解用户的业务流程,完整、准确地表达出来。这一阶段要给出软件需求说明书。出来。这一阶段要给出软件需求说明书。二、设计工程二、设计工程 GIS软件设计工程阶段,包括总体设计、数软件设计工程阶段,包括总体设计、数据库设计、模型设计、详细设计等子阶段。据库设计、模型设计、详细设计等子阶段。 1总体设计总体设计在总体设计阶段,开发人员把确定的各项功能需求转在总体设计阶段,开发人员把确定的各项功能需求转换成需要的体系结构,在该体系结构中,每个成分
57、都换成需要的体系结构,在该体系结构中,每个成分都是意义明确的模块,即每个模块都和某些功能需求相是意义明确的模块,即每个模块都和某些功能需求相对应。对应。 2数据库设计数据库设计 数据库设计是指对于一个给定的应用环境,提数据库设计是指对于一个给定的应用环境,提供一个确定的最优数据模型与处理模式的逻辑设供一个确定的最优数据模型与处理模式的逻辑设计,以及一个确定数据存储结构与存取方法的物计,以及一个确定数据存储结构与存取方法的物理设计,建立能反映现实世界信息和信息联系,理设计,建立能反映现实世界信息和信息联系,满足用户要求,又能被某个满足用户要求,又能被某个DBMS所接受,同时能所接受,同时能实现系
58、统目标并有效存取数据的数据库实现系统目标并有效存取数据的数据库 3应用模型设计应用模型设计 由于GIS软件具有交叉性、综合性的特点,所以GIS的应用领域相当广泛,而每种类型的GIS应用都有自己独特的特点,这个特点主要体现在应用领域模型的构建和实现上,所以在进行GIS软件开发的分析阶段,一项重要的工作是针对拟开发领域的特殊技术要求,运用并分析该领域的应用模型,设计实现该应用模型的技术方法。4详细设计详细设计 详细设计阶段就是为每个模块完成的功能详细设计阶段就是为每个模块完成的功能进行具体描述,要把功能描述转变为精确的、进行具体描述,要把功能描述转变为精确的、结构化的过程描述。即该模块的控制结构是
59、怎结构化的过程描述。即该模块的控制结构是怎样的,先做什么,后做什么,有什么样的条件样的,先做什么,后做什么,有什么样的条件判定,有些什么重要处理等,并用相应的表示判定,有些什么重要处理等,并用相应的表示工具把这些控制结构表示出来。工具把这些控制结构表示出来。 三、数据工程三、数据工程 GIS软件数据工程阶段,包括软件数据工程阶段,包括数据预处理、数据采集、数据数据预处理、数据采集、数据处理等子阶段。处理等子阶段。1数据预处理数据预处理无论用何种方法获取的原始数据,都可能存在着数无论用何种方法获取的原始数据,都可能存在着数字化过程中不可避免的引入错误,数字化数据与使字化过程中不可避免的引入错误,
60、数字化数据与使用格式不一致,各种数据来源的比例尺和投影不统用格式不一致,各种数据来源的比例尺和投影不统一,各幅地图数据之间的不匹配,以及地图比例尺一,各幅地图数据之间的不匹配,以及地图比例尺之间、地图比例尺与数字化仪的长度单位之间不一之间、地图比例尺与数字化仪的长度单位之间不一致,因此必须通过数据预处理,才能获得净化的数致,因此必须通过数据预处理,才能获得净化的数据文件,使采集的数据符合规范化标准。据文件,使采集的数据符合规范化标准。 2数据采集数据采集 建立建立GIS的第一步就是将空间实体的图形数据的第一步就是将空间实体的图形数据和属性数据输入到地理数据库中,这就是和属性数据输入到地理数据库
61、中,这就是GIS的数的数据采集。据采集。GIS的数据采集需进行四方面的工作,即的数据采集需进行四方面的工作,即野外数据的采集、图形数据的采集、属性数据的采野外数据的采集、图形数据的采集、属性数据的采集和图形数据与属性数据的连接。野外数据的采集集和图形数据与属性数据的连接。野外数据的采集主要有三种:主要有三种:GPS方法、摄影测量方法和测量法。方法、摄影测量方法和测量法。地图数据是地图数据是GIS主要的信息源,对它的采集主要是主要的信息源,对它的采集主要是指对地图进行数字化,主要有两种方式,即手扶跟指对地图进行数字化,主要有两种方式,即手扶跟踪数字化和扫描数字化。属性数据的采集方法通常踪数字化和
62、扫描数字化。属性数据的采集方法通常有六种。有六种。 3数据处理数据处理 数据处理工作包括格式转换、图形单元的修改数据处理工作包括格式转换、图形单元的修改与增删、图幅拼接、坐标转换、几何纠正、数据与增删、图幅拼接、坐标转换、几何纠正、数据编辑处理、拓扑结构及拓扑关系的自动生成等数编辑处理、拓扑结构及拓扑关系的自动生成等数据库建立前的工作。据库建立前的工作。四、工程实施四、工程实施GIS软件工程实施阶段,包括程序编制、测试、试软件工程实施阶段,包括程序编制、测试、试运行等子阶段。运行等子阶段。1程序编制程序编制程序编制阶段就是把每个模块的控制结构转程序编制阶段就是把每个模块的控制结构转换成计算机可
63、接受的程序代码,换成计算机可接受的程序代码, 即写成以某即写成以某特定程序设计语言表示的特定程序设计语言表示的“源程序清单源程序清单”。编写出的程序应是结构好,清晰易读,并且编写出的程序应是结构好,清晰易读,并且与设计相一致。与设计相一致。 2测试测试 测试分为模块测试、组装测试、确认测试。测试分为模块测试、组装测试、确认测试。模块测试是查找各模块在功能和结构上存在的模块测试是查找各模块在功能和结构上存在的问题。组装测试是将各模块按一定顺序组装起问题。组装测试是将各模块按一定顺序组装起来进行测试,主要是查找各模块之间接口上存来进行测试,主要是查找各模块之间接口上存在的问题。确认测试是按软件需求
64、说明书上的在的问题。确认测试是按软件需求说明书上的功能逐项进行的,发现不满足用户需求的问题,功能逐项进行的,发现不满足用户需求的问题,决定开发的软件是否合格、能否交付用户使用决定开发的软件是否合格、能否交付用户使用等。等。3试运行试运行 试运行是保证最终交付给用户的软件质量的试运行是保证最终交付给用户的软件质量的重要手段,重要手段,GIS软件试运行应由系统开发人员和软件试运行应由系统开发人员和用户共同进行,在试运行过程中要进行正确性完用户共同进行,在试运行过程中要进行正确性完善和适应性完善。试运行的时间应视系统的规模善和适应性完善。试运行的时间应视系统的规模和复杂程度而定,一般为和复杂程度而定
65、,一般为13个月。个月。五、维护工程五、维护工程GIS软件维护工程阶段,包括数据库维护、软硬件维护等方软件维护工程阶段,包括数据库维护、软硬件维护等方面。面。 1数据库维护数据库维护 GIS软件中的数据随着应用规模的日益扩大而迅速软件中的数据随着应用规模的日益扩大而迅速变化,不但基础地理信息,变化,不但基础地理信息, 而且其他所有专题信而且其他所有专题信息均需要经常地进行维护和更新。应根据系统的规息均需要经常地进行维护和更新。应根据系统的规模和实际需求,建立系统的数据维护更新机制,规模和实际需求,建立系统的数据维护更新机制,规定系统数据维护更新的周期,使系统的所有数据均定系统数据维护更新的周期
66、,使系统的所有数据均相对地始终处于最新的状态。相对地始终处于最新的状态。 2软件维护和硬件维护软件维护和硬件维护 软件维护是软件生存周期中时间最长的阶段。已交付软件维护是软件生存周期中时间最长的阶段。已交付的软件投入正式使用后,便进入软件维护阶段,它可以持续的软件投入正式使用后,便进入软件维护阶段,它可以持续几年甚至几十年。软件运行过程中可能由于各方面的原因,几年甚至几十年。软件运行过程中可能由于各方面的原因,需要对它进行修改。其原因可能是运行中发现了软件隐含的需要对它进行修改。其原因可能是运行中发现了软件隐含的错误而需要修改;也可能是为了适应变化了的软件工作环境错误而需要修改;也可能是为了适
67、应变化了的软件工作环境而需要做适当变更;也可能是因为用户业务发生变化而需要而需要做适当变更;也可能是因为用户业务发生变化而需要扩充和增强软件的功能等。扩充和增强软件的功能等。 同样,也应建立系统硬件设备的日常维护制度,根据同样,也应建立系统硬件设备的日常维护制度,根据设备的使用说明进行及时的维护,以保证设备完好和系统的设备的使用说明进行及时的维护,以保证设备完好和系统的正常运行。但当设备的处理能力达不到要求,或者设备本身正常运行。但当设备的处理能力达不到要求,或者设备本身已经过时、淘汰,或者设备损坏,买不到零配件,或者不值已经过时、淘汰,或者设备损坏,买不到零配件,或者不值得修理时,应考虑硬件
68、更新。得修理时,应考虑硬件更新。第四节第四节 GIS软件工程建设的主要过程软件工程建设的主要过程从系统工程的角度看,一个完整的从系统工程的角度看,一个完整的GIS既是面向实既是面向实际应用的计算机软硬件系统,同时也是基于系统化际应用的计算机软硬件系统,同时也是基于系统化思想指导下的工程化建设过程。与一般信息系统不思想指导下的工程化建设过程。与一般信息系统不同的是,同的是,GIS以管理具有空间定位特征的地理数据以管理具有空间定位特征的地理数据为主要内容,具体表现在:为主要内容,具体表现在:综合性强,横跨多学科综合性强,横跨多学科 数据组织以空间数据为主数据组织以空间数据为主 面向应用,以空间分析
69、为主面向应用,以空间分析为主 一、一、GIS软件开发的工程化方法软件开发的工程化方法目前的目前的GIS软件开发过程中存在的问题,主要软件开发过程中存在的问题,主要包括:包括:GIS产品开发无计划性;产品开发无计划性;GIS产品开发过程的不规范化;产品开发过程的不规范化;无评测无评测GIS产品的手段。产品的手段。 按照软件工程化方法定义,可以将按照软件工程化方法定义,可以将GIS产品开发与演进活产品开发与演进活动分成六个基本步骤:即制定动分成六个基本步骤:即制定GIS开发计划、开发计划、GIS需求分需求分析、析、GIS系统设计系统设计(包括总体设计、数据库设计和详细设计包括总体设计、数据库设计和
70、详细设计)、GIS程序编码、程序编码、GIS产品测试及运行维护。产品测试及运行维护。 二、二、GIS软件工程的系统分析软件工程的系统分析成功的GIS工程项目应达到以下几个主要目标:较低的开发成本,符合要求的功能,较好的较低的开发成本,符合要求的功能,较好的性能和可靠性,有较好的移植性和较低的维性能和可靠性,有较好的移植性和较低的维护费用,最后需要软件能按时完成和及时交护费用,最后需要软件能按时完成和及时交付使用。付使用。 无疑,上述目标之间存在一定的互补和互斥关系。实施GIS开发项目就是力图在以上目标的冲突中取得一定程度的平衡。 进行进行GIS软件工程系统分析主要有以下步骤:软件工程系统分析主
71、要有以下步骤:(1)识别识别GIS用户要求。用户要求。(2)评价评价GIS的可行性。的可行性。(3)进行进行GIS开发经济分析和技术分析。开发经济分析和技术分析。(4)把功能分配给把功能分配给GIS软硬件、人、软硬件、人、GIS数据库和其数据库和其他系统元素。他系统元素。(5)建立建立GIS开发成本和进度限制。开发成本和进度限制。(6)生成生成GIS规格说明,形成所有后续规格说明,形成所有后续GIS工程的基工程的基础。础。 2GIS软件工程的可行性研究软件工程的可行性研究 GIS可行性研究主要集中在以下四个方面:经济可行性;技术可行性;法律可行性;对系技术可行性;法律可行性;对系统不同开发方案
72、进行比较评估。统不同开发方案进行比较评估。可行性研究可以单独归档为一个报告,也可以作为“GIS系统规格说明”的附录。 GIS项目可行性报告形式多样,主要包括以下内容:项目可行性报告形式多样,主要包括以下内容:(1)GIS项目背景项目背景:问题的描述,实现环境,限制条件,重要的研究结果(基础)。(2)候选方案候选方案:各候选GIS的系统配置,选择最终方案的准则。(3)GIS系统描述系统描述:简略的功能描述,分配元素的可行性。(4)经济可行性经济可行性:经费概算,预期的经济效益。(5)技术可行性技术可行性:技术实力,已有工作基础,设备条件。(6)法律可行性法律可行性:系统开发可能导致的侵权、违法和
73、责任。(7)GIS用户使用可行性用户使用可行性:用户单位的行政管理、工作制度,使用人员的素质与项目有关的其他问题,如其他方案介绍、未来可能的变化等。 3GIS开发成本效益分析开发成本效益分析 成本效益分析的目的,是从经济角度评价开成本效益分析的目的,是从经济角度评价开发一个新的发一个新的GIS项目是否可行。成本项目是否可行。成本效益分析效益分析首先是估算待开发首先是估算待开发GIS的成本,然后与可能取得的成本,然后与可能取得的效益进行比较和权衡。有形的效益可以用货币的效益进行比较和权衡。有形的效益可以用货币的时间价值、投资回收期、纯收入等指标进行度的时间价值、投资回收期、纯收入等指标进行度量。
74、量。 GIS的经济效益等于因使用的经济效益等于因使用GIS而增加的收入而增加的收入加上使用加上使用GIS可以节省的运行费用。运行费用包可以节省的运行费用。运行费用包括操作员人数、工作时间、消耗的物资等。系统括操作员人数、工作时间、消耗的物资等。系统的效益分析随系统的特征而定。的效益分析随系统的特征而定。 4GIS开发技术分析开发技术分析 在技术分析时,在技术分析时,GIS系统分析员评价系统的系统分析员评价系统的技术价值,同时收集附加的有关性能、可靠性、技术价值,同时收集附加的有关性能、可靠性、可维护性及生产率方面的信息,在这个步骤中,可维护性及生产率方面的信息,在这个步骤中,还包括一些研究和设
75、计工作。技术分析的内容主还包括一些研究和设计工作。技术分析的内容主要包括完成要包括完成GIS的功能和性能需要什么技术,哪的功能和性能需要什么技术,哪些新设备、方法、算法或者过程,有什么开发风些新设备、方法、算法或者过程,有什么开发风险,这些技术问题对成本的影响如何险,这些技术问题对成本的影响如何?另外,模另外,模型化方法型化方法(包括数学模型及物理模型包括数学模型及物理模型)是对待开发是对待开发系统进行技术分析的一种有效方法。系统进行技术分析的一种有效方法。5分配与权衡分配与权衡 一旦解决了与一旦解决了与GIS系统分析任务相关的问题,就应该开系统分析任务相关的问题,就应该开始考虑各候选的始考虑
76、各候选的GIS解决方案,对各候选解决方案,对各候选GIS的系统配置方的系统配置方案进行评估,并将每一个案进行评估,并将每一个GIS功能,与其必要的一些性能和功能,与其必要的一些性能和接口特性一起分配给一个或多个系统元素接口特性一起分配给一个或多个系统元素(软硬件、数据库、软硬件、数据库、人员、文档等人员、文档等)。每一个候选。每一个候选GIS的系统配置方案都要根据的系统配置方案都要根据一组按其重要性排序的评估参数来评估。当把基于计算机一组按其重要性排序的评估参数来评估。当把基于计算机系统的系统的GIS所有功能分配到各个系统元素时,就能够据此建所有功能分配到各个系统元素时,就能够据此建立模型,用
77、以表达立模型,用以表达GIS系统元素之间的相互关系,将系统元素之间的相互关系,将GIS系系统结构模型化,并为稍后的统结构模型化,并为稍后的GIS需求分析奠定基础。需求分析奠定基础。 三、三、GIS软件工程的需求分析软件工程的需求分析 GIS软件工程需求分析所要做的工作是深入描述GIS的功能和性能,确定GIS系统设计的限制和GIS同其他系统元素的接口细节。定义GIS的其他有效性需求。1GIS软件工程需求分析的原则软件工程需求分析的原则 1) 必须能够表达和理解问题的数据域和功能域必须能够表达和理解问题的数据域和功能域GIS产品的定义和开发工作最终是为了解决数据特别是空间数据的处理问题。对于GIS
78、产品所处理的数据,其数据域应包括数据流、数据内容和数据结构。 数据流即数据通过一个数据流即数据通过一个GIS系统时的变化方式。系统时的变化方式。数据内容即数据项数据内容即数据项 数据结构即各种数据项的逻辑组织。数据结构即各种数据项的逻辑组织。 2)必须按自顶向下、逐层分解的方式对问题进行分解和不断细化必须按自顶向下、逐层分解的方式对问题进行分解和不断细化对一个复杂的对一个复杂的GIS的功能域和信息域都应作进一步分解,这种分的功能域和信息域都应作进一步分解,这种分解可以是同一层次的横向分解,也可以是多层次的纵向分解。解可以是同一层次的横向分解,也可以是多层次的纵向分解。2GIS软件工程需求分析的
79、过程软件工程需求分析的过程GIS软件工程需求分析阶段的工作包括以下四方面内容:对问题的识别、分析与综合、制定规格说明和评审。1)1)问题的识别问题的识别问题的识别首先要确定对问题的识别首先要确定对GIS的综合要求,并提出这些要求的综合要求,并提出这些要求的实现条件,应达到的标准。这些需求主要包括:的实现条件,应达到的标准。这些需求主要包括:功能需求功能需求 性能需求性能需求环境需求环境需求可靠性分析可靠性分析安全保密要求安全保密要求 用户界面需求用户界面需求 问题识别的另一重要任务是建立需求分析的通讯途径,问题识别的另一重要任务是建立需求分析的通讯途径,如图所示,以保证能顺利地对问题进行分析,
80、项目负责如图所示,以保证能顺利地对问题进行分析,项目负责人在此过程中起协调人的作用。人在此过程中起协调人的作用。2)分析与综合分析与综合 分析员从数据流和数据结构出发,逐步细化所有的软分析员从数据流和数据结构出发,逐步细化所有的软件功能,找出件功能,找出GIS内部各元素之间的联系,接口特性和设内部各元素之间的联系,接口特性和设计上的限制,分析它们是否满足功能要求,是否合理。最计上的限制,分析它们是否满足功能要求,是否合理。最终合成终合成GIS产品的解决方案,给出目标系统的详细逻辑模产品的解决方案,给出目标系统的详细逻辑模型。在这个步骤中,分析与综合工作反复进行。型。在这个步骤中,分析与综合工作
81、反复进行。 常用的分析方法有面向数据流的结构化分析方法常用的分析方法有面向数据流的结构化分析方法(SA),面向数据结构,面向数据结构JSD方法和面向对象分析方法方法和面向对象分析方法(OOA),以,以及用于建立动态模型的状态迁移图或及用于建立动态模型的状态迁移图或Petri网。网。 3)编制需求分析文档编制需求分析文档 需求分析文档主要是指软件需求规格说明书。需求分析文档主要是指软件需求规格说明书。为了确切表达用户对软件的输入输出要求,还为了确切表达用户对软件的输入输出要求,还需要制定数据要求说明书和初步的用户手册。需要制定数据要求说明书和初步的用户手册。四、四、GIS软件工程的系统设计软件工
82、程的系统设计GIS软件工程系统设计的主要内容包括数据设计、系统结构设计和过程设计。数据设计侧重于空间数据结构和属性数据库结构的定义;系统结构设计定义GIS各主要成分之间的关系;过程设计则是把结构成分转换成GIS的过程性描述。在编码步骤,根据这种过程性描述,生成源程序代码,然后通过测试最终得到完整的GIS产品。 1结构化设计方法结构化设计方法 结构化设计方法是基于模块化、自顶向下逐层细化、结结构化设计方法是基于模块化、自顶向下逐层细化、结构化程序设计等程序设计技术基础上发展起来的,该方法构化程序设计等程序设计技术基础上发展起来的,该方法实施的要点是:实施的要点是: (1)首先研究、分析数据流图,
83、从首先研究、分析数据流图,从GIS的需求规格说明中的需求规格说明中弄清数据流加工的过程。弄清数据流加工的过程。 (2)根据数据流图决定问题的类型。然后针对不同的类型根据数据流图决定问题的类型。然后针对不同的类型分别进行分析处理。分别进行分析处理。 (3)由数据流图推导出由数据流图推导出GIS的初始结构图。的初始结构图。 (4)利用一些调控性原则来改进利用一些调控性原则来改进GIS的初始结构图,直到的初始结构图,直到得到符合要求的结构图为止。得到符合要求的结构图为止。 (5)修改和补充数据词典。修改和补充数据词典。 (6)制定测试计划。制定测试计划。 2原型化设计方法原型化设计方法 原型是指模拟
84、某种产品的原始模型。在软件开发过原型是指模拟某种产品的原始模型。在软件开发过程中,原型是软件的一个早期可运行的版本,它反映最程中,原型是软件的一个早期可运行的版本,它反映最终系统的部分主要特性。如果在获得一组基本终系统的部分主要特性。如果在获得一组基本GIS需求需求说明后,通过快速分析构造出一个小型说明后,通过快速分析构造出一个小型GIS,满足用户,满足用户的基本要求,使用户可在试用原形系统的过程中得到亲的基本要求,使用户可在试用原形系统的过程中得到亲身感受和启发,做出反应和评价,然后开发者根据用户身感受和启发,做出反应和评价,然后开发者根据用户的意见对原型加以改进。随着不断试验、纠错、使用、
85、的意见对原型加以改进。随着不断试验、纠错、使用、评价和修改,获得新的原型版本,如此周而复始,逐步评价和修改,获得新的原型版本,如此周而复始,逐步减少分析和通信中的误解,弥补不足之处,进一步确定减少分析和通信中的误解,弥补不足之处,进一步确定各种需求细节,适应需求的变更,从而提高最终各种需求细节,适应需求的变更,从而提高最终GIS产产品的质量。品的质量。 建立快速原型法的优点主要表现在以下方面:建立快速原型法的优点主要表现在以下方面: (1)(1)增进增进GISGIS开发人员和开发人员和GISGIS用户对系统服务需求的理用户对系统服务需求的理解,使比较含糊的具有不确定性的解,使比较含糊的具有不确
86、定性的GISGIS需求明确化。需求明确化。 (2)(2)原型化方法提供了一种有力的学习手段。通过原原型化方法提供了一种有力的学习手段。通过原型法,用户可以亲身体验早期的开发过程,获得关于型法,用户可以亲身体验早期的开发过程,获得关于GISGIS系统的专门知识,对培训使用者有积极作用。系统的专门知识,对培训使用者有积极作用。 (3)(3)使用原型化方法可以容易地确定使用原型化方法可以容易地确定GISGIS的性能,确的性能,确认各项主要系统服务的可应用性,确认系统设计的可行认各项主要系统服务的可应用性,确认系统设计的可行性和系统作为产品的结果。性和系统作为产品的结果。 (4)GIS(4)GIS原型
87、的最终版本,有时略加修改就可以成为原型的最终版本,有时略加修改就可以成为最终系统的一个组成部分。最终系统的一个组成部分。 3面向对象设计方法面向对象设计方法 面向对象面向对象(Object-Oriented)的概念起源于程序的概念起源于程序设计语言。对象是客观世界实体的抽象描述,由信息设计语言。对象是客观世界实体的抽象描述,由信息(数据数据)和对数据的操作组合而成。类是多个相似对象和对数据的操作组合而成。类是多个相似对象共同特性的描述。消息是对象之间通信的手段,是对共同特性的描述。消息是对象之间通信的手段,是对象之间相互请求或相互协作的途径,它用来指示对象象之间相互请求或相互协作的途径,它用来
88、指示对象的操作。方法是对象接收到消息后应采取的动作序列的操作。方法是对象接收到消息后应采取的动作序列的描述。实例是由一特定类描述的具体对象。在系统的描述。实例是由一特定类描述的具体对象。在系统构成上,类形成了一个具有特定功能的模块和一种代构成上,类形成了一个具有特定功能的模块和一种代码共享的手段,类和实例之间的关系是抽象和具体的码共享的手段,类和实例之间的关系是抽象和具体的关系。实例是类的具体事物,类是多个实例的综合抽关系。实例是类的具体事物,类是多个实例的综合抽象。象。 对象具有封装性,对外部只提供一个抽象接口而对象具有封装性,对外部只提供一个抽象接口而隐藏具体实现细节。类具有继承的特性。继
89、承是一种隐藏具体实现细节。类具有继承的特性。继承是一种现实世界中对象之间独特的关系,它使得某类对象可现实世界中对象之间独特的关系,它使得某类对象可以继承另外一类对象的特征和能力。继承性具有双重以继承另外一类对象的特征和能力。继承性具有双重作用,一是减少代码冗余,二是通过协调性来减少相作用,一是减少代码冗余,二是通过协调性来减少相互之间的接口和界面。研究人员在面向对象程序设计互之间的接口和界面。研究人员在面向对象程序设计中试图加进数据持久性的概念,以支持数据库。持久中试图加进数据持久性的概念,以支持数据库。持久性是指数据能在进程或操作中存在,并且能在下一个性是指数据能在进程或操作中存在,并且能在
90、下一个进程或操作中重新使用的能力。进程或操作中重新使用的能力。 面向对象技术所追求的目标面向对象技术所追求的目标将世界上的问题求解将世界上的问题求解尽可能地简化。尽可能地简化。 在在GIS领域,面向对象的设计方法和面向对象领域,面向对象的设计方法和面向对象GIS产品产品有着非常广阔的前景。在有着非常广阔的前景。在GIS系统设计中,可以将系统设计中,可以将GIS的数的数据获取、格式转换、图形显示等内容分别封装为数据获取据获取、格式转换、图形显示等内容分别封装为数据获取类、格式转换类、图形显示类等,然后定义各类的属性、类、格式转换类、图形显示类等,然后定义各类的属性、方法和事件。如对图形显示类可以
91、定义显示范围、背景颜方法和事件。如对图形显示类可以定义显示范围、背景颜色、符号式样等属性,放大、缩小、平移等方法以及单击、色、符号式样等属性,放大、缩小、平移等方法以及单击、拖拽等鼠标事件。拖拽等鼠标事件。 各种组件式各种组件式GIS产品,是体现面向对象产品,是体现面向对象GIS技术的典型技术的典型代表。如代表。如Maplnfo公司的公司的MapX,ESRI公司的公司的Mapobjects等产品,都将等产品,都将GIS的常用功能封装成类和对象呈现给开发者。的常用功能封装成类和对象呈现给开发者。五、五、GIS软件工程的编码设计软件工程的编码设计 程序设计语言的特性和程序设计风格会深刻地影程序设计
92、语言的特性和程序设计风格会深刻地影响响GISGIS软件的质量和可维护性。为了保证程序编码的软件的质量和可维护性。为了保证程序编码的质量,程序员必须深刻理解掌握程序设计语言的特性,质量,程序员必须深刻理解掌握程序设计语言的特性,只有语法上没有错误的程序才能通过编译系统的语法只有语法上没有错误的程序才能通过编译系统的语法检查。但是软件工程对代码编写的要求并不仅仅是源检查。但是软件工程对代码编写的要求并不仅仅是源程序语法上的正确性,它还要求源程序具有良好的结程序语法上的正确性,它还要求源程序具有良好的结构性和程序设计风格。构性和程序设计风格。 1 1结构化程序设计结构化程序设计 早在早在2020世纪
93、世纪6060年代初,人们就发现,在程序中大量年代初,人们就发现,在程序中大量地、没有节制地使用地、没有节制地使用GOTOGOTO语句会使程序结构变得非常混语句会使程序结构变得非常混乱。后来又有人证明,任何单人口、单出口的乱。后来又有人证明,任何单人口、单出口的“没有死没有死循环循环”的程序都能由三种最基本的控制结构构造出来。的程序都能由三种最基本的控制结构构造出来。这三种基本控制结构是这三种基本控制结构是“顺序结构顺序结构”、“IF-THEN-ELSEIF-THEN-ELSE选择结构选择结构”和和DO-WHILEDO-WHILE或或DO-UNTILDO-UNTIL重复结构重复结构”。 在后来发
94、展的围绕在后来发展的围绕GOTOGOTO语句的争论中,产生了一种语句的争论中,产生了一种新的程序设计思想、方法和风格,即结构化程序设计,新的程序设计思想、方法和风格,即结构化程序设计,这种程序设计方法显著提高了软件质量和生产效率,并这种程序设计方法显著提高了软件质量和生产效率,并降低了软件维护成本。降低了软件维护成本。1)结构化程序设计的主要原则结构化程序设计的主要原则(1)使用程序设计语言中的顺序、选择、重复等有限的,使用程序设计语言中的顺序、选择、重复等有限的,基本控制结构表示程序和逻辑结构。基本控制结构表示程序和逻辑结构。(2)选用的控制结构只允许有一个人口和出口。选用的控制结构只允许有
95、一个人口和出口。(3)程序应由容易识别的块组成,每个块程序应由容易识别的块组成,每个块(Block)只有一只有一个人口和一个出口。个人口和一个出口。(4)复杂结构应该用基本控制结构进行组合嵌套来实现。复杂结构应该用基本控制结构进行组合嵌套来实现。(5)严格控制使用严格控制使用GOTO语句语句(出错处理除外出错处理除外)。2)2)程序设计自顶向下逐步求精程序设计自顶向下逐步求精在总体设计阶段,我们经常使用自顶向下,逐步细化在总体设计阶段,我们经常使用自顶向下,逐步细化的方法,把一个复杂问题的解法分解为一个由许多功的方法,把一个复杂问题的解法分解为一个由许多功能模块组成的层次结构软件系统,在详细设
96、计和编码能模块组成的层次结构软件系统,在详细设计和编码阶段,仍应当采取自顶向下逐步求精的方法,把一个阶段,仍应当采取自顶向下逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体步骤。模块的功能逐步分解,细化为一系列具体步骤。自顶向下,逐步求精方法具有以下优点:自顶向下,逐步求精方法具有以下优点:(1)(1)符合人们解决复杂问题的普遍规律,可提高软件开发的符合人们解决复杂问题的普遍规律,可提高软件开发的成功率和生产率。成功率和生产率。(2)(2)用先全局后局部、先整体后细节、先抽象后具体逐步求用先全局后局部、先整体后细节、先抽象后具体逐步求精的过程开发出来的程序具有清晰的层次结构和可读性。
97、精的过程开发出来的程序具有清晰的层次结构和可读性。(3)(3)自顶向下,逐步细化的程序设计形成自顶向下,逐步细化的程序设计形成( (倒倒) )树形结构,可树形结构,可以理解为:任何节点上发生的错误只影响它的下层节点,而以理解为:任何节点上发生的错误只影响它的下层节点,而同层的其他节点不受影响,并有利于对各节点进行独立测试。同层的其他节点不受影响,并有利于对各节点进行独立测试。(4)(4)可重复使用的代码量大,易于系统的修改和重新设计。可重复使用的代码量大,易于系统的修改和重新设计。2 2程序设计风格程序设计风格 设计的程序不仅是给机器执行,而且要供他设计的程序不仅是给机器执行,而且要供他人阅读
98、。阅读程序是软件开发和维护过程中的重人阅读。阅读程序是软件开发和维护过程中的重要组成部分,特别是在软件测试和维护阶段,程要组成部分,特别是在软件测试和维护阶段,程序员和参与测试、维护的人都要阅读程序。一个序员和参与测试、维护的人都要阅读程序。一个好的程序应具有良好的可读性和风格,这将大量好的程序应具有良好的可读性和风格,这将大量减少人们读程序的时间,因而从整体上看,效率减少人们读程序的时间,因而从整体上看,效率是最高的。是最高的。 一个良好的程序应从以下几个方面提高其可读性:一个良好的程序应从以下几个方面提高其可读性:1)1)源程序文档化源程序文档化2)2)数据说明数据说明3)3)语句结构语句
99、结构 源程序的文档化包括选择符号的名称、安排注释、程序的视觉源程序的文档化包括选择符号的名称、安排注释、程序的视觉组织等。组织等。(1)符号的命名。符号的命名。 (2)程序的注释。程序的注释。 大多数程序设计语言允许用自然语言来写注释,注释分为序言大多数程序设计语言允许用自然语言来写注释,注释分为序言性注释和功能性注释两种。序言性注释通常置于每个模块的开头性注释和功能性注释两种。序言性注释通常置于每个模块的开头部分,给出程序和整体说明,对于理解程序有引导作用。序言性部分,给出程序和整体说明,对于理解程序有引导作用。序言性注释列出的有关项目包括:程序标题、有关该模块功能和目的的注释列出的有关项目
100、包括:程序标题、有关该模块功能和目的的说明;主要算法;接口说明:包括调用方式、参数描述、子程序说明;主要算法;接口说明:包括调用方式、参数描述、子程序清单;有关数据的描述;开发简历等。清单;有关数据的描述;开发简历等。(3)视觉组织视觉组织空格、空行和缩进。恰当地运用空格、空行和缩空格、空行和缩进。恰当地运用空格、空行和缩进技巧,可以突出运算的优先性,并使程序层次分明。进技巧,可以突出运算的优先性,并使程序层次分明。2)数据说明数据说明在数据说明中要注意:在数据说明中要注意:(1)数据说明的次序应当规范化,这样有利于查找、测试数据说明的次序应当规范化,这样有利于查找、测试和维护。原则上数据说明
101、的次序与语法无关,但出于阅和维护。原则上数据说明的次序与语法无关,但出于阅读和维护的需要,最好使其规范化,使说明的先后次序读和维护的需要,最好使其规范化,使说明的先后次序固定。如先是常量说明,然后是简单变量说明,接下来固定。如先是常量说明,然后是简单变量说明,接下来是数组说明、自定义变量说明等。是数组说明、自定义变量说明等。(2)当多个变量名用一个语句说明时,应将这些变量按一当多个变量名用一个语句说明时,应将这些变量按一定顺序定顺序(字母顺序字母顺序)排列。排列。(3)对于自定义的复杂数据结构,要注释说明数据结构在对于自定义的复杂数据结构,要注释说明数据结构在程序实现时的特点。程序实现时的特点
102、。3)语句结构语句结构语句结构力求简单、直观,不能片面追求效率而过于紧凑,使语语句结构力求简单、直观,不能片面追求效率而过于紧凑,使语句结构复杂化,这主要体现在:句结构复杂化,这主要体现在:(1)一行内只写一条语句,并采取适当的缩进格式。一行内只写一条语句,并采取适当的缩进格式。(2)程序编写首先应考虑可读性和清晰性,而不应刻意追求技巧程序编写首先应考虑可读性和清晰性,而不应刻意追求技巧性,使程序编写得过于紧凑。性,使程序编写得过于紧凑。(3)除非对效率有特殊的要求,否则程序的编写应做到清晰第一,除非对效率有特殊的要求,否则程序的编写应做到清晰第一,效率第二,程序效率主要应通过选择高效的算法来
103、实现。效率第二,程序效率主要应通过选择高效的算法来实现。(4)尽可能使用库函数,将复杂程序段模块化。尽可能使用库函数,将复杂程序段模块化。(5)尽可能用公共过程或子程序代替重复的功能代码,要注意将尽可能用公共过程或子程序代替重复的功能代码,要注意将功能独立和代码抽出,组成一个公共过程或子程序。功能独立和代码抽出,组成一个公共过程或子程序。(6)尽可能采用面向对象设计方法,创建类模块,这将使程序更尽可能采用面向对象设计方法,创建类模块,这将使程序更易于维护,并进一步提高代码的重用率。易于维护,并进一步提高代码的重用率。(7)尽量只采用三种基本的控制结构来编定程序。尽量只采用三种基本的控制结构来编
104、定程序。(8)避免过多的循环嵌套和条件嵌套。避免过多的循环嵌套和条件嵌套。(9)对不太长的程序,要分块编写、测试,然后再集成。对不太长的程序,要分块编写、测试,然后再集成。(10)对于不好的程序,要重新编写,不要反复地修饰。对于不好的程序,要重新编写,不要反复地修饰。六、六、GIS软件工程建设过程中的文档软件工程建设过程中的文档为了对为了对GIS建设进行科学管理,规范建设文档,建设进行科学管理,规范建设文档,GIS建设过程中必建设过程中必须完成以下各项文件:须完成以下各项文件:(1)立项报告。立项报告。(2)可行性研究报告。可行性研究报告。(3)系统设计任务书。系统设计任务书。(4)用户需求分
105、析报告。用户需求分析报告。(5)系统总体设计方案和各子系统设计方案。系统总体设计方案和各子系统设计方案。(6)系统实施总结报告。系统实施总结报告。(7)系统测试报告。系统测试报告。(8)用户使用报告。用户使用报告。(9)系统验收报告。系统验收报告。(10)系统建设总结报告。系统建设总结报告。思考题思考题1GIS软件的主要特点有哪些软件的主要特点有哪些?2GIS软件开发过程中存在哪些问题软件开发过程中存在哪些问题?产生这些问题的产生这些问题的原因是什么原因是什么?3GIS软件工程的特色表现在哪几个方面软件工程的特色表现在哪几个方面?4常见的软件生存周期模型有哪几种常见的软件生存周期模型有哪几种?请简要加以介绍请简要加以介绍。5GIS软件工程生存周期包含哪几个阶段软件工程生存周期包含哪几个阶段?每个阶段的每个阶段的主要任务是什么主要任务是什么?6GIS系统分析包含哪些主要步骤系统分析包含哪些主要步骤?7GIS系统设计中可以采用的设计方法有哪几种系统设计中可以采用的设计方法有哪几种?简要简要说明其主要内容。说明其主要内容。8GIS建设过程中需要建立哪些文档建设过程中需要建立哪些文档?