{'fraction_non_alphanumeric': 0.01772324471710975, 'fraction_numerical': 0.0, 'mean_word_length': 5.612612612612613, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Software evolution in componentware using requirements/assurances contracts

In practice, pure top-down and refinement based development processes are not sufficient. Usually, an iterative and incremental approach is applied instead. Existing methodologies, however, do not support such evolutionary development processes very well. We present the basic concepts of an overall methodology based on componentware and software evolution. The foundation of our methodology is a novel, well founded model for component based systems. This model is sufficiently powerful to handle the fundamental structural and behavioral aspects of componentware and object orientation. Based on the model, we are able to provide a clear definition of a software evolution step. During development, each evolution step implies changes of an appropriate set of development documents. In order to model and track the dependencies between these documents, we introduce the concept of requirements/assurances contracts. These contracts can be rechecked whenever the specification of a component evolves, enabling us to determine the impacts of the respective evolution step. Based on the proposed approach, developers are able to track and manage the software evolution process and to recognize and avoid failures due to software evolution. A short example shows the usefulness of the presented concepts and introduces a practical description technique for requirements/assurances contracts.