The use of domain knowledge in program understanding

Authors
Citation
S. Rugaber, The use of domain knowledge in program understanding, ANN SOFTW E, 9(1-4), 2000, pp. 143-192
Citations number
72
Categorie Soggetti
Computer Science & Engineering
Journal title
ANNALS OF SOFTWARE ENGINEERING
ISSN journal
10227091 → ACNP
Volume
9
Issue
1-4
Year of publication
2000
Pages
143 - 192
Database
ISI
SICI code
1022-7091(2000)9:1-4<143:TUODKI>2.0.ZU;2-7
Abstract
Program understanding is an essential part of all software maintenance and enhancement activities. As currently practiced, program understanding consi sts mainly of code reading. The few automated understanding tools that are actually used in industry provide helpful but relatively shallow informatio n, such as the line numbers on which variable names occur or the calling st ructure possible among system components. These tools rely on analyses driv en by the nature of the programming language used. As such, they are adequa te to answer questions concerning implementation details, so called what qu estions. They are severely limited, however, when trying to relate a system to its purpose or requirements, the why questions. Application programs so lve real-world problems. The part of the world with which a particular appl ication is concerned is that application's domain. A model of an applicatio n's domain can serve as a supplement to programming-language-based analysis methods and tools. A domain model carries knowledge of domain boundaries, terminology, and possible architectures. This knowledge can help an analyst set expectations for program content. Moreover, a domain model can provide information on how domain concepts are related. This article discusses the role of domain knowledge in program understanding. It presents a method by which domain models, together with the results of programming-language-bas ed analyses, can be used to answers both what and why questions. Representi ng the results of domain-based program understanding is also important, and a variety of representation techniques are discussed. Although domain-base d understanding can be performed manually, automated tool support can guide discovery, reduce effort, improve consistency, and provide a repository of knowledge useful for downstream activities such as documentation, reengine ering, and reuse. A tools framework for domain-based program understanding, a dowser, is presented in which a variety of tools work together to make u se of domain information to facilitate understanding. Experience with domai n-based program understanding methods and tools is presented in the form of a collection of case studies. After the case studies are described, our wo rk on domain-based program understanding is compared with that of other res earchers working in this area. The paper concludes with a discussion of the issues raised by domain-based understanding and directions for future work .