Commonality and variability in software engineering | Synapse