Wenn es um agile Softwareentwicklung geht, so gehen heutzutage immer noch viele Menschen der Annahme nach, dieser Prozess würde linear verlaufen. Das heißt, man hat klare Vorgaben, ein klares Ziel vor Augen, mit genauen Vorstellungen wie das „Endprodukt“ schlussendlich aussehen soll. In der Realität ist es jedoch so, dass ein solcher Prozess sich meist wesentlich umfangreicher entpuppt, mit wesentlich mehr Abweichungen und unvorhergesehenen Wendungen innerhalb des Entwicklungsprozesses.
Grundsätzlich beginnt die Entwicklung einer Software natürlich mit einer Grundidee. Dabei spielt es keine Rolle, ob es sich um eine sehr umfangreiche Software handelt oder nur eine kleinere Software-Lösung. In vielen Fällen nimmt der Prozess der Idee-Ausgestaltung schon recht viel Zeit in Anspruch, bis hin zu dem ersten tatsächlichen Entwurf der Software. Hauptfokus ist im ersten Schritt natürlich die Funktionalität, das heißt, man stellt sich zum Beispiel die Frage, was die Software können muss und welchen eigentlichen Zweck sie erfüllen muss. Parallelen kann man hinsichtlich der Softwareentwicklung mit einem Hausbau ziehen, sodass auch Architekten schon vor dem ersten Entwurf eine genaue Vorstellung davon haben, was das fertige Haus schlussendlich mit sich bringen sollte.
Eine Software mit ihrem vollen Funktionsumfang teilt sich dabei meist in mehrere kleinere Bereiche auf. Somit kann man sagen, dass die gewünschte Hauptfunktion der Software, durch mehrere Einzelschritte erreicht wird. Man spricht hierbei auch häufig von sogenannten Unteraufgaben, die für eine Software meist notwendig sind, um letzten Endes zu dem gewünschten Endresultat bzw. der Hauptfunktion zu kommen. Diese Aufteilung in Unteraufgaben und Einzelschritte, gleichen praktisch dem groben Grundriss der Software.
Hat man den vollen Funktionsumfang der Software bestimmt, Unteraufgaben und Einzelschritte im groben festgehalten, so beginnt man dann in der Regel damit, Daten und Datenstrukturen zu ermitteln. Wichtig ist in diesem Schritt vor allem die Formatierung der Datensätze, da ein falsches Vorgehen in diesem Schritt zu einer Verzögerung des gesamten Software-Entwicklungsprozesses führen kann. Im Hauptfokus der Datenstrukturen stehen dabei Aspekte wie der Datenschutz und die Sicherheit, während gleichzeitig auch sichergestellt werden muss, dass alle Daten der Software den Zugriff bekommen, den sie benötigen.
Wenn man all diese Schritte abgeschlossen hat, so folgt die Phase der genauen Überprüfung des Rohentwurfs. Erst wenn hier sichergestellt ist, dass alle Hauptanforderungen an die Software mit dem Rohentwurf auch erfüllt sind und diese vollzogen werden können, so erhält der Entwurf seine Genehmigung. Je nach Art des Projektmanagements beginnt dann die Realisierung des Programmierens, die sich teilweise auf mehrere Mitarbeiter ausdehnen kann. Je nach Komplexität der Software ist der Bedarf an spezielle Fähigkeiten und Attribute der Mitarbeiter gegeben.
Nach den genannten Schritten beginnt die eigentliche Testphase der Software. Hauptsächlich wird die Software hierbei kontinuierlich auf Fehler und Störungen überprüft und sollten Fehler entdeckt werden, so werden diese natürlich behoben. Bei auftretenden Software-Fehlern gibt es jedoch 2 Möglichkeiten, die das weitere Vorgehen bestimmten. Zum einen hat man die Möglichkeit, nach entdeckten Fehlern innerhalb der Software-Architektur, den gesamten Prozess zu wiederholen. Entdeckte Fehler und Erkenntnisse werden dabei festgehalten und geben dem Team die Möglichkeit, diese Dinge im erneuten Anlauf zu berücksichtigen und zu korrigieren. Anderenfalls bietet sich die Option, den Auftraggeber mit den Fehlern zu konfrontieren, insofern sich die auftretenden Störungen darauf zurückführen lassen, dass bei der Auftragserstellung nicht realisierbare Anforderungen gestellt wurden.
Sobald Entwicklerteam und Auftraggeber beide gleichermaßen mit dem Endprodukt zufrieden sind, so geht die Software in die Veröffentlichungsphase über.