{"title":"Comparing type-based and proof-directed decompilation","authors":"A. Mycroft, A. Ohori, Shin-ya Katsumata","doi":"10.1109/WCRE.2001.957844","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957844","url":null,"abstract":"In the past couple of years interest in decompilation has widened from its initial concentration on reconstruction of control flow into well-founded-in-theory methods to reconstruct type information. A. Mycroft (1999) described Type-Based Decompilation and S. Katsumata and A. Ohori (2001) described Proof-Directed Decompilation. The article summarises the two approaches and identifies their commonality, strengths and weaknesses; it concludes by suggesting how they may be integrated.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"8 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-10-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126604449","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}
M. Harman, R. Hierons, S. Danicic, J. Howroyd, M. Laurence, C. Fox
{"title":"Node coarsening calculi for program slicing","authors":"M. Harman, R. Hierons, S. Danicic, J. Howroyd, M. Laurence, C. Fox","doi":"10.1109/WCRE.2001.957807","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957807","url":null,"abstract":"Several approaches to reverse and re-engineering are based upon program slicing. Unfortunately, for large systems, such as those which typically form the subject of reverse engineering activities, the space and time requirements of slicing can be a barrier to successful application. Faced with this problem, several authors have found it helpful to merge control flow graph (CFG) nodes, thereby improving the space and time requirements of standard slicing algorithms. The node-merging process essentially creates a 'coarser' version of the original CFG. The paper introduces a theory for defining control flow graph node coarsening calculi. The theory formalizes properties of interest, when coarsening is used as a precursor to program slicing. The theory is illustrated with a case study of a coarsening calculus, which is proved to have the desired properties of sharpness and consistency.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"60 11","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-10-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"113972514","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}
{"title":"CRAFT: a framework for evaluating software clustering results in the absence of benchmark decompositions [Clustering Results Analysis Framework and Tools]","authors":"B. Mitchell, S. Mancoridis","doi":"10.1109/WCRE.2001.957813","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957813","url":null,"abstract":"Software clustering algorithms are used to create high-level views of a system's structure using source code-level artifacts. Software clustering is an active area of research that has produced many clustering algorithms. However, we have so far seen very little work that investigates how the results of these algorithms can be evaluated objectively in the absence of a benchmark decomposition or without the active participation of the original designers of the system. Ideally, for a given system, art agreed upon reference (benchmark) decomposition of the system's structure would exist, allowing the results of various clustering algorithms to be compared against it. Since such benchmarks seldom exist, we seek alternative methods to gain confidence in the quality of results produced by software clustering algorithms. In this paper, we present a tool that supports the evaluation of software clustering results in the absence of a benchmark decomposition.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"20 3","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-10-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114007632","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}
{"title":"Displaying dependence graphs: a hierarchical approach","authors":"Françoise Balmas","doi":"10.1109/WCRE.2001.957830","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957830","url":null,"abstract":"We present a method to handle data- and control-flow information, represented as simplified system dependence graphs. As soon as a program is bigger than a few dozens of lines of code, its dependence graph becomes unreadable with standard drawing tools, since it contains far too many nodes and edges. In our approach, we propose to decompose the program into a hierarchy of groups that are likely to be of manageable size. We implemented a tool that first builds this hierarchy and stores it in a data base. A graphical interface allows then to browse this hierarchy to visualize the dependences of each group, to annote the nodes or groups and possibly to refine the proposed hierarchy. This paper introduces our approach for program decomposition, it describes our tool for dependence exploration and discusses the preliminary results we obtained with a few sample programs.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"9 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-10-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126426185","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}
{"title":"Identifying similar code with program dependence graphs","authors":"J. Krinke","doi":"10.1109/WCRE.2001.957835","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957835","url":null,"abstract":"We present an approach to identifying similar code in programs based on finding similar subgraphs in attributed directed graphs. This approach is used on program dependence graphs and therefore considers not only the syntactic structure of programs but also the data flow within (as an abstraction of the semantics). As a result, there is no tradeoff between precision and recall; our approach is very good in both. An evaluation of our prototype implementation shows that the approach is feasible and gives very good results despite the non polynomial complexity of the problem.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"124 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-10-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131245085","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}
{"title":"Preprocessor conditional removal by simple partial evaluation","authors":"I. Baxter, M. Mehlich","doi":"10.1109/WCRE.2001.957833","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957833","url":null,"abstract":"Preprocessors with conditionals are often used as software configuration management tools, with preprocessor variables naming configuration aspects. The preprocessor conditionals found in large systems often have complex enabling Boolean equations and nesting. Over long periods, some configuration aspects lose all utility. Removal of all traces of a configuration variable and code dependent on that aspect becomes a significant task if performed manually. An industrial-strength transformation system can remove such configuration aspects in a much shorter period of time, by symbolically simplifying away the configuration aspect. The paper sketches the problem and the required transforms, and discusses a case study involving over a million lines of source code.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"105 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-10-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132270590","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}
{"title":"An investigation into the connectivity properties of source-header dependency graphs","authors":"G. Gannod, B. Gannod","doi":"10.1109/WCRE.2001.957815","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957815","url":null,"abstract":"A modularization is a partitioning of a software system into components based on a variety of criteria, each depending on the clustering approach and desired level of abstraction. Source-header dependency graphs are bipartite graphs that are formed by flattening include file dependencies and enumerating source-file-to-header-file dependencies. In this paper, we describe an approach for identifying candidate modularizations of software systems by analyzing connectivity properties of source-header dependency graphs. In addition, we apply the approach to a large software system to demonstrate its applicability.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"68 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-10-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115077750","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}
{"title":"Application of UML associations and their adornments in design recovery","authors":"Ralf Kollmann, Martin Gogolla","doi":"10.1109/WCRE.2001.957812","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957812","url":null,"abstract":"Many CASE tools support reverse engineering and UML. However, it can be observed that, usually, only a subset of the UML notation is supported, namely those parts with a more or less direct code representation. Although a lot of research has been done in this field, the more advanced features of UML notations are not commonly supported in reverse engineering. In this paper, we show approaches to discover patterns in program code that can be represented by means of the advanced notational features of UML class diagrams. We obtain the necessary information by reverse-engineering Java programs with different methods. These have been implemented in a prototype implementation.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"109 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-10-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124743038","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}
R. Ferenc, S. Sim, R. Holt, R. Koschke, T. Gyimóthy
{"title":"Towards a standard schema for C/C++","authors":"R. Ferenc, S. Sim, R. Holt, R. Koschke, T. Gyimóthy","doi":"10.1109/WCRE.2001.957809","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957809","url":null,"abstract":"Developing a standard schema at the abstract syntax tree (AST) level for C/C++ to be used by reverse engineering and reengineering tools is a complex and difficult problem. In this paper we present a catalogue of issues that need to be considered in order to design a solution. Three categories of issues are discussed. Lexical structure is the first category and pertains to characteristics of the source code, such as spaces and comments. The second category, syntax, includes both the mundane and hard problems in the C++ programming language. The final category is semantics and covers aspects such as naming and reference resolution. Example solutions to these challenges are provided from the Datrix schema from Bell Canada and the Columbus schema from University of Szeged. The paper concludes with a discussion of lessons learnt and plans for future work on a C/C++AST standard schema.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"20 5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-10-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129860712","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}
{"title":"GUSTT: an amorphous slicing system which combines slicing and transformation","authors":"M. Harman, Lin Hu, M. Munro, Xingyuan Zhang","doi":"10.1109/WCRE.2001.957831","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957831","url":null,"abstract":"The paper presents a system for amorphous program slicing which combines slicing and transformation to achieve thinner slices than are possible using conventional syntax-preserving slicing. The approach involves the validation of the transformation and slicing steps using the Coq proof assistant, thereby guaranteeing the correctness of the amorphous slices produced. The combined application of slicing and transformation is illustrated with a simple case study. Several components of the system implement transformation tactics, such as side-effect removal and dependence reduction transformations which have wider applications than the construction of amorphous slices.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-10-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130791598","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}