Changing Iterators with Confidence. A Case Study of Change Impact Analysis Applied to Conceptual Specifications.
Paper in proceedings, 2005
Design and implementation of generic libraries in C++ are based on conceptual specifications---what if such specifications have to change? In a quite practical sense, this question arises because of a new proposal for iterator concepts that is under discussion among C++ library developers. Given the fundamental role of iterator concepts, it is important to anticipate which impact the proposed changes have on legacy code. Yet, no tool has been available to safely check for unwanted effects. We introduce a conceptual change impact analysis and apply it to the proposed iterator specification. Surprisingly, the analysis yields that the proposed iterator concepts are neither (fully) backward- nor forward-compatible with the current, standardized concepts. Since the analysis also lists the sources of incompatibility, it can help library designers to avoid unintended effects of their suggested changes and, in general, provides a base for assessing the impact of a conceptual change.