下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程的发展历程TheDevelopmentofSoftwareEngineeringAbstract:Theemergenceofsoftwarecrisishaspromotedtheformationanddevelopmentofsoftwareengineering.ThispaperdescribesthesoftwareprojectfromObjectOrientedSoftwareEngineering,toComponentBasedSoftwareEngineering,toServiceOrientedSoftwareEngineering,andsummarizesthedevelopmentcourseofthepast20years,aswellastherevelationofsoftwareengineeringdevelopment.Keywords:SoftwareEngineering;OOSE;CBSE;SOSE摘要:软件危机的出现,促进了软件工程学的形成和发展。该文介绍了软件工程从面向对象的软件工程(ObjectOrientedSoftwareEngineering)、到基于组件的软件工程(ComponentBasedSoftwareEngineering、、到面向服务的软件工程(ServiceOrientedSoftwareEngineering)的发展,总结其近20年的发展历程以及从软件工程的发展得到的启示。关键词:软件工程;OOSE;CBSE;SOSE1引言随着计算机的发展,计算机的应用日益广泛,计算机软件的开发、维护工作显得越来越重要。如何才能开发出用户满意的软件;如何以较低的成本开发出高质量的软件;怎样使所开发的软件在运行过程中容易维护,以延长软件的使用周期;如何提高软件开发、维护过程中的自动化程度,提高软件开发效率;软件工程如何管理等。这些就是软件工程研究的问题[1]。软件工程是指导计算机软件开发和维护的学科。软件工程的目的是在规定的时间、规定的开发费用内,开发出满足用户需要的、质量合格的软件产品。计算机系统的发展、软件应用的日益广泛和软件危机的困扰促进了软件工程的产生和发展。2软件工程的各个阶段2.1面向对象的软件工程(OOSE)自从1985年首次提出面向对象的概念以来,面向对象技术作为一种全新的软件开发方法开始在软件工程领域越来越被广泛使用。80年代末90年代初,面向对象的软件工程方法呈现百花齐放、百家争鸣的局面。其中,引人注意的是Booch、Rumbaugh和Jacobson为代表的三种面向对象技术。这三种主要的面向对象方法各有优缺点,而希望采用面向对象方法的用户并不深知这些方法的优缺点及相互之间的差异,因而很难根据应用特点选择合适的建模方法和建模语言。于是,出现了UML。面向对象技术在软件工程领域的全面应用即是面向对象的软件工程方法。它包括面向对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试(OOT)和面向对象的软件维护(OOSM)等主要内容。面向对象的分析和设计建模技术是面向对象软件工程方法的重要组成部分[2]。OOA的基本任务是针对问题域和系统责任,运用OO方法,建立一个反映问题域的OOA模型,不考虑与系统实现有关的因素(包括编程语言、图形用户界面、数据库等等),从而使OOA模型独立于具体实现。00D的基本任务是根据已确立的系统对象模型,运用面向对象技术,进行系统软件设计。其中包括两方面的工作:一是把OOA模型直接搬到OOD,做为00D的一个部分;二是针对具体实现中的人机界面、数据存储、任务管理等因素补充一些与实现有关的部分。这些部分与00A采用相同的表示法和模型结构。从00A到00D不存在转换,只有很局部的修改或调整,并增加几个与实现有关的独立部分。00A与00D的工作是连续的、无缝的,允许有一定的相交,也允许从00D返回到00A。OOP的工作就是用同一种面向对象的编程语言把00D模型中的每个成分书写出来。00T即是对于用00技术开发的软件,在测试过程中继续运用00的概念和原则,进行以对象概念为中心的软件测试。00SM。面向对象的软件工程方法为改进软件维护提供了有效的途径。程序与问题域一致,各个阶段的表示一致,从而大大降低了理解的难度;系统中最容易变化的因素(功能)作为对象的服务封装在对象内部,对象的封装性使一个对象的修改对其他影响很小,从而避免了波动效应。00SE可较好的描述系统与其用户之间的信息交换机制,即用于向软件系统提出需求后,软件系统完成这项需求的过程。00SE方法遵循瀑布式的软件开发过程,首先是描述与系统交互有关的用户视图,然后建立分析模型,最后的构造过程则完成交互设计、实现和测试。00SE方法的最大特点是面向用例。用例(usecase)代表某些用户可见的功能,实现一个具体的用户目标。用例代表一类功能而不是使用该功能的某一具体实例。用例是精确描述需求的重要工具,贯穿于整个软件开发过程,包括对系统的测试和验证过程。2.2基于组件的软件工程(CBSE)如何更好地实现软件重用一直是软件工程的重要研究课题。00技术的出现是软件开发技术的巨大进步,但怎样实现大粒度的重用以提高软件的可维护性和可扩展性仍是一个难题,CBSE的发展从根本上解决这一问题:由于C0M/DC0M、JavaBeans/EJB等组件标准的出现,CBSE趋向实用。1990年开始在基于面向对象技术的基础上发展了组件技术,它丰富了重用手段和方法,逐渐成为研究的热点。组件(Component)是可用来构成软件系统的即插即用(plugandplay)的软件成分,是可以独立地制造、分发、销售、装配的二进制软件单元。CBSE是指用装配可重用软件组件的方法来构造应用程序。它包含了系统分析、构造、维护和扩展的各个方面,在这些方面中都是以组件方法为核心的。与传统的软件重用方法比较,CBSE有以下特点⑷:1) 即插即用。组件可以方便地集成于框架中,不用修改代码,也不用重新编译。2) 以接口为核心。组件的接口和实现是分离的。组件通过接口实现与其他组件的框架的交互,组件的具体实现被封装在内部,组装者只关心接口,不必知道其实现细节。3) 标准化。组件的接口必须严格地标准化,这是组件技术成熟的标志之一,目前主要的组件标准有Microsoft的COM/DCOM,Java的JavaBeans和EJB,0MG组织的COR-BA。可以说,计算机界很久以前就有用组件来装配成应用软件的想法,但始终未能成为现实,其中的一个主要原因是组件标准的缺乏。正是由于出现了以上较为成熟的组件标准,才使得CBSE由梦想走向现实。4) 组件通过市场销售和分发。大量成熟的组件可以通过市场购得,市场的竞争机制也可以保证组件生产的质量的提高、种类的增加和价格的降低。CBSE的意义⑸:(1) CBSE从根本上改变了软件生产方式正是福特创造了汽车的流水线制造法,才开创了工业化大规范生产的新纪元。而福特制造的精髓就是将汽车生产的重点从制造每一个零件转到装配,汽车制造者不必自己设计制造每一个零件。大部分零件由外购而来。过去的软件生产方式与旧的汽车生产方式十分相似,开发者往往要编写程序中的绝大多数代码。因此,如果能实现像组装汽车或机器一样地进行软件开发,将是软件工程的巨大进步。(2) CBSE提高了软件重用率,保护了已有的投资生产好的组件可以分发销售给多个其他用户,一方面大大降低单个组件的成本,另一方面大大降低软件开发中的重复劳动。目前在各家企事业单位中存在着许多旧的计算机软件系统,可以将这些系统分成模块后通过组件技术封装起来,成为新系统的组成部分。这种通过标准的接口将旧的程序代码隐藏起来的做法,巧妙地保护了已有的软件投资。(3) CBSE使开发者将更多的注意力放到业务流程和业务规则上去由于开发者的主要工作是构造框架和装配组件,使他们可以摆脱编程的细节问题,将更多的精力投入到与用户交流。另外,一切业务管理者也可以在更高的层次上,用偏近于业务而不是偏近于计算机的语言进行讨论。(4) CBSE开发的系统的维护十分方便由于CBSE是模块化开发,如果某个模块需要修改,只需用修改好的模块替换掉以前的模块,不用重新编译整个系统。若想扩展系统的功能,也只需将符合框架的约束条件的接口要求的扩展模块直接加入到该系统即可。由此可见,CBSE开发的系统的维护和升级都十分方便。(5) CBSE降低了对系统开发者的要求尽管CBSE没有消除系统开发者和使用者之间的分界线,但却移动了这条分界线。这是因为CBSE的开发者主要任务是装配已有模块,不需要有很高的编程技巧。从而使更多的人可以构造适用于自己的系统。在开发环境中,仅仅在构造组件时才需要对编程语言的熟悉和高超的技巧。2.3面向服务的软件工程(SOSE)随着网络技术的普及与网络技术的发展,以网络为基础的信息系统应用与服务已成为国民经济可持续发展、社会生活与国家安全保障的重要支柱。我们正在走向面向服务的软件工程(SOSE)时代。面对市场需求的快速变化,要求企业系统具有敏捷服务、快速重构、资源重用及自由扩充等特点。这样就应运而生了面向服务的架构(ServiceOrientedArchitecture,SOA)[7]。它定义了构成系统的服务,通过描述服务之间的交互提供特定的功能特性,并且将服务映射为具体的某种实现技术。SOA的核心概念是服务,即把软件的某些功能独立出来,使之能独立运行,并且在逻辑关系上和运行的应用系统成为一个层次。它接受来自所有授权对象的请求,使得服务可以同时为多个应用程序提供相同的功能,大大增大软件复用程度,减少开发和维护成本。一个服务是服务提供者为实现服务请求而执行的一个工作单元(应用程序),是一些良定义的操作,也就是说,一个服务实现了一个应用的功能,它是一个粗粒度的、可发现的软件实体,通过一组松散耦合和基于消息的模型与其它的应用或服务交互⑻。如图1所示,SOA主要包括三个主体:服务请求者、服务注册者和服务提供者。图1SOA的体系图服务请求者。又称服务消费者,是需要使用服务的应用程序或其它的服务。通过对注册中心的服务进行查询后,根据接口说明信息并使用某种传输协议与服务绑定并执行服务功能。服务注册者。集中存储服务信息,以便于服务请求者查找。同时服务提供者可以把所要提供的服务在服务注册者处进行注册。服务提供者。即服务的拥有者,它将各种信息及功能封装成用于业务流程的可重用组件的应用程序函数;负责将服务信息发布到服务注册者,响应服务请求者的命令并为之提供高质量的服务。SOA的提出代表着标准化、松耦合、粗粒度的软件体系结构的出现,更代表着不拘泥于具体技术实现方式的一种新的软件开发思想。随着SOA逐渐走向成熟,它正在成为下一代主流开发技术。3联系与区别CBSE与00技术有着密切的关系,实际上00技术对于CBSE既不是必要条件,也不是充分条件。首先,组件不一定要用00语言编写,任何一种可以实现组件标准接口和所需功能的语言都可以用来编写组件。虽然由于00语言的种种特殊点,一般认为它是编定组件的最自然的语言。但国外有一些专家反而认为目前使用的00技术如Java,Corba和ActiveX并不稳定和足够成熟,并不是最佳选择。而且,CBSE扬弃了00技术的某些特点多态性和继承性是00技术的重要特点。但是,对象之间的继承性可能造成系统间的级联影响,即父类的改动会引起相应的子类的性质的自动变化。这些性质对于CBSE显然是不利的。CBSE更重视的是封装性,它希望程序修改导致的影响严格限制在组件的内部。另外,CBSE的涵盖面要广于00技术。CBSE包括了系统分析,系统的设计与建模,项目组织,组件的开发的管理等各个方面,而00技术通常只包含00A,00D,00P这3个方面。00SE是将00技术运用于软件生命周期的各个阶段,每个阶段都有相应的规范模型来描述。必须将00方法学和软件工程基本理论进行有机结合,从而形成完整严密的00SE理论体系,并能够应用于软件工程实践中⑹。00SE具有广阔的应用前景,必定能够大大提高软件生产率和软件可靠性,提高软件质量。而CBSE的出现改变了软件开发的各个环节,它是软件生产技术的巨大进步,它从根本上解决大粒度的软件重用问题和大大提高软件的可维护性、可扩展性,并有效保护已有的投资。4启示与总结纵观软件工程的发展历史,我们可以得到以下启示:1.研究工程理论和实践需要有系统科学的思想软件工程的技术和方法贯穿着系统科学的基本思想。系统科学是一门探索系统的存在方式和运动变化规律的学问,是对系统本质的理性认识,是人们认识客观世界的一个知识体系。软件工程中的一些重要方法,如结构化方法、面向对象方法等都沿用了系统科学的思想方法。软件工程的发展趋势要求在集成和发展现有理论和方法的基础上继续深入研究其支撑理论体系,并建立新的理论基础。从系统论和工程系统论的角度进行研究有助于软件工程重大理论和实践问题的突破。2.软件工程管理任重道远大量事实表明,为了解决软件危机,既要有技术措施(方法、工具),又要有必要的组织管理措施。软件工程需要从管理和技术两方面研究如何科学、正确、合理地开发和维护软件。现有的软件项目开发大都还属于粗放型阶段,需要遵循软件工程的思想和方法向产业化和精细化的方向发展。软件工程过程包含一系列软件工程活动,如软件规格说明、软件开发、软件确认、软件演进等。研究软件过程的可视
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度销售合同标的说明
- 代理采购协议(04版)
- 2024年度稻草渔业养殖饲料供应合同
- 2024年度演艺活动演出场地合同
- 2024年度瓷砖加工生产合同
- 2024年度股权转让及债务承担合同
- 2024年度电商物流与城市物流园区建设合作协议
- 2024年度设备租赁合同的租赁期限及维修责任
- 2024年度网络安全防护与技术支持服务合同
- 信息写作技巧培训
- 成品烟道安装施工方案
- 车库委托出售协议书
- 《路遥人生》读书分享课件
- 九宫数独200题(附答案全)
- 音乐家海顿课件
- 2024年设备监理师考试题库带答案(考试直接用)
- 企业公司合作方案
- 起重机安装安全协议书
- 早产临床防治指南(2024版)解读
- 伯克利-利特温(组织绩效与变革因果关系)组织诊断+模型案例、工具解析
- 学堂乐歌 说课课件-2023-2024学年高中音乐人音版(2019) 必修 音乐鉴赏
评论
0/150
提交评论