Software-Engineering und Software-Qualität in Open-Source Projekten
Folgender Artikel wurde von Herrn
Jan Tobias Mühlberg
in der Kategorie "Softwaretechnik"
bereitgestellt.
Ausgehend von vorläufigen Ergebnissen einer Metastudie zu Open-Source-Software (OSS), befasst sich die vorliegende Arbeit mit der Frage, inwieweit die bei der Entwicklung größerer OSSProjekte eingesetzten Entwicklungsmechanismen Auswirkungen auf die Qualität ihrer Produkte haben. Der Autor kommt zu dem Ergebnis, dass OSS in der Regel als mit Closed-Source-Software vergleichbar oder besser angesehen wird und qualitative Defizite insbesondere den Bereich der Weiterentwickelbarkeit der Software betreffen. Im Folgenden werden das Zustandekommen dieser Defizite analysiert und Möglichkeiten zu deren Vermeidung aufgezeigt. Die Arbeit ist primär als Grundlage für eine weitere Diskussionen der Thematik Open-Source-Software-Engineering gedacht.
Diese Arbeit unterliegt den Bedingungen einer
creative commons-Lizenz. Sie darf vervielfältigt,
verbreitet, öffentlich aufführt, bearbeitetet und
kommerziell genutzt werden, sofern die resultierenden
Arbeiten unter identischen Lizenzbedingungen
weitergegeben und eine Nennung des Autors
der Ursprungsarbeit erfolgt.
|
Betrachtete Qualitätskriterien
Qualitätskriterien für Software zu definieren ist in der Regel schwierig. Für den einen Anwender spielen dabei vielleicht die „Ergonomie“ und der schwammige Begriff „Sicherheit“ eine Rolle, für den anderen wird die „Performance“ der Software ausschlaggebend sein. Ganz selbstverständlich versteht jeder Anwender oder Entwickler unter jedem dieser Begriffe etwas völlig anderes. Tatsächlich wäre selbst die Verwendung von Eigenschaften wie „Schönheit“ oder „Eleganz“ aus der Sicht eines Software-Entwicklers ganz und gar nicht abwegig. Aufgrund der Tatsache, dass letztere Eigen-schaften begrifflich nur sehr schwer fassbar und erstere kaum objektiv bewertbar sind, beschränkt sich diese Arbeit auf die Betrachtung eines weiteren wichtigen Aspektes der Qualität von Software- Produkten: Unter dem Begriff Funktionssicherheit fassen wir all jene Eigenschaften zusammen, die Verfügbarkeit einer Software ausmachen. Das sind insbesondere deren Zuverlässigkeit und Weiterentwickelbarkeit4. Sowohl die Zuverlässigkeit einer Software als auch deren Wartbarkeit hängen ganz entscheidend von den im Rahmen des Entwicklungsprozesses angewendeten Techniken und den technischen Fähigkeiten der Entwickler ab. Ebenfalls nicht unterschätzt werden dürfen hierbei deren persönliche Motivation und Disziplin. In der „klassischen“ (wir sollten besser „akademischen“ sagen) Softwareentwicklung gibt es verschiedene gut voneinander separierte Prozesse. Diese umfassen beispielsweise, die Planung, die Anforderungsanalyse, einen mehrstufigen Software-Entwurf, die eigentliche Umsetzung und nicht zuletzt Tests und Integration (vgl. Boehm, [7] und [8]). Die Sicherstellung qualitativer Ansprüche an das Ergebnisses dieser Prozesse wird in Unternehmen durch die Realisierung eines Qualitätsmanagements – ein weiterer Entwicklungsprozess – erreicht. Dieses geschieht klassischerweise in Anlehnung an die Normenreihe ISO 9000, die wiederum insbesondere Anforderungen an das Management eines Unternehmens spezifiziert. Die Steuerung offener Entwicklergemeinschaften nach diesen Richtlinien wird häufig als inpraktikabel dargestellt (vgl. bspw. Robbins, [22] in [9]) und erscheint auch dem Autor als nicht realistisch. Als ebenso wichtig wie ein konsequentes Qualitätsmanagement kann der Einsatz moderner Software-Engineering-Techniken angesehen werden. Insbesondere um eine hohe Wartbarkeit und Erweiterbarkeit eines Software-Systems zu erreichen, steht hierbei die Arbeit in der Entwurfsphase der Entwicklung sowie eine konsequente Einhal- 4Der Begriff Wartbarkeit bezeichnet im Sinne dieser Arbeit die Wartbarkeit des Quelltextes einer Software und wird somit als Synonym zum Begriff Weiterentwickelbarkeit verwendet. tung der entworfenen Systemspezifikation an erster Stelle. Beispielsweise ermöglicht erst eine gut durchdachte Modularisierung des Systems die Verteilung kleiner Teilaufgaben auf eine große Gruppe von Mitarbeitern. Sie erlaubt es dem einzelnen Entwickler das Gesamtsystem auf einer hohen Abstraktionsebene zu betrachten und reduziert damit dessen Komplexität ganz erheblich. Der Entwickler kann sich auf den für ihn interessanten Bereich konzentrieren (vgl. Arief et al., [1] in [12]). Auch dies scheint dem Ansatz der verteilten Software-Entwicklung, wie sie in Open- Source-Projekten üblich ist, zu widersprechen – der Fokus der Entwickler liegt hier nämlich vorrangig bei der Produktion von Quelltext, also bei der eigentlichen Umsetzungsphase, die im akademischen Software-Engineering-Ansatz nur einen vergleichsweise kleinen Anteil an der gesamten Entwicklungszeit ausmacht. Die Konzeptionsphase scheint dagegen vernachlässigt zu werden (vgl. Wilson, [30]). Wie also erreichen Open-Source-Projekte dennoch eine hohe Zuverlässigkeit und Wartbarkeit? |