基于构件软件开发(精选12篇)
基于构件软件开发 篇1
2007年下半年, 我有幸参加了内蒙古自治区西部区**市一家三甲医院远程医疗会诊技术服务平台的项目开发, 并在其中担任系统平台的设计和部分开发工作, 本项目隶属于**市***三甲医院的专网, 是医院信息化建设的一部分, 在医院信息化建设和发展中具有举足轻重的地位, 随着医疗市场的激烈竞争, 充分面向社会推出自己的专家, 对提高医院的知名度, 提高医院的社会效益和经济效益具有很大的作用, 因而医院对此项目有较高的要求。
由于此平台是一个综合性的在线式基于WEB的远程技术支持平台, 存储着大量信息数据, 提供任务发布和查询, 拓扑图查询, 专家分类查询, 软件支持下载, BBS, VOD视频等服务, 功能的多样化, 必然会在软件开发中出现重复开发的现象, 所以在开发初期我从该系统的需求分析入手, 着重考虑了软件复用, 在开发过程中采用了基于构件的软件开发方法。我将软件设计为B/S结构, 三层体系架构:用户界面层, 应用逻辑层, 数据库层。用户界面层考虑到用户的易用等方面, 用的是浏览器 (如IE等) , 通过ASP.NET语言来实现同应用逻辑层构件交互;应用逻辑层用来处理各种应用功能的实现, 负责事务处理, 主要通过使用COM组件方式实现, 以构建形式进行设计开发, 考虑到以后的扩展和软件的复用性, 大大的提高了开发效率;数据库层用SQL SERVER来实现。
结合我部门的实际情况, 我部门现有的各级软件系统都是基于Windows系列平台, 且开发人员对COM组件技术也比较熟悉, 对开发语言VB.NET也很熟悉, 在这里我选择Microsoft应用服务器的解决方案, 用windows server 2003作为应用服务器, 确定使用Microsoft的COM组件技术来开发该平台。用SQL SERVER 2005为后台数据库, 用ASP.NET+IIS6.0来架构网站。
由于COM组件既可以被嵌入动态WEB页面, 还可以在LAN或桌面环境的VB.NET, VC.NET等应用中使用。另外该组件之间是彼此独立的。当应用需求发生变更时, 可能需要更换中间层的个别COM组件, 但并不影响其他组件的继续使用。组件具有若干对外接口 (属性和方法) , 可以根据不同的应用需求, 来选择使用不同的接口。即使不再使用某些接口时, COM组件本身仍然可以继续使用。同一COM组件可以在不同的应用环境中重复使用。
由于该系统以在线服务支持为主, 主要包括了用户交互操作, 资料输入, 数值处理, 数据存储等几个方面, 我们依据平台的主要功能, 为了节省开发时间和提高维护效率, 我决定把公用的代码模块都作成了组件, 例如把记录操作 (如记录的删除, 增加, 修改等) , 数据库操作, 查询做成用户管理组件, 把用户身份认证和用户类型识别作成用户管理组件, 把所有实现与数据库的连接作成连接组件, 把用户的错误操作, 与系统的交互出错等作成错误处理组件。对于各组件采用VB6语言进行编写, 并写成DLL文件, 同时注册成为COM程序, 供各个组件调用。在数据库连接方面, 我们采用了ADO技术。由于ADO采用了OLE-DB技术, 使能访问各式各样的数据并提高了访问性能。
在该平台开发过程中, 主要设计和实现了以下一些COM组件:
(1) 用户管理组件, 包括身份认证功能
我们主要定制COM组件用户管理组件User Check.dll进行用户管理处理。该组件主要完成两个功能:一是身份认证功能, 主要是提供用户登录时验明身份, 保证应用的安全性。二是根据用户所输入的账户名确定该用户的类别。
因此, 该组件具有两个接口, 每个接口代表组件的某个属性或方法。对用户的登录请求作出相应的处理:如果是普通用户登录则转入普通用户平台, 如果是管理员登录就转入管理员平台。
(2) 查询和提交信息组件
我们主要制定COM组件Query Sys.dll进行查询和提交信息处理。该组件主要完成两个功能:一是提供查询相关信息;二是提交相关信息。
该组件有两个接口, 每个接口代表组件的某个属性和方法。如果用户的请求是查询信息功能, 则将查询信息请求作出相应的处理, 并将查询结果集返回给用户。如果用户的请求是提交注册信息, 则将提交信息请求做出相应处理, 并将信息提交提示返回给用户。
(3) 连接组件
我们主要定制COM组件Conector.dll, 该组件主要完成与数据库的连接。该组件具有一个接口, 那就是确定数据源, 以便自动连接后台数据库。
(4) 错误处理组件
我们主要定制COM组件Cerror.dll, 该组件主要确定错误类集, 该组件具有一个接口, 主要是输出错误信息, 方便用户排错。
我们把编译好的组件, 将其在MST中注册, 并将其分布在服务器上, 这样就可以在设计平台过程中进行调用这些组件了。在本系统中, 我们通过以下几种方式把组件集成到系统中来:
一是连接集成, 即我们将组件直接嵌入ASP.NET主页中, 即在ASP.NET脚本中通过SET对象名=Server.Create Object (“类名”) 来引用, 使此二进制组件可以运行于服务器端。
二是容器集成, 即如果一个组件需要调用另一个组件时, 就在需调用的组件中引用另一个组件的方法。例如在使用查询和提交信息组件时就需要先调用连接组件。
我们结合连接集成和容器集成两种方式来组装系统, 以登录界面为例, 在客户端我们只提供两个输入项和一个提交信息的功能按钮, 主要通过ASP.NET来实现。在服务器端, 主要根据用户输入的信息来进行相应的处理, 这就要调用各种组件。如果用户用错误的账号和用户名来登录, 则系统调用用户管理组件, 错误处理组件和连接组件, 返回非法用户的信息。如果用户以合法的身份登录进入用户平台, 这就要调用用户管理组件, 连接组件。如果管理员以合法的身份登录进入管理员平台, 也要调用用户管理组件, 连接组件。
我们采用COM组件技术进行开发, 给我们带来了很大的好处, 例如:减少了重复输入代码的工件, 缩短了软件的开发周期;同时, 在进行系统维护时, 我们只关心组件的接口参数, 而不用再考虑组件内部的具体实现, 提高了系统的可维护性。在以后的工作中, 如果我们要扩展某些功能时, 也可以重复利用这些组件, 提高了系统的可复用性。
但在运行中, 我们也发现了一此不足之处:由于在ASP.NET中运行的COM组件是二进制代码, 当COM组件工作出错时, ASP.NET不能指出COM组件发生错误的具体位置, 只能简单显示对象创建不成功。这样就给我们在调试该平台过程中增加了难度。
综上所述, 经过整个项目组精心准备和严密实施, 该项目现在已圆满完成, 得到用户的一致好评。回顾项目的实施过程, 我体会最深的是, 随着基于构件技术开发软件的成功实施, 我们在享受它带来的便利的同时, 也要注重企业内部的构件积累。我想, 随着构件技术的不断发展, 标准的构件体系与规范化的建立, 软件企业一定会迎来快速的发展。
摘要:2007年下半年, 我参加了内蒙古自治区西部区**市一家三甲医院远程医疗会诊技术服务平台的项目开发, 担任系统平台的设计和开发工作, 该项目主要是为了充分发挥医疗专家的作用, 使他们能够为更多的普通老百姓看病而开发设计的, 它是一个在线式的远程服务平台。在项目的开发过程中, 我充分的进行基于构件的软件开发, 考虑到软件复用和以后的扩展等方面, 文中介绍了构件平台的选择, 几种COM构件的开发, 平台的实现过程。基于构件的软件开发大大提高了软件的质量, 缩短了开发周期。该项目现在已圆满完成, 得到用户的一致好评。但现在看来, 在开发过程中也出现了一些不足, 有待改进。随着构件技术的不断发展, 标准的构件体系与规范化的建立, 软件企业一定会迎来快速的发展。
关键词:构件,软件开发
基于构件软件开发 篇2
土建构件
土建构建的主要功能是布置槽钢,卵石,预埋件,电缆沟等土建构件,用户执行这个命令后就会出现如下图所示对话框:
1.立面图布置:
“槽钢”系统可满足不同情况下的要求,因为它给了五种槽钢形式,,除了左边第一种情况为平面布置,其余四种情况均为立面布置。
用户需要注意的是在命令行中修改参数时,输入槽钢的宽度,这里注意正负值的选择。正值代表宽度以输入基点往上(或左)延伸。因为平面图中柜子和其下的槽钢一般均是平齐的,所以,如果槽钢布置在柜子的下侧(或右侧),应该取正值;布置在柜子的上侧(或左侧),应该取负值,
“预埋件”系统提供了四种预埋件形式,第一种为平面布置,其余三种均为立面布置。
“电缆沟”系统对电缆沟的布置提供了两种形式:平面布置、立面布置。一般情况下,常用的是电缆沟平面布置,立面的电缆沟可以通过“立面生成”来生成。
2.直接布置:“遮拦网”、“平板”、“卵石”。
3.布置在墙线上:“窗”、“孔”。
3. 电气构件
基于构件软件开发 篇3
【关键词】构件的软件工程技术 理论方法
前言:伴随着计算机技术的发展,各种新型技术已经逐渐开始出现在人们的视野中,人们对于软件开发速度及质量要求越加严苛。传统软件开发形式已经不能够满足现代人对于软件应用的需求,软件市场中所拥有的软件数量及规模正在逐渐加大,软件设计人员开始思考软件系统重复利用的问题,对软件复用技术和基于构建的软件的深入分析,研究基于构件的复用在实际中的应用。
一、软件构件技术
1.1构件
人们对于构件的软件工程技术并不是十分了解,构件也仅仅是一个专属性名词。现阶段,软件设计人员对于构件的定义仍不明确,本文在对于构件的软件工程技术研究中,暂且将构件定义为:构件是软件系统在重复利用过程中的软件实体,主要有两部分构成,分别是构件规约与构件实现,构建规约指的就是构件模型,构件实现指的就是某一件具体的构件。
1.2软件构件技术的应用与构件模型
目前,软件设计人员在开发软件过程中已经开始广泛应用基于构件的软件工程技术。构件的软件工程在软件开发设计应用的过程中有不少企业纷纷加入到软件构件开发队伍中,例如我们都熟知的IBM公司所创建的SanFrancisco工程。
构件模型是对于构建自身特点的描述。构件模型制作过程中对于接口结构及框架、构件之间的关联都有着明确性规定,所构建的模式需要与软件实际构建基本一致,这样才能够保证软件设计人员构件中能够拥有准确性依据。构件模式对软件设计人员在应用构件中的依据,已经成为了构件的指标。随着各个行业对软件质量的要求不断提要,世界各国在对于构件模式研究中已经形成了多种构件模型,其中应用最为广泛的是青岛构件模型与CORBA。
1.3软件构件化
构件技术是基于OO技术上的更高级的抽象的。基于构件技术的软件生产就是把已存在的构件组装到当前软件系统框架结构中而生产出软件产品。所以说构件技术是软件产业化革命的必然发展趋势。其实软件构件化可以被比喻为机械行业的生产建设,通过各种元件组装。软件构件化在实际应用中就是将不同厂家所生产出的构件集成,目的就是通过多样性的编辑语言及硬件平台,完成软件构件任务,让构件可以在不同的计算机上应用,分布在网络环境中的不同结构中。
二、基于构件的软件开发过程
基于构件的软件开发技术在实际应用中与传统软件开发技术之间存在着较大的差异,最为明显的就是基于构件的软件工程技术在实际应用张不需要在使用“算法+数据结构”,而是应用“构件+组装”的形式。
2.1基于构件的软件开发的构件化思想
构件化思想正在改变着软件开发的方法和人们的思维方式。构件的软件工程技术在实际应用中主要是将不同的构件集成封装,软件中所需要具有的单元格在相对应独立的状态下,通过软件开发的形式组装,不同软件所具有的性能之间存在的差异就是构件的集成过程。
2.2基于构件的软件系统的开发方法
构件是独立配置的单元,基于构件的软件工程技术的核心就是构件。在软件设计中,可以根据软件所具有的工程来收集构件,这样就可以缩短软件开发时间,提高软件生产效率。基于构件的软件开发工作主要可以分为两个方面,分别是对于构件的开发与应用程序的开发,有标准的软件体系结构,构件具有标准的接口,构件独立于编程语言是实现构件技术的必备条件。
2.3基于构件的软件系统的生命周期
基于构件的软件工程技术在实际应用中不仅仅能够有效缩短软件开发时间及经济成本,软件系统的生命周期也与传统软件系统的生命周期之间存在着较大的差距。基于构件的软件工程在系统设计中通过对于构件的一系列组合组装,生命周期结构也与传统软件之间存在着本质性差异。基于构件的软件系统的生命周期可以归纳为需求、框架、开发、集成、测试、维护等内容。
基于构件的软件开发研究 篇4
随着软件系统越来越复杂,越来越大型,软件生产不得不适应其变化,要求软件生产越来越标准化,越来越规模化以及节约化,还有越来越工业化。另外要求软件生产由手工作坊式的个人或团体的小规模生产模式不断向专业分工协作生产的社会化的模式转变。但是,我国目前的软件生产模式转变明显不够,工业化程度太低。所以,为了能够对优秀的程序更好地进行持续不断的连续使用,该领域的人员不断探索研究,逐渐形成了基于构件的软件开发,以此来实现对优秀的程序进行持续不断的连续使用。
1 基于构件的软件开发的产生背景
基于构件的软件开发是一种实现软件复用途径,它是基于分布对象技术。各种技术、非技术因素互相联系结合在一起的,共同影响软件复用的实现。如图1所示。普通的软件开发的重点是对程序的编写,而基于构件的软件开发的重点则是基于对已有的构件的组装,从而,可以更快更好地构造系统,降低了维护软件的重点,减少了支持并对大型系统进行升级所需要承担的责任,从而实现了减少软件开发所需要的费用。将应用软件加以分解,分解成一个个独立的单元 , 这种思想是构件技术的基本思想,所以属于应用类型的集成技术思想。
2 基于构件的软件开发的影响因素
基于构件的软件开发会受到诸多因素的影响,本文下面将对其影响因素加以研究。基于构件的软件开发的影响因素主要有 :商品化的产品和技术,基于该技术所集成的系统的质量的提高以及种类的变化 ;二是一些来自于经济方面的压力,不仅需要不断降低系统开发的研发成本,还要尽可能的降低维护所需要的成本 ;三是受到来自构件集成技术的影响,构件虽然无法定义一个清晰明确的概念,但是它是用来构成软件系统的一部分,是一种可以实现随时插入随时使用的软件成分,是由接口、实现和部署这三大要素加以构成的 ;另外,还受到已有软件制品因素的影响,这些软件制品是软件开发组织,用于实现新系统开发研究的。
3 基于构件的软件开发的方法研究
基于构件的软件开发,顾名思义,开发过程离不开构件,且是以构件为核心。基于构件的软件开发进行构件收集工作时,可从需求分析阶段开始,加大了开发的效率,使开发进程变得更加高效迅速。基于构件的软件开发包括两个方面,一方面是对构件的研究开发,对目标用户的需求加以分析,然后进行构件的设计与实现,最后是成品构件 ;还有一方面就是对应用程序的研究开发,即根据功能的要求,然后基于构件的设计,对构件加以装配,在根据应用程序,最后才是对目标用户的需求加以分析。基于构件的软件开发中包括对软件系统的集成,对软件系统的集成是指在构件开发、选择和组装完成后,把相应的构件加以组装,对构件加以连接和约束,可以通过编写一些简单的代码加以实现。对系统的测试则是指测试系统的功能和稳定性,通过测试不仅可以查看系统是否能够符合所需要的要求,还可以查看有无漏洞,从而可以发现漏洞并加以修补 ;系统维护可以分为纠正性、完善性和适应性维护,通过对系统的维护可以提高软件的运行水平,让系统更加灵活,从而可以应对复杂的变化活动,从而可以更加高效科学的工作。基于构件的软件开发技术具有明显的特点,其构件是由专业的开发商提供的,所以质量有保证,另外,还可以将风险部分分散给供应商,进行风险分担,构件的维护工作是由制造商加以负责。但是,实物都是相对的,有利必有弊,其缺点是依赖于成熟的构建市场,必须要遵循一定的开发规范。
4 基于构件的软件开发与传统软件开发的比较
基于构件的软件开发与传统的软件开发有很大的区别,基于构件的软件开发,其开发方法是面向重用的,是先对目标用户的需求加以分析,然后再设计与实现,也是面向接口,面向连接的。而传统对软件的开发方法则是从软件片开始的,这种软件片粒度很小,这种技术属于面向对象的技术。基于构件的软件开发具有特别显著的优点,就是可以大大减少软件开发所花费的时间以及软件开发所需要的成本。另外,基于构件的软件开发的生命周期不同于传统的软件开发,它的生命周期按照不同的阶段可以划分为对需求的分析,选择、构建并对软件的架构加以分析和评估,其中,构架又分为应用层和构件层 ;然后是对构件加以开发,之后是选择和组装构件,还有软件系统的集成、测试、维护,其中对系统的集成是对构件加以组装、连接和约束,对系统的测试是指测试系统的功能和稳定性,系统的维护又分为纠正性维护、完善性维护和适应性维护三种。基于构件的软件开发技术与传统的软件开发技术在体系结构上也有很大的区别,软件体系结构是系统设计成败的关键。传统的应用系统体系结构,很难适应目前企业的商业环境,其从集中式框架开始,直到通过网络访问服务器的框架,都难以适应企业的商业环境。在开发过程上也有很大的区别,两者在重用元素和开发方法上都有很大的区别,软件被重视重用是从构件出现之后开始才得到了根本改变。在软件方法学方面上的区别在于,传统的软件方法学是从面向机器、面向数据、面向过程、面向功能、面向数据流、面向对象等,这一系列不断提出、不断创新的观点来反映问题的本质,而基于构件的软件开发技术的软件方法学要比传统软件开发技术丰富得多,基于构件的软件开发技术是即插即用,基于体系结构,以接口为中心,将构件按照一定的依据加以组合,另外,基于构件的开发技术是通过把自顶向下和自底向上这两种方法结合起来,从而进行软件开发。
5 结束语
随着软件系统逐渐复杂化和大型化,基于构件的软件开发的优势会越来越明显。本文主要介绍了基于构件的软件开发研究的产生背景,影响因素,如构件集成技术的影响、已有软件制品因素的影响等。基于构件的软件开发虽然已经较为普遍,但是我国目前仍然没有开发商用构件的公司,乃至全世界目前也没有,另外,基于构件的软件开发目前仍存在一些问题亟待解决,所以,基于构件的软件开发仍然需要不断的发展。
摘要:基于构件的软件开发研究简称为CBSD,也可称之为基于构件的软件工程,它不仅是目前软件开发技术的一个热点,同时也是一个需要不断克服的难点。研究表明,提高软件产品的质量和生产效率的关键因素离不开基于构件的软将工程,所以,基于构件的软件开发研究十分重要。本文主要介绍一下基于构件的软件开发研究的产生背景、影响因素、方法研究以及和传统的软件技术相比所具有的优势和特点等,希望对软件开发的研究有所帮助。
基于构件软件开发 篇5
在航空领域中树脂基等复合材料因其具备高比模量和高比强度的作用优势,被广泛应用于实践。然而,随着该类材料应用技术研究的不断深入,其使用成本较高的缺陷问题日益突出。在此行业状态下,开发出一种树脂基复合材料的新型成形方法,已经成为实现航空业快速稳定发展的急需解决问题。VARI(VacuumAssisted Resin Infusion),是一种在真空状态下利用单面模具,将树脂浸润于纤维后固化成型的工艺方法。该工艺方法的应用不仅能够使树脂基复合材料在低温固化、热压罐以及结构件整体性的条件要求下实现成型,还能作用于零孔隙含量的航空典型结构件成型。因此,其被誉为生产航空典型结构件的制造工艺中最具发展潜力的工艺技术。然而,在该工艺技术的实际应用过程中,其存在制造复杂、涉及技术标准多以及工艺规范要求高的问题特点,这就在一定程度上阻碍了技术普及的发展进程。基于此,相关建设人员应通过仿真软件来提高VARI 工艺方法成型的过程效率,从而满足航空业发展对典型结构件的应用需求。
基于构件的测控系统设计 篇6
关键词:FPGA;PCI;构件;计算机测控系统;通用性;可维护性
中图分类号:TP302.1 文献标识码:A文章编号:1007-9599 (2011) 11-0000-01
Measurement and Control System Design Based on Component
Song Changquan
(School of Computer Science&Technology,Soochow University,Suzhou215006,China)
Abstract:Computer control system using(FPGA,Field Programmable Gate Array)and the PCI card.In the analysis of the FPGA and PCI interface card is proposed,based on the characteristics of the measure and control component in a general ideas,measurement and control system for example has been designed versatility and high maintenance computer measurement and control system.
Keywords:The FPGA;PCI;Structures;Computer measurement and control system;General;Maintainability
FPGA[1]器件及PCI卡都是目前数据采集[2]控制领域主要流行的技术之一,FPGA器件广泛应用于通信、自动控制、信息处理等诸多领域,PCI卡是用于数据采集应用的理想采集卡产品。本文针对FPGA及PCI卡的技术特点,将其按控件组合应用在计算机测控系统中。
一、计算机测控系统硬件体系结构
根据计算机测控系统[3]的要求,在硬件设计时考虑将该系统分成工业控制计算机系统、信号调理系统、控制机箱三部分进行设计。使用计算机调试系统软件进行各输入输出信号的控制和测试。
图1.计算机测控系统硬件体系结构原理框图
(一)工业控制计算机系统
工业控制计算机系统由主流计算机系统构成,可根据实际需求选择配置,在工业控制计算机中可迅速插入多个I/O卡和FPGA卡,从而提高了系统的可扩展性,并减少了维护周期。本文选用的系统硬件配置为凌华科技的计算机平台。
(二)信号调理系统
测控系统中信号调理板采用PCI接口形式,主要用于对输出故障模拟及复位信号,输入故障状态信号进行调理数字I/O板卡选用AD-LINK的PCI-7296,32位PCI总线,即插即用96路TTL兼容数字量I/O通道,端口可编程设定为输入或输出,数字量输入可用外部锁存,输出端口状态回读,板上带有8254定时器/计数器芯片,16位外部信号事件计数器,32位定时器用来产生定时器中断,状态变换中断,中断源可编程的双中断系统。
(三)控制机箱
控制机箱内部为物理电路连接,其实现的功能即为控制机箱面板所需要观测的数据指示灯和显示屏及开关控制等搭建电路连接。控制机箱外表面即为物理主控面板,通过对其安装的控制开关,控制流量或通断量;通过机箱上的电流电压表即时显示电路中控制部分的电流值和电压值,通过LED指示灯亮灭或红绿颜色变化区分显示信号的变化。
二、计算机测控系统软件体系设计
计算机调试台测试软件选用Visual Basic开发[4],它可以进行测控系统各级故障信号的模拟控制,并能显示出操作过程,各信号的状态,检测结果和检测时间,检测可以通过自动或手动完成,可将检测结果保存至计算机中。FPGA部分由VHDL[5]实现FPGA软件部分编制控制,I/O卡及其他由VB统一编程实现。
三、测控构件通用性
通过将FPGA卡及PCI卡组合构成测控构件,使得测控构件能迅速的接入到工业控制计算机中,完成信号调理和数字量控制。其特点是可针对于不同测试功能需求,将测控构件移植,在新系统中只需完成FPGA的可编程部分,配合其他板卡使用即可快速完成新的计算机测控系统设计。
四、结束语
采用FPGA器件可以将原来的电路板级产品集成为芯片级产品,从而降低了功耗,提高了可靠性,同时还可以很方便地对设计进行在线修改。PCI其自身具有快速、正确、有效、可靠性好、操作方便及连续高吞吐率(即使是大量数据)地传输等特点;将两者有效组合构成一个独立的测控构件,让计算机测控系统平台的搭建变的更加快捷方便,使其具有更高的通用性和可维护性。
参考文献:
[1]诸振勇,翁木云.FPGA设计及应用[J].陕西:西安电子科技大学出版社,2003
[2]周林.数据采集与分析技术[J].陕西:西安电子科技大学出版社,2005
[3]李江全.计算机测控系统设计与编程实现[J].北京:电子工业出版社,2008
[4]李江全.Visual Basic串口通讯与测控应用技术实战详解[J].北京:人民邮电出版社,2007
[5]勇峰,庄新敏.VHDL与硬件实现速成[J].北京:国防工业出版社,2005
基于软件构件的软件开发流程浅析 篇7
1构件定义
构件主要指软件系统中的单个元素, 自身具备独立、可替换、满足功能和多次使用的特征;也是软件重复使用时, 可以的准确被识别的软件实体, 对此借助软件的独立和可重复使用的功能形式, 构件完全被用来进行软件研发, 使其外界的访问, 可以利用构件提供的指定接口进行信息交换;构件之间会通过标准的接口进行信息转换, 从而更好的保证软件开发的质量。同时基于构件软件开发, 也应当具备应用程序是由构件组装, 提供独立服务, 以及通用构件设施和服务等相关的要素。
2软件开发形式
基于软件构件的软件开发流程, 主要体现在构件定制、构件独立以及接口统一几方面, 其中构件定制, 主要是指基于软件构件的软件开发, 利用到构件或是面向构件, 都是事前明确功能和编制好的, 同时软件对于构件不同功能的需求, 也可以通过构件版本的选择, 从而实现功能拓展的目的。其中构件独立, 主要是指将构件进行分解, 这样就可以有效的避免构件难以维护的情况出现。其中接口通过统一, 主要是指软件要想实现跨平台的交互, 可以通过指定的接口, 从而有效的突破硬件设备, 以及空间等方面的限制。
3构建模型分析
因为基于软件构件的软件开发, 是在理想构件模型基础之上进行操作的, 对此对于目前常用的几种构件模型分析, 是非常有必要的;其理想的构件模型如下图所示;
目前常用的构件模型, 主要包括OMG组织、SUN、Microsoft方面;其中OMG组织中的CORBA[1], 是基于开放平台制定的对象代理体系, 同时其分布计算技术们, 更是多种厂商所支持的技术;自身具有支持性高、语言开发、系统平台独立, 以及模型完整、效率高的特点。其中SUN中Java2技术, 具有语言开发以及满足不同的业务需求、简化构件服务器繁琐, 以及应用广泛的特点。其中Microsoft中COM构件模型, 实现了模型之间的相互操作, 同时自身也是标准的构件接口, 有效的用远程技术, 使其构件技术被广泛的应用。
4基于软件构件的软件开发流程研究
基于软件构件的软件开发流程, 主要包括整体框架设计、构件库建立、获取构件、构件调整以及重组安装等过程。
4.1整体框架设计
对于其整体框架设计, 首先要对于业务需求进行有效的分析, 然后找出与将要设计的软件功能需求的共性, 然后将功能构件从系统中进行分解, 最户将开发软件系统构件化。
4.2构件库建立
构件库建立是为了使构件更好的符合软件开发需求, 从而将构件进行统一管理, 同时构件库对于软件的重复使用, 起到支持、描述分类、保存等作用;从而更好的保证软件开发的效率。
4.3获取构件
需求分析后的构件, 会将满足应用环境的构件选取出来, 并进行适当的修改, 最后使其组装到将要开发的软件系统中。其中构件的获取, 可以通过发现阶段、评估阶段, 利用以往开发过的构件, 按照系统开发的需求进行选取, 或是利用当前开发的系统功能模式, 对于构件进行开发和获取, 再就是利用购买、利用网络资源进行构件获取。
4.4构件调整
当构件获取后, 为了是获取的构件更加的满足系统开发的功能需求, 使其符合设计规则, 对此需要对于构件的功能, 进行一系列的调整;调整的形式分为白盒法、黑盒法以及灰盒法, 其中白盒法的主要形式, 是通过对于构件源码的修改, 使其构件之间的冲突降低, 但是对于源码的调整会影响其使用特性, 给后期维护造成影响, 对此进行有效的维护是非常有必要的。其中黑盒法以及灰盒法, 是将源码进行保留, 提供构建的扩展机制, 或是提供可编接口。
4.5构件的组装
构件库中的构件按照应用环境进行调整, 然后将构件的端口进行相互连接, 或者将构件与开发软件元素进行连接, 使其更好的进行软件开发;每个构件的作用发挥, 是在与群体构件组合之后发挥功能的;对此在进行系统研发时要将单个构件进行整合, 利用可以容纳不同性质构件的框架进行管理;同时对于构件的安装, 可将通用性、功能性强的构件, 布置在中央数据服务器上;最后进行粘接代码的编制的工作。
5总结
综上所述, 发现软件开发是一项复杂且繁琐的过程, 相关设计人员不仅要掌握软件构件的基本性能, 还要做好软件开发需求调研分析, 工作任务繁重并且头绪杂乱。本文对基于软件构件的软件开发的流程进行梳理, 开发人员可以参照整体框架设计、构件库建立、获取构件、构件调整以及重组安装等步骤进行标准化实施, 一方面可以减轻开发人员繁杂的工作量, 另一方面也能够更好的保证软件开发的质量和效率, 希望对软件开发者有所帮助。
摘要:随着我国科学技术不断的发展, 软件开发的理论和流程, 以及构件技术也在逐渐的完善和发展, 而基于软件构件技的软件开发, 可以更好的利用构件技术的功能, 使其软件开发的成本有效的降低, 同时软件的系统的安全性、可维护性也能得到可靠的保障;对此本文结合构件定义, 通过对软件开发形式和构建模型的分析, 最后梳理出基于软件构件的开发流程, 希望对于软件工程的发展, 有着积极促进的作用。
关键词:软件构件,软件开发
参考文献
[1]田容雨.基于软件构件技术的Web系统开发平台的研究[D].山东大学, 2011.
[2]叶伟.构件化软件开发及系统测试技术探究[J].计算机光盘软件与应用, 2012, 03:176-177.
[3]沈拴喜.浅谈基于构件的软件开发方法和技术[J].计算机光盘软件与应用, 2014, 15:75-76.
基于构件的软件开发方法及实现 篇8
提高软件开发效率, 增强软件鲁棒性, 降低软件维护成本以及最大化软件的通用性和重用性, 一直是人们不懈追求的目标, 构件技术也因此应运而生。近年来, 构件技术不断发展, 出现了CORBA、COM/DCOM/COM+、Java Bean/EJB三大构件技术标准。与此同时, 为了更有效地将诸多构件组织成一个有机的系统, 减少系统的复杂性和提高系统的复用性, 基于构件的开发方法得到了广大研究开发人员的普遍关注并发展迅速。
1 构件的概念和标准
构件又称元件, 是指可方便地插入到语言、工具、操作系统、网络软件系统中的一种独立可重用的二进制形式的代码和数据, 它由以下3大要素构成:
(1) 接口 (Interface) 。接口告诉构件的用户该构件能完成些什么功能。
(2) 实现 (Implementation) 。实现就是让该构件得以运作的代码。一个构件可以有多个实现, 如一个构件可以同时有处理XML文件的实现和处理关系型数据库文件的实现。
(3) 部署 (Deployment) 。部署是构件的存在形式, 一般即为二进制代码或可执行文件。
同时, 一个构件之所以能成为构件, 它必须具有封装性、描述性、替换性、扩展性这4个重要属性。
(1) 封装性。封装是对构件实现和构件代码的一种隐藏。构件的使用者不必了解构件的具体实现, 只需通过构件的接口就能获得相应的功能。这样, 一旦构件内部实现需要调整, 将不会影响构件用户的使用。
(2) 描述性。由于构件的封装性, 要使用户能正确使用构件, 构件必须对自身进行描述, 以提供足够的使用信息给用户, 这些信息主要包括对构件的接口、实现和部署的描述。对接口的描述告知用户构件所提供的所有接口名及各接口所能完成的服务;对实现的描述告知用户构件是如何构造的, 如数据存储使用的是XML文件还是关系型数据库;对部署的描述则告知用户构件的运行环境, 如COM+、CORBA等。
(3) 替换性。构件的封装和描述属性使得构件具有可替换性。这是因为, 封装性保证了构件内部实现的调整不会影响到用户的正常使用, 而描述性则提供用户丰富的接口信息以供所需服务的调用, 也就是说, 只要有相同的接口, 一个构件完全可以由另一个构件替换, 哪怕它们的内部实现各不相同。
(4) 扩展性。简单地说, 扩展性就是指在不影响用户使用构件的情况下增加构件的功能。这种扩展可以藉由两种方法达成, 即:
(1) 增加接口。该方法多为构件开发者采用, 因为构件开发者可以直接对内部实现进行修改。同时, 考虑到兼容性, 构件的原有接口会得到保留, 而把新增的功能通过新添加的接口供用户调用。
(2) 授权 (Delegating Responsibility) 。该方法多为构件用户使用, 因为构件用户由于构件的封装性, 无法直接修改构件的内部实现。该方法将创建一个新的构件, 原构件无法提供的功能在此新构件中实现, 已提供功能则在此新构件中继续被调用。
图1是这两种扩展方法的示意图。
2 软件开发体系结构的实现问题
软件体系结构其设计的核心是能否使用重复的体系模式。传统的应用系统体系结构从基于主机的集中式框架, 到在网络的客户端上通过网络访问服务器的框架, 都不能适应目前企业所处的商业环境, 原因是:
(1) 企业过分地依赖于某个供应商的软件和硬件产品。这种单一供应商使得企业难以利用计算供应商的免费市场, 将计算基础设施的重要决定交给第三方处理, 这显然不利于企业在合作伙伴之间共享信息。
(2) 不能适应远程访问的分布式、多层次异构系统。封装的应用系统在出现某种组织需要时, 难以用定制来维护系统, 从而难以满足多变的需求。
(3) 不能实现分析、设计核心功能重用, 最多只能实现代码重用。
3 基于构件的开发模型
基于构件的开发模型利用模块化方法将整个系统模块化, 并在一定构件模型的支持下复用构件库中的一个或多个软件构件, 通过组合手段高效率、高质量地构造应用软件系统的过程。基于构件的开发模型融合了螺旋模型的许多特征, 本质上是演化形的, 开发过程是迭代的。基于构件的开发模型由软件的需求分析和定义、体系结构设计、构件库建立、应用软件构建, 以及测试和发布5个阶段组成, 采用这种开发模型的软件过程如图2所示。
构件作为重要的软件技术和工具得到极大的发展, 这些新技术和工具有Microsoft的DCOM、Sun的EJB, 以及OMG的CORBA等。基于构件的开发活动从标识候选构件开始, 通过搜查已有构件库, 确认所需要的构件是否已经存在。如果已经存在, 则从构件库中提取出来复用;否则采用面向对象方法开发它。之后利用提取出来的构件通过语法和语义检查后将这些构件通过胶合代码组装到一起实现系统, 这个过程是迭代的。
基于构件的开发过程就是构件组装的过程, 维护的过程是构件升级、替换和扩充的过程。其优点是构件组装模型导致了软件的复用, 提高了软件开发的效率。构件可由一方定义其规格说明, 被另一方实现。然后供给第三方使用, 构件组装模型允许多个项目同时开发, 降低了费用, 提高了可维护性, 可实现分步提交软件产品。
4 基于构件的开发方法的实现
在引入并行工程思想、领域工程思想及结合面向对象的建模机制, 一种实用的基于构件的开发模型如图3所示。
4.1 领域分析
领域分析对对象领域内的共性特征、共性需求、共性结构以及可变特征、特有需求进行归纳和一致性描述, 具体包括需求分析和详细设计等, 它将决定整个应用系统将完成哪种功能、支持哪些业务逻辑过程。由于引入迭代方法, 本阶段的工作不必也未必能面面俱到, 可以随着以后行为分析的进行而不断地调整、具体、优化。
4.2 行为分析
行为分析将确定应用系统的构架 (Architecture) 和具体要实现的功能。在领域分析的基础上, 本阶段将详细规划如何支持并实现这些需求。在引入面向对象的建模机制后, 这些工作可以藉由UML (Unfied Modeling Language, 统一建模语言) 中的用例图 (Use Case Diagram) 完成。经过领域分析和领域建模后, 领域知识已被按层次和结构分类组织, 概念结构也被转化为逻辑结构, 接下来的工作便是软件构架的确定。在软件系统中, 构架是可预制和可重构的软件骨架, 是问题域模型转化为解域模型的框架式系统。目前, 一般基于分布式体系的软件系统的构架大致可以分为用户界面层、事务逻辑处理层、数据处理层3大层。
领域建模和构架设计完成后, 整个应用系统的行为即得到确定, 进而可以对所有这些行为进行构件粒度上的划分。
4.3 构件和互操作 (Interaction) 的确定
构件是整个构架中基本的逻辑单元和数据处理单元, 依据先前的领域分析和领域建模, 可以按需进行大至类库、类, 小到函数、结构等不同粒度构件的划分, 并从模型、模板等不同角度进行构件的设计和生成。
在构件与构件、构件与用户的互操作过程中, 接口其实代替了构件的角色, 且随着接口的确定, 互操作也将得以确定, 因此接口的设计在构件的设计中至关重要, 它必须具有高度的内聚性, 即接口应该有明确的应用目的及相应的功能。一个标准的接口, 既要能清晰表达所要完成的功能, 也要具备良好的互操作性。我们常会犯的一个错误就是一个接口所表达的功能太繁杂, 从而导致接口过于庞大, 往往一个接口容纳了多个接口的功能。
在接口设计的同时, 应做好相关描述信息的文档化工作, 这些信息包括该接口的输入信息、输出信息、调用前状态、调用后状态和备注等。
4.4 构件组装和构件复用
确定了构件的接口和互操作后, 随之进行的就是整个应用系统的开发工作, 包括构件的开发、已有构件的剪裁、软件流程的衔接、构件的组装等。同时, 选取适合的已有构件以及将新开发的领域构件加入构件库是本阶段乃至整个基于构件的开发方法的关键, 它集中体现了软件复用思想。我们一般可以从Internet网上现有的构件库或商业性软件机构进行已有构件的挑选, 也可以从先前开发的各种应用系统中提取。当然, 现有构件的接口与系统的要求可能存在差距, 但并不等于该构件就不能被复用, 可以利用构件的扩展性进行进一步的剪裁加工, 以符合系统的要求。而新开发的领域构件的入库工作可以由专门的构件库管理系统完成。
在所有的构件都就绪后, 最后就是把这些构件按系统构架组装成应用系统。组装过程完成构件的连接 (Connection) 和约束 (Constraint) 工作, 一般只需要编写些基本代码, 诸如构件间的互相调用等即可。
5 结束语
如今, 随着Internet的广泛普及和电子商务的迅速成长, 分布式应用越来越多地得到各企业的采用, 而基于构件的开发方法正是一种适合企业级分布式应用的灵活、高效的开发方法, 它能轻松应对企业不断变化的商务需求, 而且能进一步降低开发、维护费用。当然, 基于构件的开发方法并不是万能的, 还需要在更多应用系统的开发中检验和改进。
参考文献
[1][美]布朗.大规模基于构件的软件开发[M].赵文耘, 译.北京:机械工业出版社, 2003.
[2]蔡明, 陈永运.J2EE架构的研究与应用[J].计算机应用与软件, 2004 (1) .
[3]蔡伟纲.NIOS (Ⅱ) 软件架构解析[M].西安:西安电子科技大学出版社, 2007.
[4]谢晓芹, 陈凯云.基于构件的叶片型面测量软件设计与实现[J].计算机工程与应用, 2004 (20) .
[5]徐建民.软构件技术在信息系统开发中的应用研究[J].微机发展, 2003 (3) .
[6]杨芙清, 梅宏主, 黄罡, 等.构件化软件设计与实现[M].北京:清华大学出版社, 2008.
[7]张友生, 等.软件体系结构[M].北京:清华大学出版社, 2006.
基于构件软件开发 篇9
随着短短几十年软件的发展,企业的IT系统建设经历了面向机器、面向过程、面向对象等阶段。着眼于解决业务领域问题,企业不同时期很无奈地采用不同的技术,建立了一大批面向业务的垂直IT系统,然而系统彼此之间缺少关联,难以共享,形成了企业IT系统中的一个个“梅花桩”。随着企业市场化的深入,迫切需要从原来以业务为中心的经营模式转向以客户为中心的经营模式,要求IT系统能够围绕客户整合已有资源,即需要各个业务系统在流程、数据方面集结起来。然而,由于各个系统采用了不同技术、不同业务的模型,要将各个“梅花桩”通过技术手段有机地集成起来,那么采用原来的软件架构的存在较大的困难。随着互联网技术的发展,基于面向服务(SOA)的软件架构应运而生,但SOA技术还不很成熟,实施成本较高。以SOA思想为指导,结合较成熟的构件技术,提出了基于服务构件的软件架构。这种架构可以进行主动整合,确保企业适应未来市场需求的变化,增强对新业务的支撑能力,同时保留现有投资,节约成本。
1 服务构件的基础概念和模型
1.1 构件的定义。
构件指可方便地插入到语言、工具、操作系统、网络软件系统中的一种定义良好的、独立可重用的代码和数据接口[1]。
1.2 构件的模型[2]
构件包括构件接口和构件规格两部分。构件接口是构件间的契约。一个接口提供一种服务,完成某种逻辑行为。构件接口包括名称和行为两部分。前者是构件本身提供服务的描述;后者是构件行为的描述。一个构件可以有一个或多个接口,而构件接口可以由多个构件实现。构件接口是外部访问构件的访问点。构件规格是构件开发商向构件使用者提供的,用于进行构件组装的文档。因此,构件的开发,涉及两个方面,即设计构件接口和实现构件的行为。
1.3 服务构件技术
构件是通过分析业务过程模型而识别出来的,而服务由构件组成。服务构件技术是新一代的构件技术,是面向对象技术发展的升华。它与SOA结合,体现的是粗粒度、松耦合及更高层次上的抽象。它能快速响应业务需求的变化和技术的变化,实现产品和过程的高度可定制和可配置。基于服务构件的架构,以服务为核心,通过服务(应用程序的不同功能单元)之间定义良好的接口与契约联系起来。接口采用中立的方式定义,独立于实现服务的硬件平台、操作系统和编程语言,使得各种构建在系统中的服务可以以一种统一和通用的方式进行交互[3]。
服务构件使用户在构建企业应用时不再直接面对具体技术细节的层次,而是通过服务构件的方式来构建应用。这种方式能使客户的企业应用具有良好的分层架构,能够很好地分离应用的业务逻辑和IT逻辑,不但有利于应用的构建,更有益于应用的更改和部署。
服务构件与传统组件的主要区别在于:
(1) 服务构件往往是粗粒度的,而传统组件以细粒度居多;
(2) 服务构件的接口是标准的,主要是WSDL接口,而传统组件常以具体API形式出现;
(3) 服务构件的实现与语言无关,而传统组件常绑定某种特定的语言;
(4) 服务构件可以通过构件容器提供QoS的服务,而传统组件完全由程序代码直接控制。
2 基于服务构件的软件开发关键问题
基于服务构件的软件开发涉及到SOAP,WSDL,UDDI,SCA,SDO等许多相关技术,限于篇幅这里主要从软件开发过程和服务划分原则及组合技术做介绍。
2.1 基于服务构件的软件开发过程
基于服务构件的软件开发过程包括分析现有的系统及业务需求,了解可用的业务构件及新建的构件,设计构件及接口,实现构件,组装构件和系统测试的运行[4,5,6,7,8]。整个开发过程采用增量迭代方式,其核心围绕着构件的开发和服务的组合,强调恰当分离业务关注点,将业务逻辑构件化,在描述构件接口规格的基础上,采用黑盒组装方法实现服务组合。具体开发步骤如图1所示。
(1) 根据用户需求和实现环境,采用自顶向下和自底向上相结合的方式,重新捕获领域词汇,梳理业务,确定业务构件的需求。
(2) 结合传统的垂直设计和MVC的水平分层设计,采用“横切竖割”的构件模型架构,通过恰当地分离业务关注点,将业务逻辑构件化,得到清晰完整的面向构件的解空间。其中,横切竖割架构的“竖割单元”即为业务构件,而“横切单元”则是其服务构件。指以业务构件形式独立部署系统功能。业务构件运行时,通过调用各个层次的服务构件实现。服务构件包括用户界面构件、展现构件、逻辑构件、运算构件和数据服务构件等。
用户界面构件 负责系统的界面表现,包括页面布局、页面显示效果、页面显示信息、页面输入表单和各种请求动作(如窗口、菜单、按钮、链接、表格等)。
展现构件 负责控制页面的流转和对业务服务的调用,并控制页面和业务服务之间的数据传递(如查询控制、显示控制等)。
逻辑构件 负责表达应用逻辑的处理过程(如查询、添加、删除、统计构件等)。
运算构件 支持应用逻辑表达计算环境的原子处理操作(如建立查询条件等)。
数据服务构件 负责业务数据对象与数据库中对象的数据处理。
这样,一个业务构件将通过各个层次服务构件之间的协作完成功能的运行,保证各个层次功能的独立性和松散耦合性。根据实际情况,服务构件也可以按表示层(含用户界面和展现构件)、业务逻辑层(逻辑构件和运算构件)和数据访问层(数据服务)来划分。
(3) 进行可重用资产分析,形成服务构件及其规格列表,包括构件名称、服务构件类型、所属业务构件、复用方式(直接使用、需要改建、需要新建)、构件描述等项目。这些服务彼此相对独立,并且可以进行组合,从而能有效地实现企业资源整合。
(4) 将可直接使用的模块转换为服务。
(5) 设计新建构件,修改可改建的模块,并封装为服务。
(6) 实现构件后,进行单元测试,测试通过后,再组装成服务,根据实际需求,将小服务组合成大服务,最后在集成测试的基础上进行系统测试。
2.2 服务组合
组合是通过装配较小的构件或服务来构建较大结构的过程。服务组合是实现应用程序可重用性和灵活性的关键特性。在完全面向服务构件的系统中,每个可调用的功能单元都是服务,这些服务通过编排,组合在一起,从而以服务组合为基础创建应用程序[9]。
服务支持重构。影响重构的一个重要因素是服务的粒度。粗粒度的服务有利于重用,但缺乏足够的灵活性;细粒度服务虽能为使用者提供更细化的功能和更多的灵活性,但将它们集成在一起的代价也相应更高,选取服务的粒度应把握实用性原则。在设计时,对于一些比较稳定的服务,一般采用大颗粒的构件来实现。对于不断变化的东西,用更小的颗粒实现,如逻辑变化快的数据性操作,用原子性的小构件组装。通过小服务和大服务的嵌套,实现变化与不变化之间的一个平衡。
具体实施中,利用SCA,将构件进行编排,封装成Web服务。根据业务需求和部署上灵活性的要求,将一个或多个具有内在业务联系的服务构件放在一个服务模块中,并将服务模块注册到集成框架(大系统一般采用ESB)。集成框架主要实现服务注册、服务发现、传输消息服务、服务事件、服务管理等功能。利用SCA提供的数据描述机制,实现接口规范,使构件或服务之间能够互联、互通以及互操作。这里涉及到模块内外的调用。模块内服务构件的调用规范可以是WSDL或Java接口。通过接口(提供给别的服务调用的入口)和引用(调用出口),指定调用关系,实现模块内服务的相互调用[10]。
实际应用时,通常需要多个模块才能满足要求,而且这些模块之间又往往存在相互调用的关系调用。不同模块之间的服务时,需要指定专门的绑定信息。这些绑定信息包括目标服务或源服务的调用方式、位置信息、调用方法等。目前,部分系统,如WebSphere Process Server V6.0,导入端点提供了四种绑定方式,包括JMS绑定、Web Service绑定、SCA绑定和无状态会话Bean的绑定。导出端点提供了三种绑定方式,包括JMS绑定、Web Service绑定和SCA绑定。可以根据不同的模块实现技术,选择对应的绑定方式。
3 结 语
随着SOAP,WSDL,UDDI,SCA等Web服务规范的不断完善和发展,服务构件的建立和组合能够很好地分离应用的业务逻辑和IT逻辑,确保业务系统的高效灵活,适应业务系统的需求变化,实现应用系统、流程和数据的无缝集成,从根本上解决了业务系统的建设赶不上业务需求变化的老问题,成为这两年来最热门的软件架构技术。服务构件技术涉及面广,相关规范还在制定之中,一些大公司相关的软件产品都比较昂贵,下一步将在JEE 5中对服务构件的集成框架做深入研究。
摘要:针对企业业务系统在整合和信息共享中存在的问题,以SOA思想为指导,结合构件技术,提出了基于服务构件软件架构的解决方法。从软件体系结构的角度,研究了基于服务构件的软件开发过程,分析了服务划分原则及服务组合实施技术。提出的方法能够较好地分离系统的业务逻辑和IT逻辑,确保业务系统的高效灵活,易于实现应用系统、流程和数据的无缝集成。采用服务构件的软件开发能较好地支持软件复用,便于今后的扩展。
关键词:构件,服务,软件体系结构,信息共享
参考文献
[1]冯冲,江贺,冯静芳.软件体系结构理论与实践[M].北京:人民邮电出版社,2004.
[2]黄柳青,王满红.构件中国:面向构件的方法与实践[M].北京:清华大学出版社,2006.
[3]程朝晖.基于平台的SOA版应用[EB/OL].http://gocom.primeton.com/modules/newbb/item54612_54612.htm,2008.
[4]黄柳青,温昱.面向构件的软件过程:需求阶段[J].中国金融电脑,2007(7):45-46.
[5]黄柳青,温昱.面向构件的软件过程:分析与高层设计[J].中国金融电脑,2007(8):55-56.
[6]黄柳青,温昱.面向构件的软件过程:并行开发与测试[J].中国金融电脑,2007(9):61-62.
[7]黄柳青,温昱.面向构件的软件过程:提交、发布与部署[J].中国金融电脑,2007(10):53-54.
[8]黄柳青,温昱.面向构件的软件过程:应用管理[J].中国金融电脑,2007(11):46-47.
[9]迟文学,吴信才,方坤.面向服务的搭建式开发技术研究[J].计算机应用研究,2008,25(6):1 717-1 719.
基于构件软件开发 篇10
1 构件概述
构件是软件系统中具有相对独立功能且可以重复使用的软件元素单元,它是软件复用过程中可以明确辨识的、可独立部署的软件实体,可以被用来构造成其他软件,对外提供定义良好的接口,外界通过它的接口访问其服务。通过分析其定义不难发现构件具备以下基本特征:构件是近乎独立的、可替换的、满足一定功能的模块;对所处环境或上下文有一定的依赖关系;构件通常符合一组接口标准,构件之间通过接口进行通讯[1];可以反复使用,通过该方式可提高软件开发的效率和质量。
2 基于构件技术的软件开发的研究现状
自从Mcllroy在1968年国际NATO软件工程会议上首次提出了“软件复用、软件构件、构件工厂”等概念以及“软件组装生产线”思想以来,虽然软件构件的定义不断变迁,但基于构件技术的软件开发方法一直被视为解决软件危机、提高软件生产效率和质量,从而实现软件工业化生产切实可行的重要途径。中国科学院院士杨芙清在文献[2]中指出软件的工业化生产和其它现代工业一样,有其相似性,同样是工业化的生产模式:“大规模生产的标准构件和基于构件的系统集成组装”。构建软件开发的共性支撑,使应用软件可以在大量构件的基础上通过集成组装来开发,以降低软件开发难度和复杂度,节省开发时间,也能使应用软件更加系统、规范和可靠。
20世纪90年代以后是构件技术迅速发展的阶段,强调软件开发采用构件化技术和体系结构技术,要求开发出的软件应具备很强的易理解性、自适应性、互操作性、扩展性和可复用性[3],当前构件技术已经发展成为软件复用的重要学科分支。
3 基于构件技术的软件开发方法的基本思想和目的
基于构件技术的软件开发方法的基本思想是将需要设计的软件分解成一些有基本功能的“构件”,在开发过程中不必重新设计这些基本功能模块,只需从现有构件库中寻找合适的构件组装成软件,这种软件工业化的思想无疑将大大提高软件的可复用性[4]。
基于构件技术的软件开发不仅使软件产品在客户需求吻合度、上线时间、软件质量上领先于同类产品,提高项目的成功率,而且对软件的开发和维护变得十分简单,客户可以随时随地应对商业环境变化和IT技术变化以实现“快速定制”。
基于构件技术的软件开发方法的基本目的是以构件组装方式进行应用系统开发,这种组装基于那些以独立服务的形式开发出来的构件来进行,构件的服务通过在某种通用的基础设施上调用某种通用的服务进行信息交互的。因此,基于构件技术的软件开发具备以下要素:由构件组装的应用程序、独立服务提供、公共的构件基础设施及使用通用服务。
4 基于构件技术的软件开发模式
当今的软件开发主要采用已有资源进行组成、定制和在不同层次上的复用。
1)提供定制手段。
使应用软件可用预先编好的、功能明确的产品部件定制而成,并可采用不同版本的部件实现应用的扩展和更新。
2)软件部件化。
将复杂的难以维护的系统分解为互相独立、协同工作的部件,并努力使这些部件可以反复使用。
3)实现跨平台交互。
突破时间、空间及不同硬件设备的限制,利用统一的接口实现跨平台的交互操作。
5 当前主流构件模型
近年来构件技术迅速发展,国内外对构件技术的研究已取得了一定成果。当前主流构件模型主要有:美国OMG(Object Management Group对象管理组织)的CORBA技术、SUN的JavaBeans/EJB及微软的DCOM/COM/COM+。我国自主研发的“和欣”操作系统(英文名Elastos)就是使用构件技术开发的典型,创新性地实现了CAR(component assembly runtime)构件技术,即一种完全面向下一代的网络服务[5]。
5.1 OMG的CORBA
CORBA是OMG组织基于众多开放系统平台厂商提交的分布对象互操作内容的基础上制定的公共对象请求代理体系规范。CORBA分布计算技术是由绝大多数分布计算平台厂商所支持和遵循的系统规范技术,具有模型完整、先进,独立于系统平台和开发语言、被支持程度广泛的特点,已逐渐成为分布计算技术的标准。CORBA标准主要分为对象请求代理、公共对象服务和公共设施三个层次。最底层是对象请求代理ORB,它是关系模型的核心。规定了分布对象的定义(接口)和语言映射,实现对象间的通讯和互操作,是分布对象系统中的“软总线”;中间层公共对象服务可提供如并发服务、名字服务、事务服务、安全服务等各种服务;最上层的公共设施则定义了组件框架,提供可直接为业务对象使用的服务,规定业务对象有效协作所需的协定规则[6]。
5.2 SUN的J2EE/JavaBeans/EJB
SUN在1999年底推出了Java2技术及相关的J2EE规范,J2EE着力于推动基于Java的服务器端应用开发,其目标是提供与平台无关的、可移植的、支持访问和安全的、完全基于Java的开发服务器端构件的标准。在J2EE中,SUN给出了完整的基于Java语言开发面向企业分布应用规范。其中,在分布式互操作协议上,它同时支持RMI和IIOP,而在服务器端分布式应用的构造形式则包括了Java Servlet、JSP、EJB等多种形式,以支持不同的业务需求。J2EE不仅规范支持跨平台的开发,而且简化了构件服务器端应用的复杂度,使它在分布计算领域得到了快速发展。
EJB是SUN推出的基于Java的服务器端构件规范J2EE的一部分,目前已取得较广泛的发展,已成为应用服务器端的标准技术。EJB定义了一个用于开发基于组件的企业多重应用程序的标准,它是SUN在服务器平台上推出的Java技术族的成员,很大程度上增强了Java的能力,并推动了Java在企业级应用程序的应用。从软件构件的角度来看,EJB是Java技术中服务器端软件构件的技术规范和平台支持。
5.3 Microsoft的DCOM/COM/COM+
DCOM是Microsoft与其他业界厂商合作提出的一种分布构件对象模型(Distributed Component Object Model),其发展经历了一个相当曲折的过程。DCOM起源于动态数据交换(DDE)技术,通过剪切/粘贴实现两个应用程序之间共享数据的动态交换。对象连接与嵌入OLE就是从DDE引申而来的。
随后,Microsoft引入了构件对象模型COM,形成了COM对象之间实现互操作的二进制标准。COM(Component Object Model)是由Microsoft公司推出的构件接口标准,允许任意两个组件互相通信。COM最初作为Microsoft桌面系统的构件技术,主要为本地的OLE应用服务,但是随着Microsoft服务器操作系统NT和DCOM的发布,COM通过底层的远程支持使得构件技术延伸到了分布应用领域。基于COM,微软进一步将OLE技术发展到OLE2。其中COM实现OLE对象之间的底层通信工作,其作用类似于CORBA/ORB。通过COM+的相关服务设施,如负载均衡、内存数据库、对象池、构件管理与配置等,Microsoft的DCOM/COM/COM+将COM、DCOM、MTS的功能有机地统一在一起,形成了一个功能强大的构件应用体系结构。
6 基于构件技术的软件开发的过程
基于构件技术的软件开发通过整合已有构件快速组装应用系统、更多使用第三方系统、开发具有更大灵活性的可复用服务,使软件开发的注意力转移到面向复用的基于构件的策略,并运用适当的工具和技术来支持这一策略。此开发方法旨在提高软件的开发效率,增强软件资源的共享,降低开发成本,提高软件行业的经济效益。
基于构件技术的软件开发的过程如图1所示,在此过程中有五个主要的组成部分:进行需求分析;建立相应的构件库;构件获取;构件的调整或修改;构件的组装[7]。
6.1 进行需求分析,设计整体结构框架
对整个系统进行功能需求分析,然后对比相同领域的业务需求找出彼此之间具有共性的功能需求。根据需求分析得出的结果对目标软件系统进行功能分解,将系统分解为强内聚、弱耦合的功能构件把开发系统构件化。
6.2 建立相应的构件库
基于构件技术的软件开发必须建立相应的构件库以满足各种不同层次软件的开发需要。构件库是将软件构件进行归纳管理形成一个大型的可管理、可检索、可重复使用的管理库。构件库作为一种支持软件复用的基础设施和软件资产的管理设施,主要提供对软件构件的描述、分类、存储和检索等功能,同时为基于构件技术的软件开发提供有效的支持,以提高软件开发效率和软件产品质量。
6.3 构件获取
根据之前的需求分析和构件化的结果,开始寻求相应的满足功能需要的软件构件,并对其进行评估和适应性修改,然后组装到相应的功能分解框架中。
构件获取包括两个阶段:发现阶段和评估阶段。在发现阶段,构件将会被明确属性。如构件的功能、构件的接口等。这些属性还应包括一些不能孤立看待的要求,如构件的可靠性、可用性及可扩展性。在评估方面,现在已有多种成熟的评估方法。例如ISO描述的产品评估的通用标准,以及IEEE的特定域的构件评价技术,还有适用于特定问题域的技术[8]。
构件获取可以有三种方式:
1)利用自己过去开发过的构件按照适合新系统的原则选取出来。
2)根据目前的开发系统中新的功能模块进行自行开发新构件。
3)通过商业方式购买合适构件或利用互联网资源进行共享或免费获取。
6.4 构件的调整或修改
在理想上总希望能原封不动地应用已有的构件,但在多数情况下是做不到的。在某些情形中,现存的可复用构件可能和目前新系统的体系结构的设计规则不匹配,需要对获取的构件进行功能上的简单调整或修改,将构件之间的冲突降低到最小,使构件满足当前的功能需要。常用的方法包括:白盒法。用户可以通过修改构件的源码使构件能与其他构件相互作用。该方法可以对构件的特性进行细致的控制,但修改源码可能会导致维护和升级问题。黑盒法。用户可以得到构件的二进制可执行形式,构件没有提供扩展机制或可编程接口API。灰盒法。源码不可以修改,但提供构件自身的扩展机制或可编程接口API。
6.5 构件的组装集成形成开发系统
构件组装是指将构件库中的构件经过适当修改后相互连接,或者将它们与当前开发项目中的软件元素相连接,最终构成新的目标软件。单个构件若想发挥作用还要和其它构件整合起来,共同融入一个定义良好的架构之中,此架构能够将完全不同的构件组合在一起。构件必须符合系统其它部分的要求,将符合应用环境的构件组装到系统的构架中,装配成系统的功能模块。一般是将原子构件尽量绑定成较大的复合构件,再根据构件的接口进行装配。在组装设计新的开发系统过程中构件可以由开发人员根据网络和设施的实际情况进行部署,如通用性强的构件部署在中央数据服务器上,某些专项构件部署在对用户最方便的服务器甚至用户机上,这样可实现构件部署与协调的最优化。另外,组装构件过程中有时还必须编写粘接代码,这些代码可以消除构件间接口不兼容的问题,同时为系统提供统一的异常处理机制。
一般而言,并非任何构件都能组装和集成,即使某些构件是通过修改或裁剪的也并不一定能够做到这点。因为体系结构、构件的标准化、构件模型再次在软件构件被集成以形成工作系统的方式中扮演了关键角色,通过协同工作共同指导最终产品的组装。
摘要:当前构件技术迅猛发展,基于构件技术的软件开发方法是当前软件开发研究的热门问题。本文针对基于构件技术的软件开发的研究现状,分析并比较了三种主流构件模型的优劣,探讨了基于构件技术的软件开发过程及设计原则。
关键词:构件,构件库,软件复用
参考文献
[1]毛澄映,张金隆,卢炎生.构件软件变更风险分析技术[J].计算机科学,2008,35(1):274-277.
[2]李爽.创造构件平台,推进软件生产变革[J].中国科技奖励,2007(5):22-25.
[3]徐雪峰,冯书兴,沈世禄.基于构件的软件开发方法和技术研究[J].装备指挥技术学院学报,2007,18(5):94-98.
[4]王亚,邓飞,甘文丽.基于可重用构件的软件开发模式的研究[J].电脑知识与技术(学术交流),2007(20):451-452、456.
[5]叶俊民,陈卓,雷志翔.基于构件组装的应用软件开发过程研究[J].计算机应用研究,2008,25(6):1736-1738、1752.
[6]胡国奋,欧阳树生.基于构件化的软件产品开发研究[J].控制工程,2008,15(1):75-77、81.
[7]陈明.基于软件构件的软件开发技术[J].漳州职业技术学院学报,2007,9(2):4-7.
基于构件软件开发 篇11
关键词: 顶层;车辆工程;构件构建
【分类号】U461-4;G642.3
一、车辆工程专业实践教学现状和存在问题
1、缺乏对于实践教学体系建设研究,车辆工程专业实验室大多数都按照各个部门专业课程进行教学活动建设的,同时各个课程实验室都按照一定体系进行教学活动的,没有真正形成专业和完整的教学体系,这样是非常不利于培养专业实验技能和实践能力的,需要实践教学内容体系要进行合理改革,如果质量不是很完善,要尽量加强对于质量控制力度,不断提高对于质量管理体制。
2、教学方法比较单一,车辆工程专业的实践教学大多都是采用中国传统的教育方法,通常采用教师进行讲解,学生进行被动接受方法,教师和学生之间也会形成非常良好交流,在实践教学过程中,试验流程要根据教师和师生之间学习内容制定一定合理的教育课件,让学生在教学活动中要能够及时进行试验实践学习,要很好进行学习创新型思维培养。
3、教学课程实践建设没有得到很好重视,车辆工程专业实践教学课程建设没有得到很好重视,从而会影响到实践教学质量,主要原因就是教学内容比较陈旧,教学方法缺乏研究和创新能力,在试验、实训和技术手段落后的情况,实践教学缺乏一定合理体系和系统性实践教学方法,没有科学反映实践教学水平和学生实践能力和素质,需要能够及时进行合理评估,对于实践教学考核要进行合理评价,对于不利于学生实践动手能力的要改进教学方法。
二、基于顶层设计的车辆系统控制理论
1、车辆电控制地盘系统是一个由多个控制系统进行控制的组成,可以很好对于系统进行控制,车辆综合性能的提高依赖于系统协同作用,系统之间协同有利于车辆系统集成,同时达到软件硬件相互共享、能量管理和信息交互替换,满足车辆安全性、舒适性和经济性等更高要求,最终实现车辆系统集成化、智能化和网络化,这也是当今车辆工程领域学术界非常值得研究的热点问题,国内外研究人员都需要在车辆集成控制理论和技术中要能够大面积开展一定研究工作,这方面还需要形成非常完善的理论和体系。
2、转向和悬架作为汽车地盘系统两大关键零部件,是属于相对独立的控制,如果把他们都集成在一起,就会形成耦合轮胎非线性系统,这样就会导致问题比较复杂,对于转向和悬架集成研究,还可以通过定性定量研究和垂向力之间关系,要能够充分发挥轮胎性能和悬架作用,最终达到相互协同作用,运用自上而下顶层设计理念,还要做到合理总体规划布局,使得子系统之间做到相互互补,降低消除系统之间矛盾,最大程度的改变图形和外界环境引起的车身的姿态变化问题,还要兼顾行驶平顺性和稳定性问题,主要就是围绕这半主动悬架控制和电动助力控制系统方式进行合理研究工作。
3、建立轮胎侧向力和垂向力之间神经耦合模型,借助轮胎的接地压力试验进行系统的侧偏热症试验工作,合理分析侧偏特性和重起压力因素,对于各种数据都要做到网络特征参数联系,训练和建立一定适应的网络模型,采用参数辨识和网络分析能力,通过理论计算试验进行可行性分析,为悬架耦合进行机理分析,最终达到一定理论基础运用。还要建立车辆多个动力学模型,其中包括转向和悬架运动学和弹性力学的非线性特性分析,通过台架试验进行半主动悬架转角和减振器关系分析,还要能够合理对于悬空架进行控制和集成控制设计。还要分析出影响摆角速度问题,采用转向稳定性指标,合理对于车辆的车速和路面系数进行稳定性操作,还要研究各种相关非线性关系,通过研究及时对于性能进行相互之间耦合系统综合分析。
三、车辆顶层系统控制技术研究
1、提出车辆系统协同控制顶层设计思想,是构建基于模糊关系协同控制理论车辆行驶平顺性和操纵稳定性机制,可以分解悬架和耦合机理,参考驾驶意图和车辆装填进行合理分析,针对半主动悬架电动助力转向控制,可以按照協同系统顶层设计,合理将系统分为四个子系统进行一定安排,比如对于轮胎子系统、半主动悬架子系统、电动助力系统和顶层子系统,在每一个系统之间都要引入一定模糊的网络系统,同时要能够进行合理协调处理和合作,及时确定子系统之间模糊比重,运用一定原理建立子系统模块,组成相对比较合理协调合作关系。
2、建立基于自治技术感知和信念结构,将车辆地盘系统地盘系统进行合理分析,针对半主动悬架控制系统要求,使得系统之间能够达到平顺性、安全性和操稳性,还要建立系统对电动助力系统运行,更好保证系统运行过程复杂多变处理,建立多个模糊控制子系统,还要根据汽车行驶的轮胎计算各种情况预警机制,保证子系统之间关系合理化。
3、要搭建车辆系统控制联合仿真系统,基于多个动力学原理系统进行模型设计,结合控制模型,随机进行路面和单脉输入联合仿真计算,对于不同控制还要合理检验控制算法有效性问题。设计车辆控制系统同时要快速对于事物仿真系统进行一定系统架构,建立硬件相互联系的仿真系统,通过与联合计算对照分析,快速将原型控制好。
4、基于对于车辆控制系统研究,同时还要不断改进设计节流的减振器,自主研发自测量气门压力传感器,开发车辆地盘控制器,装车进行道路试验,通过快速原型控制方式进行合理比较,验证系统正确性和硬件设计可靠性。
5、各种研究结构都表明基于顶层设计车辆系统控制,能够满足不同系统行驶控制要求,同时还会实现系统之间相互协作,和传统分层控制方法相比,随着试验路面积不断扩大,车辆本身也在加速运行中,和后面悬空架扰动的性能也受到不同程度的改善,根据试验中转盘平均值不同,就是导致转向转矩、横摆角速度和侧向加速平均值都不一样,在试验中随着路面不同,进行一定转向。所以要及时减少操纵转矩,增加操纵转矩,考虑驾驶的舒适性和稳定性,符合试验中要及时解决传统分层控制无法进行车身控制问题,因为车辆控制系统会存在一定局限性,需要对于车辆的侧倾角、俯仰角和横摆角进行合理指标认证,采用顶层设计和协同控制相互结合方式可以很好对于地盘集成系统做好一定较好系统内部合理调整。从而减少矛盾和冲突问题,保障系统功能发挥,很好实现大系统全局化,使得车辆能够非常稳定和平顺的兼顾,最后可以明显提高整个车来那个综合型问题。endprint
四、基于顶层的车辆工程专业课程教学体系构建意义
1、为了激发学生学习兴趣,加深学生对于专业知识理解,提高学生实践能力,使得学生的理论实践能力相互结合,培养当今国内汽车行业应用高质量工程人才,应用车辆工程實践教学体系进行合理构件。
2、调整培养方案构建合理实践教学体系,根据当前汽车行业需要进行提高工程专业学生自身行业基本知识,逐步优化和完善车辆工程专业学习计划,车辆工程专业培养计划主要是按照理论课程要求进行一定实践性辅助教学,同时合理删除不合理实践教学方法。在实践教学内容中对于实践教学体系要进行分层设计,主要就是对于基础性试验和课内训练计划进行创新活动,体现综合应用能力训练等各种层次实践教学体系。
3、要对于三大实践教学体系进行合理教学,不断改革传统简单验证实验,将顶层车辆工程专业和试验技术基础相互结合,加强试验思考性,增加学生学习能力,增强学生试验学习能力。还要能综合设计试验培养学生自主学习能力,灵活运用高科技教学方法,设计和车辆工程专业知识和实践工程相关实验项目,结合自身兴趣,进行一定合理实验项目选择,培养学生综合分析问题能力和研究能力。研究创新型试验强调培养学生创新能力,还要根据学生潜在能力进行组织学习,教师引导学生进行问题解决,提供相应的试验创新平台,制作一定模型,解决实际问题,开拓创新思维,培养学生解决问题能力。
4、改善教学方法,提高实践积极性,在传统教学中要不断提高学生实际动手能力,和传统实践教学方法相比,教师要不断提高设计和车辆工程专业知识,不断提高解决实际工程问题能力,制定试验方案最终解决问题,改变学生主动学习能力,还要充分调动学生积极性,逐步培养学生创新能力。
五、结论:
综上所述,车辆顶层工程专业实践教学体系改革和构建,是通过一定改革教学内容和教学方法进行合理提升的,对于实践教学的积极性进行一定培养,还要不断培养学生工程意识,提高学生解决实践工程问题能力,培养满足社会要求的前瞻性和创新型综合能力,不断加强应用型车辆工程技术人才。车辆工程专业存在很多问题,需要及时解决,动手能力和实践操作能力是非常重要问题,主要原因就是要不断提高教学适应社会能力,不要只是过分强调理论知识,还要不断提高训练方面知识,打下基础专业知识,动手能力,不断提高学习理论同时充分掌握车辆顶层工程设计技能。
参考文献:
[1]赵新,提高车辆工程专业学生质量的思考与实践[J],湖南科技学院学报,2011年12期;
[2]赵树恩,李玉玲,张慧玲,车辆工程专业模块课实验教学整合与优化[J],实验科学与技术,2012年04期;
基于构件的软件工程技术研究 篇12
软件工程没有一个权威的定义,比较认可的定义为:软件工程是一门交叉学科,它是解决软件问题的工程,是对软件开发、运作、维护的系统化的、有规律的、可定量的研究方法。
软件工程有明确的目标。那就是研制开发与生产出具有良好的软件质量和费用合算的产品。软件质量可用六个特性来评价:功能性、可靠性、易使用性、高效率性、可维护性、易移植性。
软件工程不同于一般工程,具体表现在以下几点。
(1)软件是逻辑产品而不是实物产品,所以费用集中在研制开发上而不在生产上。软件不会用坏、磨损、老化,但有一个过时的问题。(2)由于软件是逻辑产品,使得它的功能只能依赖于硬件和软件的运行环境以及人们对它的操作,才能得以体现。(3)软件产品的功能比一般产品的功能复杂得多。(4)软件设计比一般产品复杂得多。具体表现在:功能的多样性,实现的多样性。推动软件工程发展的原动力是提高软件质量和软件开发的生产效率。
1 传统软件工程
传统软件工程采用面向过程,即结构化程序设计方法,即有很多成功的例子,例如DOS操作系统,也有很多失败的例子,例如美国阿波罗登月飞行计划的软件错误。因为传统软件工程不能驾驭复杂系统的开发,曾经一度产生了软件危机。面对越来越复杂的软件系统,传统软件工程已经不能胜任,在实践中,人们呼唤能适应复杂系统开发的软件工程方法学和软件开发技术的诞生,面向对象软件工程应运而生。进入20世纪90年代以来,Internet飞速发展,人们碰到了另一个难题,快节奏地开发基于Web的大型应用程序,面向对象软件工程及其技术已经不能胜任,人们尝试利用基于构件的技术来解决,于是诞生了CORBA、COM及COM+、J2EE及EJB等基于构件的技术和软件开发方法。然而,今天的构件技术离人们追求的目标——软件工厂还相差甚远。
面向过程的优点:面向过程的思维方法是符合人类认识规律的,因为人们解决问题,总是一步一步进行的,其中,有顺序,条件和循环,利用这三大结构,可以解决世界上的任何问题。这些方法是优秀的,被面向对象和面向构件所吸收,成为类或构件内部实现的有力工具。面向过程的缺点:着眼于细节,不能很好地从宏观上把握系统。
2 面向对象软件工程
面向对象软件工程是运用面向对象方法,符合人类认识规律的一种软件工程。20世纪60年代后期出现了面向对象的编程语言,2 0世纪7 0年代初X e r o x公司推出了Smailtalk语言。奠定了面向对象程序设计的基础,1980年出现的Smatltalk-80标志着面向对象程序设计进入了实用阶段。自20世纪80年代中期起,人们注重于面向对象分析和设计的研究,逐步形成了面向对象软件工程方法学。典型的方法有ECoad和E.Your Don的面向对象分析和设计,GBooch的面向对象开发方法,J.Rumbaugh等人提出的对象建模技术(OMT),Jacobson的面向对象软件工程等。20世纪90年代中期,由GBooth,J.Rumbaugh、Jacobson等人发起,在Booch方法、OMT方法、OOSE方法的基础上推出了统一的建模语言(UML),1997年被国际对象组织(OMG)确定为标准的建模语言。
面向对象方法的出现受到了计算机软件界的亲睐,并成为20世纪90年代的主流开发方法。面向对象方法的优点如下。
(1)从认知学的角度来看,面向对象方法符合人们对客观世界的认识规律很长一段时间里,我们分析、设计、实现一个软件系统的过程与我们认识一个系统的过程存在着差异。例如结构化方法分析的结果是数据流图,设计的结果是模块结构,实现的结果是由程序模块组成的源程序。(2)开发的软件系统易于维护,其体系结构易于理解、扩充和修改面向对象方法开发的软件系统由对象类组成,对象的封装性很好地体现了抽象和信息隐蔽的特征。(3)面向对象方法中的继承机制有力支持软件的复用
3 构件软件工程的概念模型
构件和基于构件的方法是电子商务革命的驱动力,它们是Internet时代开发企业级解决方案的方法。在任何行业中,复杂情况通常是通过很多关键概念来解决的。这些概念是通过抽象、分解、选代、细化等方法来表达的。其中的关键是分解技术——把一个较大的问题分解成较小的、可管理的单元,这样每一个单元都是可以单独处理的,这个技术是软件工程的许多方法的核心。这些方法可以称为结构化设计,模块化编程,面向对象程序设计,基于构件的程序设计,它们产生的单元称为模块、包、对象或构件。
基于构件软件开发是历史发展的必然,基于构件的软件开发(Component Based Software Development),简称CBD。基于构件的软件工程(Component Based Software Engineering),简称CBSE。CBD追求的目标是软件的“即插即用”。回顾经典的工业化革命,不难得出一些有益的启示:功能再复杂的产品都是由大量标准的零件(领域构件)组成,零件在生产线上装配成一个产品,所有零件在产品中共同发挥作用。分工越细致,专业生产的程度越高,总体生产效率就越高。
把这些启示运用于软件开发,那就是:标准的零件就是软件生产的构件,构件在软件生产线上通过集成得到新开发的软件。
3.1 构件的分类
构件有两个层次,粗粒度构件和细粒度构件。粗粒度构件指的是基于操作系统平台的构件,已经实现即插即用的目标。例如,基于Windows平台开发的各种应用软件,Microsoft Office,Windows Media Player,Realone Player,Flash Get,金山词霸,瑞星杀毒软件等等,这些应用程序可以直接安装使用,当不再需要这些应用程序的时候,可以通过自带的卸载程序或通过控制面板将其卸载。很明显,这正是我们所讨论的软件的“即插即用”,只不过这些构件跨平台能力太差,不能直接从Windows平台移植到Unix平台、Solaris平台或其它平台;复用程度也太差,不是我们心目中最求的目标。
细粒度构件指的是可以用来组装应用程序的构件,包括通用构件和专用构件,基于构件的软件开发讨论的就是这种构件。
另一种分类是根据软件复用来进行分类的,分为广义构件和狭义构件。广义构件是指用于复用的软件实体,包括分析文档、详细设计、代码实现等。狭义构件特指二进制代码构件,可以用于组装应用程序。
3.2 CBD模型描述
基于构件的软件开发,简称CBD,足面向对象程序设计的继承和发展。一个构件由一个或多个对象经过包装构成,通过接口独立地对外提供服务。接口和硬件接口相似,有输入接口、输出接口和输入输出接口。我们看现实生活的一个例子,可以引发我们的很多思考。人是一个对象,也是经过规范包装的一个构件,其接口是眼、耳、鼻、舌、口、身,其中眼、耳、鼻、舌是输入接口,口是输出接口,身是输入输出接口。人通过输入接口接收信息和对外界的感知,通过神经传递消息,集中在大脑进行加工处理,反馈信息通过神经传递到输出接口,从而完成人对现实世界的认识和感知,完成人与人之问的沟通与协调,这样就构成了整个人类社会。
CBD也是相似的,每个构件都是由一个或多个对象经过规范包装构成的,形成标准的部件,然后在构件集成开发环境下,组装成应用程序。下面我们详细看一下CBD生存周期的概念。
基于构件的软件开发生存周期为系统分析,蓝图设计,构件的准备与生产,构件的集成与测试,使用,维护六个阶段。经过系统分析和蓝图设计之后,就必须进行构件的准备和生产,这时候,可以复用通用构件,对于特定领域的特殊构件,必须自己进行生产,实现领域内的特殊业务逻辑。系统分析的时候,采用自上而下的分析方法,识别出系统的所有需求,把整个系统分解为多个一级子模块,如果需要,再进行更细的详分,标识为二级子模块,三级子模块等等。一般来说,模块的划分不宜太深,二级就可以了,否则理解起来就很困难。当把子模块详细分解为构件之后,在构件集成开发环境下,首先进行构件设计,实现业务逻辑,然后标识接El,进行规范包装,使构件像工业上的标准零件一样。在集成开发环境下,采用和c棚似的两层界面,一层是设计界面,一层是代码界面,构件集成开发环境的成功之处在于,双击任何一个构件,能够将构件和构件代码一一对应起来,从而大大方便编程和调试程序。当把各个小构件准备好了之后,把它们集成编译为更大的构件,直至集成为一级构件,最后把一级构件组装为应用程序。
为了更加直观,可以把包装好的构件用图形界面表示出来。有的构件是独立构件,有的构件由很多小构件组装而成。
3.3 构件软件开发层次结构(图1)
参考文献
[1]朱三元,钱乐秋,宿为民.软件工程技术概论[M].北京:科学出版社,2007.
[2]R.Otte,P.Patrick,M.Roy[著],李师贤,等[译].CORBA教程[M].北京:清华大学出版社,2009.