This document discusses software variability management. It begins by defining software variability as the ability of a software system or artifact to be efficiently extended, changed, customized or configured for a particular context. It then provides examples of variability in iOS and GCC versions. Next, it discusses challenges in managing copies of software with variability and advantages of software product lines. Key aspects of software product line engineering covered include commonalities and variabilities, product derivation, and an example of enterprise resource planning systems. The document concludes by summarizing feature modeling and variability realization techniques including feature models, binding times, and design patterns.