Systems and techniques to facilitate construction of software applications
may use patterns that represent generic processes, objects, user
interfaces, and content. In general, in one implementation, the technique
includes identifying requirements for a desired application and
identifying pattern types corresponding to the identified requirements.
The pattern types may be selected from process patterns, user interface
patterns, and generic object patterns. Patterns that best match the
identified requirements may be selected from a set of available patterns,
and the selected patterns may be configured according to the identified
requirements to produce an application.