Code-Reviews

Qualitätssicherung in der Softwareentwicklung

16.04.2013 von Uwe Küll
Softwareverantwortliche haben häufig Probleme, Qualitätsrisiken in Entwicklungsvorhaben zu erkennen. Mit einem ganzheitlichen Ansatz will die Potsdamer Software Diagnostics das Problem lösen.

Softwareentwicklung kann eine undankbare Aufgabe sein. Nicht selten stehen Budgets in sechs- oder gar siebenstelliger Höhe auf dem Spiel, der Zeitdruck ist immens, und dazu kommt, dass Softwaresysteme hoch komplex sind. Die Zahl der gescheiterten Projekte ist legendär. So verzögert sich etwa die Auslieferung des neuen Superzugs Velaro D ICE 3 aufgrund der komplexen Elektronik und Software für die Leit- und Sicherheitstechnik immer wieder. Und Alitalia blamierte sich im Herbst, als aufgrund eines Softwarefehlers kostenlose Tickets via Internet zu ergattern waren. Ein weiteres Beispiel lieferte die Commerzbank, als sie EC-Karten ohne funktionierende PIN ausgab.

Aufwendige Code-Reviews

„Softwarekarten“ zeigen den Projektstatus und Probleme.
Foto: Software Diagnostics

Eines der Hauptprobleme bei Entwicklungsprojekten: Es fällt allen schwer, Risiken im Code zu entdecken und rechtzeitig zu entschärfen. Frei nach Forrest Gump: Softwareentwicklung ist wie eine Pralinenschachtel. Man weiß nie, was man bekommt.

Informationen über problematische Stellen erhalten Entwickler, Projektleiter oder Qualitäts-Manager bisher oft nur im Rahmen manueller Code-Reviews. Das Problem: Die Ergebnisse sind zwar hilfreich, werden aber meist nur punktuell erhoben, da die Reviews mit einem hohen Zeitaufwand verbunden sind. Sollten zusätzlich Metrik-Tools zur Codevermessung verwendet werden, sind die Ergebnisse als ellenlange Excel-Listen mit zum Teil mehreren zehntausend Einträgen dargestellt. Handlungsbedarf aufgrund der großen Datenmenge und der fehlenden Priorisierung ist bei solchen Tools mehr als gegeben, zumal die Entwickler einfach nicht wissen, wo sie anfangen sollen, da der ganzheitliche Blick auf die geschriebene Software fehlt.

Dies will die Potsdamer Software Diagnostics ändern, indem sie einen anderen Ansatz verfolgt: Ihre Software soll Entwicklungsverantwortlichen eine Gesamtschau auf alle relevanten Informationen in Form von Softwarekarten liefern - inklusive Risiken im Code und allen Entwickleraktivitäten. Dazu werden alle zur Verfügung stehenden Quellen von projektrelevanten Daten ausgelesen, diese miteinander kombiniert und anschließend mit Hilfe von Data-Mining-Methoden in Echtzeit analysiert.

Bestes Systemhaus 2012 - Anwendungssoftware und So
Bestes Systemhaus 2012 - Anwendungssoftware und Softwareentwicklung
Lesen Sie, wie die besten Systemhäuser 2012 in der Kategorie Anwendungssoftware und Softwareentwicklung abgeschnitten haben.
Platz 5: Comparex
<br>Einzelnoten:<br> o Angebot und Beratung im Vorfeld - Note: 1,55<br> o Projektverlauf - Note: 1,73<br> o Termintreue - Note: 1,45<br> o Preis Leistung - Note: 1,73<br> o Betreuung im Nachfeld - Note: 1,73<br> o Gesamturteil - Note: 1,73 <br><br> <b> Endnote: 1,65</b>
Platz 4: Cancom
<br>Einzelnoten:<br> o Angebot und Beratung im Vorfeld - Note: 1,48<br> o Projektverlauf - Note: 1,52<br> o Termintreue - Note: 1,4<br> o Preis Leistung - Note: 2<br> o Betreuung im Nachfeld - Note: 1,75<br> o Gesamturteil - Note: 1,62 <br><br> <b> Endnote: 1,63</b>
Platz 3: MR Datentechnik
<br>Einzelnoten:<br> o Angebot und Beratung im Vorfeld - Note: 1,38<br> o Projektverlauf - Note: 1,48<br> o Termintreue - Note: 1,52<br> o Preis Leistung - Note: 1,45<br> o Betreuung im Nachfeld - Note: 1,57<br> o Gesamturteil - Note: 1,43 <br><br> <b> Endnote: 1,47</b>
Platz 2: IT-Haus GmbH
<br>Einzelnoten:<br> o Angebot und Beratung im Vorfeld - Note: 1,23<br> o Projektverlauf - Note: 1,46<br> o Termintreue - Note: 1,31<br> o Preis Leistung - Note: 1,62<br> o Betreuung im Nachfeld - Note: 1,38<br> o Gesamturteil - Note: 1,46 <br><br> <b> Endnote: 1,41</b>
Platz 1: Krämer IT
<br>Einzelnoten:<br> o Angebot und Beratung im Vorfeld - Note: 1,15<br> o Projektverlauf - Note: 1,15<br> o Termintreue - Note: 1,23<br> o Preis Leistung - Note: 1,54<br> o Betreuung im Nachfeld - Note: 1,15<br> o Gesamturteil - Note: 1,15 <br><br> <b> Endnote: 1,23</b>

Analyse des Codes

Die wichtigste Datenquelle ist dabei der Quellcode, der auf seine Anpassbarkeit und Verstehbarkeit und damit auf seine Zukunftsfähigkeit hin vermessen wird. Eine weitere Quelle sind Repositorien beispielsweise für das Konfigurations- oder Änderungs-Management. In diesen sind alle Aktivitäten eines Entwicklers über die letzten Jahre gespeichert: welchen Code er geändert hat, wann und warum. Weitere Repositorien, die ausgelesen werden und zusätzliche Perspektiven auf das Softwareprojekt bieten, sind beispielsweise Issue- oder Bug-Tracking-Systeme. Ebenso einbezogen wird, welche Codeteile durch automatisierte Tests abgesichert sind und welcher Code überhaupt von den Endnutzern gebraucht wird - eine oftmals vernachlässigte, aber wichtige Information. Weiß man zum Beispiel, dass 30 Prozent des Codes in der Entwicklung zwar aufwendig mitgepflegt und weiterentwickelt werden müssen, aber aus Sicht der Nutzer irrelevant sind, so sollte man den unnützen Code aus der Software entfernen. Man spart mit einem Schlag 30 Prozent der Wartungs- und Anpassungsaufwände. So banal diese Erkenntnis auf den ersten Blick wirken mag - in der Praxis sind viele Unternehmen bislang wegen mangelnder Transparenz ihres Softwarecodes nicht dazu in der Lage.

Visualisierung der Probleme

Damit Verantwortliche einen genauen Einblick in ihre Projekte erhalten, soll das Analyse-Tool von Software Diagnostics auf Grundlage der gewonnenen Informationen tagesaktuelle Softwarekarten erzeugen. Ähnlich wie Echtzeit-Satellitenbilder zeigen sie den Status eines Entwicklungsprojekts an. So erfahren Projektleiter gesichert, an welchen Stellen sich korrupter Code verbirgt, wo sich die Problemherde befinden oder welche Codequalität Dienstleister liefern. Mit diesem Wissen können sie die begrenzte Zeit der Entwickler und Tester auf die kritischen Stellen lenken. Ohne dass zusätzliche Ressourcen eingesetzt werden, sinkt so das Risiko, dass das Projekt scheitert. (hi)

Agile Softwareentwicklung
ActiF
Requirement-Management (RM) und Implementierung (IMP) sind ist voll abgedeckt, keine Unterstützung gibt es für Wartung (W) und Betrieb (B). Auch der Test (T) ist schwach ausgeprägt. Besser schneidet AcriF bei der Integration (INT), Projekt-Management (PM), Qualitäts-Management (QM) und Systemdesign (SD) ab.
Adaptive Software Development (ASD)
ASD schneidet nur im Qualitäts-Management (QM) sehr gut ab. Disziplinen wie Integration (INT), Wartung (W), und Betrieb (B) werden überhaupt nicht abgedeckt. Projekt- und Requirement-Management (PM/RM), Systemdesign (SD), Implementierung (IMP) und Test (T) sind schwach ausgeprägt.
Agile Enterprise
Agile Enterprise leistet vollständige Unterstützung in den Bereichen Projekt-Management (PM), Requirements-Management (RM), Implementierung (IMP) und Test (T). Nicht ganz so gut sieht es bei der Integration/Einführung (INT), dem Qualitäts-Management (QM) oder dem Systemdesign/technische Konzeption (SD) aus. Schwachpunkt ist die Wartung (W), für den Betrieb (B) kommt überhaupt keine Unterstützung.
Agile Model Driven Development
AMDD deckt unter den Disziplinen des Software Engineering die des Test (T) vollständig ab. Gute Unterstützung gibt es auch für die Bereiche Integration/Einführung (INT), Wartung (W) und Betrieb (B) sowie für Implementierung (IMP). Auf mittlerem Niveau bewegen sich das Qualitäts-Management (QM), Requirements-Management (RM) und das Systemdesign/technische Konzeption (SD) während für Projekt-Management (PM) nur wenig Unterstützung kommt.
Behavior Driven Development
Behavior Driven Development schneidet nur im Requirements-Management (RM) sehr gut ab, gefolgt vom Qualitäts-Management (QM). Keine Punkte gibt es im Bereich Wartung (W), Betrieb (B) und Projekt-Management (PM). Die Disziplinen Systemdesign (SD), Implementierung (IMP), Test (T) und Integration (INT) schwächeln.
Crystal
Crystal hat seine Stärke im Bereich Test (T), auch das Qualitäts-Management (QM) und die Implementierung (IMP) werden gut abgedeckt. Mittel bis schwach ausgeprägt sind dagegen Projekt-Management (PM), Requirement-Management (RM), Integration/Einführung (INT) und Wartung (W). Keine Unterstützung gibt es für Betrieb (B) und Systemdesign/technische Konzeption (SD).
Design Driven Development
D3 unterstützt nur wenige Disziplinen im Software Engineering. Am ehesten gilt dies noch für das Requirement-Management (RM), schwache Abdeckung gibt es auch in den Bereichen Systemdesign/technische Konzeption (SD), Implementierung (IMP), Test (T) und Qualitäts-Management (QM). Keine Unterstützung gibt es für Integration/Einführung (INT), Wartung (W), Betrieb (B) und Projekt-Management (PM).
Dynamic System Development Method
DSDM spiel seine Stärken in den Bereichen Requirements-Management (RM), Systemdesign/technische Konzeption (SD), Implementierung (IMP), Test (T) und Integration/Einführung (INT) aus. Weniger gut werden die Aspekte der Wartung (W), des Betriebs (B) sowie des Projekt- (PM) und Qualitäts-Managements (QM) abgedeckt.
Eclipse Way Process
Aufgrund der Kombination unterschiedlicher Techniken im Eclipse Way Process ergeben sich zahlreiche Stärken. Disziplinen im Software Engineering, die vollständig abgedeckt werden, sind Projekt-Management (PM), Requirements-Management (RM), Systemdesign/technische Konzeption (SD), Implementierung (IMP) und Test (T). Nicht ganz so gut schneidet Integration/Einführung (INT) ab. Eine schwache Abdeckung gibt es für Wartung (W) und Qualtitäts-Management (QM), während Betrieb (B) überhaupt nicht unterstützt wird.
Evolutionary Process For Integrating Cots-Based Systems (Epic)
Epic hat seine besondere Stärke im Projekt-Management (PM). Recht gut abgedeckt werden auch Qualitäts-Management (QM), Requirements-Management (RM), Systemdesign/technische Konzeption (SD), Test (T) und Integration/Einführung (INT). Mittlere Abdeckung gibt es für den Bereich Implementierung (IMP), während Wartung (W) und Betrieb (B) überhaupt keine Unterstützung finden.
Evolutionary Project Management & Product Development (EVO)
Projekt-Management (PM) und Test (T) sind die Stärken des EVO-Vorgehens. Schwächer fallen Systemdesign/technische Konzeption (SD), Qualitäts-Management (QM), Requirements-Management (RM), Implementierung (IMP) und Integration/Einführung (INT) aus. Die Bereiche Wartung (W) und Betrieb (B) werden überhaupt nicht abgedeckt.
Extreme Programming
Extreme Programming (XP) deckt unter den Disziplinen des Software Engineering die Implementierung (IMP) und den Test (T) vollständig ab. Gute Unterstützung gibt es auch für die Bereiche Qualitäts-Management (QM) und Requirements-Management (RM). Mittlere Abdeckung erfährt das Systemdesign/technische Konzeption (SD) sowie die Integration/Einführung (INT), während Wartung (W) und Projekt-Management (PM) nur schwach ausgeprägt sind. Der Betrieb (B) ist nicht abgebildet.
Feature Driven Development
FDD deckt die Aspekte des Systemdesign/technische Konzeption (SD) vollständig ab. Nicht ganz so gut sieht es beim Projekt-Management (PM), Qualitäts-Management (QM), Requirements-Management (RM) und bei der Implementierung (IMP) aus. Wenig Abdeckung gibt es für Test (T) und Integration/Einführung (INT). Wartung (W) und Betrieb (B) werden überhaupt nicht unterstützt.
Iconix
Iconix deckt die Bereiche Qualitäts-Management (QM), Requirements-Management (RM), Systemdesign (SD), Implementierung (IMP) und Test (T) vollständig ab. Recht gut ist die Methode auch, wenn es um die Integration (INT) und das Projekt-Management (PM) geht. Defizite gibt es bei der Wartung (W), der Betrieb (B) wird überhaupt nicht berücksichtigt.
Internet-Speed Development
Internet-Speed Development ist im Bereich Integration und Einführung (INT) hervorragend. Keine Abdeckung erfährt der Bereich Wartung (W) und Qualitäts-Management (QM). Mäßige bis gute Abdeckung erzielt die Methode bei Betrieb (B), Projekt-Management (PM), Requirements-Management (RM), Systemdesign/technische Konzeption (SD), Implementierung (IMP) und Test (T).
Lean Software Development
Lean Software Development zeigt seine Stärken vor allem in den Bereichen Qualitäts-Management (QM) und Test (T). Auch das Systemdesign/technische Konzeption (SD) und die Implementierung (IMP) sind gut abgedeckt. Vergleichsweise schwach ausgeprägt sind dagegen die Bereiche Requirements-Management (RM), Integration und Einführung (INT), Wartung (W), Betrieb (B) und Projekt-Management (PM).
Microsoft Solutions Framework (MSF)
Das Microsoft Solutions Framework for Agile Software Development deckt die Bereiche Projekt-Management (PM), Implementierung (IMP) und Test (T) gut ab. Mittlere Unterstützung gibt es für Qualitäts-Management (QM), Requirements-Management (RM), Systemdesign/technische Konzeption (SD)sowie Integration/Einführung (INT). Wartung (W) und Betrieb (B) erfahren dagegen keine Abdeckung.
Mobile-D
Gute bis mittlere Abdeckung bietet Mobile-D für die Software-Engineering-Disziplinen Test (T), Implementierung (IMP), Requirements-Management (RM), Qualitäts-Management (QM) und Projekt-Management (PM). Schwach ausgeprägt sind Systemdesign/technische Konzeption (SD) und Integration/Einführung (INT). Keine Unterstützung gibt es für Wartung (W) und Betrieb (B).
Rapid Application Development
RAD deckt die Belange der Implementierung (IMP) voll ab, gut ist die Methode in den Bereichen Test (T) und Integration/Einführung (INT). Mittlere bis schwache Abdeckung gibt es fürs Requirements-Management (RM), Qualitäts-Management (QM), Projekt-Management (PM) und für die Wartung (W). Systemdesign/technische Konzeption (SD) und Betrieb (B) sind nicht berücksichtigt.
Scrum
Scrum punktet in den Software-Engineering-Disziplinen Projekt-Management (PM) und Requirements-Management (RM). Gut abgedeckt sind auch das Qualitäts-Management (QM) und die Integration/Einführung (INT). Nur mäßige Unterstützung gibt es dagegen für Systemdesign/technische Konzeption (SD), Implementierung (IMP), Test (T) und Wartung (W). Der Betrieb (B) ist nicht abgedeckt.
Test Driven Development
Seine Stärken zeigt TDD naturgemäß im Bereich Test (T), aber auch bei der Implementierung (IMP). Gute bis mittlere Abdeckung gibt es für das Qualitäts-Management (QM) und die Integration/Einführung (INT), während Wartung (W) und Requirements-Management (RM) nur schwach ausgeprägt sind. Keine Unterstützung erfahren die Disziplinen Betrieb (B), Projekt-Management (PM) sowie Systemdesign und technische Konzeption (SD).
Unified Process
Unter den Disziplinen im Software Engineering deckt UP das Requirements-Management (RM), das Systemdesign/technische Konzeption (SD) und die Implementierung (IMP) vollständig ab. Gute Unterstützung gibt es auch für die Bereiche Test (T) und Integration/Einführung (INT). Schwach ausgeprägt sind dagegen die Wartung (W), das Projekt-Management (PM) und das Qualitäts-Management (QM). Den Betrieb (B) unterstützt die Methode nicht.
Agile Unified Process
Der Agile Unified Process (AUP) deckt die Disziplinen Projekt-Management (PM) und Implementierung (IMP) vollständig ab. Gute Unterstützung kommt auch für das Requirements-Management (RM), das Systemdesign/technische Konzeption (SD), den Test (T) und die Integration/Einführung (INT). Schwach ist die Methode dagegen in den Bereichen Qualitäts-Management (QM) und Wartung (W), während der Betrieb (B) überhaupt nicht unterstützt wird.
Essential Unified Process
EssUP hat seine Stärken in den Software-Engineering-Disziplinen Projekt-Management (PM), Systemdesign/technische Konzeption (SD) und Implementierung (IMP). Gut abgedeckt sind auch Test (T), Integration/Einführung (INT) und Requirements-Management (RM). Etwas schwächer ist die Methode beim Qualitäts-Management (QM) und bei der Wartung (W) - der Betrieb (B) wird überhaupt nicht unterstützt.
Open Unified Process
Der Open Unified Process deckt die Software-Engineering-Disziplinen Projekt-Management (PM), Requirements-Management (RM), Systemdesign/technische Konzeption (SD) und Implementierung (IMP) vollständig ab. Auch die Bereiche Test (T) und Integration/Einführung (INT) werden gut unterstützt. Schwach ist OpenUP dagegen bei der Wartung (W), während der Betrieb (B) überhaupt nicht berücksichtigt wird.
Usability Driven Development
Usability Driven Development besitzt seine Stärken in den Bereichen Test (T) und Integration/Einführung (INT). Gut bis befriedigend ist die Methode auch beim Qualitäts-Management (QM), Requirements-Management (RM), Systemdesign/technische Konzeption (SD), bei der Implementierung (IMP) und beim Projekt-Management (PM). Schwächen gibt es bei der Wartung (W), der Betrieb (B) wird nicht unterstützt.