Software-Anwendungen, größere Projekte und Sicherheitsanforderungen verlangen nach höheren Qualitätsstandards. In bald 40 Jahren Software-Entwicklung haben sich einige wirkungsvolle Werkzeuge herausgestellt.
Die OO-Technik dient dem besseren Verständnis und der Modularisierung von Code anhand geschäftsnaher Modelle. Zur weiteren Verbesserung wird bei der technischen Umsetzung der Modelle mit abstrakten Konstruktions-Vorlagen (Design Pattern) gearbeitet, die unter Entwicklern weithin bekannt sind. Der Wert des OO-Prinzips zeigt sich auch im Erfolg von Komponenten-Technologien wie Corba, DCOM, J2EE, XML-RPC/SOAP und .NET.
Software-Entwicklung besteht zu einem sehr hohen Anteil aus Testen oder Bugfixing. Zwei Methoden stechen hervor: Unit-Testing reduziert die Anzahl der möglichen Fehlerquellen bei funktionalen Tests, indem jede Komponente den eigenen Testcode enthält. Dieser Ansatz wird durch aspektorientierte Sprachen in die Entwicklung transportiert. Regressionstests decken Nebenwirkungen durch Protokollierung und Vergleich mit vorangegangenen Testläufen auf.
Der Unified Process vereinigt bekannte Methoden für Projektmanagement mit software-spezifischen Prozessen wie OO A/D. Auch Elemente aus dem Extreme Programming (XP) wurden integriert, so dass aus dem Wasserfall-Modell der Entwicklung ein iterativer Prozess wird. Der architekturzentrische, anwendungsfallgetriebene Ansatz ist besonders für große Projekte nützlich. Bei der Umsetzung stützt sich der UP auf die "Unified Modelling Language", die eine visuelle Beschreibung von Systemen und Prozessen bis hin zur Programmierung ermöglicht. Die Firma IBM bietet mit der RUP Software ein Tool, das den UP abbildet und Projekte in allen Phasen unterstützt.