Modularity Maturity Model

The Modularity Maturity Model

The Modularity Maturity Model is a way of describing how far down the modularity path an organization or project is.

Our team of Engineers and Consultants have extensive experience working with code at all levels of the Modularity Maturity Model, and understand the processes required to transition between the levels. We can give advice on the various techniques available, and their relative benefits, to reach a given level; as well as helping to provide a cost-benefit analysis for the transformation.

The Modularity Maturity Model

 Modularity Maturity Model

Adhoc: Code is delivered in a range of different ways, and is often duplicated. Dependencies are unmanaged and frequently unknown.

Modules: Code is delivered using named, versioned artifacts. Duplication is less common, and dependencies are explicitly listed as identity requirements. Runtime dependencies are often poorly understood and/or documented.

Modularity: Code is delivered using self-describing, named, versioned artifacts which advertise their API. Dependencies are explicitly listed as requirements for function/API, rather than by identity. Runtime dependencies are enforced, and can be directly determined through metadata analysis.

Devolution: Modules can be sourced from one or more repositories, which are searchable by advertised capability. Runtime deployment policy can be affected through repository governance without making changes to the modules themselves.

Services: Modules are decoupled from one another using a centralized broker to locate services that implement a particular contract. No module is required to understand the implementation details of another.

Dynamism: Modules adapt to changes in their environment by rewiring into a working state when a service is removed or fails. Modules are able to operate independent of the order in which they start.

The Modularity Maturity Model is intended as a guide rather than being prescriptive, and many be applied to any approach to modularity

The Modularity Model was introduced by Dr Graham Charters at the OSGi Community Event 2011 (slides). It is an extension of the Capability Maturity Model, which was created as a result of research funded by the US Department of Defense and published in 1993. The Capability Maturity Model allows organizations or projects to measure their improvements on a software development process.

Further details are available from the OSGi Wiki.