Managing variability throughout the software development lifecycle

An increasingly important attribute of modern software development is that of variability. Variability allows software artefacts to be reused and configured to different contexts thus easing development, cutting costs and decreasing time to market. Most literature with regard to variability has tended to be confined to code level, however, variability can be applied and occurs at all levels of the software development lifecycle, especially when new requirements arise. We believe that variability mechanisms can be utilised at other stages in the lifecycle and noncode artefacts such as requirements, designs, tests, documentation and user manuals. In this paper we discuss and reason about how variability across the lifecycle might be supported in order to provide a holistic architectural multi-dimensional approach to software development.