首页 > 最新文献

12th Working Conference on Reverse Engineering (WCRE'05)最新文献

英文 中文
Workshop on Program Comprehension through Dynamic Analysis (PCODA ‘05) 通过动态分析理解程序研讨会(PCODA ‘05)
Pub Date : 2006-01-03 DOI: 10.1109/WCRE.2005.35
O. Greevy, A. Hamou-Lhadj, A. Zaidman
Software maintenance and evolution can be made easier if program comprehension techniques are used. Understanding a software system would typically necessitate a combination of static and dynamic analysis techniques. The aim of this workshop is to gather researchers working in the area of program comprehension with an emphasis on dynamic analysis. We are interested in investigating how dynamic analysis techniques are used or can be used to enable better comprehension of a software system.
如果使用了程序理解技术,软件的维护和发展就会变得更加容易。理解软件系统通常需要结合静态和动态分析技术。本次研讨会的目的是聚集在程序理解领域的研究人员,重点是动态分析。我们感兴趣的是研究如何使用动态分析技术,或者如何使用动态分析技术来更好地理解软件系统。
{"title":"Workshop on Program Comprehension through Dynamic Analysis (PCODA ‘05)","authors":"O. Greevy, A. Hamou-Lhadj, A. Zaidman","doi":"10.1109/WCRE.2005.35","DOIUrl":"https://doi.org/10.1109/WCRE.2005.35","url":null,"abstract":"Software maintenance and evolution can be made easier if program comprehension techniques are used. Understanding a software system would typically necessitate a combination of static and dynamic analysis techniques. The aim of this workshop is to gather researchers working in the area of program comprehension with an emphasis on dynamic analysis. We are interested in investigating how dynamic analysis techniques are used or can be used to enable better comprehension of a software system.","PeriodicalId":119724,"journal":{"name":"12th Working Conference on Reverse Engineering (WCRE'05)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2006-01-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122709634","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Semantic navigation of large code bases in higher-order, dynamically typed languages 用高阶动态类型语言对大型代码库进行语义导航
Pub Date : 2005-11-07 DOI: 10.1109/WCRE.2005.29
S. Spoon, O. Shivers
Chuck is a new code browser that allows navigation of a code base along semantic structures, such as data-flow and higher-order control-flow relationships. Employing the fast DDP type inferencer, it is effective on dynamically typed code bases an order of magnitude larger than the code bases supported by previous browsers. Chuck supports the full Smalltalk language, and is now shipped as a standard component of the Squeak open-source Smalltalk system, where it routinely works with code bases exceeding 300,000 lines of code. Chuck's implementation is tuned for interactive use, and is transparently integrated with the Squeak system's existing code-browsing tools. Thus, it provides semantic navigation of a live code base that is still being edited without requiring long pauses for reanalysis due to edits of the code.
Chuck是一种新的代码浏览器,它允许沿着语义结构(如数据流和高阶控制流关系)导航代码库。使用快速的DDP类型推断器,它对动态类型的代码库有效,比以前浏览器支持的代码库大一个数量级。Chuck支持完整的Smalltalk语言,并且现在作为Squeak开源Smalltalk系统的标准组件发布,在该系统中,它通常可以处理超过300,000行代码的代码库。Chuck的实现针对交互式使用进行了调整,并与Squeak系统现有的代码浏览工具透明地集成在一起。因此,它提供了仍在编辑的实时代码库的语义导航,而不需要长时间的停顿来重新分析代码。
{"title":"Semantic navigation of large code bases in higher-order, dynamically typed languages","authors":"S. Spoon, O. Shivers","doi":"10.1109/WCRE.2005.29","DOIUrl":"https://doi.org/10.1109/WCRE.2005.29","url":null,"abstract":"Chuck is a new code browser that allows navigation of a code base along semantic structures, such as data-flow and higher-order control-flow relationships. Employing the fast DDP type inferencer, it is effective on dynamically typed code bases an order of magnitude larger than the code bases supported by previous browsers. Chuck supports the full Smalltalk language, and is now shipped as a standard component of the Squeak open-source Smalltalk system, where it routinely works with code bases exceeding 300,000 lines of code. Chuck's implementation is tuned for interactive use, and is transparently integrated with the Squeak system's existing code-browsing tools. Thus, it provides semantic navigation of a live code base that is still being edited without requiring long pauses for reanalysis due to edits of the code.","PeriodicalId":119724,"journal":{"name":"12th Working Conference on Reverse Engineering (WCRE'05)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2005-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117351921","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
When functions change their names: automatic detection of origin relationships 当函数更改其名称时:自动检测源关系
Pub Date : 2005-11-07 DOI: 10.1109/WCRE.2005.33
Sunghun Kim, Kai Pan, E. J. Whitehead
It is a common understanding that identifying the same entity such as module, file, and function between revisions is important for software evolution related analysis. Most software evolution researchers use entity names, such as file names and function names, as entity identifiers based on the assumption that each entity is uniquely identifiable by its name. Unfortunately names change over time. In this paper, we propose an automated algorithm that identifies entity mapping at the function level across revisions even when an entity's name changes in the new revision. This algorithm is based on computing function similarities. We introduce eight similarity factors to determine if a function is renamed from a function. To find out which similarity factors are dominant, a significance analysis is performed on each factor. To validate our algorithm and for factor significance analysis, ten human judges manually identified renamed entities across revisions for two open source projects: Subversion and Apache2. Using the manually identified result set we trained weights for each similarity factor and measured the accuracy of our algorithm. We computed the accuracies among human judges. We found our algorithm's accuracy is better than the average accuracy among human judges. We also show that trained weights for similarity factors from one period in one project are reusable for other periods and/or other projects. Finally we combined all possible factor combinations and computed the accuracy of each combination. We found that adding more factors does not necessarily improve the accuracy of origin detection.
通常的理解是,在修订之间识别相同的实体(如模块、文件和功能)对于软件演进相关的分析非常重要。大多数软件进化研究人员使用实体名称,如文件名和函数名,作为实体标识符,基于每个实体通过其名称唯一可识别的假设。不幸的是,名字会随着时间而改变。在本文中,我们提出了一种自动算法,即使实体的名称在新修订中发生了变化,也可以在功能级别上识别跨修订的实体映射。该算法基于函数相似度的计算。我们引入八个相似因素来确定一个函数是否从一个函数重命名。为了找出哪些相似因素占主导地位,对每个因素进行显著性分析。为了验证我们的算法并进行因素显著性分析,10名人工裁判手动识别了两个开源项目(Subversion和Apache2)的修订版本中的重命名实体。使用人工识别的结果集,我们训练了每个相似因子的权重,并测量了算法的准确性。我们计算了人类判断的准确性。我们发现我们的算法的准确率优于人类法官的平均准确率。我们还表明,一个项目中一个时期的相似因素的训练权重可用于其他时期和/或其他项目。最后对所有可能的因子组合进行组合,并计算每种组合的精度。我们发现,增加更多的因素并不一定会提高原点检测的准确性。
{"title":"When functions change their names: automatic detection of origin relationships","authors":"Sunghun Kim, Kai Pan, E. J. Whitehead","doi":"10.1109/WCRE.2005.33","DOIUrl":"https://doi.org/10.1109/WCRE.2005.33","url":null,"abstract":"It is a common understanding that identifying the same entity such as module, file, and function between revisions is important for software evolution related analysis. Most software evolution researchers use entity names, such as file names and function names, as entity identifiers based on the assumption that each entity is uniquely identifiable by its name. Unfortunately names change over time. In this paper, we propose an automated algorithm that identifies entity mapping at the function level across revisions even when an entity's name changes in the new revision. This algorithm is based on computing function similarities. We introduce eight similarity factors to determine if a function is renamed from a function. To find out which similarity factors are dominant, a significance analysis is performed on each factor. To validate our algorithm and for factor significance analysis, ten human judges manually identified renamed entities across revisions for two open source projects: Subversion and Apache2. Using the manually identified result set we trained weights for each similarity factor and measured the accuracy of our algorithm. We computed the accuracies among human judges. We found our algorithm's accuracy is better than the average accuracy among human judges. We also show that trained weights for similarity factors from one period in one project are reusable for other periods and/or other projects. Finally we combined all possible factor combinations and computed the accuracy of each combination. We found that adding more factors does not necessarily improve the accuracy of origin detection.","PeriodicalId":119724,"journal":{"name":"12th Working Conference on Reverse Engineering (WCRE'05)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2005-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114886365","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 108
Reengineering towards Product Lines (R2PL 2005) 再造生产线(R2PL 2005)
Pub Date : 2005-11-07 DOI: 10.1109/WCRE.2005.26
B. Graaf, L. O'Brien, Rafael Capilla
Today, software intensive systems are developed more and more using product line approaches. These approaches require the definition of a product line architecture that implicitly or explicitly specifies some degree of variability. This variability is used to instantiate concrete software product instances. A product line approach not only implies reuse of architecture-level design knowledge, it also facilitates reuse of implementation-level artefacts, such as source code and executable components. The use of software product lines can reduce the cost of developing new products significantly.
今天,软件密集型系统越来越多地使用产品线方法开发。这些方法需要定义产品线架构,该架构隐式或显式地指定某种程度的可变性。这种可变性用于实例化具体的软件产品实例。产品线方法不仅意味着架构级设计知识的重用,而且还促进了实现级工件(如源代码和可执行组件)的重用。使用软件产品线可以显著降低开发新产品的成本。
{"title":"Reengineering towards Product Lines (R2PL 2005)","authors":"B. Graaf, L. O'Brien, Rafael Capilla","doi":"10.1109/WCRE.2005.26","DOIUrl":"https://doi.org/10.1109/WCRE.2005.26","url":null,"abstract":"Today, software intensive systems are developed more and more using product line approaches. These approaches require the definition of a product line architecture that implicitly or explicitly specifies some degree of variability. This variability is used to instantiate concrete software product instances. A product line approach not only implies reuse of architecture-level design knowledge, it also facilitates reuse of implementation-level artefacts, such as source code and executable components. The use of software product lines can reduce the cost of developing new products significantly.","PeriodicalId":119724,"journal":{"name":"12th Working Conference on Reverse Engineering (WCRE'05)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2005-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130347767","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
Estimating the costs of a reengineering project 估算再造项目的成本
Pub Date : 2005-11-07 DOI: 10.1109/WCRE.2005.18
H. Sneed
Accurate estimation of project costs is an essential prerequisite to making a reengineering project. Existing systems are usually reengineered because it is cheaper to reengineer them than to redevelop or to replace them. However, to make this decision, management must know what the reengineering will cost. This contribution describes an eight step tool supported process for calculating the time and the costs required to reengineer an existing system. The process is derived from the author's 20 year experience in estimating reengineering projects and has been validated by several real life field experiments in which it has been refined and calibrated
准确估算项目成本是进行再造项目的必要前提。现有系统通常被重新设计,因为重新设计它们比重新开发或替换它们更便宜。然而,为了做出这个决定,管理层必须知道重组的成本。该贡献描述了计算重新设计现有系统所需的时间和成本的八步工具支持过程。该过程来源于作者20年估算再工程项目的经验,并通过几个实际领域的实验进行了验证,其中对其进行了改进和校准
{"title":"Estimating the costs of a reengineering project","authors":"H. Sneed","doi":"10.1109/WCRE.2005.18","DOIUrl":"https://doi.org/10.1109/WCRE.2005.18","url":null,"abstract":"Accurate estimation of project costs is an essential prerequisite to making a reengineering project. Existing systems are usually reengineered because it is cheaper to reengineer them than to redevelop or to replace them. However, to make this decision, management must know what the reengineering will cost. This contribution describes an eight step tool supported process for calculating the time and the costs required to reengineer an existing system. The process is derived from the author's 20 year experience in estimating reengineering projects and has been validated by several real life field experiments in which it has been refined and calibrated","PeriodicalId":119724,"journal":{"name":"12th Working Conference on Reverse Engineering (WCRE'05)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2005-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131688854","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 51
Deobfuscation: reverse engineering obfuscated code 去混淆:对被混淆的代码进行逆向工程
Pub Date : 2005-11-07 DOI: 10.1109/WCRE.2005.13
Sharath K. Udupa, S. Debray, Matias Madou
In recent years, code obfuscation has attracted attention as a low cost approach to improving software security by making it difficult for attackers to understand the inner workings of proprietary software systems. This paper examines techniques for automatic deobfuscation of obfuscated programs, as a step towards reverse engineering such programs. Our results indicate that much of the effects of code obfuscation, designed to increase the difficulty of static analyses, can be defeated using simple combinations of straightforward static and dynamic analyses. Our results have applications to both software engineering and software security. In the context of software engineering, we show how dynamic analyses can be used to enhance reverse engineering, even for code that has been designed to be difficult to reverse engineer. For software security, our results serve as an attack model for code obfuscators, and can help with the development of obfuscation techniques that are more resilient to straightforward reverse engineering.
近年来,代码混淆作为一种低成本的提高软件安全性的方法引起了人们的注意,这种方法使攻击者难以理解专有软件系统的内部工作原理。本文研究了自动解混淆程序的技术,作为逆向工程这类程序的一步。我们的结果表明,代码混淆的许多影响,旨在增加静态分析的难度,可以使用简单的静态和动态分析的简单组合来克服。我们的研究结果对软件工程和软件安全都有应用。在软件工程的上下文中,我们展示了如何使用动态分析来增强逆向工程,甚至对于那些设计为难以逆向工程的代码。对于软件安全,我们的结果可以作为代码混淆器的攻击模型,并且可以帮助开发对直接逆向工程更有弹性的混淆技术。
{"title":"Deobfuscation: reverse engineering obfuscated code","authors":"Sharath K. Udupa, S. Debray, Matias Madou","doi":"10.1109/WCRE.2005.13","DOIUrl":"https://doi.org/10.1109/WCRE.2005.13","url":null,"abstract":"In recent years, code obfuscation has attracted attention as a low cost approach to improving software security by making it difficult for attackers to understand the inner workings of proprietary software systems. This paper examines techniques for automatic deobfuscation of obfuscated programs, as a step towards reverse engineering such programs. Our results indicate that much of the effects of code obfuscation, designed to increase the difficulty of static analyses, can be defeated using simple combinations of straightforward static and dynamic analyses. Our results have applications to both software engineering and software security. In the context of software engineering, we show how dynamic analyses can be used to enhance reverse engineering, even for code that has been designed to be difficult to reverse engineer. For software security, our results serve as an attack model for code obfuscators, and can help with the development of obfuscation techniques that are more resilient to straightforward reverse engineering.","PeriodicalId":119724,"journal":{"name":"12th Working Conference on Reverse Engineering (WCRE'05)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2005-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124160514","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 204
Mappings for accurately reverse engineering UML class models from C++ 从c++精确地逆向工程UML类模型的映射
Pub Date : 2005-11-07 DOI: 10.1109/WCRE.2005.21
A. Sutton, Jonathan I. Maletic
The paper introduces a number of mapping rules for reverse engineering UML class models from C++ source code. The mappings focus on accurately identifying such elements as relationship types, multiplicities, and aggregation semantics. These mappings are based on domain knowledge of the C++ language and common programming conventions and idioms. An application implementing these heuristics is used to reverse engineer a moderately sized open source, C++ application, and the resultant class model is compared against those produced by other UML reverse engineering applications. A comparison shows that these presented mapping rules effectively produce meaningful, semantically accurate UML models
本文介绍了从c++源代码逆向工程UML类模型的一些映射规则。映射的重点是准确地识别关系类型、多样性和聚合语义等元素。这些映射基于c++语言的领域知识和常见的编程约定和习惯。实现这些启发式的应用程序被用于逆向工程一个中等规模的开放源代码c++应用程序,并将生成的类模型与其他UML逆向工程应用程序产生的类模型进行比较。比较表明,这些呈现的映射规则有效地产生了有意义的、语义准确的UML模型
{"title":"Mappings for accurately reverse engineering UML class models from C++","authors":"A. Sutton, Jonathan I. Maletic","doi":"10.1109/WCRE.2005.21","DOIUrl":"https://doi.org/10.1109/WCRE.2005.21","url":null,"abstract":"The paper introduces a number of mapping rules for reverse engineering UML class models from C++ source code. The mappings focus on accurately identifying such elements as relationship types, multiplicities, and aggregation semantics. These mappings are based on domain knowledge of the C++ language and common programming conventions and idioms. An application implementing these heuristics is used to reverse engineer a moderately sized open source, C++ application, and the resultant class model is compared against those produced by other UML reverse engineering applications. A comparison shows that these presented mapping rules effectively produce meaningful, semantically accurate UML models","PeriodicalId":119724,"journal":{"name":"12th Working Conference on Reverse Engineering (WCRE'05)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2005-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131718939","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 23
Search-based amorphous slicing 基于搜索的非晶切片
Pub Date : 2005-11-07 DOI: 10.1109/WCRE.2005.28
D. Fatiregun, M. Harman, R. Hierons
Amorphous slicing is an automated source code extraction technique with applications in many areas of software engineering, including comprehension, reuse, testing and reverse engineering. Algorithms for syntax-preserving slicing are well established, but amorphous slicing is harder because it requires arbitrary transformation; finding good general purpose amorphous slicing algorithms therefore remains as hard as general program transformation. In this paper we show how amorphous slices can be computed using search techniques. The paper presents results from a set of experiments designed to explore the application of genetic algorithms, hill climbing, random search and systematic search to a set of six subject programs. As a benchmark, the results are compared to those from an existing analytical algorithm for amorphous slicing, which was written specifically to perform well with the sorts of program under consideration. The results, while tentative at this stage, do give grounds for optimism. The search techniques proved able to reduce the size of the programs under consideration in all cases, sometimes equaling the performance of the specifically-tailored analytic algorithm. In one case, the search techniques performed better, highlighting a fault in the existing algorithm
非晶切片是一种自动化的源代码提取技术,应用于软件工程的许多领域,包括理解、重用、测试和逆向工程。保持语法的切片算法已经很好地建立了,但非晶切片更难,因为它需要任意变换;因此,寻找良好的通用非晶切片算法仍然和通用程序转换一样困难。在本文中,我们展示了如何使用搜索技术计算非晶片。本文介绍了一组实验的结果,旨在探索遗传算法、爬坡、随机搜索和系统搜索在一组六个主题程序中的应用。作为基准,将结果与现有的非晶切片分析算法的结果进行了比较,该算法是专门为在考虑的各种程序中表现良好而编写的。结果,虽然在这个阶段是试探性的,但确实给了乐观的理由。事实证明,在所有情况下,搜索技术都能够减少所考虑的程序的大小,有时与专门定制的分析算法的性能相当。在一种情况下,搜索技术表现得更好,突出了现有算法中的一个错误
{"title":"Search-based amorphous slicing","authors":"D. Fatiregun, M. Harman, R. Hierons","doi":"10.1109/WCRE.2005.28","DOIUrl":"https://doi.org/10.1109/WCRE.2005.28","url":null,"abstract":"Amorphous slicing is an automated source code extraction technique with applications in many areas of software engineering, including comprehension, reuse, testing and reverse engineering. Algorithms for syntax-preserving slicing are well established, but amorphous slicing is harder because it requires arbitrary transformation; finding good general purpose amorphous slicing algorithms therefore remains as hard as general program transformation. In this paper we show how amorphous slices can be computed using search techniques. The paper presents results from a set of experiments designed to explore the application of genetic algorithms, hill climbing, random search and systematic search to a set of six subject programs. As a benchmark, the results are compared to those from an existing analytical algorithm for amorphous slicing, which was written specifically to perform well with the sorts of program under consideration. The results, while tentative at this stage, do give grounds for optimism. The search techniques proved able to reduce the size of the programs under consideration in all cases, sometimes equaling the performance of the specifically-tailored analytic algorithm. In one case, the search techniques performed better, highlighting a fault in the existing algorithm","PeriodicalId":119724,"journal":{"name":"12th Working Conference on Reverse Engineering (WCRE'05)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2005-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123188005","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 39
Diagnosing design problems in object oriented systems 诊断面向对象系统中的设计问题
Pub Date : 2005-11-07 DOI: 10.1109/WCRE.2005.15
A. Trifu, Radu Marinescu
Software decay is a phenomenon that plagues aging software systems. While in recent years, there has been significant progress in the area of automatic detection of "code smells" on one hand, and code refactorings on the other hand, we claim that existing restructuring practices are seriously hampered by their symptomatic and informal (non-repeatable) nature. This paper makes a clear distinction between structural problems and structural symptoms (also known as code smells), and presents a novel, causal approach to restructuring object oriented systems. Our approach is based on two innovations: the encapsulation of correlations of symptoms and additional contextual information into higher-level design problems, and the univocal, explicit mapping of problems to unique refactoring solutions. Due to its explicit, repeatable nature, the approach shows high potential for increased levels of automation in the restructuring process, and consequently a decrease in maintenance costs.
软件衰减是困扰老化软件系统的一种现象。虽然近年来,一方面在自动检测“代码气味”方面取得了重大进展,另一方面在代码重构方面取得了重大进展,但我们认为,现有的重构实践受到其症状性和非正式(不可重复)性质的严重阻碍。本文明确区分了结构问题和结构症状(也称为代码气味),并提出了一种新的、因果的方法来重构面向对象的系统。我们的方法基于两个创新:将症状和附加上下文信息的相关性封装到更高级别的设计问题中,以及将问题明确地映射到独特的重构解决方案。由于其明确的、可重复的性质,该方法显示了在重组过程中提高自动化水平的巨大潜力,并因此降低了维护成本。
{"title":"Diagnosing design problems in object oriented systems","authors":"A. Trifu, Radu Marinescu","doi":"10.1109/WCRE.2005.15","DOIUrl":"https://doi.org/10.1109/WCRE.2005.15","url":null,"abstract":"Software decay is a phenomenon that plagues aging software systems. While in recent years, there has been significant progress in the area of automatic detection of \"code smells\" on one hand, and code refactorings on the other hand, we claim that existing restructuring practices are seriously hampered by their symptomatic and informal (non-repeatable) nature. This paper makes a clear distinction between structural problems and structural symptoms (also known as code smells), and presents a novel, causal approach to restructuring object oriented systems. Our approach is based on two innovations: the encapsulation of correlations of symptoms and additional contextual information into higher-level design problems, and the univocal, explicit mapping of problems to unique refactoring solutions. Due to its explicit, repeatable nature, the approach shows high potential for increased levels of automation in the restructuring process, and consequently a decrease in maintenance costs.","PeriodicalId":119724,"journal":{"name":"12th Working Conference on Reverse Engineering (WCRE'05)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2005-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126570808","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 68
Enriching reverse engineering with semantic clustering 用语义聚类丰富逆向工程
Pub Date : 2005-11-07 DOI: 10.1109/WCRE.2005.16
Adrian Kuhn, Stéphane Ducasse, Tudor Gîrba
Understanding a software system by just analyzing the structure of the system reveals only half of the picture, since the structure tells us only how the code is working but not what the code is about. What the code is about can be found in the semantics of the source code: names of identifiers, comments etc. In this paper, we analyze how these terms are spread over the source artifacts using latent semantic indexing, an information retrieval technique. We use the assumption that parts of the system that use similar terms are related. We cluster artifacts that use similar terms, and we reveal the most relevant terms for the computed clusters. Our approach works at the level of the source code which makes it language independent. Nevertheless, we correlated the semantics with structural information and we applied it at different levels of abstraction (e.g. classes, methods). We applied our approach on three large case studies and we report the results we obtained.
通过分析系统的结构来理解一个软件系统只揭示了一半的情况,因为结构只告诉我们代码是如何工作的,而不是代码是关于什么的。代码的内容可以在源代码的语义中找到:标识符的名称,注释等。在本文中,我们分析了这些术语是如何使用潜在语义索引(一种信息检索技术)在源工件上传播的。我们假设系统中使用相似术语的部分是相关的。我们对使用相似术语的工件进行聚类,并为计算出的聚类揭示最相关的术语。我们的方法在源代码级别上工作,这使得它与语言无关。然而,我们将语义与结构信息关联起来,并将其应用于不同的抽象级别(例如类、方法)。我们将我们的方法应用于三个大型案例研究,并报告了我们获得的结果。
{"title":"Enriching reverse engineering with semantic clustering","authors":"Adrian Kuhn, Stéphane Ducasse, Tudor Gîrba","doi":"10.1109/WCRE.2005.16","DOIUrl":"https://doi.org/10.1109/WCRE.2005.16","url":null,"abstract":"Understanding a software system by just analyzing the structure of the system reveals only half of the picture, since the structure tells us only how the code is working but not what the code is about. What the code is about can be found in the semantics of the source code: names of identifiers, comments etc. In this paper, we analyze how these terms are spread over the source artifacts using latent semantic indexing, an information retrieval technique. We use the assumption that parts of the system that use similar terms are related. We cluster artifacts that use similar terms, and we reveal the most relevant terms for the computed clusters. Our approach works at the level of the source code which makes it language independent. Nevertheless, we correlated the semantics with structural information and we applied it at different levels of abstraction (e.g. classes, methods). We applied our approach on three large case studies and we report the results we obtained.","PeriodicalId":119724,"journal":{"name":"12th Working Conference on Reverse Engineering (WCRE'05)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2005-11-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131927935","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 125
期刊
12th Working Conference on Reverse Engineering (WCRE'05)
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1