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.