Los contratos tradicionales para el desarrollo de software se enfocan en los requerimientos deseados y en el tiempo y precio requeridos para entregar dichos requerimientos. El objetivo de este tipo de contratos es crear un costo y tiempo predecible, y transferir la proveedor el riesgo en caso de que el costo sea mayor al planeado. Este tipo de contratos generan un contexto de poca flexibilidad, ya que fomentan la evasión de cambios y ajustes. Por otro lado, en los proyectos donde se aplica la filosofía Agile, los contratos típicamente son acuerdos del tipo tiempo y materiales, pero con un enfoque en entregar valor de forma temprana y continua.