《GIS软件开发基础.ppt》由会员分享,可在线阅读,更多相关《GIS软件开发基础.ppt(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Chapter 1软件开发方法软件开发方法Section 1 软件概述本节要回答的问题本节要回答的问题什么是软件?软件有哪些特征?什么是软件危机?什么是软件生命周期?软件开发技术发展史第2页一、软件和软件的特征一、软件和软件的特征1.什么是软件?软件是各种程序和有关资料的总称。程序是:l为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合l是人们求解问题的逻辑思维活动的代码化描述程序的最重要的目的是:便于阅读、交流第3页软件的基本概念软件的基本概念第4页程序是为实现特定目标或解决特程序是为实现特定目标或解决特定问题而用计算机语言编写的命定问题而用计算机语言编写的命令序列的集合令序列的
2、集合软件软件=程序程序+文档文档+数据数据计算机系统由计算机硬件和软件构成计算机系统由计算机硬件和软件构成计算机能完成各种神奇的功能是因为存在各种软件计算机能完成各种神奇的功能是因为存在各种软件什么是软件?什么是软件?什么是程序?什么是程序?Roger S.Pressman Roger S.Pressman 对软件的认识对软件的认识“计算机软件已经成为一种驱动力。它是进行商业决策的引擎;它是现代科学研究和工程问题寻求解答的基础;它也是鉴别现代产品和服务的关键因素。它被嵌入在各类系统中:交通、医疗、电信、军事、工业生产过程、娱乐、办公、难以穷举。软件将成为从基础教育到基因工程的所有领域新进展的驱
3、动器。”第5页2.2.软件的特征软件的特征软件是逻辑产品软件产品质量的体现方式不同软件产品的生命周期和失败曲线不同软件产品的成本构成不同大多数软件仍然是定制生产的软件产品的不同属性第6页二、软件分类二、软件分类软件按不同方式可以划分为不同的类型:l按功能划分l按规模划分第7页按功能划分软件分类按功能划分软件分类 第8页软件软件系统软件系统软件应用软件应用软件操作系统操作系统网络系统网络系统语言编译器语言编译器工具软件工具软件管理软件管理软件实时软件实时软件科学计算、数据处理科学计算、数据处理嵌入式软件嵌入式软件人工智能软件人工智能软件专用领域软件专用领域软件系统软件系统软件是支持计算机系统正常
4、运行并实现用户操作的那部分软件。一般是在计算机系统购买时随机携带的,也可以根据需要另行安装。系统软件的主要特征是:l与硬件有很强的交互性l能对资源共享进行调度管理l能解决并发操作处理中存在的协调问题l其中的数据结构复杂,外部接口多样化,便于用户反复使用第9页系统软件包括系统软件包括操作系统(Operating System)网络系统(Network System)语言编译系统(Language Compiler)通信软件(Communications Software)工具软件(Tools Software)第10页应用软件应用软件 应用软件是为满足用户不同领域、不同问题的应用需求而提供的那部
5、分软件。它可以拓宽计算机系统的应用领域,放大硬件的功能。应用软件具有无限丰富和美好的开发前景。第11页应用软件例应用软件例 事务处理软件 实时软件 科学计算和数据处理软件 嵌入式软件 人工智能软件 第12页按规模划分软件分类按规模划分软件分类第13页类别参加人员数研制期限产品规模(语句行数)实 例微型114周0.5k选择排序程序小型116月1k2k数值计算程序中型2512年5k10k汇编程序较大型52023年50k100k数据库系统大型100100045年1M操作系统极大型20005000510年1M10M空中交通管制系统三、软件开发技术发展史三、软件开发技术发展史 应用驱动是推进软件发展进程
6、的主线:从软件发展早期的按个人意愿编写代码,到按软件工程的理论生产大型应用系统;从手工作坊式的封闭性制作到按标准制式、大工业生产的开放系统;从注重个人精雕细琢地编写代码的技巧到注重工程项目的管理和开发团队的协作;从为特定应用定制设计到以复用为目标的组件式开发;从由少数软件天才的编程艺术到由广大用户直接参与的应用开发。第14页阶段划分阶段划分半个多世纪以来,软件及软件开发技术在理论、观念、目标及技术方法等方面都发生了很大变化。以10年左右为间隔,划分为五个阶段。第15页第一阶段第一阶段2020世纪世纪 40-5040-50年代年代早期计算机是由只有硬件的“裸机”组成,计算机中不装任何软件。由于采
7、用电子管作为逻辑电路的元器件,系统稳定性很差。那时人们只关心硬件的性能和技术指标,系统设计与实现是以硬件为中心,软件开发(实际上是程序设计)处于从属地位。第16页本期软件主要特征本期软件主要特征处理对象:由“0”和“1”组成的二进制序列;用途:主要是科学计算及军事应用(弹道计算);目的:“确定计算机硬件动作的序列”;开发方法:经验主义;开发工具:机器语言;认识:计算机的用途是快速计算。发展概况:机器语言、汇编语言、FORTRAN语言;技术突破:存储器技术、“迭代-反复”算法、观念转变;理论成就:冯诺依曼理论和图灵测试;目标:用最少资源来获得最大运算能力。第17页第二阶段第二阶段2020世纪世纪
8、 6060年代年代由于硬件技术的发展,在电路设计中广泛采用晶体管和集成电路,使计算机的体积大大缩小,系统稳定性提高,价格降低。开始出现以屏幕显示器和键盘输入方式的商用计算机,促进了计算机的产、销量急剧上升。在软件领域,应用领域拓宽,社会对应用软件的需求急剧增加,软件的地位和作用不断提高,从而有力地推动了软件技术和开发方法的改进和发展。第18页本期软件主要特征本期软件主要特征处理对象:高级语言编写的程序;用途:科学计算、商务应用和数据处理;目的:“确定计算机指令的动作序列”;开发方法:功能性程序设计;开发工具:汇编语言、高级语言;认识:软件应独立于硬件;必须规范程序内部控制流;发展概况:高级语言
9、;编译技术;非数值商业应用;软件危机技术突破:高级语言促进计算机应用;功能性程序设计技术;理论成就:软件工程解决软件危机;结构化程序设计理论;目标:扩大程序系统的规模,以适应更复杂的应用。第19页第三阶段第三阶段2020世纪世纪 7070年代年代这个时期计算机硬件的发展具有里程碑的意义,采用诸如大规模集成电路,分布式技术、网络技术、嵌入式等高新技术极大地提高了计算机系统的处理能力,特别是微处理器的诞生,开创了大众化使用计算机的新时代。该阶段软件的特征是:高性能的计算机系统对软件的功能和性能提出了更高的要求。第20页本期软件主要特征本期软件主要特征处理对象:小规模系统的程序设计;用途:商务应用;
10、网络互联;数据库应用;目的:“研究数据结构和算法以寻求处理的时-空平衡”;开发方法:研究数据结构和算法;结构 化开发方法;开发工具:高级语言;数据库技术;认识:平衡时-空平衡复杂度;程序执行的停机;程序可读性;发展概况:数据独立(文件、DB);对复杂系统的规格说明;技术突破:数据结构及算法;区分了应用软件和系统软件;理论成就:数据结构及算法 理论;形式方法;软件工程方法;目标:解决软件危机。第21页第四阶段第四阶段2020世纪世纪 8080年代年代这个时期计算机硬件的发展体现在个人计算机和计算机网络。该阶段软件发展的特征是:个人计算机应用软件异军突起,形成信息产业中新的增长点。伴随微处理器和嵌
11、入式系统的发展,计算机应用开始深入我们的日常工作和生活。旺盛的市场需求和政府企业甚至广大百姓的资金投入,孕育了大量软件企业。市场竞争和市场经济规则促进了软件产品功能更强,质量更高,性能价格比更好。大型机(包括中、小型机)软件向个人计算机上移植,从而为软件提供了更广阔的发展空间和巨大的用户市场。第22页本期软件主要特征本期软件主要特征处理对象:大型系统的程序设计;用途:关系数据库应用;各领域计算机应用;目的:大众化普及应用计算机;开发方法:构造系统方法;用标记工具描述系统;文档是 管理系统结构的主要手段;开发工具:高级语言;基于PC的开发工具;早期CASE工具;认识:软件生命周期;强调开发组协作
12、的重要性;发展概况:软件工程研究机构;CASE环境;图形界面系统;技术突破:C/S计算模式;GUI图形用户界面;理论成就:RDB的理论;软件工作量度量COCOMO;软件过程改进模型CMM;目标:开发更大规模和复杂性软件系统,满足应用的需求。第23页第五阶段第五阶段2020世纪世纪 9090年代年代当计算技术发展到网络计算,标志着计算机网络时代的到来。伴随处理分散的海量数据的应用需求,诞生并促进了分布式技术、并行计算、人工神经网络等技术的发展。反映该阶段的软件特征是:多媒体信息的实时处理技术成为研究的热点;计算机系统内部传统的处理模式(单指令流单数据流SISD和单指令流多数据流SIMD)受到极大
13、挑战,具有并行处理功能的新型处理模式(多指令流多数据流MIMD)倍受关注和厚爱;面向对象的开发方法代表着在新处理环境中提高软件开发效率和质量的方向;信息唾手可得的网络服务软件满足着人们日益增长的应用需求。第24页本期软件主要特征本期软件主要特征处理对象:基于Internet/Web的程序设计;用途:网络互联及网络应用;目的:通过支持跨地区、跨部门、跨时间的群组共享信息协同工作来提高群组,集团的整体的生产率;开发方法:基于组件、基于Internet/Web的开发方法;开发工具:组件技术;基于Web开发工具;现代CASE工具;认识:非功能性需求的重要性;基于环境的软件过程改造;发展概况:Inter
14、net/Intranet;基于Web应用;虚拟现实技术;新技术涌现,但缺乏理论指导;技术突破:设计模式;浏览器技术;CORBA/COM/OLE技术;理论成就:“交互模型”作为网格计算的理论基础;目标:正确的时刻,把正确的信息,安全地送给需要的人。第25页四、软件危机四、软件危机从20世纪60年代开始,软件界经常遭受软件危机的袭扰。以IBM公司的OS/360操作系统为例。它共有4000多个模块、100万行指令,共投入5000人年,耗资5亿美元,但在交付使用的系统中仍找出2000个以上的错误。经研究发现,研制软件系统需要投入大量的人力、物力和资金,但是系统的质量却无法保证。开发软件所需的高成本与软
15、件产品的低质量之间存在尖锐的矛盾。软件开发陷入不可自拔的恶性循环之中。这种现象被称为“软件危机”(Software Crisis)。第26页1.1.软件危机的表现软件危机的表现软件开发进度难以预测软件开发成本难以控制用户对软件功能难以满足软件产品质量无法保证软件产品难以维护软件通常缺少适当的文档资料生产率提高的速度不能满足社会需要第27页2.2.软件危机产生的原因软件危机产生的原因 产生软件危机有两个方面的原因:l与软件本身的特点有关;是内在因素、客观的存在,只能因势利导加以解决。l与软件开发和维护的技术方法有关;是外在因素,可以完善、提高。第28页(1 1)软件特点的因素(内因)软件特点的因
16、素(内因)软件是逻辑产品,是代码化了的人的思维活动。在总体构思时,别人无法管理和干预。在写出程序、并在机器上运行之前,进展情况难以掌握,开发质量也无法评估。这些都给管理和控制带来不便。软件是特定问题在计算机上的运行描述。实际问题的复杂性决定了一个实用软件系统规模往往十分庞大。大有大的难处。程序规模越大,控制、管理难度也就越大。第29页(2 2)软件开发技术管理的因素)软件开发技术管理的因素 开发人员和用户之间的矛盾。许多软件系统开发失败的主要原因是开发人员在没有准确、完整地了解了用户的需求后就急于编程;用户对需求也往往不能准确、完整地提出。软件开发各阶段任务不明确,方法不科学。软件产品有其生命
17、周期。在周期的各个阶段有其具体的任务,如何完成任务,各个阶段有不同的技术方法和操作步骤。只有科学的按生命周期各阶段的任务去组织实施,才能保证质量,降低成本;急于求成,不按科学规律、方法实施,只能“事倍功半”,事与愿违。重编程,轻分析;重开发,轻维护;重程序,轻文档。软件产品的使用寿命很长。在这期间要对软件进行必要的修改。据统计数据表明,软件维护的费用占总费用的55%70%。软件工程的一个重要目标就是提高软件的可维护性,减少软件维护的代价。第30页 3.3.导致软件开发项目失败的原因导致软件开发项目失败的原因从表1-4的1、2、4、6、8可以看出,用户需求不稳定、不清晰、不完整是项目失败的主要原
18、因,应引起足够的重视。软件开发方法的研究应针对项目失败的原因系统地提出解决办法。第31页4.4.解决软件危机的途径解决软件危机的途径(1)采用现代化、社会化的组织管理方式;(2)使用成功的技术和方法(面向过程、面向对象、自顶向下等);(3)使用更好的软件开发工具(汇编、C、VC、各种数据库管理系统等);第32页五、软件生命周期五、软件生命周期软件生存周期是指一个软件从提出开发要求直到该软件报废为止的整个时期。针对不同的开发模型、不同的开发对象以及不同的开发方法,软件生命周期可以有不同的划分。如果不考虑上述不同的因素以及应用领域、项目规模和复杂性,软件生命周期可以划分为软件定义、软件开发和软件维
19、护三个时期,每个时期又进一步划分成若干个阶段。第33页软件定义软件定义软件定义时期的核心任务是:“做什么”。即要:确定软件开发工程的总目标;确定工程的可行性;提出实现工程目标应该采用的策略及系统应实现的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成软件定义时期通常进一步划分成3个阶段:问题定义、可行性研究和需求分析 第34页软件开发软件开发软件开发时期的核心任务是:“怎么做”。即要具体设计和实现在软件定义时期定义的软件系统。它又包括4个阶段:l总体设计l详细设计l编码l测试其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。第35页软件维护软件维护维护时期的核心任务是:“改变”。即要保证软件持久地满足用户各个方面改变的需要。维护时期不再进一步划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程。例如,如果提出的变更要求是更加新的功能,那就要涉及从新一轮的软件开发过程:需求分析、系统设计、编码及测试。第36页本节小结本节小结1.1软件概述l一、软件和软件的特征l二、软件分类l三、软件开发技术发展史(5个阶段)l四、软件危机:l什么是软件危机l软件危机的表现l产生软件危机的原因l解决软件危机的途径l五软件的生存周期l(三个时期)第37页