Simulating computer systems: techniques and tools
Simulating computer systems: techniques and tools
Understanding Z: a specification language and its formal semantics
Understanding Z: a specification language and its formal semantics
Designing documentation to compensate for delocalized plans
Communications of the ACM
CLASSIC: a structural data model for objects
SIGMOD '89 Proceedings of the 1989 ACM SIGMOD international conference on Management of data
Classification of reusable modules
Software reusability: vol. 1, concepts and models
Draco: a method for engineering reusable software systems
Software reusability: vol. 1, concepts and models
Systematic software development using VDM (2nd ed.)
Systematic software development using VDM (2nd ed.)
LaSSIE: a knowledge-based software information system
Communications of the ACM - Special issue on software engineering
Pattern matching: a sheaf-theoretic approach
Pattern matching: a sheaf-theoretic approach
Object-oriented modeling and design
Object-oriented modeling and design
The design and implementation of hierarchical software systems with reusable components
ACM Transactions on Software Engineering and Methodology (TOSEM)
GENOA: a customizable language- and front-end independent code analyzer
ICSE '92 Proceedings of the 14th international conference on Software engineering
Tcl and the Tk toolkit
Program understanding and the concept assignment problem
Communications of the ACM
Software reflexion models: bridging the gap between source and high-level models
SIGSOFT '95 Proceedings of the 3rd ACM SIGSOFT symposium on Foundations of software engineering
Software architecture: perspectives on an emerging discipline
Software architecture: perspectives on an emerging discipline
A process for consolidating and reusing design knowledge
ICSE '93 Proceedings of the 15th international conference on Software Engineering
Understanding interleaved code
Reverse engineering
The entity-relationship model—toward a unified view of data
ACM Transactions on Database Systems (TODS) - Special issue: papers from the international conference on very large data bases: September 22–24, 1975, Framingham, MA
Theory of Modelling and Simulation
Theory of Modelling and Simulation
Software Engineering Economics
Software Engineering Economics
Domain Analysis and Software Systems Modeling
Domain Analysis and Software Systems Modeling
Computer Methods for Mathematical Computations
Computer Methods for Mathematical Computations
Interactive Explanation of Software Systems
Automated Software Engineering
Building Application Generators
IEEE Software
Reverse Engineering and Design Recovery: A Taxonomy
IEEE Software
Recognizing Design Decisions in Programs
IEEE Software
Reverse Engineering Requirements for Process-Control Software
ICSM '94 Proceedings of the International Conference on Software Maintenance
Knowledge-Based User Interface Migration
ICSM '94 Proceedings of the International Conference on Software Maintenance
Domain Analysis and Reverse Engineering
ICSM '94 Proceedings of the International Conference on Software Maintenance
The specification of process synchronization by path expressions
Operating Systems, Proceedings of an International Symposium
Dowsing: A Tool Framework for Domain-Oriented Browsing of Software Artifacts
ASE '98 Proceedings of the 13th IEEE international conference on Automated software engineering
Recovering abstract data types and object instances from a conventional procedural language
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
DECODE: a cooperative environment for reverse-engineering legacy software
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Recognizers for extracting architectural features from source code
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Lessons from a Domain-Based Reengineering Effort
WCRE '96 Proceedings of the 3rd Working Conference on Reverse Engineering (WCRE '96)
Rule-Based Detection for Reverse Engineering User Interfaces
WCRE '96 Proceedings of the 3rd Working Conference on Reverse Engineering (WCRE '96)
Domain Analysis for Transformational Reuse
WCRE '97 Proceedings of the Fourth Working Conference on Reverse Engineering (WCRE '97)
On the Knowledge Required to Understand a Program
WCRE '98 Proceedings of the Working Conference on Reverse Engineering (WCRE'98)
A Case Study of Domain-based Program Understanding
WPC '97 Proceedings of the 5th International Workshop on Program Comprehension (WPC '97)
Using Knowledge Representation to Understand Interactive Systems
WPC '97 Proceedings of the 5th International Workshop on Program Comprehension (WPC '97)
A software re-engineering method using domain models
ICSM '95 Proceedings of the International Conference on Software Maintenance
ICSM '95 Proceedings of the International Conference on Software Maintenance
Software construction using components
Software construction using components
Proceedings of the 16th IEEE international conference on Automated software engineering
A metric for software readability
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
USING REENGINEERING FOR KNOWLEDGE-BASED SYSTEMS
Cybernetics and Systems
Improving program comprehension by combining code understanding with comment understanding
Knowledge-Based Systems
Fast extraction of high-quality framework-specific models from application code
Automated Software Engineering
Using domain ontologies in a dynamic analysis for program comprehension
Ontology-Driven Software Engineering
A human study of patch maintainability
Proceedings of the 2012 International Symposium on Software Testing and Analysis
On the relationships between domain-based coupling and code clones: an exploratory study
Proceedings of the 2013 International Conference on Software Engineering
Hi-index | 0.00 |
Program understanding is an essential part of all software maintenance and enhancement activities. As currently practiced, program understanding consists mainly of code reading. The few automated understanding tools that are actually used in industry provide helpful but relatively shallow information, such as the line numbers on which variable names occur or the calling structure possible among system components. These tools rely on analyses driven by the nature of the programming language used. As such, they are adequate to answer questions concerning implementation details, so called what questions. They are severely limited, however, when trying to relate a system to its purpose or requirements, the why questions. Application programs solve real‐world problems. The part of the world with which a particular application is concerned is that application’s domain. A model of an application’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‐based analyses, can be used to answers both what and why questions. Representing the results of domain‐based program understanding is also important, and a variety of representation techniques are discussed. Although domain‐based 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, reengineering, and reuse. A tools framework for domain‐based program understanding, a dowser, is presented in which a variety of tools work together to make use of domain information to facilitate understanding. Experience with domain‐based program understanding methods and tools is presented in the form of a collection of case studies. After the case studies are described, our work on domain‐based program understanding is compared with that of other researchers working in this area. The paper concludes with a discussion of the issues raised by domain‐based understanding and directions for future work.