The intent of domain engineering is to identify, construct, catalog, and disseminate a set of software components that have applicability to existing and future software in a particular application domain. The overall goal is to establish mechanisms that enable software engineers to share these components—to reuse them—during work on new and existing systems.
Domain engineering includes three major activities—analysis, construction, and dissemination. It can be argued that “reuse will disappear, not by elimination, but by integration” into the fabric of software engineering practice . As greater emphasis is placed on reuse, some believe that domain engineering will become as important as software engineering over the next decade.
The Domain Analysis Process
We discussed the overall approach to domain analysis within the context of object-oriented software engineering. The steps in the process were defined as:
1. Define the domain to be investigated.
2. Categorize the items extracted from the domain.
3. Collect a representative sample of applications in the domain.
4. Analyze each application in the sample.
5. Develop an analysis model for the objects.
It is important to note that domain analysis is applicable to any software engineering paradigm and may be applied for conventional as well as object-oriented development.
Prieto-Diaz expands the second domain analysis step and suggests an eight-step approach to the identification and categorization of reusable components:
1. Select specific functions or objects.
2. Abstract functions or objects.
3. Define a taxonomy.
4. Identify common features.
5. Identify specific relationships.
6. Abstract the relationships.
7. Derive a functional model.
8. Define a domain language.