ABSTRACT

In this chapter we offer an introduction to variability and variability-intensive software systems. We discuss what variability and variability-intensive software systems are and why variability matters for successful and long-living modern software products and services. Since variability is a multifaceted concept, this chapter also discusses different “notions” of variability and provides insights into how variability impacts different software development activities and software product life-cycle stages. This also includes a discussion of fundamental challenges when designing and maintaining variability-intensive systems. The chapter then briefly reviews historical trends in variability-intensive systems and how variability evolved over time, starting from conditional compilation to product lines to becoming a characteristic (or even a feature) of almost all modern software-intensive systems.