A software component is a modular unit of software that encapsulates specific functionality.[1] The desired characteristics of a component are reusability and maintainability.[1]