We seldom control all the software in our systems. Sometimes we buy third-party packages
or use open source. Other times we depend on teams in our own company to produce
components or subsystems for us. Somehow we must cleanly integrate this foreign code