Domain analysis is a process by which information used in developing software systems is identified, captured, and organized with the purpose of making it reusable when creating new systems.

In an organization there are many forms of information and how they are generated. Source code is one such form and is considered the lowest level of abstraction and is considered the most detailed orientated representation of a system or process. Complementary information is also generated like code documentation, unit tests, integration tests and user stories – all with the aim to communicate a better understanding of the business process being modelled.

One of the objectives of domain analysis is to make all this information readily available. Domain analysis succeeds when we derive common architectures, generic models and specialized language that enable us to better understand business process and the ensuing re-use. This process of identifying and restructuring information for reusability is the core of domain analysis.

From a programmer’s perspective, domain analysis is about identification, abstraction and encapsulation of objects in a particular domain.

Historically domain analysis was first introduced by Neighbors as the activity of identifying the objects and operations of a class of similar systems in a particular domain. The difference he stated between system analysis and domain analysis, is that system analysis is concerned with specific actions in a specific system while domain analysis is concerned with actions and objects in all systems in an application area.

The key to reusable software is captured in domain analysis in that it stresses the re-usability of analysis and design, not code.

Domain analysis as I’m sure you seen the pattern already involves three steps:

  1. Identification of reusable elements
  2. Abstraction or generalization
  3. Classification and cataloging for further reuse

The outputs should include:

  1. Domain taxonomy
  2. Domain language
  3. Domain standards
  4. Reuseable components

This is just a re-hash of the 1990 ACM paper with key-concepts extracted to communicate the heart of Domain Analysis. HTH!