摘要
随着互联网技术的飞速发展,软件系统的运行环境越来越趋于网络化,导致用户对软件性能的要求不断提升,软件的变化性和复杂程度也进一步提高。此时,软件演化逐渐显现出来,成为了领域中的研究热点。软件复杂性变高,要求我们必须从宏观层面入手,软件体系结构从系统全局刻画系统结构,是软件演化的重要依据,因此体系结构的演化已经成为许多软件系统的根本需求。
传统的面向对象技术良好的解决了体系结构中单个业务逻辑的实现问题,但是由于系统中横切关注点和需求多变性的存在,面向对象技术便显现出了其局限性。面向方面技术的提出恰好为解决系统中的横切问题提出了可行的方法,利用面向对象技术将系统中的横切属性封装形成方面,很好的解决了软件系统的代码分散问题,有利于系统的维护和演化。
此外,当前软件系统的演化愈发频繁,如何进行体系结构层面的演化影响分析也是当前的研究热点。现存的基于体系结构演化的研究并没有实现有效分析演化变更的手段以保持软件动态演化的完整性和可控性。
为了解决上述问题,作者通过大量文献阅读和研究工作,将AOP思想引入到软件体系结构中,对两者的优点进行分析和结合,提出了面向方面的软件体系结构模型;利用反射原理解决体系结构运行时不可见的问题,提出了一种支持动态演化的反射式架构RFSAAO,实现了对演化的控制;演化就会带来变更,变更会对软件系统产生影响,针对体系结构演化产生的变更,本文从静态和动态两方面分别详细分析了构件间的依赖关系,最终实现了体系结构层次的演化影响分析并应用到实例中,对该方法进行了初步验证,为软件演化实现良好的可控性打下理论基础。
Along with the development of Internet, the operating environment of software becomes networking increasingly, users’requests to software performance are much higher than before, and so the variability and complexity of software are higher. Software evolution appears and becomes a researching hot spot. We must start our research from the microscopical layer. Software architecture can describe system from overall situation. So, evolution of architecture has been fundamental requirement of many systems.
Traditional OOT can solve implements of single business logic, but because of the existence of crossing points and polytropism, we must use AOP, it puts forward doable methods to solve those questions. With AOP, we can form the crossing attributes into aspect, then we can solve the problem of code scattering, this will be in favor of system maintenance and evolution.
In addition, software system evolution is so frequently that how to analyze evolution impact in architecture layer is also the researching hot spot. Existing architecture evolution research hasn’t analyzed software change, so it can’t preserve the completeness and controllability of software evolution.
To solve above problems, by doing a large number of reading and researching work, this dissertation introduce the idea of Aspect-oriented into software architecture, then analyze and combine their advantages, establish an aspect-oriented software architecture; With reflection theory, put forward a reflection framework that support evolution, and realize to control evolution; specific to the changes generated by architecture evolution, this dissertation analyses dependences between components’ports form the aspects of static and dynamic, realize change impact analysis and put it into use, confirm this method preliminary, finally lay the theoretical foundation for good controllability of architecture evolution.
引文
[1]M. M. Lehman, D. E. Peryy, J. F. Ramil. Metrics and Laws of Software Evolution-the Nineties Views[A]. Proceeding of 4th International Symposium on Software Metrics[C]. IEEE Computer Society Press, 2000: 20-32
[2]Belady L A, Lehman M M. A model of large program development[J]. IBM Systems Journal, 1976, 15(3) : 225-252
[3]李长云,何频捷,李玉龙.软件动态演化技术[M].北京:北京大学出版社, 2007: 71-82
[4]Kiczales G, Lamping J, Mendhekar A, et al. Aspect oriented programming[A]. Proceedings of the 11th European Conference on Object Oriented Programming[C]. Finland, 1997: 220-242
[5]杨放春,龙湘明.软件非功能属性研究[J].北京邮电大学学报, 2004(3): 1-12
[6]Allen R, Garlan D. A Formal Basis for Architectural Connection[J]. ACM Transactions on Software Engineering and Methodology, 1997, 6(3): 213-249
[7]Shaw M, Deline R, Klein D V, et al. Abstractions for Software Architecture and Tools to Support Them[J]. IEEE Transactions on Software Engineering, 1995, 21(4): 315-335
[8]Luckham D C, Kenney J J, Augustin L M, et al. Specification and Analysis of System Architecture using Rapide[J]. IEEE Transactions on Software Engineering, 1995, 21(4): 336-355
[9]Moriconi M, Qian X, Riemenschneider R A. Correct Architecture Refinement[J]. IEEE Transactions on Software Engineering, 1995, 21(4): 356-372
[10]Medvidovic N, Oreizy P, Robbins E, et al. Using Object-oriented Typing to Support Architecture Design in the C2 Style[A]. In Proceedings of ACM SIGSOFT’96: Fourth Symposium on the Foundations of Software Engineering[C]. San Francisco, 1996: 24-32
[11]Medvidovic N, Taylor R N. A Classification and Comparison Framework for Software Architecture Description Languages[J]. IEEE Transactions on Software Engineering, 2000, 26(1): 70-93
[12]王晓光,冯耀东,梅宏. ABC/ADL:一种基于XML的软件体系结构描述语言[J].计算机研究与发展, 2004, 41(9): 1521-1531
[13]朱雪阳,唐稚松.基于时序逻辑的软件体系结构描述语言XYZ/ADL[J].软件学报, 2003, 14(4): 713-720
[14]Gang HUANG, Hong MEI, Qian-xiang WANG. Towards software architecture at runtime[J]. ACM SIGSOFT Software Engineering Notes, 2003, 28(2): 58-66
[15]黄罡,王千祥,梅宏等.基于软件体系结构的反射式中间件研究[J].软件学报, 2003, 14(11): 1819-1826
[16]程淑玉.基于元细胞自动机的SA动态演化模型的构建[J].安徽科技学院学报, 2008, 22(11): 44-47
[17]郭禾,刘天阳,陈锋等.一种基于AOP的软件演化策略设计及实现[J].大连理工大学学报, 2007(2): 270-275
[18]France R, Ray I, Georg G, et al. Aspect-oriented Approach to Early Design Modeling[J]. IEEE Proceedings of Software. 2004, 151(4): 173-185
[19]H.Fakih, N.Bouraqadi, L.Duchien. Aspect and Software Components: a Case Study of the Fractal Component Model[A]. Proceeding of International Workshop of Aspect-Oriented Software Development[C]. Beijing, 2004
[20]Mónica Pinto, Lidia Fuentes, Jose María Troya. DAOP-ADL: an Architecture Description Language for Dynamic Component and Aspect-based Development[A]. GPCE '03 Proceedings of the 2nd international conference on Generative programming and component engineering[C]. New York: Springer-Verlag New York, 2003: 118-137
[21]Mehta N.R., Medvidovic N., Phadke S. Towards a Taxonomy of Software Connectors[A]. In proceeding of the 22nd International Conference on Software Engineering (ICSE’00)[C]. Limerick, Ireland, 2000: 178-187
[22]Quintero C, Romay MP, Fuente P, et al. Reflection-based, Aspect-oriented Software Architecture[J]. Lecture Notes in Computer Science, 2004(3047): 43-56
[23]杨敬中,戎玫,张广泉.面向方面的软件体系结构描述语言AO-ADL[J].计算机工程, 2008, 34(10): 80-82
[24]梅宏,曹东刚. ABC-S~2C:一种面向贯穿特性的构件化软件关注点分离技术[J].计算机学报, 2005, 28(12): 2036-2044
[25]张琳琳,应时,倪友聪等.一种软件体系结构关注点分析方法[J].计算机学报, 2009, 32(9): 1-10
[26]张琳琳,应时,赵楷等.一种建模软件体系结构非功能属性的方法[J].计算机科学, 2009, 36(7): 92-96
[27]Orla Greevy, St’Phane Ducasse, Tudor Girba. Analyzing Feature Traces to Incorporate the Semanties of Change in Software Evolution Analysis[A]. ICSM[C]. 2005: 1-11
[28]Sai Zhang, Zhongxian Gu, Yu Lin, et al. Change Impact Analysis for AspectJ Programs[A]. ICSM 2008[C]. IEEE, 2008: 87-96
[29]S. Casas, J. B. G. Pérez-Schofield, C. Marcos. Conflicts in AspectJ: Restrictions and Solutions[J]. IEEE LATIN AMERICA TRANSACTIONS, 2010, 8(3): 280-286
[30]Amine Boukhtouta, Dima Alhadidi, Mourad Debbabi. A Practical Framework for The Data?ow Pointcut in AspectJ[A]. 2009 International Conference on Availablity, Reliability and Security[C]. IEEE Computer Society, 2009: 835-840
[31]姚振兴,张志祥,贲可荣等.基于JBoss AOP的软件动态演化[J].计算机与数字工程, 2008, 36(10): 58-62
[32]Dewayne Perry, Alexander Wolf. Foundations for The Study of Software Architecture[J]. ACM SIGSOFT Software Engineering Notes, 1992, 17(4): 40-52
[33]Mary Shaw, David Garlan. An Introduction to Software Architecture[R]. Camegie Mellon University, 1994
[34]Philippe Kruchten. Architectural Blueprints-The“4+1”view Model of Software Architecure[J]. IEEE Software, 1995, 12(6): 42-50
[35]610.12-1990, IEEE Glossary of Software Engineering Terminology[S]. IEEE Computer Society, 1998
[36]Barry Boehm, Prasanta Bose, Ellis Horowitz,et al. Software Requirements Negotiation and Renegotiation Aids: A Theory-W Based Spiral Approach[A]. ICSE’95[C]. 1995: 243-253
[37]梅宏,申峻嵘.软件体系结构研究进展[J].软件学报, 2006, 17(6): 1257-1275
[38]梅宏,陈锋,冯耀东等. ABC:基于体系结构、面向构件的软件开发方法[J].软件学报, 2003, 14(4): 721-732
[39]Alessandro Garcia, Alexander Romanovsky, Valerie Issarny. Guest Editors’Introduction to the Special Section on Exception Handling: From Requirements to Software Maintenance[A]. IEEE TRANSACTIONS ON SOFTWARE ENGINEERING[C]. IEEE Computer Society, 2010: 147-149
[40]Eeles P. Capturing architectural requirements[R]. 2004
[41]倪友聪,应时,张琳琳等.基于时序逻辑的面相方面体系结构描述语言[J].计算机科学, 2010, 37(1): 146-162
[42]黄罡,梅宏,杨芙清.基于反射式软件中问件的运行时SA[J].中国科学E辑, 2004, 34(2): 12l-138
[43]李琼,姜瑛.动态软件体系结构研究综述[J].计算机应用研究, 2009, 26(6): 2352-2355
[44]Mario Luca Bernardi, Giuseppe Antonio Di Lucca. The ConAn Tool to Identify Crosscutting Concerns in Object Oriented Systems[A]. 18th IEEE International Conference on Program Comprehension[C]. IEEE Computer Society, 2010: 48-49
[45]张世琨,王立福,常欣等.基于层次消息总线的软件体系结构描述语言[J].电子学报, 2001, 11(5): 581-584
[46]李长云,李莹,吴健等.一个面向服务的支持动态演化的软件模型[J].计算机学报, 2006, 29 (7): 1021-1028
[47]余萍,马晓星,吕建等.一种面向动态软件体系结构的在线演化方法[J].软件学报, 2006, 17(6): 1360-1371
[48]柯举.基于AOP与DI的反射式中间件架构的研究与设计[D].大连:大连海事大学, 2008
[49]刘志宏.一种面向对象软件变更影响分析模型的研究与设计[D].苏州:江苏大学, 2007
[50]Ma Liangli, Wang Houxiang, Lu Yansheng. The Design of Dependeney Relationships Matrix to improve the testabiljty of Component-based Software Quality Software[A]. Sixth International Conference on Volume(QSIC2006) [C]. IEEE Computer Society, 2006: 93-98
[51]K.B.Gallagher, J.R.Lyle. Using Program Slieing in Software Maintenance[J]. IEEE Transaction on Software Engineering, 1991, 17(8): 751-761
[52]孙霞,杨芸.软件体系结构层面的影响分析[J].计算机工程, 2008, 34(1): 55-59