In software engineering, domain analysis, or product line analysis, is the process of analyzing related software systems in a domain to find their common and variable parts. It is a model of wider business context for the system. The term was coined in the early 1980s by James Neighbors.[1] [2] Domain analysis is the first phase of domain engineering. It is a key method for realizing systematic software reuse.[3]
Domain analysis produces domain models using methodologies such as domain specific languages, feature tables, facet tables, facet templates, and generic architectures, which describe all of the systems in a domain. Several methodologies for domain analysis have been proposed.[4]
The products, or "artifacts", of a domain analysis are sometimes object-oriented models (e.g. represented with the Unified Modeling Language (UML)) or data models represented with entity-relationship diagrams (ERD). Software developers can use these models as a basis for the implementation of software architectures and applications. This approach to domain analysis is sometimes called model-driven engineering.
In information science, the term "domain analysis" was suggested in 1995 by Birger Hjørland and H. Albrechtsen.[5] [6]
Several domain analysis techniques have been identified, proposed and developed due to the diversity of goals, domains, and involved processes.