三赢律说:赢诉讼,营口碑,盈未来;茂名人的明湖,服务茂名更专业!为您提供全面、专业、优质的法律服务~

软件工程思想在GIS项目开发中的  潜在问题分析

大学本科阶段的技术文章

 二维码 2
作者:张明湖 三赢律说来源:原创

前言:在计算机发展的早期阶段,系统开发的主要预算在于硬件,对于硬件的质量控制和质量保证有非常详尽的工程化方法。软件的开发则相对简单,没有什么系统化的方法。软件环境是一种个人化的环境,很容易设想,一个程序员会在半夜两点起来去完成一个苦思冥想的算法,至于软件设计,仅仅是他头脑中的一种模糊想法,这种想法及其实现当然也不会形成任何规范的文档。这时候的软件开发基本上处于混乱的无管理状态,由于早期GIS系统的简单和参与共同开发的人员很少,GIS的开发通常也会取得成功。

一、研究背景:

   随着GIS系统的增多和GIS软件库的扩展,程序员发现他们越来越繁忙起来。当发现错误时需要纠正所有这些程序;当用户需求发生变化时需要修改;当硬件环境更新时需要适应。这些活动统称为软件维护。在软件维护上所花费的精力开始以惊人的速度消耗资源,其费用甚至远远超过了系统初始开发的整个费用。人们于是尝试将系统化的、规范的、可度量的方法用于GIS的开发、运行和维护,一些非常成熟、形式化的软件工程方法,如,线性顺序模型、原型法、快速应用开发等都在GIS的发展过程中发挥过重要作用。GIS近年来的趋势之一是由传统的对抽象的点、线、面的关系描述向对真实世界的真实目标的描述与管理的转变。支持上述变化的技术之一就是面向对象技术的日益实用和成熟。今天,面向对象技术包括面向对象分析、面向对象设计和面向对象计算机辅助软件工程等完整的软件工程的方法和工具。到了20世纪90年代,对象技术和面向对象的软件工程已经被很多软件、特别是信息系统软件所采用。

虽然软件工程的思想已被绝大部分程序员所接受,但要将这种思想转化为软件开发过程中的种种自觉行为却不是一件很容易的事。究其原因,有很多因素,如很多程序员缺乏专业化的训练,重技巧,轻规范,包括一些计算机专业科班出身的程序员也存在这种问题;再如很多公司只注重软件产品的开发结果,不注重开发过程,客观上也影响了程序员的目标取向。如此种种,使很多中国的软件公司难以迈上一个新的台阶,发展壮大也就无从谈起。程序员们作为软件产品的创造者,当然也难辞其咎。而且GIS作为一个新兴的行业,还非常不成熟,也有着其本身的特性,潜在的问题也就更加不容忽视了。
二、问题整理

下面所列的问题是在软件系统开发过程中普遍存在的:
第一:以偏概全。

在对一种产品决定立项开发前,都需要进行产品开发的可行性进行分析,而其中的市场分析至关重要,其实市场分析无外乎三点:一是要开发的产品是有市场需求的,二是公司有能力获取这份市场,三是公司能从产品中获益(不一定是指**,如公司战略利益等)。看似简单的几点,想要完全弄清楚决非易事,所以很多产品的市场分析容易“以偏概全”,如通过个别用户的特定要求或报刊杂志的片面报道将产品市场无限扩大(分析人员自己想象的),技术驱动而忽略用户需求和成本,至使产品开发完后没有预期的市场效果。想要全面而准确地的进行产品的市场分析确实是很不容易,需要平时的积累和理性的分析思考,不能靠撞大运。当然,这中情况在GIS系统开发中并不是太突出,因为,GIS主要都是针对专门的领域、行业需求进行开发的,客户群也相对明确。但是这个问题也不得不引起重视,以免造成无谓得损失。
第二:画猫成虎

指的是产品开发完毕交付用户使用后,用户总是不满意,如不符合他们的使用习惯,功能设置不合理等。所以产品的需求分析是如此重要,没有正确的需求,软件开发得再好,技术再先进,也不过是当摆设的花瓶。程序员们,尤其是系统分析员容易犯的第二宗罪就是“画猫成虎”,曲解了用户的要求。一份好的需求分析不是简单地将用户的每个具体的需求点记录下来,而是要洞察用户每个具体要求背后的动机,将分散的需求点串成一个有机的整体,基于需求并“超越需求”。一个好的系统分析员不仅是一位软件专家,还要是一个出色的领域知识专家和沟通者。在GIS领域的系统开发尤为如此,由于GIS刚起步不久,欠缺具有熟练的编程技巧和扎实GIS专业知识的人才,是导致出现这类问题的主要原因。往往在一些公司里面的情况要么就是有一些GIS或传统地理、地图、测绘专业的人,他们有着很好的行业专业水平,但是往往缺乏实际开发的能力;要么就是有一些本身读计算机专业出来的程序员,但是他们对于GIS的认识不深,有很好的编程能力,但是却开发不出有用GIS产品,有时候就算开发出来了,也难以符合客户需求。
第三:好大喜功。

项目延期好象是软件开发一个必经的步骤。项目经理在制定开发计划时,往往过于乐观,每个开发阶段都按最乐观的估计来计算开发时间,而没有充分考虑到软件开发的特殊性和不可预见性,程序员可能都有这样的经历,一个非常小的BUG可能要耽误很长的时间,使开发进行不下去。所以项目经理切忌“好大喜功”,因为项目的不断延期会打击项目成员的信心和士气,久而久之,会使大家产生一种惯性:项目延期是正常的。当然,在国内,很多项目计划都是采用倒排序的方法,尤其GIS项目,针对的多是政府部门,时间都要严格的控制,往往都是先确定产品交付的时间表,再依次倒推测试、实现、设计和分析所需的时间,而整个开发的时间往往是那些从没实际开发过产品的领导来拍脑袋决定的,这也是一个很重要的原因。
第四:只顾眼前。

即便是最优秀的系统分析员也不能保证所提供的软件系统需求不会变化,所以软件设计人员要充分考虑这一点,不能仅仅"只顾眼前"的需求,还要有一定的前瞻性,满足可预见的未来需求,软件系统的可扩展性和可维护性对于一个大型、复杂、长生命周期的软件系统来说至关重要。打个比方理解一下软件的可扩展性,给一个10岁的孩子做一条裤子(需求),你不能将裤子的长度裁减得刚刚与孩子的身高合适(设计/实现),因为孩子长身体很快,到他11岁时裤子已经短了(需求变化),有两种方法解决,一是将短了的裤子丢弃,重做一条(重新开发系统),但成本很高;二是将在裤腿上接上一段接着穿,但不美观且不宜操作(维护成本高)。而最恰当的做法是将裤子裁减得稍长过现在的要求,将长的部分反缝在裤腿里,等孩子长高后,拆线将原来长的部分放下一点就可以了(扩展方便),既方便又不失美观。可见,可扩展性并非软件系统专利,裁缝们早已理解了这一点并付与实践。另外,在GIS系统中,由于基础地理信息也在随着时间不断的变化,这就为系统开发增加了一定的难度,更多的时候是当软件运行一段时间以后,由于人员的变动,用户需求的改变,基础地理信息的改变,更新数据、升级软件所需要的时间比重新设计开发的开销还要高。这种情况在GIS系统建设中特别常见,上述思想对此也有一定的参考意义。
第五:得过且过。

软件设计需要通过软件实现成为最终的产品,优秀的设计需要靠一行一行的代码体现,而有些程序员对软件实现的态度是,最小满足原则,“得过且过”,对于系统的容错性,安全性,效率考虑甚少,满足基本功能即可,没有持续改进的态度和精神。这对于GIS应用系统开发来说,指的不光是程序开发阶段,还包括了基础地理数据的获得,数据处理入库等阶段,任何一个阶段出现一个小错误都有可能要付出重大的时间代价,还会大大降低系统的实用性。比如在一个智能交通系统里面,如果本身的电子地图精度不符合要求,或者是地图本身有错误,再好的导航功能也没有应用的价值了。
第六:自我安慰。

产品实现是否达到设计要求在公司内部需要测试验证,严格的测试对于保证软件产品的质量是必须的,而出于时间、资金等缘故,很多软件产品并没有经过严格的测试就已交付给用户使用,程序员们总是善于"自我安慰":应该没问题吧。"想当然"不能消除缺陷,只有测试再测试才是科学的精神。GIS软件工程由于一般都是由一些小型的二次开发商进行开发,人力物力都难以做到完善的测试,往往都只能够让用户在实际使用的过程中去不断发现问题,然后一边修改,一边使用,这也是我国GIS特有的国情。
第七:敝帚自珍。

技术总是向前发展的,不要过于“敝帚自珍”,抱着原有的东西不肯放弃,软件产品也有生命周期,该终结时要毫不犹豫。这个问题主要倒是出在用户身上了,因为开发一套GIS应用系统光是数据、设备方面的投入就不是一个小数目,加上目前更为普遍的情况是很多单位开发的都是所谓的“领导系统”,实际应用面非常有限,大多都是为了让单位领导向上级炫耀政绩而开发的东西,是表明该单位已经挂上GIS招牌,实现了信息化的一个标志……更新自然就没有太多的动力作为支持了。

三、小结

以上几点都是结合网上关于软件工程的评论,以及暑假毕业实习过程中本人参与物流软件项目开发的一些实践经验,以及对于软件工程、GIS项目开发现状的粗浅认识而谈的,也许会显得比较片面,但是的确值得我们去重视。真正要把软件工程的思想应用到GIS系统设计中去,我们还有很长的路要走。


参考资料:吴升,测绘学院学报,2001年3月《一种适合GIS开发的软件工程方法》等;编程论坛讨论资料;以及结合本人毕业实习(物流软件开发)。