In practice, a pure top-down and refinement-based development process is not applicable. A more iterative and incremental approach is usually applied with respect to changing requirements. We call such an approach an evolutionary approach. As existing methodologies rely on refinement concepts they do not support an evolutionary development. In this paper, we present the basic concepts of a suitable overall methodology based on componentware and software evolution. We clarify the difference between refinement steps and evolution steps in a document-based development methodology. We propose an evolutionary development process during system design. To support this process at the best, we need to be able to model and track the dependencies between the various development documents. Currently there is no adequate modeling technique available. To close this gap, we introduce the concept of Requirements/Assurances Contracts. These contracts could be rechecked whenever the specification o...