Predictive Maintenance Software Development: a Complete Guide