Der zentrale Punkt bei der Softwareentwicklung ist es Wünsche und Anforderungen des Kunden in konkrete Algorithmen mit Zuhilfenahme geeigneter Datenstrukturen umzusetzen. Qualität ist die Erfüllung von Anforderungen unter Einhaltung von Termin- und Budget-Vorgaben.
In der Entwurfsphase wird das zu konstruierende System zunächst spezifiziert. Den Ausgangspunkt bilden die Anforderungen (Wünsche) des Kunden. Idealerweise werden diese in einem Pflichtenheft aufgenommen.
Zunächst wird eine Systemarchitektur (die Strukturierung in einzelne Komponenten) definiert. Anschließend werden diese Komponenten im Detail festgelegt.
Der Entwurf ist die Grundlage für die Implementierung des Systems. Er beschreibt die Struktur des Systems, sowie die Funktionen und Schnittstellen der einzelnen Teile.
In dieser Phase wird i.d.R. die Programmiersprache festgelegt und die einzelnen Komponenten, wie Datenbanken (Oracle, MySQL, etc.) oder Webserver (Apache, Nginx , etc.) ausgewählt.
Implementierung ist die Umsetzung des Entwurfs in konkrete Software. Abhängig vom Zweck oder Typ der Anwendung kommen verschiedene Programmiersprachen zum Einsatz. So wird im Web-Bereich oft PHP, Ruby oder Java/JSP benutzt. Bei zeitkritischer Software fällt die Wahl meistens auf C oder C++. Bei mobilen Apps ist das in der Regel Objective-C (IOS) oder Java (Android).
Es empfiehlt sich bereits bei der Programmierung geeignete Testverfahren (Funktions- und Performance-Tests) in den Entwicklungsprozess einzubinden.
Die Einzelnen Komponenten werden programmiert und getestet. Ergebnis der Implementierung sind lauffähige Programme und die Softwaredokumentation.
Wartung und Weiterentwicklung von bestehender Software kann aus verschiedenen Gründen notwendig sein, z.B. um neue Funktionen zu implementieren, Design zu verändern oder Fehler zu beheben. In dem Zusammenhang kann ebenfalls der Ressourcenverbrauch der Anwendung untersucht und optimiert werden.
Zur regelmäßigen Wartung gehört ebenfalls eine Sicherheitsüberprüfung, z.B. Schwachstellenscans/Pen-Tests bei Webapplikationen. Regelmäßige Auswertung von Log-Dateien (z.B. mit Splunk oder Logstash) kann Hinweise auf eventuelle Probleme geben. Die laufende Überwachung der Server-Dienste (Nagios), ist für den stabilen und reibungslosen Betrieb besonders wichtig.
Unter Beachtung von Vorgaben wie Projektumfang, zeitlicher Rahmen, Qualitätskriterien und Budget wird ein Projekt geplant und anschließend durchgeführt.
Bevor ein Developer zu programmieren anfängt, muss er genau wissen, welche Funktion die fertige Software leisten soll. Das erfolgt in der Analysephase. In der Entwurfsphase wird entschieden, welche Algorithmen und Datenstrukturen zum Einsatz kommen sollen. Ein guter Entwurf vereinfacht die Programmierung erheblich.
Die Entwicklung findet in mehreren Schritten statt. Es kommt nicht selten vor, dass die Anforderungen sich im Laufe des Projektes ändern. In dem Fall wird der Entwurf gegebenenfalls entsprechend modifiziert.
In kleineren Projekten erfolgen die Analyse und der Entwurf relativ einfach. Eine spezielle Notation oder eine genaue Vorgehensweise ist nicht vorgeschrieben. Bei mittleren und größeren Projekten ist es sinnvoll Modellierungstechniken wie UML einzusetzen.