1. Determining the operations, data objects, properties and abstractions appropriate for designing solutions to problems in a given domain.
2. The domain engineering activity in which domain knowledge is studied and formalised as a domain definition and a domain specification. A software reuse approach that involves combining software components, subsystems, etc., into a single application system.
3. The process of identifying, collecting organising, analysing and representing a domain model and software architecture from the study of existing systems, underlying theory, emerging technology and development histories within the domain of interest.
4. The analysis of systems within a domain to discover commonalities and differences among them.