Large scale real-time systems consist of hundreds of commercial off-the-shelf (COTS) and custom software components. Mismatched assumptions between software components are a prime source of failures in these systems. Further, component assumptions are often implicit due to the limitations of current software interfaces. In this work, we introduce a framework to explicitly expose assumptions in software components, and automatically verify these assumptions during system integration. We manage the propagation and composition of these assumptions in the presence of changes and upgrades to individual components.