A Knowledge-Based Approach to Program Understanding

  • Salwa K. Abd-El-Hafiz
  • Victor R. Basili

Table of contents

  1. Front Matter
    Pages i-xvii
  2. Salwa K. Abd-El-Hafiz, Victor R. Basili
    Pages 1-4
  3. Salwa K. Abd-El-Hafiz, Victor R. Basili
    Pages 5-18
  4. Salwa K. Abd-El-Hafiz, Victor R. Basili
    Pages 19-22
  5. Salwa K. Abd-El-Hafiz, Victor R. Basili
    Pages 23-40
  6. Salwa K. Abd-El-Hafiz, Victor R. Basili
    Pages 41-59
  7. Salwa K. Abd-El-Hafiz, Victor R. Basili
    Pages 61-65
  8. Salwa K. Abd-El-Hafiz, Victor R. Basili
    Pages 67-75
  9. Salwa K. Abd-El-Hafiz, Victor R. Basili
    Pages 77-81
  10. Salwa K. Abd-El-Hafiz, Victor R. Basili
    Pages 83-88
  11. Salwa K. Abd-El-Hafiz, Victor R. Basili
    Pages 89-92
  12. Back Matter
    Pages 93-119

About this book

Introduction

Program understanding plays an important role in nearly all software related tasks. It is vital to the development, maintenance and reuse activities. Program understanding is indispensable for improving the quality of software development. Several development activities such as code reviews, debugging and some testing approaches require programmers to read and understand programs. Maintenance activities cannot be performed without a deep and correct understanding of the component to be maintained. Program understanding is vital to the reuse of code components because they cannot be utilized without a clear understanding of what they do. If a candidate reusable component needs to be modified, an understanding how it is designed is also required. of This monograph presents a· knowledge-based approach to the automation of program understanding. This approach generates rigorous program documentation mechanically by combining and building on strengths of a practical program decomposition method, the axiomatic correctness notation, and the knowledge­ based analysis approaches. More specifically, this approach documents programs by generating first order predicate logic annotations of their loops. In this approach, loops are classified according to their complexity levels. Based on this taxonomy, variations on the basic analysis approach that best fit each of the different classes are described. In general, mechanical annotation of loops is performed by first decomposing them using data flow analysis. This decomposition encapsulates interdependent statements in events, which can be analyzed individually.

Keywords

C programming language automation computer computer science development documentation logic programming programming proving software software development software engineering

Authors and affiliations

  • Salwa K. Abd-El-Hafiz
    • 1
  • Victor R. Basili
    • 2
  1. 1.Cairo UniversityEgypt
  2. 2.University of MarylandUSA

Bibliographic information

  • DOI https://doi.org/10.1007/978-1-4615-2279-9
  • Copyright Information Kluwer Academic Publishers 1995
  • Publisher Name Springer, Boston, MA
  • eBook Packages Springer Book Archive
  • Print ISBN 978-1-4613-5961-6
  • Online ISBN 978-1-4615-2279-9
  • Series Print ISSN 0893-3405
  • About this book