Domain analysis
Encyclopedia
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. Domain analysis is the first phase of domain engineering
. It is a key method for realizing systematic software reuse.
Domain analysis produces domain model
s using methodologies such as domain specific languages, feature tables, facet tables, facet templates, and generic architectures, which describe all of the system
s in a domain. Several methodologies for domain analysis have been proposed.
The products, or "artifacts", of a domain analysis are sometimes object-oriented models (e.g. represented with the Unified Modeling Language
(UML)) or data model
s represented with entity-relationship diagrams (ERD). Software developer
s can use these models as a basis for the implementation of software architecture
s and application
s. 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.
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...
, domain analysis, or product line analysis, is the process of analyzing related software systems in a domain
Application domain
In Microsoft's Common Language Runtime , an application domain is a mechanism used to isolate executed software applications from one another so that they do not affect each other...
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. Domain analysis is the first phase of domain engineering
Domain engineering
Domain engineering, also called product line engineering, is the entire process of reusing domain knowledge in the production of new software systems. It is a key concept in systematic software reuse. A key idea in systematic software reuse is the application domain, a software area that contains...
. It is a key method for realizing systematic software reuse.
Domain analysis produces domain model
Domain model
A domain model in problem solving and software engineering can be thought of as a conceptual model of a domain of interest which describes the various entities, their attributes, roles and relationships, plus the constraints that govern the integrity of the model elements comprising that problem...
s using methodologies such as domain specific languages, feature tables, facet tables, facet templates, and generic architectures, which describe all of the system
System
System is a set of interacting or interdependent components forming an integrated whole....
s in a domain. Several methodologies for domain analysis have been proposed.
The products, or "artifacts", of a domain analysis are sometimes object-oriented models (e.g. represented with the Unified Modeling Language
Unified Modeling Language
Unified Modeling Language is a standardized general-purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created, by the Object Management Group...
(UML)) or data model
Data model
A data model in software engineering is an abstract model, that documents and organizes the business data for communication between team members and is used as a plan for developing applications, specifically how data is stored and accessed....
s represented with entity-relationship diagrams (ERD). Software developer
Software developer
A software developer is a person concerned with facets of the software development process. Their work includes researching, designing, developing, and testing software. A software developer may take part in design, computer programming, or software project management...
s can use these models as a basis for the implementation of software architecture
Software architecture
The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both...
s and application
Application software
Application software, also known as an application or an "app", is computer software designed to help the user to perform specific tasks. Examples include enterprise software, accounting software, office suites, graphics software and media players. Many application programs deal principally with...
s. This approach to domain analysis is sometimes called model-driven engineering
Model-driven engineering
Model-driven engineering is a software development methodology which focuses on creating and exploiting domain models , rather than on the computing concepts...
.
In information science
Information science
-Introduction:Information science is an interdisciplinary science primarily concerned with the analysis, collection, classification, manipulation, storage, retrieval and dissemination of information...
, the term "domain analysis" was suggested in 1995 by Birger Hjørland and H. Albrechtsen.
Domain analysis techniques
Several domain analysis techniques have been identified, proposed and developed due to the diversity of goals, domains, and involved processes. Some of them are as follows:- DARE: Domain Analysis and Reuse Environment http://wfrakes.wordpress.com/2008/07/24/dare-bibliography/, http://208.29.54.207:8080/dareonline/
- Feature-Oriented Domain Analysis (FODA)http://www.sei.cmu.edu/reports/90tr021.pdf
- IDEF0 for Domain Analysis http://4c.ucc.ie/web/upload/publications/article/IDEF0Simran.pdf
See also
- Domain engineeringDomain engineeringDomain engineering, also called product line engineering, is the entire process of reusing domain knowledge in the production of new software systems. It is a key concept in systematic software reuse. A key idea in systematic software reuse is the application domain, a software area that contains...
- Feature ModelFeature modelFeature model is a compact representation of all the products of the Software Product Line in terms of "features". Feature models are visually represented by means of feature diagrams. Feature models are widely used during the whole product line development process and are commonly used as input...
- Product Family EngineeringProduct Family EngineeringProduct family engineering , also known as product line engineering, is a synonym for "domain engineering" created by the Software Engineering Institute, a term coined by James Neighbors in his 1980 dissertation at University of California, Irvine...
- Domain-specific language
- Model-driven engineeringModel-driven engineeringModel-driven engineering is a software development methodology which focuses on creating and exploiting domain models , rather than on the computing concepts...