Software Product Lines: Practices and Patterns