摘要:软件工程是一类工程。工程是将理论和知识应用于实践的科学。就软件工程而言,它借鉴了传统工程的原则和方法,以求高效地开发高质量软件。其中应用了计算机科学、数学和管理科学。本文只要阐述软件工程的发展过程及其发展趋势。
关键词:软件工程;模型;迭代;
1软件工程概述
20世纪六七十年代,计算机硬件技术有了很大的发展,为计算机的广泛应用创造了条件,并要求软件与之相适应。当时的软件生产具有个体化、作坊式特点,开发工具落后,开发平台单一,程序设计语言功能差。尤其是软件维护工作,耗费大量的人力、物力和计算机资源,许多程序的个体化特性使得它们无法修改和维护。有的干脆废弃原有系统不用,从头编写新软件。与此同时,软件的规模越来越大,结构越来越复杂,软件管理和维护困难,开发费用不断增加。这种软件开发技术、开发工具和生产方式落后的状况与计算机应用迅速普及和对软件的需求日益增加形成了尖锐的矛盾,由此而产生了“软件危机”。软件危机的产生使计算机软件专家认识到软件开发必须以新的方法作指导,原有的软件开发方法必须改变,他们决定把工程技术的思想引入软件开发领域,使软件开发走上工程学科的途径,以摆脱日益严重的软件危机。于是,美国和西欧的一些科学家在1968年的NATO(北大西洋公约组织)会议上第一次提出了“软件工程”这个名词,是利用工程学的方法开发和维护计算机软件的一门学科。从此,软件工程作为一门学科正式诞生,人们开始了软件工程的研究。
2软件工程发展过程中常用模型
软件的质量因素很多,如正确性、可靠性、容错性、易用性、灵活性、可扩充性、可理解性、可维护性等等。有些因素相互重叠,有些则相抵触,真要提高质量可不容易啊!
软件工程的主要环节有:人员管理、项目管理、可行性与需求分析、系统设计、程序设计、测试、维护等,如图1 所示。
软件工程模型建议用一定的流程将各个环节连接起来,并可用规范的方式操作全过程,如同工厂的生产线。常见的软件工程模型有:瀑布模型(线形模型)(图2),渐增式模型(图3),螺旋模型,快速原型模型等.
最早出现的软件工程模型是线性模型(又称瀑布模型)。线性模型太理想化,太单纯,已不再适合现代的软件开发模式,几乎被业界抛弃。偶而被人提起,都属于被贬对象,未被留一丝惋惜。但我们应该认识到,“线性”是人们最容易掌握并能熟练应用的思想方法。当人们碰到一个复杂的“非线性”问题时,总是千方百计地将其分解或转化为一系列简单的线性问题,然后逐个解决。一个软件系统的整体可能是复杂的,而单个子程序总是简单的,可以用线性的方式来实现,否则干活就太累了。线性是一种简洁,简洁就是美。当我们领会了线性的精神,就不要再呆板地套用线性模型的外表,而应该用活它。例如渐增式模型实质就是分段的线性模型,如图3所示。螺旋模型则是接连的弯曲了的线性模型。在其它模型中都能够找到线性模型的影子。
3软件工程的发展变化
国外很多项目的开发都是基于一些图形化的东西来做的,他们的目的是尽量少写代码甚至不写代码。代码能够通过图形化的方式自动生成,这样的一个好处就是如果用户的需求变化或者业务逻辑发生变化,我们需要做的就是对图形表示的调整,然后重新自动生成代码,这也就是国外开发很注重对项目的概念和逻辑分析的原因。
他们的重点是把业务规则和需求用图形化的方式表现出来,然后通过CASE工具自动生成代码。所以当国人还在不停的开发一个又一个的MIS工具的时候,国外已经把很多精力放到了CASE工具的制作上。
社会进步的一个很明显的现象就是社会分工越来越细,软件的开发也不例外。为什么在软件开发的今天已经不能出现象裘伯君这样的软件英雄的原因也在这里,单凭个人之力,我们也许穷尽有生之年也开发不出象Windows这样的操作系统。因为,当前软件行业的壁垒无非就是两个,一个就是以技术创新取胜,你模仿的了其中的界面,但是你没有办法实现其中的核心功能。结果是你只能购买其技术核心,而你作一些边角工作。不举别的例子,比如VB这样的开发工具,其核心部分是它和第三方提供的COM控件或者是DLL函数库,你所做的就是一个整合的工作。
4软件工程发展的趋势
由于计算能力向服务器端的快速集中,提供高并行计算能力和可用性的中间件技术被广泛采用,甚至已经成为构建大型软件系统的必选项; 软件工程会如何发展呢?我觉得在未来几年我们会看到如下的趋势:
迭代、敏捷,渐成标准:随着软件交付周期的日益加快,迭代化开发已经成为大多数软件开发团队的必选项。但是迭代对整个团队的需求、架构、协同及测试能力都提出了更高的要求,现在许多开发团队都在试图导入迭代化开发的过程中,敏捷可是被看成迭代化开发的一种导入方式,这不过敏捷的范围其实比迭代化开发更大一些。
持续集成,蓄势待发:持续集成是保证迭代化开发质量的主要方式,通过持续集成可以利用自动化的方式来尽量自动地、尽早保证代码质量。随着迭代和敏捷的流行,持续集成相关的工具成为现在市场上的新热点(如持续集成框架IBM Rational BuildForge, 开源软件CruiseControl,代码静态分析工具Klocwork Insight,IBM Rational Software Analyzer等)。
持续集成是一个复杂的系统工程,组织需要首先将现有的配置管理/变更管理工具与Build环境紧密集成并完成自动化Build过程,在根据企业/项目/产品的现状,定义如何自动化地检测软件质量(代码静态分析、单元测试或冒烟测试),并定义需要自动化生成的管理报表。
需求工程,渐成热点:专业化的角色,日益复杂的业务创新,全球分布的团队以及互联网级的交付速度,这些都对需求获取的正确性和有效性提出了更高的要求;同时,需求分析员又可以方便地通过用例分析(use case analysis)将需求体系精华成分析模型。在这一过程中,需求分析员可以更进一步地完善基于用例的需求体系,而不必担心分析模型会污染需求,从而实现需求与分析的分离及有效互动。
参考文献:
[1]史济民等.软件工程.高等教育出版社,2002.
[2]张海藩.软件工程导论.清华大学出版社.
[3]马承志.PowerBuilder 8.0编程实例与技巧.机械工业出版社.
[4]崔杜武.PowerBuilder 8.0 从基础到应用.人民邮电出版社.
扩展阅读文章
推荐阅读文章
花田文秘网 https://www.huatianclub.com
Copyright © 2002-2018 . 花田文秘网 版权所有