软件产品的开发是一项复杂的系统工程,随着它需要解决的问题复杂度的不断提高,软件产品的研发早已从过去“作坊式”开发演化到了当今符合一系列工业标准和规范的开发模式。软件产品面对的具体应用需求日益多元化、软件项目开发规模日益大型化,这两个因素促使软件开发团队的管理变得越来越复杂,软件开发项日的可控性变得越来越不稳定。
为了寻找“银弹”,IT工业界采用了多种方法,它们包括制定各种软件开发标准和规范、发明具有更高生产力的编程语言、开发更好的编译器和运行时(Rumime)、提供功能更加强大的可分发组件库和探索更好的软件开发模式。但对于应用程序员而言,各种标准、规范和不断涌现的编程语言并不在自己可以控制的范围之内,大部分情况下,我们只能从软件工程的角度出发,在设计层而采用一些独特的软件架构和设计模式以达到我们期待的下列日的:
尽量提高软件的可重用性,避免不必耍的重复编码工作。
增强组件的封装性。
提高软件的模块化程度。
不同功能模块之间能够无缝集成。
软件具有灵活的可扩展性。
软件产晶的扩展和开发实现标准化。
软件产品具有面向不同应用层面的适应性和易移植性。
应用程序的开发足项针对性很强的工作,程序的模块设计、层次划分、语言选择和系统部署部依赖晟终用户的具体需求、软硬件环境甚至个人的喜好。因此,在应用程序开发过程中,项目人员必须花费大量的时间进行项目前期调研,编制不同阶段的需求分析和建设方案,然后才能进入编码阶段,根据具体需求开发各种功能组件。
如果每一个开发过程都是如此这般,每一次都要从头开始,舍弃以前的项目经验和成果,软件开发显然就是一件乏味且充满重复性的劳动。人类进化的显著特点之一是擅长学习已经存在的知识和经验,并将它们作为开发更广阔未知领域的工具。软件的开发也应该如此:吸取以往的开发经验和教训,尽量重复使用已经存在的组件和材料,以降低开发成本,缩短新技术的学习曲线并提高开发效率。
本书的主题是设计一个基于插作式架构的GIS应用框架,GIS开发是一种典型的“因势而变”工程,由于不同类型的用户在地理数据的存储、使用和部署方式上都有很大差别,根据实际需求定制开发是不可避免的。而插件式GIS框架,则是满足定制要求的*好方式之一——扩展方便、部署简单和高度可重用。