{"title":"Folding: an approach to enable program understanding of preprocessed languages","authors":"Bernt Kullbach, Volker Riediger","doi":"10.1109/WCRE.2001.957805","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957805","url":null,"abstract":"Since the early days of programming, preprocessors have been used to increase the expressiveness of programming languages. As a prominent example, the C Preprocessor cpp even allows low level configuration management through conditional compilation. But preprocessors significantly complicate the task of program understanding because \"what the user sees is not what the compiler gets\". There is a need for bridging the gap between preprocessor input and preprocessor output. The authors propose the use of folding for explicitly representing preprocessor replacements within a program understanding environment. The approach presented has been implemented as part of the GUPRO program understanding workbench. The user is enabled to individually choose the level of detail from the programmer's view to the compiler's view on the source code.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"110 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":"122571561","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":"Assisting the comprehension of legacy transactions","authors":"Suzanne M. Embury, J. Shao","doi":"10.1109/WCRE.2001.957841","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957841","url":null,"abstract":"One of the principal aims of data reverse engineering is to facilitate comprehension of the internal structure and behaviour of data-intensive systems by programmers. However the majority of the research in this area has so far concentrated on the development of techniques to assist comprehension of the data structures used by such systems, and much less attention has been paid to the equally pressing problem of understanding the ways in which those structures are manipulated by the systems to solve business problems. In particular, there are few tools which can help a programmer to comprehend the functionality provided by a collection of database transactions. While some relevant techniques have been developed by the software reverse engineering community, in general their applicability to transactions is limited by the fact that they focus on program state alone. In-depth analysis of source code that manipulates data stored in a database (or other persistent store) must take into account the effects of that source code on both the program state and the database state. In this paper we present an extension of the technique of symbolic execution that takes into account the specific semantics of database access commands. This extended symbolic execution engine can extract declarative representations of the data manipulations carried out by transactions, in the form of logical conditions over the database state rather procedural manipulation of the program state. The engine is then used to annotate transactions with automatically generated comments, to assist the transaction programmer in comprehending its behaviour.","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":"128975352","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":"Reverse program calculation supported by code slicing","authors":"G. Villavicencio, J. Oliveira","doi":"10.1109/WCRE.2001.957808","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957808","url":null,"abstract":"This paper sketches a discipline for reverse engineering which combines formal and semi-formal methods. Among the former is the \"algebra of programming\", which we apply in \"reverse order\" so as to reconstruct formal specifications of legacy code. The latter includes code slicing, used as a means of trimming down the complexity of handling the formal semantics of all program variables at the same time. A strong point of the approach is its constructive style. Reverse calculations go as far as imploding auxiliary variables, introducing mutual recursion (if applicable) and transforming semantic functions into standard generic programming schemata such as cata/paramorphisms. We illustrate the approach by reversing a piece of code (from C to Haskell) already studied in the code-slicing literature: the word-count (wc) program.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"27 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":"126978029","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":"Interactive migration of legacy databases to net-centric technologies","authors":"Yury Bychkov, J. Weber","doi":"10.1109/WCRE.2001.957839","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957839","url":null,"abstract":"Due to the rapid growth of e-commerce (and other Internet-related technologies), many companies want to migrate their information systems to the net-centric environment. We are proposing a toolkit (Varlet/Babel) that helps the user to achieve this goal. This is accomplished in two stages. In the first stage, a database schema is obtained and refined, then an XML description for the database schema is generated and used to wrap access to the information system. In this paper, we focus on the second stage and describe the methods that are used to create a mapping between the generated schema and a standard (interchange) schema and to make a second wrapper around the information system.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"43 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":"121578989","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":"Generating robust parsers using island grammars","authors":"L. Moonen","doi":"10.1109/WCRE.2001.957806","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957806","url":null,"abstract":"Source model extraction, the automated extraction of information from system artifacts, is a common phase in reverse engineering tools. One of the major challenges of this phase is creating extractors that can deal with irregularities in the artifacts that are typical for the reverse engineering domain (for example, syntactic errors, incomplete source code, language dialects and embedded languages). The paper proposes a solution in the form of island grammars, a special kind of grammar that combines the detailed specification possibilities of grammars with the liberal behavior of lexical approaches. We show how island grammars can be used to generate robust parsers that combine the accuracy of syntactical analysis with the speed, flexibility and tolerance usually only found in lexical analysis. We conclude with a discussion of the development of MANGROVE, a generator for source model extractors based on island grammars and describe its application to a number of case studies.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"192 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122356618","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":"Program comprehension risks and opportunities in extreme programming","authors":"A. van Deursen","doi":"10.1109/WCRE.2001.957822","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957822","url":null,"abstract":"Investigates the relationship between reverse engineering and program comprehension on the one hand, and the software process on the other. To understand this relationship, we select one particular existing software process, extreme programming (XP), and study the role played in it by program comprehension and reverse engineering. To that end, we analyze five key XP practices in depth: pair programming, unit testing, refactoring, evolutionary design and collaborative planning. The contributions of this paper are: (1) the identification of promising research areas in the field of program comprehension; (2) the identification of new application perspectives for reverse engineering technology; (3) a critical analysis of XP resulting in research questions that could help resolve some of the uncertainties surrounding XP; and (4) a discussion of the role that comprehension and reverse engineering can play in software process design.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"112 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117195311","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":"A retrospective on industrial database reverse engineering projects - part 2","authors":"M. Blaha","doi":"10.1109/WCRE.2001.957818","DOIUrl":"https://doi.org/10.1109/WCRE.2001.957818","url":null,"abstract":"For pt.1 see ibid., p.136-46 (2001). The paper continues the compilation of results from the reverse engineering of 35 databases. It presents a series of standard observations and their variation across the databases. It reports additional experimental data from database reverse engineering. The paper yields insight into the state of the practice for database design. It is clear that the current practice is lacking and that there are opportunities for improvement. The database community has much work ahead in teaching developers to design databases better. In the meantime, reverse engineers can help by calling attention to actual practices and influencing product selections towards better designs.","PeriodicalId":150878,"journal":{"name":"Proceedings Eighth Working Conference on Reverse Engineering","volume":"75 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133095697","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}