资源描述:
《对象状态模型的逆向抽取方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、摘要逆向工程是软件工程研究的一个重要领域,它的主要内容是对遗产系统进行正确的理解.面向对象方法的出现使编程风格发生巨大变化,也对逆向工程的发展提出了新的挑战.本文的主要工作集中在逆向工程中类(对象)的状态模型的生成部分,提供了一种状态抽取方法.该方法是静态逆向工程和动态逆向工程的结合.本文首先从逆向工程角度对“状态”进行定义,认为状态是对象收到各种消息后所产生的行为的分类.当对象处于某一个状态时,它对所接收到的消息产生的反应是一定的.从此定义出发,将类的方法体中的控制语句(-if-else/do-white/for/case等)作为区别程序行为的基础,而程序行为
2、的区别可以转换成对象状态的划分.方法中提出了“状况树”和“具体状况树”的概念,其中状况树是在类的方法体中反映流程控制语句层次关系的树形结构,它的每一个节点都附着有一个布尔变量,具体状况树是这些布尔变量值确定之后的状况树.本文给出了对状况树节点填写真值以得到具体状况树的方法.在填写真值的方法中重点介绍了对受参数影响的流程控制语句的处理原则.具体状况树用来对状态进行区分,本文设计了由程序的执行信息跟踪状态变化的步骤,在目标程序的运行中得到对象的状态模型.状态模型的完全性取决于类测试的完全性.本文给出一系列算法来保证状况树和具体状况树的正确生成,并在一个实验性的小型系
3、统中对算法加以实现.针对Java语言的一个子集,这些算法包括方法和类的状况树的建立、流程控制语句条件部分真值是否受参数影响的判定、监测程序运行情况的代码的插入以及将监测结果与状况树结合成具体状况树等.为了验证所提出方法的可行性,本文设计了一个简单的应用实例,在实例中详细的说明了由代码逆向进行状态划分的步骤,比较了由本文方法进行逆向工程得到的结果和原状态图的差别.与Tampere大学的TaraSysta等人汁燕卵.早.罕告异.a卜登竺优望梦赞图生成方法相比,本万法甲状态田阴户王小狱,,匕WJT3e}'Mm,n9状态的粒度控制也比较方便.一最后,本文对需要进一步完善
4、的工作进行了讨论,这些工作主要包括状态图的完全性和粒度选取的目的性.AbstradAbstractAsanimportantpartofSoftwareEn乡neeringresearch,ReverseEngineeringcanhelpusunderstandLegacySystemcorrectly.Object-Orientedmethoddoesmakepeoplebuildasoftwaresystemeasier.Atthesametime,itgivesanewchallengetoReverseEngineering.SCED,develope
5、dbyTaraSysta,TampereUniversity,isaReverseEngineeringtoolthatgivesameansforbuildingstatemodelfromlegacysystem.Inthemeans,SCEDusesScenarioDiagram,anequivalenttosequencediagraminUML,togetstatechartdiagram.Inthispaper,whatwewanttodoisfindinganewwaytogeneratetheStateModelofaclassinObject-
6、OrientedProgrammingLanguage.Acode-basedmethod,whichcombinesStaticReverseEngineeringanddynamicReverseEngineering,isbroughtforwardforthispurpose.First,wegiveadefinitiontoState,whichisakeywordinthepaper,fromthepointofviewofReverseEngineering.Inthedefinition,Stateisapartitionofobject'sbe
7、havior,thatmeanswhenwesayaclassoranobjectindifferentstates,theobject'sbehaviorsinthetwostates,evenwhenthesamemethodsarecalled,arenotsame.Second,weusetheflow-controllingstatementsinthemethodsofaclasstodistinguishdifferentbehaviors.TherearetwonewconceptionsinthepapercalledTreeOfStatusa
8、ndTreeOfStat