Easy, preferably automated composition of software before or if possible after the release of the system or product has been the holy grail of software engineering for decades. With the integration problems that most organizations are experiencing, the consequence has been that the organization focuses on control instead of flexibility and hence employs an integration-centric approach to software development. As discussed on the integration-centric webpage (see here), for large-scale software development, employing this approach leads to very high complexity and, consequently, unacceptable coordination cost.
The alternative approach that I, together with others, have started to explore is composition-oriented software engineering. The key difference in this approach is that it aims to minimize process driven coordination and instead rely on architectural rules, constraints and decoupling mechanisms to maximize the ability of teams to operate independently. This, among others, does away with most of the central mechanisms in software development, e.g. centralized roadmapping and requirements management, centralized testing and validation, etc. The composition-oriented approach, though still under development, relies on a number of principles:
-
Teams release their component frequently when they want
-
Teams are small, self-selected and self-directed, i.e. teams select their own members, adhere to the two pizza rule and set their own roadmaps
-
System architecture focuses on facilitating compositionality
-
Components satisfy the independent deployment principles, e.g. backward compatibility, and, where necessary, negotiate interfaces
-
Teams can be inside and outside the organization
-
Customers compose their products by selecting from the available functionality
Although there are more articles in the pipeline on this topic, there are some published articles, including:
-
Jan Bosch & Petra Bosch-Sijtsema, From Integration to Composition: On the Impact of Software Product Lines, Global Development and Ecosystems, Accepted for Journal of Systems and Software, June 2009.
-
Jan Bosch, From Software Product Lines to Software Ecosystems, Accepted for the 13th Software Product Line Conference, August 2009.
-
Juha Savolainen, Jan Bosch, Juha Kuusela, and Tomi Männistö, Default Values for Improved Product Line Management, Accepted for the 13th International Software Product Line Conference (SPLC 2009), August 2009.
-
Jan Bosch and Petra Bosch, Collaboration in Software Engineering: Five Stages of Decoupling, Accepted for Collaboration in Software Engineering, Ivan Mistrik (editor), to be published, 2009.
-
Christian Prehofer, Jilles van Gurp and Jan Bosch, Compositionality in Software Product Lines, in Emerging Methods, Technologies and Process Management in Software Engineering, Andrea De Lucia, Filomena Ferrucci, Genny Tortora and Maurizio Tucci (editors), Wiley, 2008 (to be published).
Also, in some presentations I have started to address this topic in more detail. One presentation can be found here (EricssonConf.pdf).