Although abstract ideas or math in papers is always more satisfying when
accompanied by source code (in Haskell for instance),
loose definitions with the broadest possible applicability across programming paradigms
are also sometimes useful.
For instance: to free oneself from the tyranny of ideas imposed
by mainstream object-oriented programming languages like C++ or Java.
This paper provides some useful broad definitions:
..humans organize knowledge into sets of interrelated concepts ...
concepts can be modeled as objects quite
adequately...objects can be organized into inheritance and containment hierarchies which
capture the relationships between the corresponding concepts ...
A domain is defined as an area of knowledge or activity characterized by a set of concepts and
terminology understood by practitioners in that area [UML1.0], i.e. an area of expertise.
1. A concern is a domain used as a decomposition criterion for a system or another domain with that
concern. Concerns can be used during analysis, design, implementation, and refactoring.
2. An aspect is a partial specification of a concept or a set of concepts with respect to a concern.
The concerns used in
decomposition should yield aspects which are loosely coupled, (nearly) orthogonal, and
At the end of the paper a table compares different domain engineering technologies.
(Beyond Objects: Generative Programming,
Czarnecki, Eisenecker, and Steyaert)
Posted to Software-Eng by jon fernquest on 9/18/02; 1:22:04 AM