{"title":"Software engineering by source transformation - experience with TXL","authors":"J. Cordy, T. Dean, A. Malton, Kevin A. Schneider","doi":"10.1109/SCAM.2001.972678","DOIUrl":"https://doi.org/10.1109/SCAM.2001.972678","url":null,"abstract":"Many tasks in software engineering can be characterized as source to source transformations. Design recovery, software restructuring, forward engineering, language translation, platform migration and code reuse can all be understood as transformations from one source text to another. TXL, the Tree Transformation Language, is a programming language specifically designed to support rule-based source to source transformation. Originally conceived as a tool for exploring programming language dialects, TXL has evolved into a general purpose software transformation system that has proven well suited to a wide range of software maintenance and reengineering tasks, including the design recovery, analysis and automated reprogramming of billions of lines of commercial Cobol, PL/I and RPG code for the Year 2000. The authors introduce the basic features of modern TXL and its use in a range of software engineering applications, with an emphasis on how each task can be achieved by source transformation.","PeriodicalId":190865,"journal":{"name":"Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation","volume":"31 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-11-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124597597","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 maintenance using software agents","authors":"Amit Sharma, M. Capretz","doi":"10.1109/SCAM.2001.972666","DOIUrl":"https://doi.org/10.1109/SCAM.2001.972666","url":null,"abstract":"The benefits of software agents as a tool for helping in the maintenance process of a software application are shown. The goal of this research was to develop a group of intelligent agents that worked together to aid in software maintenance by automatically informing the appropriate individuals of any changes that were made to an open-source Internet software application. This type of application is suited for intelligent agents because the source code is accessed and modified by many users on the Internet, meaning that the application is under constant change. The methodology of completion for this research can be subdivided into four categories: interface agent algorithm development, implementation using Visual C++, multi-agent system development, and testing. The overall goal is accomplished using a network of four agents each having a specific task; one to monitor the code base (Monitor Agent), one to determine the impact of any software changes (Impact Agent), one to search for pertinent documentation (Search Agent), and finally one to e-mail the appropriate software maintainer (E-mail Agent). The final stage in reaching the objectives of this research is the design of a multi-agent system in which the agents will interact with each other using an agent communication language to autonomously maintain the software application.","PeriodicalId":190865,"journal":{"name":"Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation","volume":"93 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-11-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123559645","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":"Restructuring Web applications via transformation rules","authors":"F. Ricca, P. Tonella, I. Baxter","doi":"10.1109/SCAM.2001.972676","DOIUrl":"https://doi.org/10.1109/SCAM.2001.972676","url":null,"abstract":"During the evolution phase, the structure (pages and links) of a Web application tends unavoidably to degrade. A solution to reverse this degradation can be restructuring the Web application, but this work may take a lot of time and effort if conducted without appropriate tools. The theory of rewrite rules has been used with success in many real restructuring works on traditional software. Our idea is trying to apply rewrite rules to Web applications with the aim of restructuring them. The purpose of the paper is threefold: to describe our initial ideas on HTML rewrites to improve the quality of Web applications, to present our approach for implementing a tool, based on transformation rules, that can help designers in Web application restructuring and to define the starting point of the joint project between ITC-irst and Semantic Designs.","PeriodicalId":190865,"journal":{"name":"Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation","volume":"227 15","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-11-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"113995649","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":"Type infeasible call chains","authors":"Amie L. Souter, L. Pollock","doi":"10.1109/SCAM.2001.972681","DOIUrl":"https://doi.org/10.1109/SCAM.2001.972681","url":null,"abstract":"While some software engineering applications perform static analysis over the whole program call graph, others are more interested in specific call chains within a program's call graph. It is thus important to identify when a particular static call chain for an object-oriented program may not be executable, or feasible, such that there is no input for which the chain will be taken. The paper examines type infeasibility of call chains, which is the infeasibility caused by inherently polymorphic call sites and sometimes also due to imprecision in call graphs. The problem of determining whether a call chain is type infeasible is defined and exemplified, a key property characterizing type in infeasible call chains is described, empirical results from examining the call graphs for a set of Java programs are described, and two approaches to automatically deciding the type infeasibility of a call chain due to object parameters are presented.","PeriodicalId":190865,"journal":{"name":"Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-11-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131364013","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 case study in detecting software security vulnerabilities using constraint optimization","authors":"M. Weber, V. Shah, C. Ren","doi":"10.1109/SCAM.2001.972661","DOIUrl":"https://doi.org/10.1109/SCAM.2001.972661","url":null,"abstract":"In this paper we present a case study in static analysis, with a focus on static methods for detecting buffer overflow vulnerabilities in software. We describe in detail a tool called Mjolnir that we have developed which improves upon existing static analysis techniques for detecting buffer overflow. The architecture and process flow of this tool are presented We discuss some common static analysis obstacles in terms of where they were encountered in developing this tool and the steps that were taken to overcome them. A prototype of the tool has been implemented and used for detecting buffer overflow vulnerabilities in C programs and experimental results are presented that demonstrate the effectiveness of the tool.","PeriodicalId":190865,"journal":{"name":"Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation","volume":"286 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-11-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132107346","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}
Günter Kniesel, Pascal Costanza, Michael Austermann
{"title":"JMangler - a framework for load-time transformation of Java class files","authors":"Günter Kniesel, Pascal Costanza, Michael Austermann","doi":"10.1109/SCAM.2001.972671","DOIUrl":"https://doi.org/10.1109/SCAM.2001.972671","url":null,"abstract":"Current proposals for load-time transformation of Java classes are either dependent on the use of a specific class loader or dependent on a specific JVM implementation. This is not due to an inadequacy of the Java platform but to the wrong choice of the level at which to hook into the Java Class Loader Architecture. JMangler follows a novel approach that ensures both class loader and JVM independence by hooking into the base class of all class loaders. Furthermore, existing proposals do not allow transformers to be treated as components because implicit dependencies must be resolved manually. The paper shows that automatic composition is possible for the well-defined class of interface transformations that still include powerful transformations, like addition of fields, methods and classes, and changes to the class hierarchy. Consequently, interface transformers can be deployed jointly even if developed independently.","PeriodicalId":190865,"journal":{"name":"Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation","volume":"28 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-11-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115700313","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":"Using data flow analysis to infer type information in Java bytecode","authors":"P. Maggi, R. Sisto","doi":"10.1109/SCAM.2001.972683","DOIUrl":"https://doi.org/10.1109/SCAM.2001.972683","url":null,"abstract":"The paper shows how dataflow analysis can be used to infer type information related to Java bytecode, and evaluates this approach. All the elements needed to specify the dataflow problem to be solved are conveniently defined, according to the theory on data flow frameworks, along with algorithms to build them automatically from the Java bytecode. To evaluate the approach, we consider the specific problem of statically determining the set of methods potentially invoked by each method call instruction, which is useful for several purposes, such as building accurate call graphs. Experimental results are presented, showing that data flow analysis can improve the accuracy of the results with respect to other simpler techniques at acceptable costs.","PeriodicalId":190865,"journal":{"name":"Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-11-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115378817","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":"Static slicing and parametric polymorphism","authors":"David Byers, Mariam Kamkar","doi":"10.1109/SCAM.2001.972679","DOIUrl":"https://doi.org/10.1109/SCAM.2001.972679","url":null,"abstract":"Interprocedural static slicing of object-oriented programs that use parametric polymorphism and late binding requires the slicing algorithm to guess which implementations of each method may be called at each call site. This problem is well-known in the slicing community, and is mentioned in most papers that discuss slicing of object-oriented programs. We analyze the problem and present a solution to the problem based on technology from the compiler community. Our approach produces accurate results even in the face of multiple levels of polymorphism.","PeriodicalId":190865,"journal":{"name":"Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation","volume":"48 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-11-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125016519","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}
G. Antoniol, Umberto Villano, M. D. Penta, G. Casazza, E. Merlo
{"title":"Identifying clones in the Linux kernel","authors":"G. Antoniol, Umberto Villano, M. D. Penta, G. Casazza, E. Merlo","doi":"10.1109/SCAM.2001.972670","DOIUrl":"https://doi.org/10.1109/SCAM.2001.972670","url":null,"abstract":"Large multi-platform software systems are likely to encompass hardware-dependent code or sub-systems. However, analyzing multi-platform source code is challenging, due to the variety of supported configurations. Often, the system was originally developed for a single platform, and then new target platforms were added. This practice promotes the presence of duplicated code, also called \"cloned\" code. The paper presents the clone percentage of a multi-platform-multi-million lines of code, Linux kernel version 2.4.0, detected with a metric-based approach. After a brief description of the procedure followed for code analysis and clone identification, the obtained results are commented upon.","PeriodicalId":190865,"journal":{"name":"Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-11-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130796338","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":"Detecting dead statements for concurrent programs","authors":"Zhenqiang Chen, Baowen Xu, Hongji Yang","doi":"10.1109/SCAM.2001.972667","DOIUrl":"https://doi.org/10.1109/SCAM.2001.972667","url":null,"abstract":"With more and more concurrent programs being used in practice, technique and tools to analyze such programs are urgently needed. Due to the schedule, race conditions and synchronization among processes (threads), some statements may never be executed. Such statements are dead statements and have no influence on the programs except make them more difficult to analyze and understand. Therefore, the paper develops a data flow approach to detect dead statements for concurrent programs. With this method concurrent programs are represented by concurrent control flow graphs in a simple and precise way, and detecting rules are extracted by analyzing program behavior. Based on these rules, we propose a dead statement-detecting algorithm.","PeriodicalId":190865,"journal":{"name":"Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation","volume":"52 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2001-11-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128302298","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}