Software product lines - practices and patterns