{"title":"Use of a program understanding taxonomy at Hewlett-Packard","authors":"A. Padula","doi":"10.1109/WPC.1993.263905","DOIUrl":"https://doi.org/10.1109/WPC.1993.263905","url":null,"abstract":"Summarizes the use of a program understanding taxonomy developed at Hewlett-Packard. The primary use of the taxonomy has been in the creation of a company internal document called the Software Tools Report. The Software Tools Report is a selection and evaluation guide to software tools that addresses key company software engineering areas which include program understanding. A description of the Report, how it was created, and how it is used is given.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"87 3 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134095223","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 process algebra based program and system representation for reverse engineering","authors":"E. Merlo, Renato DeMori, K. Kontogiannis","doi":"10.1109/WPC.1993.263910","DOIUrl":"https://doi.org/10.1109/WPC.1993.263910","url":null,"abstract":"A reverse engineering approach based on process algebras for system representation and understanding is presented. Process algebras offer both a formal framework for representing communicating processes and a proof theory for proving semantic equivalences between them. Programs and program fragments are denoted as concurrent agents and code behaviour is defined in terms of interactions among agents in a process algebra representation suitable for subsequent analysis. Semantic and behavioural equivalences between programming plans, which represent programming stereo-types, and code fragments can be defined in this formal system together with a deduction system to prove them. Several advantages and further research issues on the use of process algebra for reverse engineering and maintenance are identified and discussed.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131177567","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":"Model-based tools to record program understanding","authors":"E. Younger, K. Bennett","doi":"10.1109/WPC.1993.263902","DOIUrl":"https://doi.org/10.1109/WPC.1993.263902","url":null,"abstract":"Tools to record the knowledge gained by maintainers engaged in understanding an existing program are described. These tools are based on a model of the comprehension process and of reverse engineering as a whole. They form a part of an integrated reverse engineering toolset based around a central repository. Using these tools new documentation for an existing software system may be built up incrementally by successive maintainers who work on the system.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"39 6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116416852","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":"Partial evaluation as an aid to the comprehension of Fortran programs","authors":"Sandrine Blazy, P. Facon","doi":"10.1109/WPC.1993.263907","DOIUrl":"https://doi.org/10.1109/WPC.1993.263907","url":null,"abstract":"The authors describe a technique and a tool supporting partial evaluation of Fortran programs, i.e. their specialization for specific values of their input variables. They aim at understanding old programs, which have become very complex due to numerous extensions. From a given Fortran program and these values of its input variables, the tool provides a simplified program, which behaves like the initial one for the specific values. This tool uses mainly constant propagation and simplification of alternatives to one of their branches. The tool is specified in inference rules and operates by induction on the Fortran abstract syntax. These rules are compiled into Prolog by the Centaur/Fortran environment.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"23 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125132792","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}
P. Linos, Philippe Aubet, Laurent Dumas, Yann Helleboid, Patricia Lejeune, Philippe Tulula
{"title":"Facilitating the comprehension of C-programs: an experimental study","authors":"P. Linos, Philippe Aubet, Laurent Dumas, Yann Helleboid, Patricia Lejeune, Philippe Tulula","doi":"10.1109/WPC.1993.263906","DOIUrl":"https://doi.org/10.1109/WPC.1993.263906","url":null,"abstract":"A software environment called CARE (computer-aided re-engineering) that facilitates the comprehension of existing C programs is described. Program comprehension in CARE is accomplished by visualizing program dependencies (i.e. entities and their relations). A repository of such dependencies is maintained and displayed using a graphical model which combines control and data-flow information. Moreover, CARE entails transformation tools and abstraction mechanisms that support monolithic and multiple-view organization of program dependencies. Results from an experimental study with the CARE environment has shown that the productivity of its users was increased and the quality of the changes made during a software maintenance task was improving. Finally, the lessons learned from an empirical evaluation of the CARE environment indicated that its graphical model, transformation tools and abstraction mechanisms constitute a promising platform for the comprehension of C programs.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"33 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122800762","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 combined representation for the maintenance of C programs","authors":"David A. Kinloch","doi":"10.1109/WPC.1993.263899","DOIUrl":"https://doi.org/10.1109/WPC.1993.263899","url":null,"abstract":"An important aid to the problems of program comprehension has been the use of static analysis tools to provide useful and up to date information on a program. Through the use of different views a maintainer can gain a much clearer understanding of a program. A drawback of static analysis tools is that various representations of the code are required to construct the different views of the program. A solution is to devise a single combined representation containing sufficient information to allow construction of each required view. The paper describes research to extend an existing unified interprocedural graph to allow the representation of C programs. Techniques for the dependence analysis of pointer variables are described and the construction of interprocedural definition-use information in the presence of pointer parameters addressed. A fine grained program representation, the Combined C Graph (CCG), containing three new edge types is introduced.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"38 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125163586","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":"Understanding concurrent programs using program transformations","authors":"E. Younger, M. Ward","doi":"10.1109/WPC.1993.263895","DOIUrl":"https://doi.org/10.1109/WPC.1993.263895","url":null,"abstract":"Reverse engineering of concurrent real-time programs with timing constraints is a particularly challenging research area, because the functional behaviour of a program, and the non-functional timing requirements, are implicit and can be very difficult to discover. The authors present a significant advance in this area, which is achieved by modelling real-time concurrent programs in the wide spectrum language WSL. They show how a sequential program with interrupts can be modelled in WSL, and the method is then extended to model more general concurrent programs. They show how a program modelled in this way may subsequently be 'inverse engineered' by the use of formal program transformations, to discover a specification for the program.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"95 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125271270","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 hybrid approach to recognizing programming plans","authors":"A. Quilici","doi":"10.1109/WPC.1993.263901","DOIUrl":"https://doi.org/10.1109/WPC.1993.263901","url":null,"abstract":"Most current models of program understanding are unlikely to scale up successfully. Top-down approaches require advance knowledge of what the program is supposed to do, which is rarely available with aging software systems. Bottom-up approaches require complete matching of the program against a library of programming plans, which is impractical with the large plan libraries needed to understand programs that contain many domain-specific plans. This paper presents a hybrid approach to program understanding that uses an indexed, hierarchical organization of the plan library to limit the number of candidate plans considered during program understanding. This approach is based on observations made from studying student programmers attempt to perform bottom-up understanding on geometrically-oriented C functions.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"69 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123943944","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":"Criteria for program comprehension derived from software complexity metrics","authors":"H. Zuse","doi":"10.1109/WPC.1993.263911","DOIUrl":"https://doi.org/10.1109/WPC.1993.263911","url":null,"abstract":"Program comprehension is close related to program complexity. In order to analyze program complexity much effort has been spent to measure the complexity of programs. For this reason hundreds of software complexity measures have been proposed. Criteria/conditions for program comprehension from software complexity measures are derived. It is also shown that using measurement theoretic numerical conditions from software complexity measures can be translated back to empirical conditions. That means the term comprehension can be described by empirical axioms. This approach makes it easier to talk about the term program comprehension.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"13 4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124092462","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}
U. D. Carlini, A. D. Lucia, G. D. Lucca, G. Tortora
{"title":"An integrated and interactive reverse engineering environment for existing software comprehension","authors":"U. D. Carlini, A. D. Lucia, G. D. Lucca, G. Tortora","doi":"10.1109/WPC.1993.263898","DOIUrl":"https://doi.org/10.1109/WPC.1993.263898","url":null,"abstract":"Software comprehension is an incremental process to support the understanding of both the behaviour and the structure of software system. It uses the existing documentation of the system and completes it with information deduced from the code by means of reverse engineering tools. Current reverse engineering tools produce pre-defined sets of reports and, in some cases, furnish answers to fixed kinds of queries, thus being inadequate to completely support software comprehension. An interactive reverse engineering environment is described which supports information extraction and abstraction processes about a software system.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"392 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124508427","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}