Traditional programming paradigms revolve around mapping a single requirements specification into a program. As less and less
software is developed from scratch, and more and more is developed from existing software artifacts, this traditional paradigm
is growing less and less predominant. Paradigms that are gaining ground include:
| – |
Program adaptation, whereby a program is modified to satisfy a specification that it does not originally satisfy; this occurs in adaptive software
maintenance and in white box software reuse.
|
| – |
Software Incrementation, whereby a program is modified to have an additional functional feature, while preserving its current functional properties.
|
| – |
Software Merging, whereby two (typically) similar software products are merged into a single product that cumulates the functional features
of each; this arises typically when the two products are obtained by software incrementation from a common base version.
|
| – |
Software Composition, whereby various existing reusable assets are composed together (by means of application-specific code) to produce a prespecified
software application; this arises in component-based software development.
|