Die Anforderungsanalyse (auch Requirements Engineering genannt) ist der Bedarfsanalyse nicht unähnlich. Ziel ist es, die Anforderungen der Nutzer an das System zu ermitteln, zu verstehen, gegebenenfalls zu modellieren und in konkrete Systemspezifikationen zu "übersetzen". In dieser Phase wird eine Brücke zwischen den Wünschen und Bedürfnissen der Nutzer und den Funktionalitäten des Produkts geschlagen.
Die Anforderungsanalyse legt den Grundstein der Software-Entwicklung. Werden bei diesem Prozess Fehler gemacht, so sind diese im Laufe des Projektes oftmals nur noch durch hohen Kostenaufwand zu beheben.
An erster Stelle der Anforderungsanalyse steht das Sammeln der Anforderungen bei den Kunden bzw. späteren Nutzern. Dazu müssen die Anforderungen vollständig, eindeutig definiert, verständlich, identifizierbar, einheitlich dokumentiert und nachprüfbar sein.
Nach der Erfassung muss eine Strukturierung und Klassifizierung der Anforderungen vorgenommen werden, womit eine Übersicht erreicht wird. Man erfährt, in welchen Beziehungen die Anforderungen zueinander stehen, ob sie voneinander abhängig, zusammengehörig oder rollenbezogen sind.
Weitere Strukturierungsmöglichkeiten sind funktionale und nichtfunktionale Anforderungen, fachlich motivierte und technisch motivierte Anforderungen.
Des weiteren werden die Anforderungen priorisiert, da oft nicht alles umgesetzt werden kann bzw. sich Anforderungen durchaus widersprechen können.