Motivation
By reusing tried-and-tested components, the robustness of a new software system can be enhanced while reducing manpower and time requirements.
Costs associated with reuse
- overkill (increasing size/degrading performance)
- stability
- risk of dying off
- license restrictions
- bugs/missing features/security vulnerabilities
- malicious code through compromised dependencies
APIs
Application Programming Interface
Specifies interface through which other programs can interact with a software component
Libraries
Library
A collection of modular code that is general and can be used by other programs.
Frameworks
Software framework
Reusable implementation of a software providing generic functionality that can be selective customized to produce specific applications.
Framework vs library
Libraries are meant to be used as-is, while frameworks are meant to be extended.
- Frameworks follow inversion of control (code is called by framework).
Platforms
Platform
Provide runtime environment for applications, often bundled with various libraries, tools, frameworks and technologies.