Managed Product Development is a chosen outsourcing model if the enterprise company has a product idea but lacks either the technology needed or the IT capability for full-cycle software development. In this model, the customer provides the high-level vision for the product, and the outsourcing partner does everything else. As such, the outsourcing partner is responsible for the entire product development lifecycle, from the initial stages of requirements right on through to Implementation and post-production support and Maintenance. Among other skills, a custom software provider engaged in end-to-end product development, must be able to analyze requirements, design the product architecture, all with an output-based mentality rooted in Agile. Some see this as the most strategic engagement model, one which maximizes the latitude of the outsourcing partner. This means that the outsourcing company holds the responsibility of designing and creating a product for the client. After product release, that company continues product optimization and sustainability. Under this engagement model, the entire product life cycle can be outsourced to a strategic partner.