Domain Engineering involves creating a set of reusable assets for building systems in a particular problem domain.
These reusable assets are then assembled to customer-specific systems in the complementary
application engineering phase.
Domain engineering originates from research in
SoftwareReuse.
The activities of domain engineering play a role in the design of
Chapters 2-5 of
GenerativeProgrammingBook cover domain engineering in considerable detail. They define it as the activity of
- collecting, organizing and storing past experience in building systems or parts of system in a particular domain in the form of reusable assets (i.e., reusable work products),
- as well as providing an adequate means for reusing these assets (i.e., retrieval, qualification, dissemination, adaptation, assembly, and so on) when building new systems.
They consider the notion of a
FeatureModel, resulting from the
DomainAnalysis phase, the most important contribution of domain engineering.
An earlier version of the generative programming survey on domain engineering is available from
KrzysztofCzarnecki's home page.
Observe the emphasis in the above definition on
past experience, making
ReverseEngineering an important element of
DomainEngineering. --
ArieVanDeursen.
The
SEI describes domain engineering as
- a process for creating a competence in application engineering for a family of similar systems. Domain engineering covers all the activities for building software core assets. These activities include identifying one or more domains, capturing the variation within a domain (DomainAnalysis), constructing an adaptable design (DomainDesign), and defining the mechanisms for translating requirements into systems created from reusable components (Domain Implementation). The products (or software assets) of these activities are domain model(s), design model(s), DomainSpecificLanguages, code generators, and code components.
See
http://www.sei.cmu.edu/domain-engineering/domain_engineering.html
There is an on line bibliography of domain engineering resources at
http://liinwww.ira.uka.de/bibliography/SE/domain.html
Several domain engineering methodologies have been published. See, for example,
CategoryDomainEngineering |
CategoryEntryPoint |
CategoryArchitecture | Contributions by
ArieVanDeursen