摘要
目前的许多软件系统需要为客户提供不间断的服务,软件在线演化技术成为当今软件维护领域的一个重要研究课题。能否提供不间断的服务正在成为人们衡量软件系统的一项重要指标。本文在分析系统演化发展现状的基础上,针对构件化软件系统,从构件层次对软件进行在线演化,提出了基于反射原理的演化构件模型,运用该模型实现构件在线演化,重点研究了以下几方面的内容:
一是对于构件演化相关理论的研究。论文首先对基于构件的软件演化进行了研究,指出构件演化是软件演化的主要形式;然后对构件演化的概念和技术进行了讨论。面对开放的运行环境和需要的日益更新,提出构件演化由离线转变为在线的这样一个发展趋势。
二是提出了基于反射的演化构件模型。在分析构件在线演化方法的基础上,指出构件本身具有动态性是构件在线演化的关键。引入反射机制使构件具有自省和调节能力,运行时通过修改构件元层描述,将改变反射到构件基层行为表现,从而实现构件的在线演化。
三是重点研究构件在线演化中的关键技术。主要包括对请求缓冲控制;实现类的动态加载;新旧对象之间的状态转移。
本文以评审委员会专家库管理系统为例,研究了演化构件在人事领域的运用。以基于反射的演化构件模型开发了抽取构件。实现了抽取构件的在线演化。验证了上述构件在线演化相关理论和技术的合理性、可行性和有效性。
最后,本文对该研究课题进行总结,并对未来工作进行了展望。
Many software systems are requested to provide uninterrupted service. The technology of online Software evolution is an important task in software maintenance. To provide uninterrupted service is to be an important guideline to evaluate software. This paper analyzes the development of soft evolution in the present situation, and researches software evolution at the component level, utilizes the introspection and feedback computing technology which is based on reflection. It proposes one kind of evolution component model, to implement component online evolution, and focused on the following aspects:
First of all, it studies the correlated theories about component evolution. Firstly, the article studies the component-based software evolution. As a component is a separate coherent software module and component evolution in the highest flight. It researches the concept and technology of component evolution, and discusses the trend at the moment is online evolution.
Secondly, it provides the evolution component based on reflection. To analyze the method of component online evolution, it refers the dynamic of component is key to online-evolution component. It develop component with introspective and adjustable by reflection mechanism, at runtime component behavior is on base of component mete description. The online evolution is achieved by modifying component mete description and reflecting to component behavior.
Thirdly, it studies the key technology of component online evolution. It includes the control of request buffer, the dynamic loader, the state transfer between new and old object.
The paper analyses the online-evolution component in the domain of personnel, and takes the experts committee system as the example, developing the online-evolution component base on reflective evolution component model. It has confirmed the component online evolution, the feasibility and the validity of the technology that has cited above.
At last, this paper makes summary and some prospect about the future work aiming at the weak place of the research.
引文
[1]C.Kemerer and S.Slaughter.An empirical approach to studying software evolution[J].IEEE Trans.Software Engineering.1999,25(4):493-509.
[2]M.M.Lehman,J.F.Ramil.Evolution in software and related areas[A].Proc.IWPSE 2001[C].Vienna:ACM Press,2001,1-16.
[3]M.M.Lehman,J.F.Ramil.An approach to a theory of software evolution[A].Proc.IWPSE 2001[C].Vienna:ACM Press,2001,10-11.
[4]T.Katayama.Evolutionary Domains:A Basis for Sound Software Evolution[A].Proc.IWPSE 2001[C].Vienna:ACM Press,2001,103-107.
[5]Tom Mens,Serge Demeyer.Future trends in software evolution metrics[A].Proc.IWPSE 2001[C].Vienna:ACM Press,2001,83-86.
[6]He Ji.Dynamic and Static Views of Software Evolution[A].Proceedings of the IEEE International Conference on Software Maintenance[C].Washington:IEEE Computer Society,2001,592.
[7]M.M.Lehman,J.F.Ramil.An approach to a theory of software evolution[A].Proc.IWPSE 2001[C].Vienna:ACM Press,2001,70-74.
[8]Kim Mens,Tom Mens,Michel Wermelinger.Supporting software evolution with intentional software views[A].Proc.IWPSE 2002[C].Orlando:ACM Press,2002,138-142.
[9]Walter Cazzola,Sonia Pini,Massimo Ancona.AOP for software evolution:a design oriented approach[A].SAC 2005[C].Santa Fe:ACM Press,2005,1346 - 1350.
[10]杨芙清,梅宏,李克勤.软件复用与软件构件技术[J].电子学报,1999,27(2):68-76.
[11]梅宏,陈锋,冯耀东等.ABC:基于体系结构、面向构件的软件开发方法[J].软件学报,2003,14(4):721-732.
[12]黄罡,王千祥,曹东刚,梅宏.PKUAS:一种面向领域的构件运行支撑平台[J].电子学报. 2002.30(12):1938-1942.
[13]杨芙清,梅宏.构件化软件设计与实现[M].第一版.北京:清华大学出版社,2008.
[14]李长云.基于体系结构的软件动态演化研究[D].杭州:浙江大学,2005.
[15]Yu Zhou.A runtime architecture-based approach for the dynamic evolution of distributed component-based systems[A].ICSE Companion 2008[C].Leipzig:ACM Press,2008,979-982.
[16]Manuel Oriol.Primitives for the dynamic evolution of component-based applications[A].SAC 2007[C].Seoul:ACM Press,2007,1122 - 1123.
[17]汪洋.基于软件构架和构件的软件演化研究[D].上海:复旦大学,2000.
[18]Plasil F,Balek D,Janecek R.SOFA/ DCUP:Architecture for component trading and dynamic updating[A].Proceedings of the International Conference on Configurable Distributed Systems[C].Annapolis:IEEE Computer Society Press,1998,35-42.
[19]Postma A,America P,Wijnstra J.G.Component replacement in a long-living architecture:The 3RDBA approach[A].Proceedings of the 4th Working IEEE/ IFIP Conference on Software Architecture(WICSA)[C].Oslo:IEEE Computer Society Press,2004,89-100.
[20]Gardler R,Mehandjiev N.Supporting component-based software evolution[A].Proceedings of the International Conference NetObjectDays on Objects,Components,Architectures,Services,and Applications for a Networked World[C].Erfurt:Springer,2002,103-120.
[21]Vandewoude Y,Berbers Y.Run-time evolution for embedded component-oriented systems [A].Proceedings of the International Conference on Software Maintenance(ICSM)[C].Montreal:IEEE Computer Society Press,2002,242-245.
[22]林英,李彤,张雁.构件演化度量方法研究[J].计算机应用与软件.2008,25(6):27-29.
[23]Scott Henninger.Supporting the construction and evolution of component repositories[A].ICSE 1996[C].ACM Press,1996,279-288.
[24]Alexander Stuckenholz.Component evolution and versioning state of the art[J].SIGSOFT Software Engineering Notes,2005,30(1):7.
[25]Andrew McVeigh,Jeff Kramer,Jeff Magee.Using resemblance to support component reuse and evolution[A].SAVCBS 2006[C].Portland:ACM Press,2006,49-56.
[26]Emanuela P.Lins,Ulrik E Schultz.Supporting transparent evolution of component interfaces[A].SAC 2006[C].Dijon:ACM Press,2006,1629-1630.
[27]符进强,汪洋,钱乐秋.基于动态构件框架的构件演化[J].计算机科学.2008.28(1):21-24.
[28]龚洪泉,赵文耘,徐如志.基于Pi演算的构件演化研究[J].电子学报.2004.32(12):238-242.
[29]刘瑜,张世琨,王立福等.一种基于构件演算的主动构件精化方法[J].软件学报,2003,14(8):1364-1370.
[30]窦蕾.面向构件的复杂软件系统中动态配置技术的研究[D].长沙:国防科技大学2005.
[31]彭鑫,赵文耘,吴毅坚.一个支持构件演化和变更管理的配置管理工具[J].南京大学学报.2005,41(10):212-217.
[32]陈兆琪,钟林辉,张路等.软件变化管理系统研究[J].小型微型计算机系统,2002,23(1):29-31.
[33]王晓鹏,王千祥,梅宏.一种面向构件化软件的在线演化方法[J].计算机学报,2005,28(11):1890-1895.
[34]李长云,何频捷,李玉龙.软件动态演化技术[M],第一版.北京:北京大学出版社,2007
[35]Markus Pizka.Dynamic component and code co-evolution[A].Proc.IWPSE 2002[C].Orlando:ACM Press,2002,71-75.
[36]E.Bruneton,T.Coupaye,M.Leclercq,V.Qu ema,and J.-B.Stefani.The fractal component model and its support in java:Experiences with auto-adaptive and recognizable systems[J].Softw.Pract.Exper.2006,36(11):1257-1284,
[37]Marlon Vieira,Debra Richardson.The role of dependencies in component-based systems evolution[A].Proc.IWPSE 2002[C].Orlando:ACM Press,Sep,2002,62 - 65.
[38]Yu Zhou.A Runtime Architecture-Based Approach for the Dynamic Evolution of Distributed Component-Based Systems[A],ICSE2008[C],Leipzig:ACM Press,May 2008,10-18.
[39]Wang Wei,Li Tong.Component Behavior Relativity Analysis[J].SIGSOFT Software Engineering Notes.2008,33(2):1-7.
[40]Hassan Gomaa,Daniel A.Menasc(?),Michael E.Shin.Reflective analysis and design for adapting object run-time behavior[A].Proceedings of the 8th International Conference on Object-Oriented[C].Montpellier:Springer,2001,242-254.
[41]Robert J Gautier,Huw E Oliver.Safe component updates[A].Proceedings of the 5th international conference on Generative programming and component engineering[C],Portland:ACM Press,2006,39-48.
[42]李刚,金茂忠.构件演化中的系统行为一致性的研究[J].计算机工程.2003,29(1):265-267.
[43]卜东波,白硕,李国杰.体系结构动态演化中的构件行为分析[J].计算机学报.2002,25(8):810-816.
[44]SmthB.C.Procedural Reflection in Programming Languages[J],Ph.DThesis,MIT.1982.
[45]Licia Capra,Gordon S.Blair,Cecilia Mascolo,Wolfgang Emmerich,Paul Grace.Exploiting reflection in mobile computing middleware[J],ACM SIGMOBILE Mobile Computing and Communications Review.2002,6(4):34-44.
[46]李已.反射机制的研究与应用[D].南京:河海大学.2005.
[47]S.Vinoski.A time for reflection[J].IEEE Internet Computing,2005,9(1):86-89.
[48]James Hawthorne,Richard Anthony.A reconfigurable component model using reflection[A].SERENE 2008[C].UK:ACM Press,2008,95-100.
[49]王小民,杨志辉,张雄等.结合AOP与反射机制改变软件的行为[J].计算机科学.2007,34(11):274-278.
[50]韩晓英,虞慧群.一种用例驱动的需求关注点分离的方法[J].电子学报.2006,34(12):2498-2510.
[51]George T.Heineman.A model for designing adaptable software components[J].SIGSOFT Software Engineering Notes,2000,25(1):55-56.
[52]Djalel Chefrour.Developing Component Based Adaptive Applications in Mobile Environments[A].SAC2005[C].New Mexico:ACM Press,2005,1147-1150.
[53]黄靖,卢炎生,徐丽萍.基于反射的实时构件模型规约描述研究[J].计算机科学.2006.10(1):231-237.
[54]黄靖,卢炎生,徐丽萍.反射式实时构件的实现[J].计算机科学.2007.34(1):219-222.
[55]黄靖,卢炎生,徐丽萍.基于反射的实时构件模型规约描述研究[J].计算机科学.2006.1(10):231-237.
[56]黄罡,王千祥,梅宏等.基于软件体系结构的反射式中间件研究[J].软件学报,2003,14(11):1819-1826.
[57]梅宏,黄罡,兰灵,李军国.基于体系结构的网构软件自适应方法[J].中国科学(E辑:信息科学),2008,38(6):901-920.
[58]Junrong Shen,Towards a Unified Formal Model for Supporting Mechanisms of Dynamic Component Update[A].ESEC/FSE-13[C].Lisbon:ACM Press,2005,80-89.
[59]Alex Talevski,Pornpit Wongthongtham,Towards a Software Component Ontology[A].Proceedings of the 10th Intemational Conference on Information Integration and Web-based Applications & Services[C].Linz:ACM Press,2008,503-507.
[60]艾萍.用于构件动态更新的状态传递方法[J].计算机科学,2003,24(12):6-13.
[61]林正奎,杨德礼.自适应型构架描述语言xSADL的研究[J].计算机学报,2004,12(6):877-890.
[62]吴明晖,应晶,何志均.一种基于运行时体系结构的BPEL支撑环境[J].计算机工程,1999,25(10):86-88.
[63]Erich Gamma,Richard Helm,Ralph Johnson,John Vissides.设计模式,可复用面向对象软件的基础[M].李英军,马晓星,蔡敏,刘建中等译.机械工业出版社,2000.
[64]Joseph Schmuller.UML基础、案例与应用[M].李虎,王美英,万里威 译.北京:人民邮电出版社,2002.
[65]张锦,基于EJB组件的代码自动生成平台的研究--代码生成器及模板库的设计[D].浙江工业大学.2004.
[66]Leaveland J Craig.用XML与Java创建程序生成器[M].胡俊,刘吉强译.北京:科学出版社,2002.
[67]Matin Gudgin.Essential IDL[M].第一版.北京:中国电力出版社,2002.
[68]Martin Fowler.Analysis Patterns Rusable Object Models[M].第一版,北京:人民邮电出版社,2007.