{"title":"Parallel support for source code analysis and modification","authors":"I. Baxter","doi":"10.1109/SCAM.2002.1134100","DOIUrl":"https://doi.org/10.1109/SCAM.2002.1134100","url":null,"abstract":"Tools that analyze and enhance large-scale software systems using symbolic reasoning are computationally expensive, and yet processors are cheap. We believe that enabling tools with parallel foundations will lead to qualitatively more useful tools. We have implemented a large-scale industrial-strength program transformation system, the DMS Software Reengineering Toolkit, entirely in PARLANSE, a new parallel language. PARLANSE provides support for irregular fine-grain parallelism with zero-cost exception handling. This paper sketches the motivation for PARLANSE, its parallelism support and how it is used in a number of DMS-based applications, including parallel rewriting and attribute evaluation.","PeriodicalId":301735,"journal":{"name":"Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation","volume":"31 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116003199","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":"Precise call graph construction in the presence of function pointers","authors":"Ana L. Milanova, A. Rountev, B. Ryder","doi":"10.1109/SCAM.2002.1134115","DOIUrl":"https://doi.org/10.1109/SCAM.2002.1134115","url":null,"abstract":"The use of pointers presents serious problems for software productivity tools for software understanding, restructuring, and testing. Pointers enable indirect memory accesses through pointer dereferences, as well as indirect procedure calls (e.g., through function pointers in C). Such indirect-accesses and calls can be disambiguated with pointer analysis. In this paper we evaluate the precision of a pointer analysis by Zhang et al. (1996, 1998) for the purposes of call graph construction for C programs with function pointers. The analysis is implemented in the context of a production-strength code-browsing tool from Siemens Corporate Research. The analysis uses an inexpensive, almost-linear flow- and context-insensitive algorithm. To measure analysis precision, we compare the call graph computed by the analysis with the most precise call graph obtainable by a large category of pointer analyses. Surprisingly, for all our data programs the analysis of Zhang et al. achieves the best possible precision. This result indicates that for the purposes of call graph construction, even inexpensive analyses can provide very good precision, and therefore the use of more expensive analyses may not be justified.","PeriodicalId":301735,"journal":{"name":"Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation","volume":"44 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121689391","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, Lin Hu, M. Munro, Xingyuan Zhang, S. Danicic, M. Daoudi, Lahcen Ouarbya
{"title":"An interprocedural amorphous slicer for WSL","authors":"M. Harman, Lin Hu, M. Munro, Xingyuan Zhang, S. Danicic, M. Daoudi, Lahcen Ouarbya","doi":"10.1109/SCAM.2002.1134110","DOIUrl":"https://doi.org/10.1109/SCAM.2002.1134110","url":null,"abstract":"This paper presents a simple interprocedural algorithm for amorphous slicing and illustrates the way in which interprocedural amorphous slicing improves upon interprocedural syntax-preserving slicing. The paper also presents results from an empirical study of tin implementation of this algorithm for Ward's Wide Spectrum Language, WSL. The implementation uses the FermaT transformation workbench. It combines FermaT transformations with the results produced by a syntax-preserving slicer for WSL. Finally, it is shown that the combination of amorphous slicing and conditioned slicing ran be particularly attractive, by combining results from the amorphous slicer with results from a prototype conditioned slicer for WSL.","PeriodicalId":301735,"journal":{"name":"Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation","volume":"40 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131371901","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":"Mechanized operational semantics of WSL","authors":"Xingyuan Zhang, M. Munro, M. Harman, Lin Hu","doi":"10.1109/SCAM.2002.1134107","DOIUrl":"https://doi.org/10.1109/SCAM.2002.1134107","url":null,"abstract":"This paper presents an experiment on computer assisted formal verification of program transformations. The operational semantics of WSL is formalized in the type theoretical proof assistant Coq, which forms the basis on which the correctness of program transformations can be stated and proved as formulae in Coq. A group of program transformations frequently used for software maintenance have been proved correct. The existence of a machine checked formal verification increases significantly the confidence in the correctness of program transformations, which is crucial for the reliability of software maintenance systems.","PeriodicalId":301735,"journal":{"name":"Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation","volume":"43 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116005765","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":"Evaluating clone detection tools for use during preventative maintenance","authors":"E. Burd, J. Bailey","doi":"10.1109/SCAM.2002.1134103","DOIUrl":"https://doi.org/10.1109/SCAM.2002.1134103","url":null,"abstract":"This paper describes the results of a process whereby the detection capability of 5 code replication detection tools for large software application are evaluated. Specifically this work focuses on the benefits of identification for preventative maintenance that is with the aim to remove some of the identified clones from the source code. A number of requirements are therefore identified upon which the tools are evaluated. The results of the analysis processes show that each tool has its own strengths and weaknesses and no single tool is able to identify all clones within the code. The paper proposes that it may be possible to use a combination of tools to perform the analysis process providing that adequate means of efficiently identifying false matches is found.","PeriodicalId":301735,"journal":{"name":"Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation","volume":"96 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127283694","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}
C. Bischof, H. M. Bücker, B. Lang, A. Rasch, A. Vehreschild
{"title":"Combining source transformation and operator overloading techniques to compute derivatives for MATLAB programs","authors":"C. Bischof, H. M. Bücker, B. Lang, A. Rasch, A. Vehreschild","doi":"10.1109/SCAM.2002.1134106","DOIUrl":"https://doi.org/10.1109/SCAM.2002.1134106","url":null,"abstract":"Derivatives of mathematical functions play a key role in various areas of numerical and technical computing. Many of these computations are done in MATLAB, a popular environment for technical computing providing engineers and scientists with capabilities for mathematical computing, analysis, visualization, and algorithmic development. For functions written in the MATLAB language, a novel software tool is proposed to automatically transform a given MATLAB program into another MATLAB program capable of computing not only the original function but also user-specified derivatives of that function. That is, a program transformation known as automatic differentiation is performed to change the semantics of the program in a fashion based on the chain rule of differential calculus. The crucial ingredient of the tool is a combination of source-to-source transformation and operator overloading. The overall design of the tool is described and numerical experiments are reported demonstrating the efficiency of the resulting code for a sample problem.","PeriodicalId":301735,"journal":{"name":"Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation","volume":"41 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115291230","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 simple mathematically based framework for rule extraction using wide spectrum language","authors":"Frederick V. Ramsey, J. Alpigini","doi":"10.1109/SCAM.2002.1134104","DOIUrl":"https://doi.org/10.1109/SCAM.2002.1134104","url":null,"abstract":"Programs use rules to dictate or constrain specific decisions or actions. These rules have typically been tested, revised, and updated continuously; therefore, they represent a substantial and valuable business or intellectual asset. These rules often are not reused because the legacy program code is the only valid source for these rules, and extraction of the rules from the legacy code is thought to be too difficult. This problem is exacerbated when a re-engineering project potentially involves rule recovery from multiple programs in multiple languages. This paper reviews the uses of mathematically formal approaches to business rule recovery and extraction. The applications of provable transformations from different programming languages to Wide Spectrum Language (WSL) are reviewed, and a simple framework for two different rule extraction approaches using WSL is presented. An example of rule extraction using each approach is presented, and the requirements, advantages, and limitations of each approach are examined.","PeriodicalId":301735,"journal":{"name":"Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131393652","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":"Dynamic slicing object-oriented programs for debugging","authors":"Baowen Xu, Zhenqiang Chen, Hongji Yang","doi":"10.1109/SCAM.2002.1134111","DOIUrl":"https://doi.org/10.1109/SCAM.2002.1134111","url":null,"abstract":"Dynamic program slicing is an effective technique for narrowing the errors to the relevant parts of a program when debugging. Given a slicing criterion, the dynamic slice contains only those statements that actually affect the variables in the slicing criterion. We propose a method to dynamically slice object-oriented (OO) programs based on dependence analysis. It uses the object program dependence graph and other static information to reduce the information to be traced during program execution. It deals with OO features such as inheritance, polymorphism and dynamic bindings. Based on this model, we present methods to slice methods, objects and classes. We also modify the slicing criterion to fit for debugging.","PeriodicalId":301735,"journal":{"name":"Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2002-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126954626","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}