Specification Aspect: Deciding granularity of components and implementation choices

Component middleware refactors what was often historically ad hoc application functionality into reusable, composable, and configurable standalone units. Component developers must select their component middleware platform and implementation language(s). Component developers may also choose to provide different implementations of the same functionality that use different algorithms and data structures. The goal is to provide different implementations that are tailored for different use cases and target environments.