By Topic

Program Comprehension, 1993. Proceedings., IEEE Second Workshop on

Date 8-9 July 1993

Filter Results

Displaying Results 1 - 22 of 22
  • Proceedings IEEE Second Workshop on Program Comprehension (Cat. No.93TH0551-2)

    Save to Project icon | Request Permissions | PDF file iconPDF (171 KB)  
    Freely Available from IEEE
  • An integrated and interactive reverse engineering environment for existing software comprehension

    Page(s): 128 - 137
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (756 KB)  

    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 View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Model-based tools to record program understanding

    Page(s): 87 - 95
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (824 KB)  

    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 View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Experiments in identifying reusable abstract data types in program code

    Page(s): 36 - 45
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (868 KB)  

    The issue of program comprehension is addressed from the software reuse perspective. In particular the identification of abstract data types in existing program code is explored. A candidature criterion is presented and a prototype implementing it is described. The criterion is applied in an experiment that analyses five very different programs and the resulting output is discussed. The work described forms part of the RE2 project that addresses the wider issues of software reuse through the exploration of reverse engineering and re-engineering techniques to identify and extract reusable assets from existing systems View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Understanding concurrent programs using program transformations

    Page(s): 160 - 168
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (632 KB)  

    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 View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Use of a program understanding taxonomy at Hewlett-Packard

    Page(s): 66 - 70
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (392 KB)  

    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 View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Understanding Lolita: program comprehension in functional languages

    Page(s): 26 - 34
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (712 KB)  

    Traditional arguments concerning the comprehensibility of functional programs have been illustrated with trivial examples. The authors present the real-life example of a large system for natural language processing which has been programmed entirely in a lazy functional language. This system is undergoing constant change as new features are added to different areas. They present a series of case studies which illustrate various aspects of the maintenance task, including reuse of existing parts of the system and the integration of the new features. They explain how the choice of a functional language for programming the system has aided in the comprehension of the system by new programmers and how this in turn has led to the simplification of the maintenance task. They describe the ease with which new features have been integrated into the system and relate this to the careful design of abstractions within a functional programming framework View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Facilitating the comprehension of C-programs: an experimental study

    Page(s): 55 - 63
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (656 KB)  

    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 View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • A combined representation for the maintenance of C programs

    Page(s): 119 - 127
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (592 KB)  

    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 View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Extracting application domain functions from old code: a real experience

    Page(s): 186 - 192
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (452 KB)  

    This work deals with the problem of locating domain dependent functions into old application systems and drawing out them for reengineering and reuse. The approach is based on a particular form of program slicing which makes it possible to recover user functionalities although they are spread over the code. Supported by a commercial tool, the approach has been experimented with a banking application system, whose maintenance problems were increasingly serious. Lessons learned suggest that a successful application of program slicing needs the correct identification of data used as operands and results of the domain function. Moreover some preliminary form of code segmentation may be required to enable program slicing to focus on the expected functionalities View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • From program comprehension to tool requirements for an industrial environment

    Page(s): 78 - 86
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (808 KB)  

    A major portion of the maintenance effort is spent understanding existing software. The authors present an integrated code comprehension model and experiences with it in an industrial setting. They use audio-taped, think-aloud reports to investigate how well this integrated code comprehension model works during industrial maintenance activities ranging from code fixes to enhancements, code leverage, and reuse. They analyze the tapes for information needs during maintenance activities and derive tool capabilities accordingly View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • The role of testing and dynamic analysis in program comprehension supports

    Page(s): 149 - 158
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (884 KB)  

    Test cases. amd the human activities involved in testing and error analysis play a peculiar and considerable role in the comprehension of a software product and process. This subject was systematically explored in the context of the Esprit DOCKET Project designing and experimenting second-generation reverse engineering processes which combine multiple knowledge sources. This paper describes the approach, and the architecture which have been designed for the capitalisation of the knowledge products of both existing software life cycle activities and proposed knowledge-elicitation oriented testing strategies View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • A toolset for program understanding

    Page(s): 110 - 118
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (592 KB)  

    Program understanding is associated with the hierarchy of abstractions and interpretations that are deduced from the code. Program understanding requires the identification and study of the numerous complex interrelationships that are induced by the data flow, calling, and functional dependencies that exist in the software. Therefore, an environment is needed in order aid the programmer in understanding software. The authors have previously discussed both an internal program representation and an environment that conforms to the requirements stated. The toolset is referred to as Ghinsu and it supports a number of tasks over a program written in a subset of ANSI C such as slicing, dicing, and ripple analysis. They present some background on the problems associated with program understanding and show how the Ghinsu toolset can aid the programmer in understanding software View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Charon: a tool for code redocumentation and re-engineering

    Page(s): 169 - 176
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (616 KB)  

    The maintenance of applications constitutes the most relevant issue of the overall life cycle activities. CASE tools claim to be effective in producing efficient and error free software, but usually the maintainer doesn't want to produce new system applications, but just to modify the existing ones. Re-engineering appears to be a suitable way of getting the advantages of the automated CASE tools, without facing the costs involved in a complete redevelopment of the existing systems, whose specifications are sometimes obsolete and no more corresponding to the actual version of the software. The authors present a totally automatic approach towards the reconstruction of the software documentation and possible code re-engineering. They move from the source code by using a static code analyser and capture information pertinent to higher level design phases that are subsequently imported into the ADW CASE tool View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Deriving path expressions recursively

    Page(s): 177 - 185
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (532 KB)  

    Program representation plays an important role in software engineering, because it is used by the tools supporting software life cycle activities. To represent a program's control structure, the dominator tree and the implied tree, derived from the program's ddgraph, can be profitably used. In fact, thanks to their recursive structure, these trees are especially suitable for designing very simple and efficient algorithms for program path analysis, which is widely used in measurement and testing activities. In particular, this paper presents a recursive algorithm PE for computing path expressions from the dominator and the implied trees. The algorithm proposed is of interest to program comprehension for two reasons: representation of programs by path expressions is widely applied, e.g., to testing, data flow analysis and development of complexity metrics. An algorithm such as PE, which computes path expressions from flowgraphs, can be used to solve many kinds of path problems View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Partial evaluation as an aid to the comprehension of Fortran programs

    Page(s): 46 - 54
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (688 KB)  

    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 View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Recovering user interface specifications for porting transaction processing applications

    Page(s): 71 - 76
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (480 KB)  

    The Reverse Engineering group at EDS Research has developed software tools to mechanically assist in reengineering transaction processing applications. The authors apply the software tools to assist in converting a very large minicomputer application written in COBOL to run under CICS on an IBM mainframe. The two platforms provide very different user interfaces and computational environments. The user interacts with the minicomputer one field at a time, but interacts with CICS a full screen at a time. This and other major differences demand that any successful mechanical conversion strategy employ sophisticated feature extraction and restructuring techniques. They describe the problem of recovering the user interface specification and using the recovered specification to create the appropriate user interface in the target environment. Techniques such as data flow analysis and other formal analysis techniques appear to be too weak to guide the conversion, and that a priori programming knowledge must be encoded and applied to obtain a successful conversion View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Criteria for program comprehension derived from software complexity metrics

    Page(s): 8 - 16
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (588 KB)  

    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 View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • DOCKET: program comprehension-in-the-large

    Page(s): 140 - 148
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (720 KB)  

    With the growing awareness of the importance of software maintenance, has come a re-evaluation of software maintenance tools. Such tools range from source code analysers to semi-intelligent tools which seek to reconstruct systems designs and specification documents from source code. However, it is clear that relying solely upon source code as the basis for reverse engineering has many problems. This paper proposes the need for program comprehension-in-the-large and describes the work of the Esprit DOCKET project which seeks to provide such a support capability. The DOCKET project has developed a prototype environment to support the development of a system model linking user-oriented, business aspects of a system, to operational code using a variety of knowledge source inputs: code, documents and user expertise. The aim is to provide a coherent model to form the basis for system and program understanding and to support the software change and evolution process View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • A process algebra based program and system representation for reverse engineering

    Page(s): 17 - 25
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (612 KB)  

    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 View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • Understanding the process of software maintenance

    Page(s): 2 - 5
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (380 KB)  

    An extensive programme of research has been in progress at Durham University for the past seven years to investigate how formal transformations may be used to assist the process of software maintenance, particularly addressing the issues of understanding and representing existing large software systems. The results from the research are drawn together in order to assess the success and problems of the approach View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.
  • A hybrid approach to recognizing programming plans

    Page(s): 96 - 103
    Save to Project icon | Request Permissions | Click to expandQuick Abstract | PDF file iconPDF (620 KB)  

    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 View full abstract»

    Full text access may be available. Click article title to sign in or learn about subscription options.