Software product lines: practices and patterns | AMiner