It is seldom that the developer of a large program should write anything from the very outset, much more often he improves what has already been written and debugged. Implanting new useful feature to the program the developer must take care not to lose what is achieved. It is most delicate work, for the development usually involves editing the existing source code, and editing is fraught with dangerous errors. Editing could be avoided by means of partial duplication of the program text, but duplicating is a destructive factor in future program evolution. Fortunately, there exist program constructions providing the non-intrusive development, which is the program evolution dispensing with both editing and duplicating the previously debugged source code.
Needless to say, application of the program constructions providing the non-intrusive evolution cannot completely exclude any editing of existing source text. From time to time some revolutionary transformations of the program must be required, which by their very nature are to violate any a priory limitations. Still the largest part of the changes could and should be made in a non-intrusive way, which would bring the program development process to a new level of reliability. Besides, these constructions make the important structural features of a program be exhibited and so they improve program readability and manoeuvrability.
The basis for the non-intrusive evolution is two statements. (1) Each point of growth, i.e. hot spot of a program can be represented as an extensible set of homogeneous modules. (2) Each evolutionary program alteration can be represented in the form of a set of modules intended for non-intrusive addition to one or several points of growth. In other words, the first principle of non-intrusive program evolution says: To find extensibility one should search for homogeneity.