逆向工程中基于EPOM的设计模式挖掘技术研究

来源 :南京大学 | 被引量 : 0次 | 上传用户:coralbird
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
软件产品的维护和再工程(Reengineering)活动是软件生命周期的重要环节,它们在软件生产中的地位日益重要:自上个世纪六十年代软件行业兴起至今,遗产系统(LegacySystem)的规模已经超过了上千亿行代码,这些软件系统有很多还服务于各行各业。同时每天又有新的软件不断产生,并且即将成为未来的遗产软件。如何让这些系统继续正常运转并且适应新的企业环境是软件维护和再工程必须解决的问题。然而目前的情况却是让人担忧的,软件维护和再工程费用已经远远超过软件生命周期中的其他环节。软件的维护和再工程问题已经成为软件行业关注的焦点。 程序理解(ProgramUnderstanding)是进行软件维护和再工程的首要步骤,它同时也是软件维护和再工程中消耗资源最多的工作,约占软件维护和再工程总费用的50%到90%[1]。因此,研究和开发自动和半自动化的程序理解支撑技术是降低软件总成本、减少软件开发人员工作量,从而从根本上解决软件维护和再工程问题的关键。 逆向工程(ReverseEngineering)技术作为程序理解依赖的重要手段和主要方法,自上个世纪八十年代初以来已经被学术界逐渐接受和重视,并且进行了较为广泛的研究。然而,作为现代面向对象程序设计技术中的重要微结构-设计模式[2](DesignPattern),是自上个世纪九十年代中期才被软件行业运用到实际开发和设计中的。相应的,逆向工程中对设计模式挖掘(恢复)技术(DesignPatternMiningorDiscovery)的研究开展的比较晚、比较少,同时由于设计模式本身具有多样性和复杂性的特点,使得遗产系统中设计模式的挖掘问题成为目前逆向工程研究中的难点之一。 本文是针对逆向工程中设计模式挖掘问题展开的。首先对再工程、逆向工程和设计模式概念进行了介绍,讨论了再工程的常用模型、逆向工程的难点、研究方法及其相关概念、设计模式的描述和分类等背景知识。介绍了目前具有代表性的一些设计模式挖掘技术,包括基于DPML和ASG的设计模式挖掘技术、MAISA系统的设计模式挖掘技术、PAT系统的设计模式挖掘技术等等,并且比较了它们各自的优缺点。在对它们分析和比较的基础上,论文提出了一个基于可扩展程序对象模型(ExtendedProgramObjectModel,简称EPOM)的设计模式挖掘方法:EPOM模型是我们用来描述C和C++源程序的抽象程序模型。该模型通过178类组成的层次结构刻画了C和C++程序设计语言的方方面面。EPOM模型是我们在进行逆向工程研究时,对程序进行静态分析的基础。通过访问EPOM模型以及在EPOM模型上构建的另外两个模型:基于对象、域和型的层次式程序模型(ObjectScopeTypeProgramModel,简称OSTPM)和可扩展程序参考模型(ExtendedProgramReferenceModel,简称EPRM)我们可以抽取出挖掘设计模式需要的重要信息:类之间的继承(inheritance)、关联(association)、聚合(aggregation)、合成(composition)关系以及类中虚函数的使用情况等等。在获得这些关键信息的基础上,我们给出了一个基于EPOM的设计模式挖掘算法。在文章的最后,作为对逆向工程研究中各种问题的思考,我们提出了一个逆向工程框架(GeneralReverseEngineeringFramework,简称GREF),试图将逆向工程中的静态错误检测、代码规范化、度量以及变更冲击问题放在一个通用的、开放的框架中去考虑,从而可以方便的集成各种不同的逆向工程技术和工具,同时避免了重复的研究和开发工作。对遗产系统进行设计模式的挖掘,其目的是为了提高软件维护和再工程活动的效率,减轻维护和开发人员的负担,从而在根本上解决软件维护和再工程活动成本高,效率低的问题。然而我们体会到,本文提出的基于EPOM设计模式挖掘技术和大多数研究机构提出的设计模式挖掘技术类似,也是一个半自动化的方法,无论是正确程度还是效率上还需要作进一步的改进和完善,目前只能作为简单的软件维护工作辅助手段。同时我们看到,逆向工程技术作为软件维护和再工程的主要支持技术,无论是在理论上还是在实践中都还处于一个不太成熟的阶段,设计模式挖掘技术更是逆向工程技术中一个非常年轻的领域,需要我们不断的努力和探索。
其他文献
现有的互联网提供了一种”尽力而为”(best-effort)服务,在这种服务模型下,所有的业务流”一视同仁”公平地竞争网络资源.随着互联网技术的飞速发展,IP业务也得到了快速增长和多
身份认证是证实一个声称的身份是否真实有效的过程,是网络安全技术的一个重要组成部分。本文详细讨论了基于X.509证书格式的PKI认证技术的原理和实现过程,分析了这种认证技术的
蛋白质二级结构预测的方法中绝大多数都是根据蛋白质的一级结构信息即氨基酸序列来进行预测的,而没有考虑到编码蛋白质氨基酸残基序列的DNA序列及其对应密码子中是否隐含有与
随着云计算和虚拟化技术的蓬勃发展,业界学者逐步深入了相关研究。作为实现云计算的关键基础技术,虚拟化提供了一致性的系统级平台,而镜像文件正是扮演了将该平台实例化的重
该文以电子商务的定义、功能和特性开篇,介绍电子商务的现状与发展.在此基础上提出电子商务的一个非常重要的问题——电子商务的安全问题.由此引出目前处于主流并且非常有效
随着即时通类软件在为人们带来诸多方便的同时,也为色情、反动言论及邪教异端邪说洞开方便之门,在企业内部的广泛应用也产生了诸如技术泄密、工作效率降低及网络使用成本增加
大气中二氧化碳含量对海水组成及海洋生物生存环境的影响,正引起人们的广泛关注。在海水结晶问题的有关研究中,基于传统化学实验方法的分析过程繁琐、实际操作复杂、成本花费
软件测试是软件开发过程中极其重要的一环,是保证软件质量、提高软件可靠性的关键。研究软件测试理论和高效的软件测试技术以提高软件质量、降低软件生产成本成为软件工程的一
伴随着Internet网络和通信规模的不断扩大,网络结构日益复杂和异构化,不同网络结构内部以及网络结构之间如何进行管理,成为分布式网络系统监控管理的一个难题.与此同时,越来
随着计算机网络技术的不断发展,数据库应用系统也随之发生着变化。数据库模型从传统的单机模式、两层结构发展到现在的三层结构的分布式网络计算。随着数据库技术的发展,使得