• 移民专家

    威鲨移民首席专家

    添加移民专家微信,为您提供专属1V1咨询服务
  • 海房专家

    鲲洲海外置业专家

    为您提供海外最新房产投资资讯,定制专属海外置业方案

7*24小时客服热线:

4009-933-922
  • 海那边服务热线电话:
  • 深圳公司:0755-86541970(客户服务)
    地址:深圳市南山区深南大道9819号深铁金融科技大厦19A层
  • 北京公司:010-85951808(客户服务)
    地址:北京市朝阳区光华路soho2期C座C5-3
  • 上海公司:021-61769601(客户服务)
    地址:上海市浦东新区世纪大道1501号国华人寿大厦307-308室
  • 杭州公司:0571-88016401(客户服务)
    地址:浙江省杭州市上城区五星路198号瑞晶国际商务中心2205-1室

软件工程的发展与启示

来自:水畔网行 0 0 2019-05-25

      摘要:软件工程经过近40年的研究与发展,正逐步走向成熟。本文从分析软件危机的产生入手,总结回顾了软件工程的发展历程,并得出了若干有益的启示。

 

1.软件危机的产生与软件工程的由来

      大家知道,软件是随着硬件的发展而发展的,二十世纪六七十年代,由于计算机硬件技术的进步,为计算机的广泛应用创造了条件,并要求软件能与之相适应。当时的软件生产具有个体化、作坊式特点,开发工具落后,开发平台单一,程序设计语言功能差。尤其是软件维护工作,耗费大量的人力、物力和计算机资源。更严重的是,许多程序的个体化特性使得它们无法修改和维护。有的干脆废弃原有系统不用,从头编写新软件。与此同时,软件的规模越来越大,结构越来越复杂,软件管理和维护困难,开发费用不断增加。这种软件开发技术、开发工具和生产方式落后的状况与计算机应用迅速普及和对软件需求日益增加形成了尖锐的矛盾。“软件危机”就这样产生了。

      科学技术发展史表明,当社会需要某一种科学或技术时,这种需要就会变成一种强大的推动力量。软件危机的产生使计算机软件专家认识到软件开发必须以新的方法作指导,原有的软件开发方法必须改变,他们决定把工程技术的思想引入软件开发领域,使软件开发走上工程学科的途径,以摆脱日益严重的软件危机。于是,美国和西欧的一些科学家在1968年的NATO(北大西洋公约组织)会议上第一次提出了“软件工程”这个名词,从此,软件工程作为一门学科正式诞生,人们开始了软件工程的研究。

 

2.软件工程的成型与发展

      软件工程的初步成型首先是从软件工程过程开始的。为获得高质量的软件产品,软件工程过程必须科学、合理。由此,涉及到软件生命周期的描述采用何种模型的问题。

       1970年,Royce提出了瀑布模型,一直到20世纪80年代末,瀑布模型都是被广泛采用的生命周期模型。后来,又相继推出快速原型模型、快速应用开发模型、渐增模型、螺旋模型、喷泉模型和智能模型等。概括地说,软件生命周期由软件定义、软件开发和运行维护等三个时期组成,每个时期又进一步划分成若干个阶段。生命周期模型规定了把生命周期划分成的阶段及各个阶段的执行顺序。但各种模型均有不同的长处和局限性。

       20世纪60年代末,E.W.Dijkstra提出了结构化程序设计的概念,为程序设计方法学奠定了基础;70年代末美国的E.Youdon提出风靡一时的结构化分析方法,指出分析和设计比编码更重要,随后,结构化方法学开始形成并逐步规范。这一技术当时曾被软件界看成是克服“软件危机”的灵丹妙药。其实不然,人们在实践中发现,面对大型软件系统,用结构化方法,系统的重用性、稳定性、扩充性都难以实现。70年代,面向对象方法应运而生,给软件工程增添了活力。这时,软件开发的两种基本思路和方法已经形成,即一种是面向过程(PO),另一种是面向对象(OO)。PO趋向于计算机世界的物理实现;OO则更接近于人们的认识习惯。虽然面向对象技术被普遍认为是一种好的开发工具,但是在它诞生之后的相当长一段时间里却停留在实验室内,很少有人采用此技术来开发大型软件,直到20世纪80年代中后期,一些学者和工程人士才注意到像Smalltalk和C++这样的语言。以后出现了许多应用对象技术成功的案例,但也不乏失败者。

       软件项目的分析设计需要建立模型,建模需要一定的工具或语言支撑。从1989年到1994年间,面向对象建模语言的数量从不到10种增加到50余种。虽然每种建模语言的创造者都在努力推广自己的方法,并在实践中不断完善,但是面向对象方法的用户并不了解不同建模语言的优缺点及它们之间的差异,面对众多的建模语言很难在实际工作中根据应用的特点选择最合适其应用特点的建模语言,人们呼唤一种统一的建模语言。1994年开始, Booch和Rumbaugh开始致力于统一建模语言的研究,1995年,OOSE方法的创始人Jacobson也加入到这项工作中。经过三个人的共同努力,1996年推出了统一建模语言(UML:Unified Modeling Language)。对象管理组织OMG对UML的研究和应用给予了极大的支持,并在1997年11月将几经修改的UML正式作为基于面向对象技术的标准建模语言。此后,UML一直没有停止前进的步伐,不断推出新的版本,目前已成为可视化建模语言事实上的工业标准。

      1990年代开始在基于面向对象技术基础上发展了构件技术,它丰富了重用手段和方法,逐渐成为研究的热点。还有基于净室技术、敏捷技术、重构技术、人工智能技术的一些新型软件工程方法也相继进入研究及应用领域。1995年前后,互联网和图像化接口技术使软件工程发展到一个新水平。随着软件系统规模的扩大和功能的扩展,软件复杂程度也不断增长,数据和应用的动态性与分布性的增强也要求软件不仅有被动响应信息需求的能力,而且能具备某种程度的智能,主动预测、适应乃至积极地寻找途径以支持用户的需求,要求软件能自动合作以完成更加复杂的功能。Agent技术走进软件工程领域,使该类问题的解决有了新的希望。在软件工程的发展历程中,特别值得一提的是计算机辅助软件工程(CASE)。CASE的研究和应用对软件工程过程自动化及其未来发展有着重要意义。在基于网络环境的软件工程开发平台中,CASE技术将越来越重要。

 

3.软件工程学科的基本确立

      如果从学科意义上考察,软件工程在当时还有许多方法理论和实践问题未得到广泛和统一的认识,况且软件工程的定义、原理、方法等诸多基本问题都争论不休,研究软件工程的专家学者陆续提出了上百条关于软件工程的定义、准则或“信条”。1983年,IEEE给软件工程下了个定义,即“软件工程是开发、运行、维护和修复软件的系统方法。”这个定义高度概括了软件工程具有的系统性。Fairly则从学科内涵的角度认为:“软件工程学是为了在成本限额以内按时完成开发和修改软件产品所需要的系统开发和维护技术及管理学科。”Fritz Bauer则强调:“软件工程是为了经济地获得可靠的且能在实际机器上有效地运行的软件而建立和使用的完善的工程化原则。”

      著名的软件工程专家B.W.Boehm综合这些学者们的意见并总结了TRW公司多年开发软件的经验,于1983年提出了软件工程的7条基本原理,即:①用分阶段的生命周期计划严格管理;②坚持进行阶段评审;③实行严格的产品控制;④采用现代程序设计技术;⑤结果应能清楚地审查;⑥开发小组的人员应该少而精;⑦承认不断改进软件工程实践的必要性。这七条基本原理是确保软件产品质量和开发效率的原理的最小集合,在此之前的提出的关于软件工程原理的各种表述都可以蕴涵在这七条原理之中或由之派生。

       针对关于软件工程的各种论说,1993年IEEE进一步给出了一个更全面的定义。软件工程是:①把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;②研究①中提到的途径。

       认真研究上述这些关于软件工程的原理及定义,有助于我们从整体上认识和理解软件工程学。

       软件工程学广泛地研究软件开发、管理与维护中使用的原则、方法和技术,提出了关于开发理论、开发方法、开发工具等方面的一系列研究课题。因此,软件工程学就是研究"如何借助科学的理论和现代工程上的技术来指导软件的开发,从而达到用较少的投资获得高质量的、可靠的软件的目的"的科学。

       软件工程学的发展可以分为四个时期:程序设计时期、软件时期、软件工程时期、后软件工程时期。现在是处于软件工程时期,至于后软件工程时期,人们可以设想会出现许多比现在更为人性化、科学化、高效化和智能化的软件开发环境和工具,“人件”、“智件”及其它先进的观念及方法将指导“软件”开发的全过程,人们在不断探索软件开发的新技术和新方法。总之,软件工程学还是一个发展中的学科。

 

4.软件工程的管理过程逐步规范化和标准化

       所谓软件工程管理,就是要从工程学角度出发,对软件工程的项目范围、项目周期、产品质量、知识资源、人力资源和项目成本等六大要素进行管理,克服软件危机,规避软件风险,提高软件开发效益和质量,降低软件开发成本。通常意义上的过程管理是软件工程管理的主要内容之一。完整意义上的软件工程应该包括四个方面的内容,即方法与技术、工具与环境、标准与规范、组织与管理。

       软件工程管理引起广泛注意源于20世纪70年代中期。20世纪80年代是软件产业化和软件工程规范化的开端。由于计算机硬件及其外部设备的迅猛发展和应用,软件很快发展为独立的产业。软件公司如雨后春笋,遍地成长。软件开发逐步走入专业化、规范化的轨道。程序设计的风格、习惯及其规范和标准也成为软件工程研究的范围。

       能力成熟度模型CMM的推出是软件工程发展史上的重大事件。这是软件工程管理研究的结果。美国Carnegie Mellon大学软件工程研究所(CMU/SEI)主持研究与开发的CMM/PSP/TSP技术,为软件工程管理开辟了一条新的途经。

 

5.启示与总结

       综观软件工程的发展历史,我们可以得到下列启示。

       (1)  研究工程理论和实践需要有系统科学的思想

       软件工程的技术和方法贯穿着系统科学的基本思想。系统科学是探索系统的存在方式和运动变化规律的学问,是对系统本质的理性认识,是人们认识客观世界的一个知识体系。软件工程中的一些重要方法,如结构化方法、面向对象方法等都沿用了系统科学的思想方法。软件工程的发展趋势要求在集成和发展现有的理论和方法的基础上继续深入研究其支撑理论体系,并建立新的理论基础。从系统论和工程系统论的角度进行研究有助于软件工程重大理论和实践问题的突破。

       (2) 软件工程管理任重道远

      大量事实表明,为了解决软件危机,既要有技术措施(方法、工具),又要有必要的组织管理措施。软件工程需要从管理和技术两方面研究如何科学、正确、合理地开发和维护软件。现有的软件项目开发大都还属于粗放型阶段,需要遵循软件工程的思想和方法向产业化和精细化的方向发展。软件工程过程包含一系列软件工程活动,如软件规格说明、软件开发、软件确认、软件演进等。研究软件过程的可视化管理和定量管理以及科学适用的经济分析技术是业内人士面临的迫切任务。

      (3) 软件工程的新技术新方法将不断涌现

      软件工程的发展历程告诉我们,科学技术的发展是没有止境的。软件工程的发展历史本身就是一个不断提出问题又不断解决问题的过程。从软件工程开发方法的进化来看,人们先是从面向一大堆数字信息(DO)到面向过程(PO),再从面向过程提升到面向对象(OO),将来有可能从面向对象演进到面向事实(FO)。而后再又是面向什么(X?--Oriented)呢?谁也无法预测。这一漫长的过程必然导致大量新技术新方法的不断涌现,从而推动软件工程的长久进步。有人提出软件工程发展的终极目标问题,我认为,作为一门学科它有终结的一天,但科学是没有极限的。宇宙的极限就是科学的极限。仅此而已!


喜欢 0
收藏 0
0条评论
查看更多评论

移民工具箱

海那边公众号

新时代移民内参,为您开启 海外优质生活

微信 扫一扫

海那边移民

无需下载看项目,专家答疑

微信 扫一扫