As functional complexity increases, or business rules change, the backbone process of computer programs deprecate, made useless by dependencies between decision-logic and task-logic, or made useless by alterations to the data signature that allows interactions between programs.
The current state of the art is starting from scratch with a completely new set of programs, leaving the defects and deficiencies of legacy programs behind, while creating a completely new set of the same. Typically, the protocols for program organization are centered on the naming of programs and program properties.
Programs are generally written to account for “logical steps” of a given process, which gives rise to the tendency to write lengthy programs consisting of decision-logic mixed with task-logic. Alterations to the expected programming process may mandate rewriting entire sections of code.
An alteration to a single business rules may indicate the need to rewrite one ore more logical processes, to account for the correct implementation of a process series, or sequence, of decisions and related tasks. The convolution of programming logical steps is compounded by the need for cross-program communications, a need usually handled by a series of parameters in the originating program handled by a series of matching parameters in the receiving program. Any change to the expected programming process may also affect the content, sequence, and naming of parameters used in program communication.
Adding new functionality to an existing application is a concept referred to as layering programs. This means new programs need to be inserted at specific points in the process, and some existing programs may need to be updated. The way to implement a new “layer” is to begin the process of rewriting logical steps represented by one or more program modules, accounting for alterations to parameters between programs, and accounting for alterations to the sequence of program execution.
The long term benefits of the traditional approach to computer programming fail to materialize when attempting to integrate legacy program applications with newly developed modules.