软件工程及其实践
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程及其实践
——以GIS中图形编辑为例
朱玲
解放军信息工程大学测绘学院地图制图学与地理信息工程系制本35班
摘要:
本文介绍了目前流行的一种软件开发技术——软件工程技术。通过对其发展过程、有关概念、开发方法及在国内外发展的叙述,说明了软件工程技术给软件开发带来的巨大成就。并以GIS中图形编辑为例,论述了如何应用软件工程的思想开发GIS软件产品。
关键词:
软件工程,GIS软件,面向对象,基类,继承
引言:
50多年来,随着计算机系统的发展,软件开发技术也发生着变化,软件工程首先是为了解决软件危机而提出的。面对着那无穷无尽的现实的和潜在的计算机应用需求,研究如何更快、更好、更多、更方便地开发出各种不同类型、不同目的的软件,这就是软件开发技术和软件工程技术所要解决的一个问题。软件开发技术的巨大成就,已经使软件开发不再是少数逻辑天才或专家的专利,而是广大用户可以参与和直接开发自己的应用项目。
一、软件工程的由来、原则和开发方法
(一)软件工程的概念
软件工程——将系统化的、规范的、可度量的方法用于软件的开发、运行和维护的过程。
它把经过实践和时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,是指导计算机软件开发和维护的工程科学。软件工程的指导思想,是以处理工程问题一样的方法处理软件生产的全过程,利用较少的投资获得高质量的软件产品。
(二)软件危机
计算机软件是一个逻辑的而不是物理的系统,它具有一些与硬件显著不同的特点。开发软件的主要工作集中在定义、开发和维护等方面。60年代以来,
计算机语言和编译技术的成果为程序设计工作带来了方便,又为计算机的广泛应用开辟了道路。然而,我们必须看到软件开发技术虽然出现了许多新事物,但和硬件技术的飞速发展相比,他已经明显落后了。许多年来被人们沿用的手工作坊式软件开发方法一直未曾被突破,这种传统的方法使得许多发现了的问题得不到及时解决。在软件产品的质量、成本以及开发时间等方面无法满足人们的需求,极大的影响着软件行业的声誉。一些典型的问题表现在软件产品质量低劣(如工作可靠性差、用户难以使用、难以维护等),研制软件成本太高,不能按时交付使用等。这些现象一般称其为“软件危机”。
造成“软件危机”的原因是多方面的,从认识方面看,程序设计曾经被当作是一种任人发挥创造精神的技术科学。不少人认为,写出的程序只要能在计算机上得出正确的结果,程序如何编写不应受到任何约束。尽管程序很难被别人看懂,但只要含有精心设计的程序技巧,就是高水平的程序。殊不知这样可供“孤芳自赏”的程序在测试、修改以及维护中会遇到很多困难,而且常常是从新产生错误的祸根。进一步分析技术和管理上的原因,包括:未能充分理解和正确表达用户的需要;采用了不适当的开发方法;没有或未能认真遵循开发规范;测试方法不当;项目管理不利;不重视资料、文档工作等等。
“软件危机”出现于60年代末期,人们认识到那种手工作坊似的软件开发已经行不通了,必须寻找新的技术来指导软件开发。1968年在北大西洋公约组织的一次学术会议上首次提出了“软件工程”这一名称。70年代中期又提出了软件生命期的概念。80年代以来,软件工程的思想得到系统的归纳和整理,提出了许多工程化方法。总之,为了摆脱软件危机,把软件开发向前推进一步,人们认识到出路只有一个,就是软件研制一定要走工程化的道路。
(三)软件工程的发展
软件开发技术和方法的发展,大体经历了三个时代,即程序设计时代、软件时代、软件工程时代。各时代的特点如表(1)所列。
表(1)软件工程的发展
(四)软件开发的基本原则
成功的软件开发总是遵循以下七个原则:
●严格性和形式化原则:
影响软件产品的可靠性、可维护性、复用、可移植性、可理解性等等。
●分隔原则:
指从问题的不同方面分别单独考虑,从而集中精力分别去解决每一方面的问题。
●模块 / 部件化原则:
指划分为较为简单的“单元”,通常称之为模块(module)。
对于开发人员来说,首先要面对的问题是如何在应用领域的应用模型中找出有共性、可通用的部分做成软件构件;第二,构件相互之
间的集成和装配;第三,如何实现构件之间的相互通讯、如何实现数
据共享的问题;第四,软件构件化技术只是刚刚起步,如何实现由以
前的一体化系统到新的构件化系统的转变。
●抽象原则:
指标识出重要的方面,忽略次要细节。
●预期变化原则:
指在软件开发早期就应对软件未来变化的发生情况、范围和时间进行有效的预测。
●通用性原则 / 软件复用原则:
指尽可能集中注意力去揭示那些隐藏在表面之下的、具有一定普遍性和通用性的问题。
●递增模式原则:
指先组成目标的一个子集,完成其开发,提交用户使用得到反馈信息,从而进一步改进。
(五)软件设计及开发方法
1、结构化方法
又称为生命周期法或瀑布法。这是目前最常用也是最成熟的软件开发方法。使用该方法的优点是有严格的一套开发程序,各开发阶段都要求完整的文档记录。
在开发软件系统的整个过程中,需严格按照件生命期的各阶段进行。系统开发的生命周期的划分实际上是系统开发的一种方法论,或者说是组织工作的过程。特别是对计算机信息系统这样的复杂系统工程来说将有许多人参加研制,有许多任务要完成。因此,必须有人组织、协调、控制。系统开发生命期的每一步都必须有检查、评价及决策。
结构化方法的主要特点有:
(1)强调需求定义的重要性;
(2)严格的 / 预先定义方法;
结构化方法的软件生命期分为下面几个阶段:(模型如图(1))
●软件项目规划阶段
●需求分析阶段
●设计阶段
●编码阶段
●测试阶段
●维护阶段
图(1)瀑布模型
2、面向对象的开发方法
因为把用结构化的分析设计和建模方法产生的结果过度到面向对象系统是