构件软件(精选十篇)
构件软件 篇1
企业信息系统开发是一项复杂的系统工程,它受制于企业运行的外部环境和内部条件,必须考虑企业业务流程的组成及其变化。同时,它又是一项具有重复性与不确定性的工作,其重复性导致在开发过程中进行相同的工作而浪费许多时间与资源,其不确定性又限制了开发过程中资源的复用程度。基于以上原因,传统的通用型商品化软件和完全按客户定制的软件都不能满足以上需求,只有将业务功能单元的共性抽象化、标准化,形成真正意义上的“即插即用”的软件构件,才能有效地解决信息系统的刚性问题。因此,本文针对信息系统构件化问题,详细研究了从大粒度的功能构件中识别软件构件的方法,提出了基于业务行为交互关系的软构件识别方法,并对该方法进行了应用验证。
1 软件构件识别问题概述
从企业信息系统应用与实现的角度来看,构件可以分为大粒度的功能构件和针对于实现的软件构件。功能构件是指一个独立的、自治的(自包容的)业务或处理流程的软件实施,是从用户视角可明确区分的、业务功能方面的独立构成成分,由所有必要的软件单元组成[1]。从业务角度考虑,功能构件包含两部分内容,即业务实体和业务行为。业务实体是业务角色执行业务用例时所处理或使用的事物,业务行为也可称为一个业务活动,它是对业务实体进行的操作,一系列的业务行为共同构成了系统的复杂业务流程。通常情况下功能构件可以按照信息系统功能结构或业务流程进行划分得出。软件构件是指语意完整、语法正确、具有一定集成度并可以重复使用的软件组成单元[2],它是组成功能构件的基本元素。在进行信息系统构件化时,若功能构件所包含的业务行为较少,一个功能构件可以由一个软件构件实现。若功能构件的粒度较大,包含的业务行为及业务实体较多,只用一个软件构件实现显然在实现层上不利于构件的开发与复用,这就需要映射成多个软件构件组合实现,因此如何从功能构件中识别出更有利于复用的软件构件,是本文研究的主要问题。对于该问题,由于软件构件是用来实现具体的业务功能,因此本文认为软件构件识别的主要任务是对软件构件所包含的业务行为的识别,若我们把每个业务行为看成是一个具体的功能函数,对软构件的识别也就体现到软构件应包含的函数上,这样也就明确了软件构件的开发工作,为整个系统的构件化开发起到了指导作用。
2 基于业务行为关系的软件构件识别方法
2.1 识别方法
根据上节软件构件识别问题的描述,功能构件与软件构件间的转换或软构件识别问题可以定义为一种求解软件构件粒度的问题,它的粒度就体现在业务行为数量上。根据 J.R.Hubbs 对不同粒度世界的描述定义:对于问题P,设其论域为X,在X上给定一个等价关系R,对应于R得到X的商集[X],将对X的研究转为对[X]的研究,则称[X]对X来说是问题P对不同世界的描述[3,4]。这样不同粒度世界就可以与数学中的商集概念统一起来,即商集是不同粒度世界的数学模型。基于此,本文采用商空间法来描述软件构件粒度。
设X为功能构件的业务行为集合,商空间法就是以商集作为描述不同粒度世界的数学模型的方法。问题的不同粒度表示对应于不同的等价关系R,只不过是对论域进行不同的划分。因此,本文软件构件的识别问题就可以转换为对X划分的问题,通过研究X中的业务行为,按某种规则确定业务行为之间的等价关系,根据该等价关系求出每个等价类,最终将每个等价类中的业务行为再映射到到相关的软件构件进行实现。
下面介绍业务行为等价关系的确定方法。本文从业务功能角度出发,首先确定基于业务实体的业务行为之间的关系,其关系体现在业务行为与业务实体间的交互上。下面就对这种业务行为之间的关系进行详细分析。
通过对业务行为和业务实体之间关系的分析可知,一般业务行为对业务实体操作分为生成(C)、编辑(E)、检索(I)三种[5]。业务行为之间的交互体现在不同业务行为对业务实体间的交互,本文将其定义为以下几种,如图1所示。
从图1可以看出,业务行为交互可以分为c-e交互、c-i或e-i交互三种。
定义1 c-e交互 这种业务行为之间的交互即为每个业务行为对同一业务实体进行生成或编辑操作。
而c-i或e-i交互又可以分为以下两种情况。
定义2 弱c-i或e-i交互 这种业务行为之间的交互即为其中的一个业务行为对业务实体进行生成或编辑操作,另一个业务行为对该业务实体进行简单检索操作。
定义3 强c-i或e-i交互 这种业务行为之间的交互即为其中的一个业务行为对业务实体进行生成或编辑操作,另一个业务行为对该业务实体进行复杂检索操作。
当然还可以有c-c,e-e、i-i交互,它们与c-e交互类似,归为定义1中。
显然,以定义1形式进行交互的业务行为之间的联系程度极高,应将它们放到同一软件构件内实现。定义2中所说简单检索操作可以理解为通过某几个关键字对数据信息的简单查询,查询过程只需要按照关键字进行SQL语句处理即可。这种查询操作简单容易实现,其通常与生成或编辑操作在一起使用,因此可以和对同一实体的生成或编辑操作放到同一软件构件内实现。定义3中的复杂检索操作是指具有统计性或者多信息连接等复杂的查询操作,这种操作往往作为独立功能环节单独使用,因此应将其与构件的生成或编辑操作放到不同的软件构件内实现。根据如上分析可知,依据业务行为之间联系程度而提出的不同行为隶属不同构件的划分方式考虑到了业务行为之间的关联关系,对于不同程度的关联关系采取不同的划分策略,从而提高构件的复用效果。
以上所说的业务行为是对同一业务实体间的操作,如果两个业务行为没有公共的业务实体,则显然它们之间关联不密切,应将它们在不同的软件构件内实现。根据定义中业务行为之间关系的分析,按照商空间法原理,本文对这种业务行为之间的等价关系进行分类,如定义4。通过对这种等价关系的具体分析和分类,可以从业务行为集合中提取出等价的业务行为类,作为商空间法对论域的划分依据。
定义4 紧密关系 X为业务行为的集合,R为在X上的二元关系,∀x,y∈X,若x,y是定义1或2.2节中的交互关系,则xRy,称R为紧密关系。
推论 紧密关系R是一个等价关系。
证明 根据等价关系定义证明如下:
(1) 显然R满足自反型,即∀x∈X,xRx,x与自己关系密切。
(2) 若一个业务行为与另一个业务行为之间是c-e、弱c-i或弱e-i关系,也就是它们关系密切,那么显然另一个业务行为与该业务行为也属于c-e、弱c-i或弱e-i关系,它们也满足紧密关系,因此R是对称的,即如果xRy,则yRx。
(3) 若一个业务行为与另一个业务行为之间关系密切,而另一个业务行为与第三个业务行为关系密切,根据以上分析可知第一个业务行为和第三个业务行为也是对同一个业务实体进行生成编辑操作或是弱生成编辑检索操作,因此它们满足定义的紧密关系,可知R是传递的,即如果xRy且yRz,则xRz。
若两个业务行为之间满足紧密关系R,那么它们在紧密关系中的一个等价类中,根据对定义1和2.2节的分析可知需将它们放在一个软件构件内实现,这就是利用商空间法依据等价关系对业务行为集合划分的方法。
2.2 基于业务行为关系的软构件识别算法
根据上节定义的等价关系,我们的最终目的是要按照这种等价关系对业务行为集合进行划分,求出等价关系中的每一个等价类,从而识别出所要开发的软件构件,将同一等价类的业务行为在同一软件构件内实现。这种求等价类也就相当于求等价关系R的商集X/R。依据软构件识别方法及离散数学中求解等价关系商集的相关理论,本文提出基于业务行为交互关系的软件构件识别算法,该算法按照如上提出的紧密关系R,利用商集理论知识,求出业务行为的划分。具体算法如下所示,其中[x]代表x的等价类,关系R即为上面所述的业务行为之间的等价关系。
算法1 基于业务行为关系的软构件识别算法
输入:业务行为集合X。
输出:X的商集X/R。
描述:
Step1 确定业务构件所有业务行为的集合X及业务实体。
Step2 根据定义3方法以上对业务行为关系进行分析找到业务行为之间的等价关系R。
Step3 找到任意一个x∈X,For (∀y∈X){ IF xRy then y->[x];//y放入x的等价类中 }。
Step4 X=X-[x];//X集合中除去x的等价类中元素。
Step5 IF(X!= ϕ),Then goto Step3。
Step6 输出确定的所有[x],它们构成X的商集X/R。
2.3 应用举例
本节以某航空制造企业物流管理系统中的到货通知单功能构件为例,介绍该功能模块的软件构件识别过程。
到货通知单是物流过程中的一个重要物流环节,它的主要功能是管理物料从供应商处流入到企业内部的过程信息。业务过程如图2所示。
根据软件构件识别原理,首先我们找到到货通知单功能构件的业务实体与业务行为。到货通知功能构件的业务实体可以划分为到货通知单主表、到货通知单明细表。业务行为划分为增加到货通知单主表、删除到货通知单、修改到货通知单主表、增加到货通知单主表、显示到货通知单明细信息、增加到货通知单明细表、修改到货通知单明细表、删除到货通知单明细表、提交到货通知单、审核到货通知单、签收到货通知单。
根据本文提出的软件构件识别方法对业务行为之间关系进行分析。步骤如下:
Step1 在通知单主表实体的业务行为中,查询到货通知单主表涉及到多表连接信息查询,并且具有某些统计性查询条件,因此它与其它编辑或生成操作是强e-i或c-i交互,因此将其单独放到一个软件构件中。
Step2 删除到货通知单、修改到货通知单主表、增加到货通知单主表属于对业务实体的c-e交互,按照识别算法可知它们属于一个等价类,因此应将它们放到一个构件内实现。提交、审核、签收到货通知单操作本质上都是对到货通知单的某些字段的修改,属于编辑操作,因此与上述操作同样属于c-e或e-e交互,故将它们放到上述构件内。
Step3 在通知单明细表实体的业务行为中,增加到货通知单明细表、修改到货通知单明细表、删除到货通知单明细表是对到货通知单明细表实体的c-e交互,应将它们放到同一软构件内。
Step4 显示通知单明细表信息操作只是简单的查询显示功能,与其它对到货通知单子表的编辑或生成操作属于弱e-i或e-c交互,因此将它和其它诸如增加到货通知单子表等操作放到同一软构件中。
Step5 由算法1得到查询主表、维护审核主表、查询维护明细表三个软件构件,它们每个构件内的业务行为构成一个等价类,其与业务行为的对应关系如图3所示。
从而完成了一个业务行为关系分析(功能构件)、业务行为软件构件识别过程。
3 结 语
构件化技术是企业信息系统软件复用的有效手段。本文从软件构件识别技术出发,基于业务行为对业务实体的不同操作分析了业务行为之间的交互关系,并依据此关系提出了面向功能构件的软件构件识别方法。目前,该研究方法已经在承担的某航空企业物流链管理系统研究课题中得到了验证和应用。应用结果表明:该方法从企业业务系统的各业务实体、业务行为之间的关系分析出发,首先确定业务行为等价关系集合,然后从业已存在的软件构件库中选择相应的软构件进行匹配,从而在基于构件的软件集成开发平台上完成新软件系统的构建。但在应用过程中也存在如下需要进一步研究的问题:(1) 识别的业务构件-软件构件系统的组装方法;(2) 该方法应用领域较窄,需要进一步拓展行业应用领域,丰富业务行为等价关系分类体系和相关软件构件识别方法。
参考文献
[1]Li Ling,Valerdi Ricardo,Warfield John N.Advances in enterprise in-formation systems[J].Information Systems Frontiers,2008,10(5):499501.
[2]Wongthongtham P,Kasisopha N,Chang E,et al.A Software Engineer-ing Ontology As Software Engineering Knowledge Representation[C]//Proceedings-3rd International Conference on Convergence and HybridInformation Technology,2008,2(11):668-675.
[3]Shi-Ming Huang,Shin-Yuan Huang,Yen David.Enterprise Applica-tion System Reengineering:A Business Component Approach[J].Jour-nal of Database Management,2006(17):1-4.
[4]Jain H,Chalimeda N,Ivaturi N,et al.Business Ccomponent Identifica-tion-A Formal Approach[C]//Proceedings of the 5th IEEE Interna-tional Enterprise Distributed Object Computing Conference,Seattle,2001:183-185.
[5]Nath Rajender,Vohra Anil.A Software Component RepresentationModel For Compositional Reuse[J].International Journal of SoftwareEngineering and Knowledge Engineering,2008,18(1):25-36.
[6]张燕平,张铃,等.不同粒度世界的描述法——商空间法[J].计算机学报,2004(3):328-333.
[7]Lee J K,Jung S J,Kim S D,et al.Component Identification MethodWith Coupling And Cohesion[C]//Proceedings of the 8th Asia-PacificSoftware Engineering Conference,Macau,2001:79-85.
[8]Moody Paul1,Gruen Dan1,Muller Michael J.Business activity pat-terns:A new model for collaborative business applications[J].IBMSystems Journal,2006,45(4):683-685.
构件软件工程技术研究论文 篇2
传统的软件开发早已随着时代的发展和人们不断提高的要求而被市场淘汰,新的构件软件工程相比于传统软件有着无法比拟的先进性。
1、组建结构
传统的软件工程的结构体系中,上到主机箱中的中央框架,下到互联网客户端上访问服务器的框架都已经老化,无法满足市场和客户的需求,也无法更好地适应激烈的商业竞争环境。基于构件的软件开发系统为实现传统软件工程无法实现的功能,开发出了新的结构体系。
2、开发过程
传统的软件开发过程重在元素的集合于应用,开发方法老旧,不适用于现今社会。基于构件的软件工程技术实现了分析、设计和运行上的整体协调,并能将多个系统配件循环使用。在开发方法上,基于构件的软件工程将软件的开发方法由传统的单一系统开发过渡到多个应用系统的集合。建立一个多重应用系统需要循环使用很多已经组建好的构件模型,此类模型在不同的时间由不同的技术人员创造出来,拥有着不同的使用目的和方法。此时,模型组建好后,多重应用技术的开发就简化成构件端口和构件组成等基本过程。可见,如果说传统的软件开发是流水似的前进,那么基于构件的软件开发过程就是前进的上升[2]。
3、软件方法论
传统的软件方法论是从面向机器、客户数据、开发过程、应用功能、访问客户端的对象等方面反映应用问题的属性和本质特点。而发展越来越完备的构件软件工程将计算机业务和社会现状分离开来,一定意义上可以说成逻辑与数据的分离。构件软件开发可以提供规范化的端口,是软件发开的过程变成更简单的构件组合,可以说软件方法论是以软件端口为关键点、面向社会的设计方法论。
二、构件软件工程技术的提高
基于构件的软件工程开发可以提高软件生产和运行的效率,减少开发成本并减少开发时间,同时还能够降低软件的后期维护费用,提高软件本身的质量,使得软件更加规范化,增强软件运行的适应性,有利于开发新的领域。但是,我们还要意识到,计算机技术领域还有很多尚未被人掌握的技术,构件软件工程技术并不是一成不变的,应该适应整个市场的需要不断的提高。多方面维护技术的提高。系统维护指的是对软件系统在运行的过程中出现的问题进行检修和改善的过程,希望通过系统维护使系统适应多变的市场环境。系统维护主要分为纠正性维护、完善性维护和适应性维护三方面的维护,通过多方面的维护以使现有的信息体系更加完备。随着市场竞争的愈发激烈,系统的多方面维护变得更加重要。提高系统多方面维护的技术,能够促进构件软件工程整体效率的提高,推动构件软件系统更加完善。
三、结论
面向构件的网构软件研究 篇3
关键词 面向构件;网构软件;研究
中图分类号 TP 文献标识码 A 文章编号 1673-9671-(2010)121-0032-01
自从1969年ARPANET(阿帕网络,Advanced Research Project Agency Network)出现之后,计算机网络的发展日趋加快,在网络时代,出现了网构软件这一新的名词。
1 网构软件的定义和特点
1)网构软件的定义。通常,网构软件(Internetware)是传统软件在分布式的网络环境下的扩展,是在动态、开放、多变的互联网络时代的具有自主性、演化性、协同性、多态性和反应性等许多个性特征的软件。
2)网构软件的特点。在互联网高速发展的新形势下,软件开发人员面临着分布式的动态、多变和开放的网络环境。相对于传统的集中式的封闭环境下的软件来说,网构软件具有许多独有的特点。
第一,自主性。就是分布在所有的节点的网构软件在构件的开发、运行和管理等所有层次都是大体上相互独立的。而传统软件中的各个实体之间具有非常强的依赖性。
第二,协同性。就是所有的网构软件节点之间能够在动态的网络环境中实现相互协作,进行协同工作。可以采取静态连接和动态连接的协同方法。在连接过程中,对于许多事件的发生,可以进行智能地处理,例如,转换不同的协议、控制异步同步通信以及处理安全性和可靠性等等。而传统软件仅仅采用静态的连接。
第三,反应性。就是网构软件可以洞察周围环境的出现的任何改变,随时对于其自身的结构和功能进行改变,从而和用户的需要相适应。而传统软件不能够随时作出变动。
第四,演化性。就是在用户的需要和网络环境发生变动时,网构软件可以实现在线演化,来适应外界环境的变化。
第五,多态性。就是网构软件可以在运行时,结合所有用户的需要,灵活性的提供具有相同的功能和不同的质量属性的服务,能够为用户提供个性化的服务。而传统软件的灵活性非常低。
2 面向构件的网构软件
1)构件的定义。构件是随着面向对象的软件开发的发展而出现的,它是能够独立交付的软件单元,其内部封装了设计和实现的内容,使用接口和其它构件组装形成具有更强大的功能的实体。构件具有动态连接技术和二进制的封装技术等许多特点,可以和现存的系统进行构件的动态更换和升级。为了能够实现数据的交换和信息的传递,程序员不需知道构件的内部构造,而仅仅知道构件提供的接口就可以了。更进一步来说,不同计算机之间的构件也是可以互相调用的。在构件的选择和开发的过程中,应该按照构件的规约进行。
2)网构软件的开发和传统软件的开发的不同之处。根据网构软件的特点,可以发现,相对于传统软件来说,网构软件具有许多优点。传统软件开发方法并不是非常适合网构软件这种网络时代的软件形态的开发。传统软件在相对静态、封闭、稳定的平台下进行开发,大体上主要使用自顶向下的开发方法,使整个系统开发过程都得到了有序的控制。而网构软件的开发环境主要都是动态、多变和开放的网络运行环境,软件的组成元素大体上都是现存的构件,网络平台为开发者提供了一个资源丰富的构件库。网构软件的开发过程就是将这些“无序”的构件根据软件的需求组合成“有序”的软件系统。经过一段时间后,网构软件的反应性和演化性使软件由原本“有序”再次变成“无序”,使开发的过程周而复始、反复进行。
通常情况下,传统软件的开发过程是有序的静态的执行分析、设计、编码、测试和维护这一系列的步骤。而对于网构软件的开发过程来说,是没有顺序的动态的。传统软件和网构软件在软件的维护这一过程存在非常大的不同之处,传统软件开发不重视软件的维护,而网构软件的开发却对于软件的维护工作高度重视。
3)一种基于信任机制的网构软件的构件选择模型。出现了网构软件这一新的名词之后,国内外众多的专家都对网构软件的构件选择模型作出了许多的工作,然而,对于为了构造网构软件而进行合适构件的选择的研究不多。笔者希望进行网构软件的构造可以通过在大量的软件构件中迅速地选择可信的构件,一方面要符合功能需求,另一方面,也要符合一些非功能需求,使网构软件的可信性得到大大的增强。
构件实体对于网构软件所独具的优点可以进行主动的协作,同时,在外界的网络环境或者用户的需求出现改变的时候,可以及时调整和演化,提出了一种基于信任机制的网构软件的构件选择模型,使网构软件的构件选择的速度得到大幅度的提高。采取构件描述的形式,向用户提供构件的接口、环境、功能、各非功能属性信息等,通过这种方式,用户就能够仅仅按照构件描述和构件的可信性来进行构件的快速选择。如果对于构件的描述信息使用一个信任值来进行表达,是不适应网构软件对构件性能、安全性等非功能属性的可信要求的,应该通过许多信任值的使用来评价构件的功能、安全性能等各个属性项描述信息,从而使信任的适用性得到大大的增强。
3 结束语
在当今的互联网时代下,网构软件具有自主性、演化性、协同性、多态性和反应性等有别于传统软件的特性。本文结合软件开发的实践,对于面向构件的网构软件进行了粗略的探讨。通过本文的研究,得到了一定的成果,但是,由于受到笔者的水平的限制以及研究时间和软件开发实践等多种因素的限制,本文的研究也存在一些有待完善之处,对于面向构件的网构软件的研究工作并不能仅仅止步于此,仍然需要下一步的继续深入研究,进行进一步的完善和提高。对于网构软件的研究,仍然还有很长的一段路程要走,是国内外相关的学者和专家们必须认真对待的问题。最后,希望本文能够抛砖引玉,以供读者参考,引起国内外众多专家和学者对于面向构件的网构软件的深入研究。
参考文献
[1]王璞巍,金芝,刘红岩.网构软件实体的功能描述及其发现[J].中国科学(F辑:信息科学),2009,12.
[2]张晓梅,张为群.一种基于信任机制的网构软件的构件选择方法研究[J].计算机科学,2010,02.
[3]周立,陈湘萍,黄罡,孙艳春,梅宏.支持协商的网构软件体系结构行为建模与验证[J].软件学报,2008,05.
[4]吴国全,魏峻,黄涛.基于非确定性推理的网构软件服务质量动态评估方法[J].软件学报,2008,05.
[5]吕建,陶先平,马晓星,胡昊,徐锋,曹春.基于Agent的网构软件模型研究[J].中国科学E辑,2005,12.
作者简介
软件复用与软件构件技术探讨 篇4
1.1 软件的构件技术
软件的构件技术主要包括构件获取、构件的模型、构件描述语言、构件的符合组装、构件的分类和检索、构件的标准化等内容。下面主要从构件的模型、构件的描述语言、构件的分类和检索、构件的复合组装四个方面进行了解。
(1) 构件的模型。构件的模型主要是用来研究构件特征以及构件之间的关系, 比较常见的构件模型有COM、EJB、COR-BA三种。COM是一种二进制的构件接口标准, 它实现了不同语言之间的互相操作和不同代码之间的共享。EJB提供了通用接口, 主要用于开发多层次的、面向对象的、分布式的Java应用系统构件体系结构。CORBA主要是为了实现基于对象软件的互操作性而设计的一种接口标准。
(2) 构件的描述语言。主要是以构件的模型为基础, 解决构件的精确描述, 构件的理解以及构件的组装问题。
(3) 构件的分类和检索。主要是研究构件的分类策略和检验策略以及组织模式, 建立构件库的系统, 支持和保证构件有效的管理。
(4) 构件的复合组装。主要是以构件的模型为基础, 研究与构件的组装相关的内容。主要包括源代码和基于对象相互操作性组装。
1.2 软件构架
软件构架是对软件系统进行的总体规划, 包括对整体结构的设计、构件之间的联系、数据访问的协议、以及各元素之间的物理分布的规划、功能的设计与设计元素的集成等。研究软件的构架有非常重要的作用:研究软件的架构可以发现不同系统间的共性;设计合理的软件架构有利于促进系统的设计;研究各种软件架构可以给软件工程师提供更多的选择;在基于复用的软件开发中, 软件构架可以作为一种高效的软件构件进行复用, 还可以为组装构件提供基础, 有利于促进软件的复用。
1.3 领域工程
领域工程通过储备所需要的能力和基础为相近系统的应用工程进行服务。领域工程包括建立可复用构件的所有活动, 主要分为三个阶段: (1) 领域的分析。这个阶段主要是建立软件复用领域模型, 主要包括确定边界、辨别信息源、分析各个系统的要求、明确软件的共享部分以及软件的可改变部分等内容。 (2) 领域的设计。这个阶段的任务是建立领域构架, 领域构架不是对单个系统的设计, 而是对多个系统的较高层次的设计。建立了领域模型之后, 要进行领域构架设计。领域构架设计要根据领域模型中领域需求的变化而变化。 (3) 领域的实现。领域的实现主要是建立相应的系统机制。根据使用的复用方法和领域的成熟度, 这种系统机制可以是与领域模型或领域构件相关联的一组可复用构件, 也可能是应用系统的生成器。
1.4 软件再工程
由于软件技术的发展, 一些软件系统开始逐渐落伍, 这就需要从这些落后软件中找到有用的软件构件, 充分发挥其价值;一些软件构件随着时间的推移也会出现一些问题, 就需要对其进行维护;对现有软件系统需要进行技术创新, 以适应新的需要。软件再工程通过结合正向和逆向工程以及重构工程建立一个全新的系统形式, 可以很好地解决这些问题。软件再工程的基础就是对包括系统的源代码、系统的运行、系统的设计分析以及文档在内的系统整体进行理解。
1.5 开放系统技术
开放系统技术由最初的工业标准演变成系统软件的可移植性, 再转变为应用软件的可移植性, 直到现在的互操作性。开放系统技术能够在不降低系统效率的基础上降低软件开发成本、缩短开发周期;为软件复用提供了良好的技术支持, 如果构件符合接口标准, 就可以独立地开发构件。
1.6 软件过程
这个过程是为了建造高质量软件所需要完成任务的框架, 也就是形成软件产品的一系列过程。软件过程是软件的整个生命周期, 包括需求的获取、需求分析、设计、实现、测试、发布和维护。软件过程良好的设计可以很好地提高软件开发的开发效率和开发质量。软件过程已经逐步成为软件研究的重要课题。
1.7 CASE技术
CASE技术对软件复用具有重要的支持作用, 其中与软件复用相关的内容有:可复用构件的抽取、描述、分类和存储;检索、提取和组装;可复用构件的度量。
1.8 非技术的要素
非技术的要素主要包括:组织结构设计和组织结构的管理方法适应软件复用需求的方式;软件开发人员知识与技术更新, 软件开发人员的心理素质提升;软件知识产权的问题;软件的应用标准化等。
2 结语
构件软件 篇5
风机制造业中的铆焊结构件占很大比例,有些结构件需要展 开放样后才能进行加工,放样的质量直接影响到产品的质量及加工成本。
展开放样是一种专业性很强的技能,它要求操作者具有画法几何基础知 识、空间想象能力和丰富的实践经验。传统的展开放样是在平面上用作图的方法 来完成的。用这种方法要完成较复杂的展开,比较困难。
随着计算机应 用技术的发展,三维CAD 软件近几年在我国得到广泛应用。本文介绍了一种应用 三维CAD 软件进行结构件展开的方法,使复杂结构件的展开变得简单、方便、快 捷。
1 展开方法概述
三维CAD 软件进行展开放样适用于较为复杂 的、不可展曲面的展开。
用三维CAD 软件进行展开放样大致分为4个步骤 。
1.1 绘制草图
草图是生成曲面和实体的基础。草图绘制要以 设计图样为依据,出于工艺性考虑可以做适当修改;较复杂的图形在二维设计软 件上绘制后,可以插入到草图中;草图绘制后要添加约束。
1.2 建立模型
建模就是在草图轮廓的基础上,通过软件的功能生成面或实体。
由于展开放样在物体的某一特性面上(如中性层面)进行的,因此在建模操作过程 中,一般以曲面的特征进行。用于展开放样的建模方法有:拉伸曲面、放样曲面 、旋转曲面、延伸曲面等。
1.3 分解曲面
草图绘制和建模是放样 的过程,获取数据才是最终目的。
三维CAD 软件只提供了一般镀金件的 展开功能,并没有提供曲面展开的功能。分解曲面就是将曲面分解为若干个彼此 相连的、在不同平面的三角形区域,以这些三角形平面代替曲面,以达到近似展 开的目的。
1.4 绘制展开图
绘制展开图就是将分解曲面形成的, 彼此相连的三角形绘制在同一平面上。展开图要按工艺要求加以整理,并标注尺 寸及相关信息,以指导生产。
2 展开方法特点
用三维CAD 软件进 行展开放样与传统的展开放样方法比较,有如下特点。
2.1 简单
传统展开放样方法在画法几何知识的基础上,研究点、线、面的投影关系。利用 投影法、旋转法、放射线法、截面法、换面法等一系列技巧来求取空间线段的实 长,从而达到展开的目的。这种方法专业性强,不易掌握。划线多,工作量大。
用三维CAD 软件进行展开放样,从原理上与传统的展开放样方法截然不 同。它不再需要画法几何的知识,不需要研究投影关系,也不需要展开的原理、 方法和技巧,
因为在三维CAD软件中生成了要展开的曲面,各种几何关系便可一 目了然。对曲面进行分解,便可获得展开的数据。这种方法绘图量极少,只需要 绘制有关的轮廓线。
2.2 准确
传统展开放样由于方法复杂,划线 多,难免出错。一旦出错,将影响所有后续工作。放样过程的检验也非常困难。
用三维CAD 软件进行展开放样,通过在车图中添加几何关系、标注相关 尺寸,使图中的每个几何要素之间相互约束,提高了绘图的精确性和绘图的速度 。操作过程的每一步都可以修改。修改后,将自动调整其后续的相关过程或提示 有关信息。
2.3 实用
用三维CAD 软件进行展开放样过程简单,一 般工程技术人员都能快速掌握。适合生产中较复杂结构件的展开。
3 展 开实例
风机行业中机翼型叶片和进风口斜锥的展开是比较困难的。虽然有些 资料介绍了机翼型叶片的展开方法,但由于步骤复杂,真正掌握和应用的很少。 用三维CAD 软件进行展开就很容易。
下面以4 -72NolO机翼型叶片展开为 例,简述展开过程。
3.1 绘制擎图,生成模型
首先要在草图中按 照图样绘出叶片两个截面的轮廓图。
按工艺要求,修整截面轮廓。去除 干涉部分,并对两个截面轮廓的起点和终点做适当调整(图1)。
保留中性层线,删除其他线段,在另外草图中画出轮盖曲线。
利用软件 的功能,生成轮盖曲面和叶片曲面。
叶片要按大弧面、小弧面、头部分 别生成各自曲面(图2) 。
3.2 分解副面,标注尺寸
将要展开的曲图分割成若干个彼此相 连的三角形区域。
标注出每个三角形各顶点间的空间距离(图3) 。
3.3 整理数据,绘制国样
根据展开的数据,画出展开平面图。 叶片底边圆整为直线。底边与出口边圆整为90。。
适当圆整尺寸,将展 开曲线分段,标注尺寸(图4)。
4 结论
传统的展开放样是从展开物体的平面投影,经过多次投 影变换的几何方法来求算出实际数据。三维CAD 软件是在生成的三维物体上直接 测量出实际数据。两种方法的原理截然不同.
构件化软件开发探究 篇6
软件复用是解决软件危机的现实途径, 而软件构件技术是软件复用的核心技术。因此, 构件技术对于提高软件的质量、软件的开发效率, 乃至缓解软件危机有极其重要的现实意义。本文主要对构件的各方面进行探究, 来加深对构件化软件开发的理解。
1 构件
构件是具有内部结构和功能的软件构成元素, 可通过标准接口独立提供特定服务, 并且可由一些连接器及相关规则与其它构件组装成符合要求的新软件或构件。广泛地说, 它包括需求分析、设计方案、代码、文档和测试用例以及其它对开发活动有用的中间产品。但一般认为是能够实现功能的软件实体。
那么构件具有以下特点: (1) 完整性。具有自己的内部结构, 并能独立提供有用的功能; (2) 可组装。构件必须易于理解和使用, 能够方便灵活的与其它构件进行联合, 并保证组装后的正确工作; (3) 适应性。构件在组装时要能适应不同的语境进行正确配置, 在运行时能够适应不同的硬件运行平台和软件环境; (4) 针对性。构件要想能够高效合理地被重用, 其功能必须具有领域性和针对性, 粒度不应过大。
2 构件的封装
实现构件化软件开发的重点是统一、灵活、简便地组合构件, 而构件的封装则是核心问题。
2.1 接口
构件是实现特定功能和对外提供服务的实体, 而接口是连接构件、获取信息、驱动构件、提供服务的通道。通过接口, 我们可以修改构件内部状态信息并激活构件内部动作从而实现构件交互。统一的接口, 统一的构件组合方式, 统一的构件使用方法才能够实现构件大规模、快速、灵活的组合, 才能使构件简单、易于理解、减少依赖。
构件是严格封装的, 是依附于接口而存在的, 因此接口一经发布便不能改变。但构件必须具有一定的可演化性, 这是由软件的本质决定的。我们可以通过修改其内部算法或增加新的接口提供新的服务来进行升级演化, 但事物发展有一定的极限, 随着构件修改范围和程度的增加, 其成本往往迅速增加使得我们得不偿失。当现有构件无法满足需求时, 应该进行领域分析论证和设计来开发出新的构件, 而不能一味地迁就接口去修改内部。
2.2 构件规约
构件最重要的特征是它的接口和实现体相互分离, 为方便重用者组合, 这就需要全面介绍构件和供外部使用的接口。也就是构件规约 (component specification) 。但至今构件应该怎样描述仍未达成一致, 构件规约也成为了构件发展需要解决的迫切问题。这个问题的解决需要以构件模型为基础, 能够解决构件的精确描述、理解及组装问题的构件描述语言。
3 构件分类
构件的分类至关重要, 只有合理的分类, 才能实现构件的便捷查找和有效重用。现有的分类方法大致为三类:关键字法, 刻面分类法和超文本组织法。面向对象的概念由于符合事物的规律, 已经深入到各个领域, 我们也可以用面向对象的方法来对构件进行分类。构件可以分为:面向OS内核的构件—用于操作特定系统来提供服务, 面向数据库的构件—用于存取相关信息, 面向网络的构件—用于和Internet打交道, 面向用户的构件—用于界面和程序外壳包装、接收用户的控制。
4 构件库
对大量构件库进行有效的管理, 实现构件快速方便地存储、检索和提取, 是成功复用构件的保证。我们可以这样定义构件库, 它是按照一定的语义和组织结构形成的构件集合, 是构件化软件开发的共享资源。现在的构件库大致有四类:面向项目、面向领域、面向构件共享、面向市场的构件库。其规模越来越大、目标领域越来越清晰和广泛、复用成熟度也越来越高, 由于面向的对象不同, 构件库对构件的管理方式也有所不同。但一般构件库必须满足以下要求:
(1) 可使用性, 支持对构件的管理, 包括增删修改构件和检索提取构件;
(2) 完整性, 包括构件领域完整性和构件信息完整性, 即包含某个领域构件的构件库必须覆盖整个领域, 构件的相关信息必须完整以方便查找理解和重用构件;
(3) 合理组织性, 根据构件库面向的对象和保存的构件分类方法, 合理存储构件, 以便于构件库的扩充、维修和检索;
(4) 互操作性, 构件库应该在一定程度上与其它构件库实现构件的共享。这就要求其存储的构件和对构件的管理要具有一般性和标准性;
(5) 易用性, 库管理员和重用者可以很容易的操作构件库。
5 以体系结构为中心的构件化软件开发
一个软件系统的体系结构定义了组成系统的构件与构件之间相互作用的关系。体系结构是系统实现的蓝图, 为构件的集成组装提供基础和上下文。确定系统体系结构的过程就是分解问题和系统功能的过程, 其最终结果是:构件+构件之间的关系。其开发过程如图1所示。
6 构件化软件技术的现状
目前主流的软件构件技术流派有:微软提出的COM (Component Object Model, 对象构件模型) 、SUN公司提出的E-JB (Enterprise Java Bean) 、OMG提出的CORBA (Common Objec Request Broker Architecture, 公共对象请求代理体系结构) 。它们为应用软件的开发提供了可移植性、异构性的实现环境和平台, 结束了面向对象中的开发语言混乱的局面, 解决了软件复用在通信、互操作等环境异构的瓶颈问题。但它们没有成熟而高效的构件基础平台, 没有方便构件生产、集成的环境。
7 结束语
构件化软件开发是软件产业发展的重要途径, 它将改变软件的生产方式, 引起软件行业的变革。但构件的复用能力、复用程度、构件标准化、智能化、构件的检索和应用等, 都存在不足, 是今后的研究方向。
基于构件的软件开发具有适用范围广、重用效率高的特点, 其效率的发挥需要大量标准的构件群来支持, 这就需要标准统一的构件封装技术规格和应用于具体领域的大量构件。这两个方面现在是构件化发展的阻碍。构件封装技术规格的统一需要资深软件公司和国际性的软件机构深化合作、统筹兼顾来制定实用、有效、科学的标准。领域构件群的创建需要学术组织和有责任有远见的软件公司加大投入, 深化构件化软件开发的应用, 在业界形成模范作用。而中小型软件公司应该建立自己的构件库, 在开发中尽量应用构件化软件开发方法, 总结经验, 为构件化时代的到来和繁盛做准备。有了统一的规格标准和各个领域丰富的构件群, 那么构件化的开发将极大提高软件开发效率, 解决软件危机。
摘要:对软件复用的核心技术-基于构件的软件开发进行了探究, 介绍了构件的发展、定义、构件的封装、分类、构件库以及以体系结构为中心的构件化软件开发, 并提出了一些发展的不足, 最后提出了构件化软件开发长足进步的意见。
关键词:构件,构件封装,构件库,构件分类,体系结构
参考文献
[1]Jacobson.Ivar, Griss.Martin, Jonsson.Patrik.Software Reuse[J].Par-son Education, 1997 (5) .
[2]应时, 周顺, 朱春艳, 等.基于构件库及构件组合的软件重用[J].计算机工程, 1998 (11) .
[3]上海市科学技术委员会.上海软件构件化发展研究报告2003-2004[M].上海:复旦大学出版社, 2005.
[4]杨芙清, 梅宏, 李克勤.软件复用与软件构件技术[J].电子学报, 1999 (2) .
[5]Shaw, M., Garlan, D.Software Architecture:Perspectivesonan E-merging Discipline.Englewood Cliffs[M].NJ:Prentice Hall, Inc., 1996.
基于构件的软件复用技术 篇7
"不浪费, 不匮乏"历来不是软件开发者的追求目标。相反, 人们提倡--将大多数软件项目中的浪费作为同类系统开发经验的一部分。传统的软件开发, 往往把从头开始建立每一个新系统看作为用户/客户服务的最好方法, 而不注意和关心"软件的重复创建"出现的次数。
目前, 不必要的重复创建和在大多数软件项目中出现的资源的巨大浪费, 引起了人们的充分重视, 进而提出了软件复用技术。这种技术就如同绝大多数工程学科中的设计过程--基于构件复用技术。[1]例如:在机械或电子工程师的设计工作中, 他们并不需要对每一个构件从头设计, 而是采用其他系统中使用的经过了试验和测试的构件用于新系统的设计当中。这些构件不仅有像阀门这样的小构件, 而且还包括像发动机、电容器这样的主要子系统。[2]软件复用既是将已有的软件及其有效成分用于构造新的软件或系统。具体来讲, 它不仅是对软件程序的复用, 还包括对软件生产过程中其它劳动成果的复用, 如项目计划书、可行性报告、需求分析、概要设计、详细设计、编码 (源程序) 、测试用例、文档与使用手册等等。[3,4,5]
现在普遍接受的观点是在软件开发中使用这一方法, 将软件视为一种可重复利用的资源, 基于这种复用来提高软件开发投入的回报率。对降低软件产品及其维护的成本、加快系统交付速度和提高软件质量等的一系列要求, 只有通过广泛深入地和系统地软件复用才能达到。
1、软件复用的优势
软件复用最明显的优势在于降低了总体开发成本。不过成本的缩减只是一个潜在的优势, 其他一些软件复用的优势如下:
1、增加的可靠性
在运行着的系统中重复使用的构件要比一个新构件的可靠性高。它们可能已经得到各种环境的实际使用和测试。在最初的构件使用中, 构件在设计和实现上的缺陷都已经暴露出来了, 并得到了修正, 因而构件在复用时的失败次数下降。
2、降低了过程风险
如果构件已经存在, 则复用构件的成本不确定性较之开发组件的成本不确定性减少, 这是项目管理当中的一项重要因素, 因为这降低了项目成本估计当中的不确定性。相对来讲, 大规模的构件如系统复用时这一点更明显。
3、加快开发速度
尽快让系统走向市场要比总开发成本更重要。复用构件加速了系统产品的形成。因为无论开发还是验证时间都缩短了。
4、与标准的兼容
有些标准, 如用户界面标准, 可以实现一组标准构件。例如, 可以将用户界面中的菜单实现为一个可复用组件。所有的应用在用户面前呈现相同的菜单格式。使用标准用户界面增进了可靠性, 因为用户面对相同的用户界面, 出现错误的可能性较低。
5、专家的有效使用
不用专家在不同项目中做重复的工作, 而是让他们开发可复用的组建, 用这些构件来封装他们的知识。
2、软件复用存在的问题
然而, 复用技术也有其自身的成本和相应的问题。这些将制约了复用的引入, 使得通过复用降低总成本的幅度不如预期那么明显。其存在的问题如下:
1、增加的维护成本
如果构件的源代码是不可得的, 那么维护成本就要增加, 因为随着系统的变更, 系统中复用部分的不兼容性在增加。
2、缺乏工具支持
CASE工具集没有对复用技术的支持, 将这些工具与组件库系统集成是困难甚至是不可能的。由这些工具承担的软件过程没有将复用考虑在内。
3、维护一个构件库
填充构件库并保证软件人员能用上这个库是很费钱的。我们当前对构件的分类、编写目录和恢复技术尚不成熟。
4、查找和改编可复用的构件
软件构件必须从库中找出来加以理解, 有时还需要做些改编的工作使之适应当前的环境。软件工程人员对在库中找到构件应该有合理的自信, 然后才能将所找构件纳入正常开发过程中。
这些困难表明系统的复用是不可能自然的形成, 需要在全机构范围内有一个系统的复用计划支持。这已经得到日本多年的实践验证, 复用已成为日本的"工厂式"软件开发方法的重要组成部分。一些公司如惠普等采用复用计划取得了非常大的成功。
3、基于复用的构件软件开发方法
为了实现软件复用, 一定要在软件设计和需求工程过程期间就加以考虑。在编程阶段恰巧发现某一个构件能够满足当前需要, 这种机会式的复用是有可能的。不过, 要系统地使用复用就需要在设计过程中围绕着复用考虑问题, 需要考虑现有设计如何能得到复用, 明确地围绕可复用软件构件来安排设计。
3.1 基于构件软件开发的特点
因此, 与传统的软件开发方法相比较, 基于构件的软件开发方法在应用开发方面具有以下特点:
1、构件是与开发的工具语言无关的。开发人员可以根据特定情况选择特定语言工具实现构件的开发。比如对Internet应用而言, 完成事务逻辑处理计算任务用构件进行开发是首选方案。开发迅速, 调试方便, 编译之后的构件以二进制的形式发布, 跨平台使用。源程序代码不会外泄, 有效保证了构件开发者的版权。
2、通过接口有效保证了构件的复用性。一个构件具有若干个接口, 每个接口代表构件的某个属性或方法。其它构件或应用程序可以设置或调用这些属性和方法来进行特定的逻辑处理。构件和应用程序的连接是通过其接口实现的。负责集成的开发人员无须了解构件功能是如何实现的, 而只须简单的创建构件对象, 和其接口建立连接。
3、构件运行效率高、便于使用和管理。
4、构件的位置可被透明的分配, 构件和使用它的程序能在同一进程中、不同进程中或不同机器上运行[6]。
3.2 构件软件开发方法
基于构件的软件开发以构件为核心, 而且在需求分析阶段就可着手进行构件获取工作, 增加了开发的并行程度, 这从另一个方面提高了开发效率, 图1给出了基于构件开发过程的主要活动[7]。
3.2.1 领域分析/领域建模
通过对特定领域应用软件进行分析, 提炼其中的稳定需求和易变需求, 建立可复用的领域模型。根据用户需求和领域模型, 产生应用系统的需求规格说明。在领域模型的基础上, 提炼面向特定领域的构件。在领域模型的指导下, 通过构件库中存放的面向特定领域的体系结构, 创造适合该领域环境的构件, 并加以提炼入库, 以备将来的复用。构件和连接件往往不是简单的模块或对象, 它们甚至还可能包含复杂的结构, 因此可能需要多层次的构件组合设计。于是, 在得到某个特定领域的构件或者是体系结构之前, 必须对这个领域进行领域分析。领域是指一组具有相似或相近软件需求的应用系统所覆盖的功能区域。领域分析是为一组相似或相近系统的应用工程建立基本能力和必备基础的分析过程。领域分析有助于解决可复用信息的识别、组织和利用的问题, 从而对软件复用提供有力的支持。领域分析有助于在领域内产生具有较高可复用性的构件, 而且通过产生体系结构定义了复用的时机和复用的上下文。这样就对开发者复用这些构件提供了有力的支持, 使复用变得规范、系统和高效。
3.2.2 领域体系结构设计
我们通过对一个领域中的若干应用系统进行领域分析, 识别其共同特征和可变特征, 进行抽象, 形成领域模型, 依据领域模型产生出领域中一类应用系统共同具有的体系结构, 即特定领域的软件体系结构 (Domain Specific Software Architecture, 缩写为DSSA) , 并以此为基础识别、开发和组织可复用构件。这样, 当开发同一领域中的新应用时, 可根据领域模型, 确定新应用的需求约定, 根据特定领域的软件体系结构形成新应用的设计, 然后从以DSSA为基础设计的可复用构件库中选择合适的构件进行组。
3.2.3 领域构件的开发
虽然己存在数量巨大的构件供软件开发人员使用, 但无论存在的构件数量如何丰富, 仍然不能满足特定领域内的所有, 因此有必要开发领域内构件, 领域内的构件有些构件是在整个领域中无须改动便可使用的构件, 有些构件专用于领域内的某一些特定情况, 如专门用于word的拼写检查构件等。领域构件与领域体系结构相适应, 构件间关系较紧密, 它们以构架所确定的方式进行通信, 完成领域相关的功能, 使得它们在特定领域中能得到大粒度的复用。
3.2.4 应用程序开发
基于构件的应用程序的开发过程与搭积木的过程很类似, 一般是先构筑系统的总体软件体系结构, 然后挑选各个构件, 并依次把构件安装到系统中去。软件体系结构是对系统整体结构设计的刻画, 可以作为一种大粒度的、抽象级别较高的软件构件进行重用, 而且它还为软件的组装提供了基础和上下文。基于构件的软件开发方法是在吸取已有的软件开发方法的经验基础上结合构件技术和软件重用技术而产生的一种新的、高效的开发方法。基于构件的软件开发方法与面向对象的开发方法相类似, 它们都采用自顶向下和自底向上相结合的方法, 面向对象的方法支持类的重用, 但基于构件的软件开发方法的底是可重用的构件, 顶是可重用的应用系统原型、应用体系结构, 这样它的重用广度和粒度都大大高于面向对象的开发方法, 从根本上解决了应用软件开发中存在的开发质量和开发效率问题。
4、结束语
尽管复用的思想很简单, 但它的实现却并不简单。今天, 大多数的美国公司还没有规范的复用程序。[8]尽管复用有和程序设计本身同样长的历史, 它是保留着被认可的正确实施的好想法的软件技术, 但是, 和大多数好的意向一样, 复用还没有真正地付诸实施。目前构件复用技术正逐渐走向成熟。人们将在这条复用之路上不断探索。
摘要:软件的可重用技术是提高软件生产率、解决软件危机的良好途径。文章阐述了软件复用技术的优势, 并提出在现阶段软件复用存在的问题, 进而探讨基于构件的复用技术在软件开发方法中的领域分析建模和体系结构设计、构件开发、应用程序开发。
关键词:软件,复用,构件
参考文献
[1].谢冰、王亚沙、李戈等.面向复用的软件资产与过程管理.北京:北京清华大学出版社, 2008.10:35
[2].Ian Sommerville.Software Engineering.北京:机械工业出版社.2004, 210:215.
[3].RogerS.Pressman.SoftwareEngineering:APractitioner'sApproach, SixthEdi-tion.McGraw-HillScience/Engineering/Math.2004, 30:33.
[4].Donald J.Reifer.软件复用实践.北京:机械工业出版社, 2005, 23:54.
[5].Carma McClure.软件复用技术:在系统开发过程中考虑复用.北京:机械工业出版社, 2003, 13:29.
[6].熊风光.基于构件的软件复用技术的研究[D]中北大学, 2005.
[7].朱丽.基于构件化软件重用的ERP系统研究[D]四川大学, 2005.
基于构件的软件工程技术探索 篇8
1 传统软件工程
传统意义上软件工程主要面向过程, 随着科学技术不断发展, 传统意义上软件工程已无法适应当前复杂软件系统, 人们在不断实践过程中, 遇到越来越多软件工程方面问题, 在此基础上, 面向对象软件工程随之出现。上世纪九十年代至今, 网络系统发展迅猛, 又出现了新的问题, 经过不断尝试, 人们采用基于构件这一技术方法来代替面向对象软件工程技术, 以适应新的网络需求。
面向过程同样具备优缺点, 其优点在于自身思维方式完全匹配人们认识规律;而其缺点在于过多注重细节, 而没有从宏观角度更有效把握软件系统。
2 面向对象软件工程
所谓面向对象软件工程指的是充分利用面向对象这一方法, 切合实际, 符合客观规律的网络软件工程。面向对象这一网络技术方法自发现以来便备受关注, 九十年代中期这一方法已逐渐取得其他方法, 而面向对象方法之所以受此亲睐, 是由于其具有以下优点:首先, 面向对象这一方法以认知学角度而言, 符合客观认知规律;其次, 开发软件系统更容易维护与管理, 软件结构更容易理解;再次, 面向对象这一方法所蕴含机制与理论使得软件能够重复利用。
3 构件软件工程概念模型
构件以及基于构件有效解决方法均为电子商务在改革过程中有力驱动力, 是当前网络时代生产企业和开发企业在软件工程出现问题时快速且有效解决方案。通常在行业领域里, 较为复杂情况需要通过几个关键概念经缜密分析, 以此解决相应问题。而这些概念大多是以抽象形式、分解形式、细化形式等不同方式进行有效表达。最为重要的是分解技术, 所谓分解技术即为将一个困难问题细化, 进行分解, 得到很多易于解决小问题, 这些小问题称为单元。分解技术作为软件工程众多技术的一种, 一直以核心作用呈现。软件工程处理方法被称为软件工程结构化设计、软件工程模块化编程、软件工程面向对象程序及设计、软件工程基于构件程序设计, 这些方法所产生单元可称作对象、模块或构件等。
基于构件软件工程开发已成为必然事件, 基于构件软件开发可简称为CBD, 而基于构件软件工程可简称为CBSE。基于构件软件开发所追求目标在于软件随时可利用。在软件开发过程中, 较为标准零部件即为软件生产过程中构件, 软件生产过程中构件在相应生产线上以集成技术得以开发新软件。
3.1 构件分类
软件生产过程中构件主要划分为两种, 一种为粗粒度构件, 另一种为细粒度构件。前者所指为以操作系统为基础平台的构件, 粗粒度构件特点为即插即用。而后者所指为可利用其特点组装新的应用程序构件, 粗粒度构件具体包含通用构件以及专用构件, 粗粒度构件也是基于构件软件开发中探讨的构件。
另外一种构件分类方法主要依据复用软件进行有效划分, 可分为广义层次构件及狭义层次构件。广义层次构件指的是软件复用实体, 而狭义层次构件指的是二进制代码方面构件。
3.2 CBD模型描述
CBD能够面向对象程序设计不断发展。软件工程生产过程中, 任一构件均是一个或几个对象通过合理包装而构成, 并通过接口这一渠道对外提供有效服务。这一接口同网络硬件接口类似, 包括输入和输出接口, 同时还有输入输出接口。基于构件软件开发过程中, 任一构件均是一个或几个对象通过合理包装而构成, 从而形成较为标准零部件, 随后以构件集成开发为环境, 组建完整应用程序。
CBD生存周期主要分为软件开发当中系统分析过程, 软件开发当中蓝图设计与策划过程, 软件开发当中构件准备和构件生产过程, 软件开发当中构件集成和构件测试过程, 软件开发当中构件使用过程及其维护过程等六个有效阶段。在软件开发当中经历系统有效分析及蓝图设计后, 需要马上进行构件准备及构件生产过程, 此时可重复利用通用构件, 然而当软件开发当中遇到特殊情况、需要特殊构件时, 便需马上进行合理生产。在进行系统分析时, 应采取逐级分析方案, 以最短时间发现系统全部需求问题。先将软件工程分解为小单元, 准备每一个小构件, 然后利用集成技术将各个小构件编译成大构件, 直到将所以小构件编译集成为一级构件为止, 最后将得到一级构件进行合理组织, 最终得到应用程序。
摘要:本文从实践角度出发, 以软件工程技术作为对象进行研究, 分析各软件工程相互之间存在差别, 并给出基于构件的软件工程概念模型, 希望对相关工作人员有帮助。
关键词:软件工程,对象,构件
参考文献
[1]黄梅荪, 程慧霞, 吴必文.基于UML统一软件开发过程的研究和实践[J].安徽大学学报 (自然科学版) , 2003 (03) .
[2]李建华, 边馥苓.GIS软件设计演化与求精实现的双向工程模型探讨[J].地理信息世界, 2005 (04) .
基于构件的软件工程技术研究 篇9
1.1 CRBA。CORHA基本上可以分成动态调用与静态调用两种, 前者相较于后者其手段要稍微灵活, 可移植水平也要高一些, 然而, 其调用方式操作起来较为复杂, 速度也非常缓慢。CORBA效率非常低, 而且缺乏一定的安全性, 并非处在一个集成的开发空间内。
CORBA中1DL接口文件被编译成两个方面, 即stub和skeleton 。stub发起的每一次对象请求, 都必须要经过两次及以上的打包、解包, 通过ORB核心, 导致CORBA的效率低下, 这也使得CORBA失去了竞争能力, 如今, 已逐渐消失在主流的软件开发技术的序列。
1.2 COM+。由于并非独立的中间层, 因而COM+无法产生软件界统一的标准, 进而只可以受限在微软内部和兼容软件。COM+无法屏蔽硬件与操作系统之间的差异性, 并给予一个非常一致的构件运行工程环境[1]。除此之外, COM+还没有NET Framework框架和运行时。
COM、COM+并未真正处理好DLL hell问题, 一旦安装新的软件应用程序, 就会有条件损坏最开始运行正常的应用软件程序, 使一些用户感到恐慌, 这也正是COM+最大的不足。
1.3 NET。NET在构件层面上相对而言是最为成功的, 其.NET Framework框架在运行过程中及时翻译, 这也是迈向软件工厂的重要枢纽。然而, 不可否认的是, .NET离真正意义上的软件工厂仍然有一段距离。NET并非一切的软件开发都做到即插即用, 此外, .NET跨语言平台仅限于微软的产品, 离构件软件的开发还有很大距离。
二、基于构件的软件工程技术开发过程
2.1系统分析。基于构件的软件工程技术系统分析的主要原则:
一是抽象:从很多事物中去掉个别的、非本质的特征, 选择一些共同的、本质的特征, 称之为abstaction。Abstaction是生成概念的重要形式。对于分析来说, 抽象原则具有两个层面的作用[2]。一方面, 虽然问题域中事物相较比较复杂的, 然而分析员并不需要明确与解释它们的一切, 只需要分析研究其中与系统目标有关的事物及其本质特征。另一方面, 通过舍弃个体事物在细节上的差异, 选择一样的特征而获得事物的抽象概念, CBD中分类便是如此取得。
二是封装:构件的属性、服务以及接口紧密结合在一起, 让构件可以全力集中而整体地描述一个具体的事物。封装的信息隐蔽作用反映了事物的相对独立性。
三是继承:在CBD系统研究过程中充分运用继承原则, 换言之, 便是每个由一般类与特殊类产生而成的特殊结构。将一般类的构件实例与全部特殊类的构件实例都一起具备的相关属性、服务、接口, 一次性彻底的在一般类展开显式的意义。
2.2蓝图设计。在进行系统分析的背景下, 便能够开展有关的蓝图设计了。由于基于构件的软件开发非常有代表性的特点便在于“搭积木”, 这也在一定程度上和修建一座大楼是非常类同的, 蓝图设计中的蓝图, 顾名思义, 也就是等同于大楼整体的一张设计图。其要首先定义好所需要的一些构件, 把所有系统逐一拆解成为一级子模块, 一旦一级子模块过于繁琐、复杂, 则还可拆解成为二级子模块。
2.3构件集成和测试。独立的构件购买后, 第一, 要实施二级子模块的组装和测试, 将其进行全部组装, 实施两方面的测试, 即兼容、功能。在一切测试都符合标准之后, 就把二级子模块展开组装, 开展一级子模块的兼容性与功能测试。一级子模块测试也符合标准之后, 就需要进行最后的软件系统集成测试。在测试的过程中, 也许会产生在购买构件时产生的部分问题, 可利用发E电子邮件告知构件交易中心, 构件交易中心再通过电子邮件通知构件开发商。
三、结束语
综上所述, 基于构件的软件工程主要是面向对象软件工程的一种可持续化的延续与延伸, 对象这一概念本质上无法真正地体现出工业上标准下的零部件。换言之, 也就丧失了标准接口这个过程, 因而构件概念又是对象概念的取代, 构件的软件涵盖了诸如构件名、属性、服务以及接口四部分, 可以非常出色地体现现实世界中的事物, 而且在组装软件的时候, 支持即插即用。
参考文献
[1]战锴.软件工程技术发展趋势研究[J].电子技术与软件工程, 2013, 13 (14) :51.
基于构件的电机试验软件研究与实现 篇10
在电机测试中, 电机试验分析软件是重要的组成部分, 也是衡量电机测试系统水平的一个重要方面。电机试验软件系统的功能和结构相对比较成熟、统一, 同类型电机的试验差异并不大。我院进行过数百厂次的试验站设计, 积聚了一批既有深厚理论基础又有丰富实践经验的电机试验方面的工程技术人员。成功地将计算机技术、现代测试技术运用到了测试领域, 设计。累积了大量的成熟试验程序, 为电机试验系统的构件化提供了良好的生存土囊。
本文的主要工作旨在提取出各个模块中的主要构件, 让以后的电机试验软件开发中, 研发人员可以快速的进行构件化开发, 而将大部分的精力放在维护构件, 以及满足用户非共性的需求上。
2软件构件技术
2.1构件的定义。什么是构件?这个概念是大家都理解, 但难以去准确定义的一个名词。对于构件的定义, 有很多种。可以概括出构件的一般性定义, 即构件是一个可配置的实体, 可独立开发和交付的软件单位, 其存在的目的是向外界 (应用框架、其它构件或最终用户) 提供服务。
杨芙清, 王千祥等人对构件的定义为:构件是可以被复用的软件实体, 由构件规约与构件实现两部分组成。其中, 构件规约主要由构件模型进行描述。构架是一类特殊的构件, 它刻画了组成系统的构件与构件之间相互作用的关系[1]。
Desmond D’Souza & Alan Wills将软件构件定义为:一个可独立交付的软件单元, 封装了设计和实现的内容, 并向外提供接口, 通过接口与其它构件组装成更大的整体[2]。
Clemens Szyperski认为:一个软件构件是一个仅通过规范的接口和确定的上下文依赖进行组装的单元, 能够被独立地部署和由第三方组装[3]。
2.2构件技术。软件构件技术是以面向对象技术为基础, 以即插即用型构件为中心, 通过构件的组合来建立应用的技术体系, 是通过构件组合支持应用的开发环境和系统的总称[4]。构件技术是支持软件复用的核心技术, 是近几年来迅速发展并受到高度重视的一个学科分支。
其主要研究内容包括[5]:a.构件获取:有目的的构件生产和从已有系统中挖掘提取构件;b.构件模型:研究构件的本质特征及构件问的关系;c.构件描述语言:以构件模型为基础, 解决构件的精确描述、理解及组装问题;d.构件分类与检索:研究构件分类策略、组织模式及检索策略, 建立构件库系统, 支持构件的有效管理;e.构件复合组装:在构件模型的基础上研究构件组装机制, 包括源代码的组装和基于构件对象相互操作性的运行级组装;f.标准化:构件模型的标准化和构件库系统的标准化。
3电机试验软件的构件化
3.1电机试验软件领域特点。电机试验软件一般由五大部件组成, 分别是:界面显示层、试验数据采集层、试验数据分析模块, 试验数据存储模块, 报表输出模块。如图1所示。
图1中各箭头代表数据交互。界面显示层主要是系统和用户之间进行信息交换的媒介, 它实现信息的内部形式与人类可以接受形式之间的转换。数据采集模块主要是将试验分析所需要的原始数据进行采集, 其中包括功率数据、转矩转速数据、温度数据等。试验数据分析模块是将采集来的数据按照电机所对应的国家标准进行数据分析, 并得到一系列的分析结果。数据存储是将采集数据以及分析后的结果数据保存, 方便用户以后查询。报表输出模块是按照用户的输出样式需求将电机的试验数据输出成报表。
对电机进行型式试验的一般过程如下:用户根据需要新建一次试验, 根据电机名牌信息填入电机相关参数, 选择需要进行的试验项目, 然后再对各个试验项逐一进行试验。在单个试验项目中, 在用户的操作之下, 数据采集层自动采集本试验项目所需要的相关数据, 结合用户输入的电机名牌数据一起提供给试验分析层。试验分析层根据试验项目不同而调用不同的试验分析程序, 并将试验分析所需要的原始数据和分析得到的结果数据传送给数据存储层, 数据存储层将数据存储到数据服务器。当一台电机的所有试验完成后, 可以通过报表生产机制生产用户指定格式的报表。
由此可见, 电机试验软件的基本格局稳定, 经过长期的累积开发后, 电机试验软件十分合适进行构件化工作。
3.2构件的提取和开发
3.2.1数据采集层构件。现场所具备的采集设备各式各样, 各种仪表生产厂商都有自己的一套通信规约, 哪怕是同一个厂商不同的产品之间也有差异。但每一次项目所选择的仪表并不是确定, 如果不形成构件化, 那么意味着软件研发人员每次都需要进行数据采集层的研发, 但有时候可能仅仅只是更换了一台仪表。
对于上层架构来说, 数据采集层的业务逻辑比较单一, 不管仪表的型号是怎样的, 我们最主要的就是需要仪表所采集来的数据。根据电机试验所需要的数据不同, 我们将仪表分为三大类, 分别是:功率仪表, 温度仪表, 转速转矩测量仪表。这些仪表都具备一些公共的特性, 我们将其抽取出来形成一个接口, 各个设备的类都实现该接口, 然后由一个公共的设备管理类进行管理。上层架构不需要理会数据采集层具体用的是什么设备, 只需要直接调用设备管理类采集上来的数据即可。
如图2所示, 设备管理类对上层调用提供了四个接口方法, 分别是Initial, Connect, Go, Close。当上层逻辑调用Initial方法后, 设备管理类将会读取本项目的设备配置文件, 得到当前使用设备的一些基本信息, 做一些初始化工作。上层调用Connect方法, 设备会对已经连接进入系统的各个设备进行初始化和连接工作, 并返回设备状态。调用Go方法, 所有设备开始运行, 并实时更新设备管理类中的Data Set数据结构, 供上层逻辑使用。调用Close方法, 会将所有打开并正在运行的设备全部进行关闭工作。Data Set数据结构是电机试验软件所需要的数据总集合, 分为三大块, 一为功率仪表设备、电压、电流、频率、功率因数和功率等, 二为温度数据, 被试电机的各个温度监测点的实时温度值, 三为转速转矩仪表数据, 被试电机的转矩值、转速值和轴功率。
在调用设备管理类的Go方法后, 上层逻辑可以直接在设备管理类中将Data Set拿来使用, 并不需要明白数据是从哪个设备上来, 以及如何来的。设备公共接口中定义了设备的一些基本属性, 加入设备库中的所有设备都需要实现这些基本属性。这些基本属性有Initial、Connect、Set Device、Go、Close、Get Data以及设备状态属性。
在实际项目中使用数据采集层构件时, 首先检查现有的设备库中是否包含了项目中使用的所有设备, 如出现了新的设备, 则需要按照设备公共接口的规约进行设备程序的书写。在根据设备的实际使用情况, 书写配置文件。配置文件一般包含设备的类型、地址等一些简单的基本信息。虽然现场的设备种类很多, 但当设备库中的设备数量达到一定程度后, 数据采集层构件的使用基本上只是书写配置文件而已。
3.2.2数据存储层构件。在电机试验领域一般需要存储的数据包括:用户输入的电机名牌数据, 试验过程中采集的数据, 以及试验分析产生的中间数据和结果数据。我们根据领域建模提炼, 精确定义了电机试验数据存储所涉及到的一些概念和基本数据表。概念包括:试验项目、试验项、试验、电机等, 数据表包括:电机表、名牌数据表、试验信息表、试验与试验项关系表、试验项信息表、试验项目的测量表和试验项目的分析表等。其中, 试验项目的测量表和试验项目的分析表根据各试验项目不同, 其名字也均不相同, 它们存储的是各个试验项目的试验数据。
为了将数据存储层进行模块化、构件化, 将它从繁杂的软件开发中脱离出来形成构件。我们定义了一些数据结构, 以及操作接口。让数据存储层对上层逻辑透明, 也就是说, 上层逻辑不需要理会数据存储在哪儿, 是如何存储, 甚至于底层用的什么数据库都可以不理会。只需要将指定的数据结构填满, 然后调用我们所提供的接口就可以到达存储的目的。为了到达各个数据库构件可以无缝替换, 我们将数据库对上层提供的调用接口定义为相同名字, 所有当更改数据库和数据库构件时, 上层架构无需更改。
如图3所示, 上层逻辑根据试验情况填满试验对应的数据结构, 让后调用数据存储层的对外接口就可以完成一次数据的存储。数据如何存储到数据库, 以及存储在哪张表中则无需过多关注。
3.2.3试验分析层构件。试验分析层的构件化工作在方向性上相对比较明确, 虽然某些电机生产厂商在进行电机试验分析时, 有自己的企业标准, 但绝大部分的厂商都是遵循国家标准。本文以三相异步电机国家试验标准gb1032-2012为准, 构件化出三相异步电机试验分析构件。
该构件包含三相异步电机国标中所有试验项目, 如, 热试验, 负载试验, 空载试验, 堵转试验等等。该构件的存在形式为一个函数库, 软件研发人员只需要调用相应的函数, 并传递分析所需要的参数, 就可以进行试验分析, 得到相应的试验结果。
以空载试验为例, 需要提供给分析函数的参数有:各采集点的空载功率、电压、电流、定子最高温度、以及额定电压、定子初始电阻、初始温度、数据拟合方式。分析完毕后, 将返回额定空载电流、额定空载铁耗、风摩耗和铁耗等等, 一系列国标中所列出的分析结果。
3.3基于构件的电机试验软件开发流程。基于构件的软件开发 (Component Based Software Development, CBSD) 是指利用已开发完成的商业构件 (或可复用的构件) 按需求组装形成软件应用系统的软件开发方法。基于构件的软件开发有时也称为基于构件的软件工程 (Com-ponent Based Software Engineering, CBSE) [4] (图4)
由于基于构件的软件系统的开发是通过选择一系列的构件并将它们组合起来的过程, 它的生命周期与传统的软件系统是完全不同的, 基于构件的软件系统的生命周期可归纳为:需求分析、软件构件的选择、分析和评估;构件的开发、选择和组装;系统集成和测试;软件维护。
在电机试验软件开发中, 需求分析阶段除分析、确定系统构架外, 还要进行构件的评价。首先按需求分析结果, 从构件库中查找所需要的构件, 了解构件的功能、可靠性、可预测性等特性。构件的开发, 如果构件库中的构件, 包括数据库构件、数据采集构件和试验分析构件不能满足用户需求时, 需要对现有构件升级或是重新开发构件。最后按照系统构架组装构件, 得到应用系统, 并对应用系统进行总体测试。
结束语
随着基于构件的电机试验软件平台的搭建, 以后对电机试验软件的开发变成了构件的组装, 电机试验软件的开发重心变成了各构件的维护。基于构件的电机试验软件开发对软件功能性、开发效率、质量、可靠性、可移植性等方面具备良好的支持, 特别是大大减少了软件的开发和维护成本。
参考文献
[1]杨芙清, 王千祥等.基于复用的软件生产技术[J].中国科学:E辑2001, 31, 4:363-371.
[2]Souza D D, Wills A.王慧, 等译.UML对象、组件和框架—CATALY-SIS方法[M].北京:清华大学出版社, 2004:3-32.
[3]Szyperski C, Pfister C.WCOP’96 Summary in ECOOP’96 Workshop Reader[M].Heidelberg:Verlag, 1997:127-130
[4]Sommerville I.高级软件工程[M].第7版.北京:机械工业出版社, 2004:440-459
[5]杨芙清, 梅宏, 李克勤.软件复用与软件构件技术[J].电子学报, 1999 (2) :68-75.