Software Reading Techniques

Software reading is defined as the process by which a developer gains an understanding of the information encoded in a work product sufficient to accomplish a particular task. Software reading is an important skill in software development, occurring potentially many times throughout a system’s life cycle, applied to a number of different work products for a number of different tasks. One example of a process that supports software reading is stepwise abstraction, a procedure by which sequences of steps in an algorithmic document are abstracted to descriptions of functionality at various levels. Stepwise abstraction helps a developer to understand a code document in order to complete a particular task, namely, checking whether it conforms to the specifications set for it. In the current state of the practice, support for software reading is often not available or not used; developers may be taught how to write intermediate work products but rarely how to read and analyze them effectively. Instead, developers rely on ad hoc methods or checklists to analyze documents. In an ad hoc, or unstructured, reading process, the reader is not given direction on how to read, and The practical result is that software document reviewers build up skills in document understanding slowly, based on individual experiences acquired over time. Without a standardized process, training and skill development are difficult, individual practices vary greatly, and controlled improvement is not possible. Software reading techniques address these problems. A software reading technique is a series of steps for the individual analysis of a textual software product to achieve the understanding needed for a particular task. This definition has three main parts. They are individual analysis, series of steps, and a particular task. A reading technique is focussed on some specific task. Specific reading techniques that analyze software work product for the purpose of defect detection are discussed. Keywords: reading techniques; defect detection; defect-based reading; perspective-based reading; object-oriented reading techniques; requirements; codes; usability-based reading