Designing software product lines with UML : from use cases to pattern-based software architectures - Gomaa, Hassan (Addison-Wesley, 2005)