当前位置:文档之家› 软件工程及其实践

软件工程及其实践

软件工程及其实践——以GIS中图形编辑为例朱玲解放军信息工程大学测绘学院地图制图学与地理信息工程系制本35班摘要:本文介绍了目前流行的一种软件开发技术——软件工程技术。

通过对其发展过程、有关概念、开发方法及在国内外发展的叙述,说明了软件工程技术给软件开发带来的巨大成就。

并以GIS中图形编辑为例,论述了如何应用软件工程的思想开发GIS软件产品。

关键词:软件工程,GIS软件,面向对象,基类,继承引言:50多年来,随着计算机系统的发展,软件开发技术也发生着变化,软件工程首先是为了解决软件危机而提出的。

面对着那无穷无尽的现实的和潜在的计算机应用需求,研究如何更快、更好、更多、更方便地开发出各种不同类型、不同目的的软件,这就是软件开发技术和软件工程技术所要解决的一个问题。

软件开发技术的巨大成就,已经使软件开发不再是少数逻辑天才或专家的专利,而是广大用户可以参与和直接开发自己的应用项目。

一、软件工程的由来、原则和开发方法(一)软件工程的概念软件工程——将系统化的、规范的、可度量的方法用于软件的开发、运行和维护的过程。

它把经过实践和时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,是指导计算机软件开发和维护的工程科学。

软件工程的指导思想,是以处理工程问题一样的方法处理软件生产的全过程,利用较少的投资获得高质量的软件产品。

(二)软件危机计算机软件是一个逻辑的而不是物理的系统,它具有一些与硬件显著不同的特点。

开发软件的主要工作集中在定义、开发和维护等方面。

60年代以来,计算机语言和编译技术的成果为程序设计工作带来了方便,又为计算机的广泛应用开辟了道路。

然而,我们必须看到软件开发技术虽然出现了许多新事物,但和硬件技术的飞速发展相比,他已经明显落后了。

许多年来被人们沿用的手工作坊式软件开发方法一直未曾被突破,这种传统的方法使得许多发现了的问题得不到及时解决。

在软件产品的质量、成本以及开发时间等方面无法满足人们的需求,极大的影响着软件行业的声誉。

一些典型的问题表现在软件产品质量低劣(如工作可靠性差、用户难以使用、难以维护等),研制软件成本太高,不能按时交付使用等。

这些现象一般称其为“软件危机”。

造成“软件危机”的原因是多方面的,从认识方面看,程序设计曾经被当作是一种任人发挥创造精神的技术科学。

不少人认为,写出的程序只要能在计算机上得出正确的结果,程序如何编写不应受到任何约束。

尽管程序很难被别人看懂,但只要含有精心设计的程序技巧,就是高水平的程序。

殊不知这样可供“孤芳自赏”的程序在测试、修改以及维护中会遇到很多困难,而且常常是从新产生错误的祸根。

进一步分析技术和管理上的原因,包括:未能充分理解和正确表达用户的需要;采用了不适当的开发方法;没有或未能认真遵循开发规范;测试方法不当;项目管理不利;不重视资料、文档工作等等。

“软件危机”出现于60年代末期,人们认识到那种手工作坊似的软件开发已经行不通了,必须寻找新的技术来指导软件开发。

1968年在北大西洋公约组织的一次学术会议上首次提出了“软件工程”这一名称。

70年代中期又提出了软件生命期的概念。

80年代以来,软件工程的思想得到系统的归纳和整理,提出了许多工程化方法。

总之,为了摆脱软件危机,把软件开发向前推进一步,人们认识到出路只有一个,就是软件研制一定要走工程化的道路。

(三)软件工程的发展软件开发技术和方法的发展,大体经历了三个时代,即程序设计时代、软件时代、软件工程时代。

各时代的特点如表(1)所列。

表(1)软件工程的发展(四)软件开发的基本原则成功的软件开发总是遵循以下七个原则:●严格性和形式化原则:影响软件产品的可靠性、可维护性、复用、可移植性、可理解性等等。

●分隔原则:指从问题的不同方面分别单独考虑,从而集中精力分别去解决每一方面的问题。

●模块 / 部件化原则:指划分为较为简单的“单元”,通常称之为模块(module)。

对于开发人员来说,首先要面对的问题是如何在应用领域的应用模型中找出有共性、可通用的部分做成软件构件;第二,构件相互之间的集成和装配;第三,如何实现构件之间的相互通讯、如何实现数据共享的问题;第四,软件构件化技术只是刚刚起步,如何实现由以前的一体化系统到新的构件化系统的转变。

●抽象原则:指标识出重要的方面,忽略次要细节。

●预期变化原则:指在软件开发早期就应对软件未来变化的发生情况、范围和时间进行有效的预测。

●通用性原则 / 软件复用原则:指尽可能集中注意力去揭示那些隐藏在表面之下的、具有一定普遍性和通用性的问题。

●递增模式原则:指先组成目标的一个子集,完成其开发,提交用户使用得到反馈信息,从而进一步改进。

(五)软件设计及开发方法1、结构化方法又称为生命周期法或瀑布法。

这是目前最常用也是最成熟的软件开发方法。

使用该方法的优点是有严格的一套开发程序,各开发阶段都要求完整的文档记录。

在开发软件系统的整个过程中,需严格按照件生命期的各阶段进行。

系统开发的生命周期的划分实际上是系统开发的一种方法论,或者说是组织工作的过程。

特别是对计算机信息系统这样的复杂系统工程来说将有许多人参加研制,有许多任务要完成。

因此,必须有人组织、协调、控制。

系统开发生命期的每一步都必须有检查、评价及决策。

结构化方法的主要特点有:(1)强调需求定义的重要性;(2)严格的 / 预先定义方法;结构化方法的软件生命期分为下面几个阶段:(模型如图(1))●软件项目规划阶段●需求分析阶段●设计阶段●编码阶段●测试阶段●维护阶段图(1)瀑布模型2、面向对象的开发方法因为把用结构化的分析设计和建模方法产生的结果过度到面向对象系统是不自然的,也是困难得,因此面向对象软件开发方法是为客观现实世界(用对象观更容易理解)和对象的程序设计(建立面向对象系统)之间架起的一座桥梁。

面向对象的方法把功能和数据看作是高度统一的。

尽管面向对象的软件开发方法并不是一剂万灵药,但概括的说,它的主要优点有:(1)较好的处理软件的规模和复杂性不断增加所带来的问题。

主要通过以下办法:使用各种类型的抽象;围绕较大的类型进行局部化(如围绕对象和类抽象,而不是围绕函数抽象);使用递归把软件划分成一些小的易处理的小集合。

(2)更适合系统中控制关系复杂,重要而分散的情况。

(3)不是由系统的高层模块起控制作用,而是通过对象间的协作完成特定任务,所以更易管理。

(4)通过使用各种直接模仿应用领域的实体得到的抽象和对象,使规格说明和设计更加完整和易于理解。

(5)通过给软件工程师提供更好的统一化规范(例如,在分析和设计中使用相同的流程、概念、模型和注释),使得开发活动之间的过度变的容易。

(6)通过围绕对象和类进行局部化,提高了规格说明、设计和代码的可扩展性、可维护性、可复用性和结构管理。

(7)通过形成界面更少、更抽象的聚集度更高的模块,提高了软件工程中的模块化和信息隐藏度。

(8)使用面向对象程序设计语言和面向对象数据库管理系统时,便于转入应用。

因为面向对象程序设计语言和面向对象数据库管理系统的使用,大大缩小了代码规模,提高了效率和可复用性。

(9)使开发者的工作更加简单,提高了软件和文挡的质量。

二、软件产业在国内外的发展工业发达国家的计算机系统已经经历了三个不同的发展时期,计算机硬件性能/ 价格比平均每十年提高两个数量级,;与此同时,计算机软件成本却在逐年上升,质量没有可靠保证。

软件已经成为限制计算机系统发展的关键因素。

进入90年代,在经济全球化背境的推动下,信息的交流、资源的共享成为无法抵抗的诱惑。

在90年代,大量已开发出的优秀系统设计,提供了将系统设计成果和重要设计问题的成功解决方案从软件系统中分离出来的可能性。

如果说,数据结构与算法的成果是使编程不在成为天才的专利,那么目前这种分离将使构造系统成为普通人的工作。

我国软件产业起步于80年代,经过十几年的艰苦创业和发展,已具有一定的软件开发和小规模生产能力。

然而,总体水平仍处于初级阶段,企业规模小、人员分散、抗风险能力差。

不可否认,我国软件产业的发展也取得了一定的成绩,但国产软件的比重依然比较低,国产软件的市场占有率只有30%,且主要是应用软件,国产软件销售总额中所占的比重不足1%,并且与发达国家甚至是某些发展中的国家的差距越来越大。

形势严峻,大力发展我国的软件产业迫在眉睫。

三、地理信息系统(GIS)软件开发地理信息系统(简称GIS)是60年代中期开始逐渐发展起来的新技术。

它最初以解决地理问题而起,如今已涉及测绘科学、环境科学、计算机技术科学等,成为一门名副其实的多学科交叉技术。

概括的讲,地理信息系统是输入、处理、管理、输出具有空间特性的信息的计算机软硬件系统。

GIS软件在这十年间发生了很大的变化。

硬件性能的提高,软件技术的演进,计算机体系结构的不断变化,均促进了更为强大、成熟和更为复杂的GIS 软件系统的出现。

想要建造正确的GIS软件产品,开发的方法和技术其实就是上面所介绍的软件工程,它包括GIS软件开发中采用的方法,应用的技术和工具。

(一)项目开发方法随着计算机系统的增多,计算机软件库开始扩展。

这时,程序员发现自己越来越繁忙起来:当发现错误时需要纠正所有这些程序;当用户需求发生变化时需要修改;当硬件环境更新时需要适应。

这些活动统称为软件维护。

在软件维护上所花费的精力开始以惊人的速度消耗资源。

其费用甚至远远超过了系统初始开发的整个费用。

一般说来,GIS是一个大型、复杂的软件系统。

为了确保这样一个大型软件项目的质量,降低开发费用,提高系统开发的成功率,必须借助科学的软件开发方法。

有效的系统开发需要开发小组的共同努力,了解软件开发的方法对参与GIS软件开发项目的所有人员都是非常重要的,其中包括用户和所有GIS 专业人员。

下面介绍三种常用的GIS软件开发方法。

1、线形顺序模型即上面所说的结构化方法(又称生命周期法或瀑布法)。

有时,某一阶段得到的信息会使周期向前一阶段回退。

这种方法存在的最大问题是,用户只有在系统几乎全部完工时才能使用该系统,另一个问题是开发者常常因为在生命开发周期的某个环节发生“阻塞”而影响随后环节的进行。

2、原型法当用户定义了系统的一般性目标,但不能标识出详细的输入、输出、处理及反馈需求,这时可以先建立系统的一个初始版本提供给用户试用,经过用户反馈后,进行改进后成为第二代、第三代版本,一直到整个系统最终完成(如图(2))。

原型法的优点在于它能够很快完成可操作原型并提供给用户,这样用户会变得更积极主动,容易及时发现错误并判断是否满足需求。

3、面向对象的方法如前面软件(五)设计及开发方法中所介绍的面向对象开发方法。

图(2)原型法(二)为GIS项目选用开发方法通常,选用软件项目的开发方法是非常主观的,它受用户需求、个人(组织)喜好、现有的开发工具以及对改变的畏惧等多种因素的影响,当软件开发组织的成员熟悉了一种开发方法以后,简直就象一种信仰,不容易轻易改变。

相关主题