9+资源环境信息系统(GIS07).ppt_第1页
9+资源环境信息系统(GIS07).ppt_第2页
9+资源环境信息系统(GIS07).ppt_第3页
9+资源环境信息系统(GIS07).ppt_第4页
9+资源环境信息系统(GIS07).ppt_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020 3 14 1 2 5环境GIS工程开发与实现 软件工程思想软件危机与软件工程环境GIS开发模式环境GIS系统分析环境GIS系统设计环境GIS系统实施环境GIS系统维护 2020 3 14 2 系统实施阶段的任务 是实现系统设计阶段提出的物理模型 按实施方案完成一个可以实际运行的信息系统 交付用户使用 系统实施包括资源配置 程序编写 系统安装和系统测试 实施管理小组负责系统实施的进度和质量管理 2020 3 14 3 1 系统配置 系统配置包括软硬件配置 人员组织以及数据准备等 2020 3 14 4 软硬件购置在规划地理信息系统的软硬件时 需要考虑的主要因素包括 系统的数据量有多大 用户数有多少 网络环境是什么 投资规模如何 地理信息系统在整个系统中所处的位置是什么 也就是说 这是一个纯粹的地理信息系统还是地理信息系统与其它系统相结合的综合信息系统 如果是综合系统 是以地理信息系统为主体还是以其它的系统为主体 2020 3 14 5 以ESRI公司的产品为例 如果所开发的系统投资规模比较小 对系统的功能要求不是很高 可以选用ArcView3 x软件或MapObjects进行开发 如要求系统有较强的功能 系统投资规模较大 可考虑选用ArcGIS软件进行开发 如系统数据量大 而且要满足多用户并发访问 则需要配置ArcSDE 如系统是B S结构 则可选用ArcIMS开发 如开发的地理信息系统是综合系统的一部分 利用MapObjects开发比较合适 每一种软件 对硬件的配置有相应的要求 如ArcView3 x要求主机的基本配置 主频 内存 2020 3 14 6 硬件配置 2020 3 14 7 人员组织软件项目成功的关键是要有高素质的软件开发人员 然而大多数软件产品规模都很大 以至单个软件开发人员无法在给定期限内完成开发工作 因此 必须把多个软件开发人员组织起来 分工协作 共同完成开发工作 为了成功地完成软件开发工作 项目组成员必须以一种有意义且有效的方式彼此交互和通信 如何组织项目组是一个管理问题 管理者必须合理地组织项目组 使项目组有较高生产率 能够按预定的进度计划完成所承担的工作 经验表明 项目组组织的越好 其生产率越高 而且产品质量也越高 2020 3 14 8 现有的软件项目组的组织方式很多 常见的有程序设计小组的组织 主程序员组的组织等 程序设计小组的规模以2 8名成员为宜 通常采用非正式的组织方式 也就是说 虽然名义上有一个组长 但是他和组内其他成员完成同样的任务 在这样的小组中 由全体讨论决定应该完成的工作 并且根据每个人的能力和经验分配适当的任务 如果组内多数成员是经验丰富技术熟练的程序员 那么这种组织方式会非常成功 但如果组内多数成员水平不高 没有明确的权威指导开发工程的进行 最终可能会导致工程失败 2020 3 14 9 美国IBM公司在1970年代初期开始采用主程序员组的组织方式 主程序员组由主程序员 后备主程序员 编程秘书以及1 3名程序员组成 在必要的时候 该组还有其他领域的专家 例如 法律专家 财务专家等 协助 主程序员组的组织方式有不少优点 但典型的主程序员组在许多方面是不切实际的 2020 3 14 10 人员配置 2020 3 14 11 2 程序编写 程序编写的过程就是利用某种程序设计语言把详细设计编码成计算机可接受的形式 也是人借助编程语言与计算机通信的过程 应该说 在系统开发的各个阶段中 编程是最容易 也是人们已掌握得较好的一项工作 但编写一个好的程序需要高水平的编程人员 2020 3 14 12 对于程序好坏的评价 50年代与70年代的观点有很大不同 50年代计算机内存小 速度慢 人们往往把程序的长度和执行速度放在重要位置 费尽心机缩短程序长度 减少存储量 提高速度 现在情况有了很大的不同 一般认为好程序应具备的最重要条件是可读性 2020 3 14 13 要使程序的可读性好 程序员应有一定的写作能力 他应写出结构良好 层次分明 思路清晰的程序 有人说 对于程序员来说 最重要的不是学习程序设计语言 FORTRAN C等 而是英语 日语 汉语 程序员在写程序时应该记住 程序不仅是给计算机执行的 也是供人阅读的 2020 3 14 14 程序设计语言 程序设计语言发展到今天 先后有几百种程序设计语言 大致可分为四代 第一代语言是指与机器紧密相关的机器语言和汇编语言 其历史可追溯到第一台电子计算机问世 因其与硬件操作一一对应 基本上有多少种计算机就有多少种汇编语言 第二代语言是20世纪50年代末至20世纪60年代初先后出现的 它们应用面广 为人们熟悉和接受 有大量成熟的程序库 这代语言包括FORTRAN COBOL Algol60和BASIC等 2020 3 14 15 第三代语言 也称结构化程序语言 其特点是直接支持结构化构件 并具有很强的过程能力和数据结构能力 这类语言本身又可细分为三类 通用高级语言 如Pascal Ada等 专用语言 如LISP Prolog等 和面向对象的语言 如C Smalltalk Java等 第四代语言实际上就是程序生成器 它能输入由自然语言书写的语句 自动产生完整的程序 但目前这方面成功的例子还只限于商业信息系统的开发 2020 3 14 16 程序设计语言的选择 选择合适的程序设计语言能减少编码的工作量 产生易读 易测试 易维护的代码 程序设计语言的选择应考虑的因素包括 应用领域 算法和计算的复杂性 软件运行环境 软件性能要求 数据结构的复杂性 软件开发人员的知识水平等 其中 项目所属的应用领域常常作为首要的标准 2020 3 14 17 程序设计语言的选择 例如 C语言常用于系统软件开发 COBOL迄今仍为商业信息处理的首选语言 FORTRAN始终占领着工程及科学计算领域的主导地位 人工智能领域则更多地使用LISP Prolog等 2020 3 14 18 在GIS开发中的程序设计语言底层开发通常采用VC 等 组件开发通常采用VB Delphi等 WebGIS开发通常采用Java等 虚拟现实GIS开发采用VRML等 2020 3 14 19 编程的技巧和方法 70年代以来 人们总结了使程序简单 清晰的种种技巧和方法 包括 用结构化方法进行编程设计 程序中包括说明文档 良好的程序书写风格 良好的编程风格 2020 3 14 20 结构化程序设计 结构化程序设计 是荷兰学者Dijkctra提出的 他要求程序设计者不能随心所欲地编写程序 而要按照一定的结构形式来设计和编写程序 基本思想 将一个大的程序按功能分割成一些小模块 开发方法 自上向下 逐步分解 分而治之 2020 3 14 21 结构化程序设计的特点 各模块相对独立 功能单一 结构清晰 接口简单控制了程序设计的复杂性提高元件的可靠性缩短开发周期易于维护和功能扩充具体有两个方面 一是程序设计采用自顶向下 逐步细化的原则 二是程序的控制结构由三种基本结构 顺序结构 分支选择结构和循环结构 构成 2020 3 14 22 顺序结构 以各子结构出现的次序顺序控制执行 分支选择结构有两种 一是If then else结构 另一种是case结构 当满足某个条件时反复执行 否则不执行 Do while循环 2020 3 14 23 顺序结构 Input 请输入梯形的上底 ToMInput 请输入梯形的下底 ToNInput 请输入梯形的高 ToH 梯形面积 Str M N H 2 10 2 Return 2020 3 14 24 选择结构 2020 3 14 25 循环结构 2020 3 14 26 结构化程序设计有以下几个特点 只有一个入口和一个出口 没有死语句 永远执行不到的语句 没有死循环 无限制的循环 2020 3 14 27 提供说明文档 程序中的说明文档可以用注释语句书写 程序适当加注释后 阅读时就不必再看其他说明材料了 因此 是提高程序可阅读性的有力手段 程序中的注释包括文件头注释 函数注释 程序段注释和语句注释 2020 3 14 28 增加注释的原则注释必须与程序一致 否则毫无价值 甚至使人感到莫名其妙 所以 修改程序时 要注意对注释进行相应的修改 注释不是重复程序语句 而应提供从程序本身难以得到的信息 对程序段作注释 而不是对每个语句作注释 2020 3 14 29 文件开头的注释模板 文件名 Copyright c 1998 1999 公司技术开发部 创建人 日期 修改人 日期 描述 版本 2020 3 14 30 函数开头的注释模板 函数名 输入 a b c a b c 输出 x x为1 表示 x为0 表示 功能描述 全局变量 调用模块 作者 日期 修改 日期 版本 2020 3 14 31 程序段和语句注释实例 初始化控件 comboBox1 Items Clear 清空组合框 listBox1 Items Clear 清空列表框 2020 3 14 32 良好的编程风格 编程的风格在很大程度上影响着程序的可读性 可测试性和可维护性 良好的编程风格是在不影响性能的前提下 有效地编排和组织程序 以提高可读性和可维护性 2020 3 14 33 良好的编程风格体现在 结构化规范化简单化 2020 3 14 34 结构化 实质是控制编程中的复杂性 除了使用读者明了的结构化程序部件 还包括用公共函数调用代替重复出现的表达式等 2020 3 14 35 规范化 理解变量的含义是理解程序逻辑的关键 在系统中 涉及的变量 过程 文件很多 编写程序的人也很多 因此 在编写程序之前 应对名字做出统一的规范标准 变量名应显示说明 同一变量名不要具有多种含义 一个变量在不同程序段中表示不同的含义 即使计算机不混淆 也不便于人的阅读理解 修改程序时也容易造成错误 变量名 文件名 过程名应规范化 应选用表义性强的名字 相应英文名或缩写 避免使用临时变量而使可读性下降 适当插入括号 使表达式的运算次序清晰直观 排除二义性 有效使用空格符 以区别程序的不同意群 例如 注释与程序 分程序之间等 2020 3 14 36 简单化 使用简单的数据结构 避免使用多维数组 指针和复杂的表 使用执行时间短的算术运算 避免不同类型的对象混合操作 尽量使用整型运算和布尔表达式 以手工方式简化算术和逻辑表达式 直接地反映代码的意图 2020 3 14 37 DO14I 1 NDO14J 1 N14V I J I J J I DO5I 1 NDO5J 1 NIF I EQ J THENV I J 1 0ELSEV I J 0 0ENDIF5CONTINUE 两个程序比较 软件测试 2020 3 14 39 在开发软件的过程中 人们使用了许多保证软件质量的方法分析 设计和实现软件 但难免还会在工作中犯错误 这样 在软件产品中就会隐藏许多错误和缺陷 对于规模大 复杂性高的软件更是如此 在这些错误中 有些是致命的错误 如果不排除 就会导致生命与财产的重大损失 2020 3 14 40 1963年在美国曾发生了这样一件事 把一个FORTRAN程序的循环语句DO5I 1 3误写成DO5I 1 3 循环语句被当作了赋值语句 一点之差致使飞往火星的火箭爆炸 造成1000万美元的损失 这种情况迫使人们必须认真计划 彻底地进行软件测试 2020 3 14 41 什么是软件测试 软件测试是为了发现错误而执行程序的过程 软件测试在软件生存期中横跨两个阶段 通常在编写出每一个模块之后就对它做必要的测试 称为单元测试 编码与单元测试属于软件生存期中的同一个阶段 在结束这个阶段之后 对软件系统还要进行各种综合测试 这是软件生存期的另一个独立阶段 即测试阶段 测试只能证明程序有错误 而不可能证明程序没有错误 2020 3 14 42 软件测试的目的 GrenfordJ Myers提出以下观点 测试是程序执行过程 目的在于发现错误 一个好的测试用例很可能找到迄今为止尚未发现的错误 一个成功的测试是发现了至今未发现的错误的测试 E W Dijkstra指出 程序测试能证明错误的存在 但不能证明错误不存在 测试的目的是发现程序中的错误 是为了证明程序有错 而不是证明程序无错 2020 3 14 43 软件测试的目的 测试的目的是想以最少的时间和人力系统地找出软件中潜在的各种错误和缺陷 测试的附带收获是 它能够证明软件的功能和性能与需求说明相符合 此外 实施测试收集到的测试结果数据为可靠性分析提供了依据 把证明程序无错当作测试目的不仅是不正确的 完全做不到的 而且对做好测试没有任何益处 甚至是十分有害的 能够发现错误的测试是成功的测试 否则是失败的测试 2020 3 14 44 测试者知道软件怎样才能发生故障而导致失败 并可记录发生失败的多种故障类型测试案例没有冗余 每个测试案例都有不同的用途 不要重复相同意义的测试案例使用最具有代表性的案例 它能够高效率揭示所有可能的错误每个测试应该能独立执行 不能太复杂 也不会太简单 它们能够被组合用于一个测试案例中 好的测试应该具有的特性 2020 3 14 45 软件错误的分类 按错误的影响和后果分类较小错误 只对系统输出有一些非实质性影响 如 输出的数据格式不合要求等 中等错误 对系统的运行有局部影响 如输出的某些数据有错误或出现冗余 较严重错误 系统的行为因错误的干扰而出现明显不合情理的现象 比如开出了0 00元的支票 系统的输出完全不可信赖 严重错误 系统运行不可跟踪 一时不能掌握其规律 时好时坏 非常严重的错误 系统运行中突然停机 其原因不明 无法软启动 最严重的错误 系统运行导致环境破坏 或是造成事故 引起生命 财产的损失 2020 3 14 46 软件测试的特点 软件测试的开销大按照Boehm的统计 软件测试的开销大约占总成本的30 50 例如 APPOLLO登月计划 80 的经费用于软件测试 不能进行穷举测试只有将所有可能的情况都测试到 才有可能检查出所有的错误 但这是不可能的 例如 程序P有两个整型输入量X Y 输出量为Z 在32位机上运行 所有的测试数据组 Xi Yi 的数目为 232 232 264 假设 毫秒执行 次 如要进行完全测试 共需 亿年 例 Windows95有1000万行代码 Windows2000有5000万行代码 3000多个工程师 几百个小团队 Exchange2000和Windows2000开

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论