From Subroutines to Subsystems: Component-Based Software Development

SEI Report
This whitepaper provides a conceptual overview of component-based software development (CBSD) and discusses how CBSD is changing the way large software systems are developed.
Publisher

Software Engineering Institute

Abstract

In the early days of programming, when machines were hard-wired and every byte of storage was precious, subroutines were invented to conserve memory. Their function was to allow programmers to execute code segments more than once, and under different (parameterized) circumstances, without having to duplicate that code in each physical location where it was needed. Software reuse was born. However, this was a different breed of reuse than we know today: This was reuse to serve the machine, to conserve mechanical resources. Reuse to save human resources was yet to come.

Cite This SEI Report

Clements, P. (1995, November 1). From Subroutines to Subsystems: Component-Based Software Development. Retrieved August 12, 2026, from https://www.sei.cmu.edu/library/from-subroutines-to-subsystems-component-based-software-development/.

@techreport{clements_1995,
author={Clements, Paul},
title={From Subroutines to Subsystems: Component-Based Software Development},
month={Nov},
year={1995},
institution={Software Engineering Institute, Carnegie Mellon University},
url={https://www.sei.cmu.edu/library/from-subroutines-to-subsystems-component-based-software-development/},
note={Accessed: 2026-Aug-12}
}

Clements, Paul. "From Subroutines to Subsystems: Component-Based Software Development." Software Engineering Institute, Carnegie Mellon University. Software Engineering Institute, November 1, 1995. https://www.sei.cmu.edu/library/from-subroutines-to-subsystems-component-based-software-development/.

P. Clements, "From Subroutines to Subsystems: Component-Based Software Development," Software Engineering Institute, Carnegie Mellon University. Software Engineering Institute, 1-Nov-1995 [Online]. Available: https://www.sei.cmu.edu/library/from-subroutines-to-subsystems-component-based-software-development/. [Accessed: 12-Aug-2026].

Clements, Paul. "From Subroutines to Subsystems: Component-Based Software Development." Software Engineering Institute, Carnegie Mellon University, Software Engineering Institute, 1 Nov. 1995. https://www.sei.cmu.edu/library/from-subroutines-to-subsystems-component-based-software-development/. Accessed 12 Aug. 2026.

Clements, Paul. From Subroutines to Subsystems: Component-Based Software Development. Software Engineering Institute. 1995. https://www.sei.cmu.edu/library/from-subroutines-to-subsystems-component-based-software-development/