1. A method of adding new software features without modifying existing code and developing separate library components even though the components interact with each other, the method comprising: (A) Developing a model of an application; (B) Developing an anchor feature based on the model, each anchor feature containing at least one program unit; (C) Determining whether at least a subset of a new program unit of each new anchor feature being developed interacts with previously completed program units of the new anchor feature; (D) Resolving all interactions between the program units of the new anchor feature; (E) Developing a supplementary feature based on the model and at least one anchor feature, each supplementary feature containing at least one program unit; (F) Determining whether at least a subset of a new program unit of each new supplementary feature being developed interacts with previously completed program units of the new supplementary feature and resolving interaction among all program units of the new supplementary feature; (G) Choosing features for a feature package, the features of the feature package containing a set of anchor features and a set of supplementary features, each feature; (H) Determining whether the features of the feature package interact with each other; and (I) Resolving interactions among the features of the feature package.