740 likes | 846 Views
课程名称 GIS软件工程 使用教材 GIS 软件工程的原理与方法 主 编 毕硕本 出版社 科学 出版(修订)时间 2003 专业班级 0503701,0503702 授课时数 24 总 48 课时 ; 理论 : 32 课时 ; 上机 : 16 课时 ; 授课教师 吴德华 授课时间 2010 至 2011 学年度 第 2 学期 主要参考文献 1 、张海藩编 《 软件工程导论第五版 》 清华大学出版社 2008 年.
E N D
课程名称 GIS软件工程 • 使用教材GIS软件工程的原理与方法 • 主 编毕硕本出版社科学 出版(修订)时间2003 • 专业班级0503701,0503702 • 授课时数24总 48课时;理论:32课时;上机:16课时 ; • 授课教师吴德华 • 授课时间2010至 2011 学年度 第 2 学期 • 主要参考文献1、张海藩编 《软件工程导论第五版 》清华大学出版社 2008年
GIS软件工程的原理与方法主讲老师:吴德华 联系电话:13786729741电子邮箱:hncuwdh@sina.com
教学目的和课程内容 • 教学目的 根据培养基层应用型人才的需要,本课程的目的与任务是使学生通过本课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法,为更深入地学习和今后从事GIS软件工程实践打下良好的基础。
课程内容 • 第1章 GIS软件工程概述 第2章 GIS软件工程的可行性分析 第3章 GIS软件工程的系统分析 • 第4章 GIS软件工程的分析方法 • 第5章 GIS软件工程的总体设计 • 第6章 GIS软件工程的详细设计 第7章 GIS软件工程的设计方法 • 第8章 GIS软件工程的实施与测试 • 第9章 GIS软件维护工程 • 第10章 GIS软件工程管理 • 第11章 GIS软件工程环境 • 第12章 面向服务的软件工程
第1章 GIS软件工程概述 • 基本内容 软件工程的问题与特色,软件生存周期模型,GIS软件工程生存周期。 • 教学要求: 重点掌握瀑布模型、 GIS软件工程生存周期各阶段的任务。 • 重点: 软件工程的定义和软件生存周期模型。
1.1 GIS软件工程 1.1.1 GIS软件的特点 在存储技术上,空间数据库与属性数据库相分离。 在数据组织与处理模式上,基于地图处理的模式,空间数据处于“尺度割裂”状态。 在网络和分布式环境下系统组成采用静态方式处理。 在空间数据管理范围方面能有效地处理二维空间数据。 在数据和功能共享方面实现有缝的数据共享。
1.1.2 GIS软件开发过程中的问题 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是GIS软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题. 具体来说, GIS软件开发过程中的问题主要有以下一些典型表现: 1.对软件开发成本和进度的估计常常很不准确。 2.用户对“已完成的”软件系统不满意的现象经常发生。
3.软件常常是不可维护的。 4.软件产品的质量往往靠不住。 5.数据工程量特别大。 6.软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。 7.软件可重用性差。
1.1.3 GIS软件开发问题的原因分析 在软件开发和维护的过程中存在这么多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。 1.软件的规模越来越大,结构越来越复杂。 2.软件开发的管理困难。 3.软件开发费用不断增加。 4.软件开发技术落后。 5.生产方式落后。 6.生产工具落后。 7. GIS软件更新变化快,引起发展过程中的衔接问题。
图1.1引入同一变动付出的代价随时间变化的趋势图1.1引入同一变动付出的代价随时间变化的趋势
1.1.4 GIS软件工程 • 软件工程的定义 软件是计算机程序、方法、规则、相关的文档资料以及计算机上运行时所必需的数据。 软件工程是开发、运行、维护和修复软件的系统方法。 GIS软件工程就是遵循一般软件开发的工程化原理和方法,并照顾到GIS软件开发的特殊规律和要求,对GIS软件从可行性研究、需求分析、总体设计、详细设计、软件编制、软件测试、直到软件维护的各个阶段进行工程化规范的一门技术。
工程的性质 软件工程是涉及计算机科学、工程科学、数学等领域的一门综合性的交叉学科。 1.软件工程用工程科学中的观点来进行费用估算、制定进度、制定计划和方案。 2.软件工程用管理科学中的方法和原理进行软件生产的管理。 3.软件工程用数学的方法建立软件开发中的各种模型和各种算法。
工程的目标 软件工程采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,并最终希望得到项目的成功。
软件工程的内容 软件工程的内容指软件开发技术和软件开发管理两个方面;GIS软件工程的内容按开发顺序包括前期工程、设计工程、数据工程、工程实施和维护工程五个阶段。 软件工程包括三个要素,方法、工具和过程。其中,方法是完成软件开发的各项任务的技术方法,回答“如何做”的问题;工具是为方法的运用提供自动的或半自动的软件支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。
1.1.5 GIS软件工程的特色 GIS是基于空间数据的信息系统,与此对应,GIS软件工程具有如下特点: • 系统复杂度大 • 数据在系统中具有特别地位 • 系统表达方式复杂 • 系统更新速度快 • 系统维护工作量大 • 易操作性要求高
系统复杂度大 相关因素: 1.交付的文档的质量和数量 2.软件的微观复杂度 3.软件的宏观复杂度 • 数据在系统中具有特别地位 数据被称为GIS的“核心”和“血液”,在系统投资中,数据、硬件、软件的比例一般高达8:1:1。 在数据准备方面应注意: 1.数据的质量 2.数据的现势性 3.合理的数据组织结构
系统表达方式复杂 GIS的复杂性表现在: 1.表达的内容复杂 包括文本、空间、多媒体和遥感遥测的实时数据。 2.表达的对象具有时空特性 • 系统更新速度快 我国从20世纪80年代开始GIS的建设,经历了项目型GIS、管理型GIS、社会型GIS等。
系统维护工作量大 为确保系统的长期发展,一方面要求长期的投资,另一方面在系统设计开发过程中,要坚持“总体规划、分步实施、灵活调整、急用先行”的设计原则。 • 易操作性要求高 GIS功能复杂,系统应该通过良好的工作界面引导用户来完成操作,同时必需保证数据的安全性。
1.2.1 概述 1.2 软件生成周期模型 模型是为了理解事务而对事务作出的一种抽象。 软件生成周期模型是描述软件开发过程中各种活动如何执行的模型。
1.2.2 瀑布模型 在20世纪80年代之前,瀑布模型一直是唯一被广泛采用的生命周期模型,现在它仍然是软件工程中应用得最广泛的过程模型。图2.1所示为传统的瀑布模型。 • 按照传统的瀑布模型来开发软件,有如下几个特点: (1) 阶段间具有顺序性和依赖性 (2) 推迟实现的观点 清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现,是按照瀑布模型开发软件的一条重要的指导思想。
(3) 质量保证的观点 ·以文档形式驱动,每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。 · 以里程碑开发原则为基础,每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。 实际的瀑布模型是带“反馈环”的,如图2.2所示(图中实线箭头表示开发过程,虚线箭头表示维护过程)。当在后面阶段发现前面阶段的错误时,需要沿图中左侧的反馈线返回前面的阶段,修正前面阶段的产品之后再回来继续完成后面阶段的任务。
瀑布模型的局限性 瀑布模型是一种,理想的线性开发模型,缺乏灵活性,无法解决软件需求不明确或不准确的问题。 1.不能保证工程每个阶段都是正确的。 2.通信中的误解无法避免。 3.用户的新要求和环境的变化需要系统随之改变。
1.2.3增量模型 增量模型也称为渐增模型,如图2.4所示。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。
1.2.4螺旋模型 软件开发几乎总要冒一定风险,因此,在软件开发过程中必须及时识别和分析风险,并且采取适当措施以消除或减少风险的危害。 螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型,如图1.6所示。 完整的螺旋模型如图1.7所示。图中带箭头的点划线的长度代表当前累计的开发费用,螺线旋过的角度值代表开发进度。
1.2.5 喷泉模型 迭代是软件开发过程中普遍存在的一种内在属性。经验表明,软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。图1.8所示的喷泉模型是典型的面向对象生命周期模型。 “喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。 为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程(例如,快速原型模型或图1.8中的中心垂线)作为总目标。但是,同时也应该记住,面向对象模型本身要求经常对开发活动进行迭代或求精。
1.2.6 智能模型 智能模型是基于知识的软件开发模型,它综合了上述若干模型,并把专家系统结合在一起。该模型应用基于规则的系统。
1.2.7快速原型模型 所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。如图1.9所示(图中实线箭头表示开发过程,虚线箭头表示维护过程),快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌。通常,用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用……。一旦用户认为这个原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档,根据这份文档开发出的软件可以满足用户的真实需求。
快速原型的本质是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。快速原型的本质是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。
1.3 GIS软件工程的生存周期 GIS软件工程的生存周期指一个GIS软件从提出开发要求开始直到该软件报废为止的整个时期。 GIS软件工程整个生存周期划分为四个阶段:系统分析、系统设计、系统实施、系统评价及维护。 GIS软件工程整个生存周期按工程化的思想可划分为五个阶段:前期工程、设计工程、数据工程、工程实施、维护工程。
1.3.1 前期工程 前期工程包括工程调研、可行性研究、制定项目计划、需求分析等子阶段。 1.工程调研 通过走访、交谈、函件往来、资料检索等方式对相关项目进行调研,为拟开展的软件工程项目提供有价值的参考资料。 2.可行性研究 可行性研究阶段必须回答的问题是:“要解决的问题是什么,是否有行得通的解决办法”。
3.制定项目计划 根据开发项目的目标、功能、性质及规模,估计项目需要的软、硬件和开发人员等资源,估算软件开发费用,估计开发进度,制定完成任务的实施计划。 4.需求分析 这个阶段的任务仍然不是具体地解决客户的问题,而是准确地回答“目标系统必须做什么”这个问题。 这个阶段的另外一项重要任务,是用正式文档准确地记录对目标系统的需求,这份文档通常称为规格说明(specification)。
1.3.2 设计工程 设计工程包括总体设计、数据库设计、模型设计、详细设计等子阶段。 1.总体设计 总体设计就是设计软件的结构,包括模块组成、模块的层次结构、模块的调用关系、各模块的功能。 2.数据库设计 数据库设计是指把现实世界中一定范围内存在的应用处理和数据抽象成一个数据库的具体结构的过程。
3.应用模型设计 应用模型设计是针对拟开发领域的特殊技术要求,运用并分析该领域的应用模型,设计实现该模型的技术方法。 4.详细设计 详细设计阶段是为每个模块完成的功能进行具体描述,要把功能描述转变为精确的、结构化的过程描述。 这个阶段的任务还不是编写程序,而是设计出程序的详细规格说明。
1.3.3 数据工程 数据工程包括数据预处理、数据采集、数据处理等子阶段。 1.数据预处理 通过数据预处理,才能获得净化的数据文件,使采集的数据符合规范化标准。 2.数据采集 数据采集就是将图形数据和属性数据输入到地理数据库中。
2.数据采集 数据采集包括野外数据采集、图形数据采集、属性数据采集、图形数据和属性数据的连接。 野外数据采集的方法:GPS方法 摄影测量方法 测量法 图形数据采集的方式:手扶跟踪数字化 扫描数字化
3.数据处理 数据处理包括: 格式转换 图形单元的修改与增删 图幅拼接 坐标转换 几何纠正 数据编辑处理 拓扑结构 拓扑关系的自动生成
1.3.4 工程实施 工程实施包括程序编制、测试、试运行等子阶段。 1.程序编制 这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。 2.测试 测试方式是在设计测试用例的基础上检验软件的各个组成部分。测试分为模块测试、组装测试、确认测试。 3.试运行 试运行是保证最终交付给用户的软件质量的重要手段。
1.3.5 维护工程 维护工程包括数据库维护、软硬件维护等方面。 1.数据库维护 根据系统的规模和实际需求,建立系统的数据维护更新机制,规定系统数据维护更新的周期,使系统的所有数据均相对地处于最新的状态。
2.软件维护 维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。 通常有四类维护活动:改正性维护,也就是诊断和改正在使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化;完善性维护,即根据用户的要求改进或扩充软件使它更完善;预防性维护,即修改软件为将来的维护活动预先做准备。
1.4 GIS软件工程建设的主要过程 GIS与一般信息系统的区别: 1.综合性强,横跨多学科; 2.数据组织以空间数据为主; 3.面向应用,以空间分析为主。
1.4.1 GIS软件开发的工程化方法 按照软件工程化方法,GIS开发分为以下六个步骤: 1.制定GIS开发计划 2.GIS需求分析 3.GIS系统设计(包括总体设计、数据库设计和详细设计) 4.GIS程序编码 5.GIS产品测试 6.GIS产品的运行维护
1.4.2 GIS软件工程的系统分析 • GIS软件工程系统分析的目标: 1.较低的开发成本 2.符合要求的功能 3.较好的性能和可靠性 4.较好的移植性和较低的维护费用 5.按时完成软件并及时交付使用