Traditional programming calculi focus on transforming a~specification into a~program. With the advent of such recent paradigms as white box reuse, component-based software development, and re-engineering, and with the continued predominance of software maintenance, less and less software engineering activity nowadays deals with straightforward development. More and more, software products are derived by incrementing, composing, merging, or otherwise modifying existing components. In this paper we present a~calculus that models these paradigms.