当前位置:首页 > 专题范文 > 公文范文 > 正文

基于构件的软件工程概念模型研究

发布时间: 2022-11-05 15:20:05 来源:网友投稿

摘 要:本文基于笔者多年从事计算机软件的相关研究,以基于构件的软件工程概念模型为研究对象,探讨了面向对象软件工程与传统软件工程之间的差别,给出了基于构件的软件工程概念模型,全文是笔者长期工作实践基础上的理论升华,相信对从事相关工作的同行有着重要的参考价值和借鉴意义。

关键词:构件软件工程面向对象

中图分类号:TP3文献标识码:A文章编号:1674-098X(2011)07(a)-0111-02

软件是信息产业的灵魂,软件工程是软件产业的灵魂。1968年由NATO(北大西洋公约组织)在德国格密斯(Garmish)举行的学术会议上正式提出“软件工程(software engineering)”这一概念以来,软件工程发展极快,取得了丰硕的成果。软件工程分为传统软件工程、面向对象软件工程、软件过程工程和构件软件工程四种。软件工程没有一个权威的定义,比较认可的定义为:软件工程是一门交叉学科,它是解决软件问题的工程,是对软件开发、运作、维护的系统化的、有规律的、可定量的研究方法。软件工程有明确的目标。那就是研制开发与生产出具有良好的软件质量和费用合算的产品。软件质量可用六个特性来评价:功能性、可靠性、易使用性、高效率性、可维护性、易移植性。

软件工程不同于一般工程,具体表现在:

(1)软件是逻辑产品而不是实物产品,所以费用集中在研制开发上而不在生产上。软件不会用坏、磨损、老化,但有一个过时的问题。(2)由于软件是逻辑产品,使得它的功能只能依赖于硬件和软件的运行环境以及人们对它的操作,才能得以体现。(3)软件产品的功能比一般产品的功能复杂得多。(4)软件设计比一般产品复杂得多。具体表现在:功能的多样性,实现的多样性。推动软件工程发展的原动力是提高软件质量和软件开发的生产效率。

1 传统软件工程

传统软件工程采用面向过程,即结构化程序设计方法,既有很多成功的例子,例如DOS操作系统,也有很多失败的例子,例如美国阿波罗登月飞行计划的软件错误。因为传统软件工程不能驾驭复杂系统的开发,曾经一度产生了软件危机。面对越来越复杂的软件系统,传统软件工程已经不能胜任,在实践中,人们呼唤能适应复杂系统开发的软件工程方法学和软件开发技术的诞生,面向对象软件工程应运而生。进入20世纪90年代以来,Internet飞速发展,人们碰到了另一个难题,快节奏地开发基于Web的大型应用程序,面向对象软件工程及其技术已经不能胜任,人们尝试利用基于构件的技术来解决,于是诞生了CORBA,COM及COM+,J2EE及EJB等基于构件的技术和软件开发方法。然而,今天的构件技术离人们追求的目标—— 软件工厂还相差甚远。

面向过程的优点:面向过程的思维方法是符合人类认识规律的,因为人们解决问题,总是一步一步进行的,其中,有顺序,条件和循环,利用这三大结构,可以解决世界上的任何问题。这些方法是优秀的,被面向对象和面向构件所吸收,成为类或构件内部实现的有力工具。面向过程的缺点:着眼于细节,不能很好地从宏观上把握系统。

传统软件工程提出的软件生存周期概念,影响深远。详细的软件生存周期分为软件系统的可行性研究、需求分析、概要设计、详细设计、实现、组装测试、确认测试、使用、维护、退役十个阶段。粗略的软件生存周期分为系统分析、系统设计、编程、调试、使用、维护六个阶段。软件生存周期是一个自然的过程,所有软件开发都或多或少地要遵循这一过程。

2 面向对象软件工程

面向对象软件工程是运用面向对象方法,符合人类认识规律的一种软件工程。20世纪60年代后期出现了面向对象的编程语言,70年代初Xerox公司推出了Smailtalk语言。奠定了面向对象程序设计的基础,1980年出现的Smatltalk-80标志着面向对象程序设计进入了实用阶段。自80年代中期起,人们注重于面向对象分析和设计的研究,逐步形成了面向对象软件工程方法学。典型的方法有ECoad和E.YourDon的面向对象分析和设计,GBooch的面向对象开发方法,J.Rumbaugh等人提出的对象建模技术(OMT),Jacobson的面向对象软件工程等。90年代中期,由GBooth,J.Rumbaugh,Jacobson等人发起,在Booch方法、OMT方法、OOSE方法的基础上推出了统一的建模语言(UML),1997年被国际对象组织(OMG)确定为标准的建模语言。

面向对象方法的出现受到了计算机软件界的亲睐,并成为90年代的主流开发方法。面向对象方法的优点。

(1)从认知学的角度来看,面向对象方法符合人们对客观世界的认识规律很长一段时间里,我们分析、设计、实现一个软件系统的过程与我们认识一个系统的过程存在着差异。例如结构化方法分析的结果是数据流图,设计的结果是模块结构,实现的结果是由程序模块组成的源程序。这些图中的成分或程序模块不能直接映射到客观世界中系统的实体上,也就是说,解空间的结构与问题空间的结构是不一致的。当用户需求有一些小的改变时,这种不一致性将导致分析、设计的较大变化。而面向对象方法则以客观世界中系统的实体为基础,将客观实体的属性及其操作封装成对象。在分析阶段,识别系统中的对象以及它们之间的关系;在设计阶段,仍延用分析的结果,并根据实现的需要增加、删除或合并某些对象,或在某些对象中添加相关的属性和操作,同时设计实现这些操作的方法;在实现阶段,则用程序设计语言来描述这些对象以及它们之间的联系。因此,面向对象方法的分析、设计、实现的结果能直接映射到客观世界中系统的实体上,也就是说,解空问的结构与问题空间的结构是一致的。分析、设计、实现一个系统的过程与认识这个问题的过程是一致的。由于面向对象的分析和设计采用同样的图形表示形式,分析、设计和实现都以对象为基础,因此面向对象开发的各阶段之间具有很好的无缝连接。当用户的需求有所改变时,由于客观世界中的实体相对稳定,实体之间的联系也是基本不变,因此面向对象的总体结构也相对比较稳定,所引起的变化大多集中在对象的属性与操作及对象之间的消息通信上。总之,面向对象方法符合人们对客观世界的认识规律,所开发的系统相对比较稳定。

(2)开发的软件系统易于维护,其体系结构易于理解、扩充和修改面向对象方法开发的软件系统由对象类组成,对象的封装性很好地体现了抽象和信息隐蔽的特征。对象以属性及操作作为接口,使用者只可通过接口访问对象,对象的具体实现细节对外是不可见的。这些特征使得软件系统的体系结构是模块化的,这种体系结构易于理解、扩充和修改。当对象的接口确定以后,实现细节的修改不会影响其他对象,易于维护。同时也便于分配给不同的开发人员去实现,依据规定的接口能方便地组装成系统。

(3)面向对象方法中的继承机制有力支持软件的复用在同一应用领域的不同应用系统中,往往会涉及到许多相同或相似的实体,这些实体在不同的应用系统中存在许多相同的属性和操作。在开发一个新的软件系统时,可以复用已有系统中的某些类,通过继承和补充形成新系统的类。在同一个应用系统中,某些类之问也存在一些公共的属性和操作,也可以通过继承来复用公共的属性和操作。

3 构件软件工程的概念模型

构件和基于构件的方法是电子商务革命的驱动力,它们是Internet时代开发企业级解决方案的方法。在任何行业中,复杂情况通常是通过很多关键概念来解决的。这些概念是通过抽象、分解、选代、细化等方法来表达的。其中的关键是分解技术—— 把一个较大的问题分解成较小的、可管理的单元,这样每一个单元都是可以单独处理的,这个技术是软件工程的许多方法的核心。这些方法可以称为结构化设计,模块化编程,面向对象程序设计,基于构件的程序设计,它们产生的单元称为模块、包、对象或构件。

基于构件软件开发是历史发展的必然,基于构件的软件开发(Component Based Software Development),简称CBD。基于构件的软件工程(Component Based Software Engineering),简称CBSE。CBD追求的目标是软件的“即插即用”。回顾经典的工业化革命,不难得出一些有益的启示:功能再复杂的产品都是由大量标准的零件(领域构件)组成,零件在生产线上装配成一个产品,所有零件在产品中共同发挥作用。分工越细致,专业生产的程度越高,总体生产效率就越高。把这些启示运用于软件开发,那就是:标准的零件就是软件生产的构件,构件在软件生产线上通过集成得到新开发的软件。

3.1 为什么要使用基于构件的软件开发

使用基于构件的软件开发方法,有以下优点。

(1)遏制复杂性;(2)缩短发布时问;(3)提高一致性;(4)复用本领域的最佳方法;(5)提高生产率;(6)提高软件质量;(7)增加项目进度的可视性;(8)支持并行的和分布式的开发;(9)减少维护费用。

3.2 构件的分类

构件有两个层次,粗粒度构件和细粒度构件。粗粒度构件指的是基于操作系统平台的构件,已经实现即插即用的目标。例如,基于Windows平台开发的各种应用软件,Microsoft Office,Windows Media Player, Realone Player,FlashGet,金山词霸,瑞星杀毒软件等等,这些应用程序可以直接安装使用,当不再需要这些应用程序的时候,可以通过自带的卸载程序或通过控制面板将其卸载。很明显,这正是我们所讨论的软件的“即插即用”,只不过这些构件跨平台能力太差,不能直接从Windows平台移植到Unix平台、Solaris平台或其它平台;复用程度也太差,不是我们心目中最求的目标。

细粒度构件指的是可以用来组装应用程序的构件,包括通用构件和专用构件,基于构件的软件开发讨论的就是这种构件。另一种分类是根据软件复用来进行分类的,分为广义构件和狭义构件。广义构件是指用于复用的软件实体,包括分析文档、详细设计、代码实现等。狭义构件特指二进制代码构件,可以用于组装应用程序。

3.3 CBD模型描述

基于构件的软件开发,简称CBD,足面向对象程序设计的继承和发展。一个构件由一个或多个对象经过包装构成,通过接口独立地对外提供服务。接口和硬件接口相似,有输入接口、输出接口和输入输出接口。我们看现实生活的一个例子,可以引发我们的很多思考。人是一个对象,也是经过规范包装的一个构件,其接口是眼、耳、鼻、舌、口、身,其中眼、耳、鼻、舌是输入接口,口是输出接口,身是输入输出接口。人通过输入接口接收信息和对外界的感知,通过神经传递消息,集中在大脑进行加工处理,反馈信息通过神经传递到输出接口,从而完成人对现实世界的认识和感知,完成人与人之问的沟通与协调,这样就构成了整个人类社会。

CBD也是相似的,每个构件都是由一个或多个对象经过规范包装构成的,形成标准的部件,然后在构件集成开发环境下,组装成应用程序。下面我们详细看一下CBD生存周期的概念。

基于构件的软件开发生存周期为系统分析,蓝图设计,构件的准备与生产,构件的集成与测试,使用,维护六个阶段。经过系统分析和蓝图设计之后,就必须进行构件的准备和生产,这时候,可以复用通用构件,对于特定领域的特殊构件,必须自己进行生产,实现领域内的特殊业务逻辑。系统分析的时候,采用自上而下的分析方法,识别出系统的所有需求,把整个系统分解为多个一级子模块,如果需要,再进行更细的详分,标识为二级子模块,三级子模块等等。一般来说,模块的划分不宜太深,二级就可以了,否则理解起来就很困难。当把子模块详细分解为构件之后,在构件集成开发环境下,首先进行构件设计,实现业务逻辑,然后标识接El,进行规范包装,使构件像工业上的标准零件一样。在集成开发环境下,采用和c棚似的两层界面,一层是设计界面,一层是代码界面,构件集成开发环境的成功之处在于,双击任何一个构件,能够将构件和构件代码一一对应起来,从而大大方便编程和调试程序。当把各个小构件准备好了之后,把它们集成编译为更大的构件,直至集成为一级构件,最后把一级构件组装为应用程序。

为了更加直观,可以把包装好的构件用图形界面表示出来。有的构件是独立构件,有的构件由很多小构件组装而成。图1~3用直观的方式描述了这种思想。

3.4 单个构件生产图

如图1。

3.5 基于构件软件开发体系结构

如图2。

3.6 构件软件开发层次结构

如图3。

参考文献

[1]朱三元,钱乐秋,宿为民.软件工程技术概论[M].北京:科学出版社,2007.

[2]R.Otte,P.Patrick,M.Roy[著],李师贤,等[译].CORBA教程[M].北京:清华大学出版社,2009.

[3]朱其亮,郑斌.CORBA原理及应用[M].北京:北京邮电大学出版社,2010.

[4]OMG[著].CORBA服务[M].北京:电子工业出版社,2009.

最新文章

版权所有:博古范文网 2012-2024 未经授权禁止复制或建立镜像[博古范文网]所有资源完全免费共享

Powered by 博古范文网 © All Rights Reserved.。浙ICP备12018771号-1