In den klassischen Softwareentwicklungsprojekten verhält es so, dass der Kunde der vor Beginn des Softwareprojekts in einem Pflichtenheft oder Lastenheft genau festlegen muss, welchen Anforderungen die Software zu entsprechen hat. Jedoch kristallisiert sich in den meisten Fällen erst im Laufe des Entwicklungsprozesses heraus, welche Funktionen im Einzelnen tatsächlich erforderlich sind.