Modelling in Java
The development of software systems may be facilitated through modeling at different levels of abstraction. Various factors conspire to de-emphasise modeling in a commercial development process, such as pressure to deliver production code and its supporting documentation, the perception that modeling is an unstructured or opaque process, and the propensity of modeling artifacts to becoming rapidly and silently obsolete. While modern programming environments do allow and even encourage an implementation to include components at more than one level of abstraction, the maintained components are naturally those that are executable. This can result in the loss of vital information such as intentions and constraints.