您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 477-软件工程技术发展思索
Vol.16,No.1©2005JournalofSoftware软件学报1000-9825/2005/16(01)0001软件工程技术发展思索∗杨芙清+(北京大学计算机科学技术系,北京100871)ThinkingontheDevelopmentofSoftwareEngineeringTechnologyYANGFu-Qing+(DepartmentofComputerScienceandTechnology,PekingUniversity,Beijing100871,China)+Correspondingauthor:E-mail:yang@cs.pku.edu.cn,;Accepted2004-09-06YangFQ.Thinkingonthedevelopmentofsoftwareengineeringtechnology.JournalofSoftware,2005,16(1):1−7.:Thepapergivessomethinkingaccordingtothefollowingfouraspects:1)fromthelawofthingsdevelopment,revealingthedevelopmenthistoryofsoftwareengineeringtechnology;2)fromthepointofsoftwarenaturalcharacteristic,analyzingtheconstructionofeveryabstractionlayerofvirtualmachine;3)fromthepointofsoftwaredevelopment,proposingtheresearchcontentofsoftwareengineeringdiscipline,andresearchthepatternofindustrializedsoftwareproduction;4)basedontheappearanceofInternettechnology,exploringthedevelopmenttrendofsoftwaretechnology.Keywords:softwareengineering;softwarecharacteristic;industrializedsoftwareproduction;softwarereuse;internetware摘要:在4个方面对软件工程技术的发展进行一些思索:(1)从事物发展规律的角度,揭示软件工程技术发展历程;(2)从软件本质特征的角度,浅析虚拟机各抽象层次的构造;(3)从软件开发的本质,提出了软件工程学科研究的内容,并研究了软件工业化生产模式;(4)以Internet的出现为背景,探索了软件技术的发展趋势.关键词:软件工程;软件特征;软件工业化生产;软件复用;网构软件中图法分类号:TP311文献标识码:A软件工程作为独立的一门学科,其发展已逾30年.20世纪60年代,由于高级语言的流行,使得计算机的应用范围得到较大扩展,对软件系统的需求急剧上升,从而产生了所谓的“软件危机”,即软件开发从质量、效率等方面均不能满足应用需求.为了解决软件危机这一问题,1968年,在NATO会议上首次提出了“软件工程”这一概念,使软件开发开始了从“艺术”、“技巧”和“个体行为”向“工程”和“群体协同工作”转化的历程[1].本文针对该历程中的若干问题进行了一些探索,即从事物发展规律的角度,揭示软件工程技术发展历程;从软件本质特征的角度,浅析虚拟机各抽象层次的构造;从软件开发的本质,提出了软件工程学科研究的内容,并研究了软件工业化∗SupportedbytheNationalNaturalScienceFoundationofChinaunderGrantNo.60033020(国家自然科学基金);theNationalHigh-TechResearchandDevelopmentPlanofChinaunderGrantNo.2001AA114170(国家高技术研究发展计划(863))作者简介:杨芙清(1932-),女,江苏无锡人,教授,博士生导师,中国科学院院士,主要研究领域为系统软件,软件工程,软件工业化生产技术.2JournalofSoftware软件学报2005,16(1)生产模式;以Internet的出现为背景,探索了软件技术的发展趋势.1软件工程技术发展历程30多年来,软件工程的研究和实践取得了长足的进步,其中一些具有里程碑意义的进展包括:•20世纪60年代末~70年代中期,在一系列高级语言应用的基础上,出现了结构化程序设计技术,并开发了一些支持软件开发的工具.•20世纪70年代中期~80年代,计算机辅助软件工程(CASE)成为研究热点,并开发了一些对软件技术发展具有深远影响的软件工程环境.•20世纪80年代中期~90年代,出现了面向对象语言和方法,并成为主流的软件开发技术;开展软件过程及软件过程改善的研究;注重软件复用和软件构件技术的研究与实践.软件是客观事物的一种反映,客观世界的不断变化促使软件技术的不断发展,这种事物发展规律促使软件工程的产生和发展.我们仅从解决软硬件的异构性和各种软件之间的异构性角度,就可窥见软件技术发展的一种途径.如,为屏蔽计算机硬件之间的异构性发展了操作系统,为屏蔽操作系统之间和编程语言之间的异构性出现了支撑软件和中间件,为屏蔽不同中间件之间的异构性发展了WebServices技术等等;随着解决问题的不断深入,易用性和适应性要求的不断提升,以及软件技术的不断发展,还会出现更新、更复杂的异构问题,它的解决会促进软件技术的不断发展.从学科角度来看,要不断提炼所要解决问题的概念,建立相应的模型,并寻找处理方法,从而解决这些问题的概念模型和处理问题逻辑间的映射问题,如图1所示.UNIXWindowsOSLINIXSupportsoftwareÆmiddlewareFortranJavaC/C++ArchitectureframeworkdesignpatternApplications.NET/COMWebservicesJ2EE/EJBTocoverthedifferenceofcomputerhardwaresTocoverthedifferenceofoperationsystemsandprogramlanguagesTocoverthegapbetweenapplicationsoftwareanddevelopmentplatformTocoverthedifferenceofmiddlewaresFig.1Anapproachofdevelopmentsoftwareengineeringtechnology图1软件工程技术发展的一种途径2软件与软件特征软件是对客观世界中问题空间与解空间的具体描述,是客观事物的一种反映,是知识的提炼和“固化”.客观世界是不断变化的,因此,构造性和演化性是软件的本质特征.如何使软件模型具有更强的表达能力、更符合人类的思维模式,即如何提升计算环境的抽象层次,在一定意义上来讲,这紧紧围绕了软件的本质特征——构造性和演化性.在高级语言出现以前,汇编语言(机器语言)是编程的工具,表达软件模型的基本概念(或语言构造)是指令,表达模型处理逻辑的主要概念(机制)是顺序和转移.显然,这一抽象层次是比较低的.高级语言的出现,例如杨芙清:软件工程技术发展思索3FORTRAN语言、PASCAL语言、C语言等,使用了变量、标识符、表达式等概念作为语言的基本构造,并使用3种基本控制结构来表达软件模型的计算逻辑,因此软件开发人员可以在一个更高的抽象层次上进行程序设计.随后出现了一系列开发范型和结构化程序设计技术,实现了模块化的数据抽象和过程抽象,提高了人们表达客观世界的抽象层次,并使开发的软件具有一定的构造性和演化性.近20年来,面向对象程序设计语言的诞生并逐步流行,为人们提供了一种以对象为基本计算单元,以消息传递为基本交互手段来表达的软件模型.面向对象方法的实质是以拟人化的观点来看待客观世界,即客观世界是由一系列对象构成,这些对象之间的交互形成了客观世界中各式各样的系统[1].面向对象方法中的概念和处理逻辑更接近人们解决计算问题的思维模式,使开发的软件具有更好的构造性和演化性.目前,人们更加关注软件复用问题,构建比对象粒度更大、更易于复用的基本单元——构件,并研究以构件复用为基础的软件构造方法,更好地凸现软件的构造性和演化特性.易于复用的软件,一定是具有很好构造性和演化性的软件.3软件工程的主要研究内容从某种角度来说,软件开发的本质就是要实现“高层概念”到“低层概念”的映射,实现“高层处理逻辑”到“低层处理逻辑”的映射.对于大型软件系统的开发,这一映射是相当复杂的,涉及到有关人员、使用的技术、采取的途径以及成本和进度的约束,因此,我们可以把软件工程定义为:软件工程(softwareengineering)是应用计算机科学理论和技术以及工程管理原则和方法,按照预算和进度,实现满足用户要求的软件产品的定义、开发、发布和维护的工程或以之为研究对象的学科[2].软件工程与其他工程一样要有自己的目标、活动和原则,软件工程框架可以概括为图2所示的内容[3].AdoptrightdevelopmentparadigmUsegooddesignmethodProvidehighqualityengineeringsupportFulfileffectiveengineeringmanagementActivityRequirementDesignImplementationVerificationMaintenanceUsabilityCorrectnessEconomicalEngineeringobjectEngineeringprincipleFig.2Softwareengineeringframework图2软件工程框架软件工程的基本目标是生产具有正确性、可用性及开销合宜(合算性)的产品.正确性意指软件产品达到预期功能的程度;可用性意指软件基本结构、实现及文档达到用户可用的程度;开销合宜意指软件开发、运行的整个开销满足用户的需求.以上目标的实现不论在理论上还是在实践中均存在很多问题有待解决,制约了对过程、过程模型及工程方法的选取.软件工程活动是“生产一个最终满足用户需求且达到工程目标的软件产品所需要的步骤”,主要包括需求、设计、实现、确认以及支持等活动.需求活动是在一个抽象层上建立系统模型的活动,该活动的主要产品是需求规约,是软件开发人员和客户之间契约的基础,是设计的基本输入.设计活动定义实现需求规约所需的结构,该活动的主要产品包括软件体系结构、详细的处理算法等.实现活动是设计规约到代码转换的活动.验证/确认是一项评估活动,贯穿于整个开发过程,包括动态分析和静态分析.主要技术有模型评审、代码“走查”以及程序测试等.维护活动是软件发布之后所进行的修改,包括对发现错误的修正、对环境变化所进行的必要调整等.围绕工程设计、工程支持以及工程管理,提出以下软件工程基本原则:4JournalofSoftware软件学报2005,16(1)第1条原则是选取适宜的开发风范.以保证软件开发的可持续性,并使最终的软件产品满足客户的要求.第2条原则是采用合适的设计方法.支持模块化、信息隐蔽、局部化、一致性、适应性、构造性、集成组装性等问题的解决和实现,以达到软件工程的目标.第3条原则是提供高质量的工程支持.提供必要的工程支持,例如配置管理、质量保证等工具和环境,以保证按期交付高质量的软件产品.第4条原则是有效的软件工程管理.仅当对软件过程实施有效管理时,才能实现有效的软件工程.由以上软件工程的概念和框架可以看出,软件设计的主要目
本文标题:477-软件工程技术发展思索
链接地址:https://www.777doc.com/doc-162171 .html