An Overview of the Methods and Opportunities for Creating Software Product Lines via Reengineering Legacy Systems