Software-Entwicklung - 1 - tfbseke it rai 03.2012
Inhaltsverzeichnis SOFTWARE-ENTWICKLUNG...3 Prinzipien der Softwareentwicklung...3 1. Das Abstraktionsprinzip...3 2. Das Strukturierungsprinzip...3 3. Das Modularisierungsprinzip...3 4. Das Lokalitätsprinzip...3 5. Das Dokumentationsprinzip...3 6. Das Standardisierungsprinzip...4 7. Das Mehrfachverwendungsprinzip...4 Software-Lebenszyklus...4 Vorgehensmodelle...4 Wasserfallmodell...5 V-Modell...5 Spiralmodell...6 Qualitätskriterien der Software-Entwicklung...7 Kriterien für die Qualität von Software...7 Korrektheit...7 Robustheit...7 Erweiterbarkeit...7 Wiederverwendbarkeit...7 Verträglichkeit (Kompatibilität)...7 Portabilität...8 Verifizierbarkeit...8 Integrität...8 Benutzerfreundlichkeit...8 Bewertung der Entwurfsmethoden für Software...8 Zerlegbarkeit...8 Kombinierbarkeit...8 Verständlichkeit...8 Stetigkeit...8 Modulgeschütztheit...9-2 - tfbseke it rai 03.2012
SOFTWARE-ENTWICKLUNG Prinzipien der Softwareentwicklung 1. Das Abstraktionsprinzip In der Programmierung einer Software sollte nicht allein die konkret eng gefasste Aufgabe leitend sein, sondern die Abstraktion dieser Aufgabe. Das Abstraktionsprinzip besagt, das für die Lösung einer Aufgabenstellung nicht jedes Detail wichtig ist, und folglich beim Lösungsprozess vernachlässigt werden kann. Wenn verlangt wird, die Arbeitsstunden der Lagerarbeiter zu erfassen und den resultierenden Lohn daraus zu berechnen, so sollte die Programmierung auf eine Modelllösung ausgerichtet sein: Erfassung von Arbeitsstunden und Lohnberechnung aller Lohnarbeiter. 2. Das Strukturierungsprinzip Eine Gesamtaufgabe muss in nachvollziehbare Teilaufgaben gegliedert werden, ein Gesamtsystem in einzelne Strukturelemente. 3. Das Modularisierungsprinzip Durch das Modularitätsprinzip wird eine Gesamtaufgabe in überschaubare und klar abgegrenzte Teilaufgaben, den sogenannten Modulen, aufgeteilt. Die Schrittweise Lösung der Teilaufgaben ergibt schließlich die Lösung der Gesamtaufgabe. Durch eine klar definierte Schnittstelle, kommunizieren diese Module untereinander. 4. Das Lokalitätsprinzip Es wird erwartet, dass logisch zusammenhängende Informationen (Daten und Funktionen) am gleichen Ort komprimiert abgelegt werden. 5. Das Dokumentationsprinzip Jeder Softwareabschnitt soll als Vorspann eine Dokumentation dessen erhalten, was der Programmteil ausführt und verlangt. - 3 - tfbseke it rai 03.2012
6. Das Standardisierungsprinzip Zum Verständnis der Software trägt bei, dass bestimmte Lösungsreihenfolgen eingehalten werden: Modulname, Dokumentation, Variableninitialisierung, Kontrollstrukturen, Rückgabewert. 7. Das Mehrfachverwendungsprinzip Softwareteile sollen so ausgearbeitet und bereitgestellt werden, dass sie von anderen Entwicklern wieder verwendet werden können. Software-Lebenszyklus Ein allgemein gültiges Phasenschema gibt es nicht, jedoch ähneln sich die Ansätze in ihrer Grobstruktur. Alle hier beschriebenen Vorgehensmodelle liegen dem folgenden Software-Lebenszyklus zugrunde: Vorgehensmodelle Vorgehensmodelle beschreiben die Strukturierung und Steuerung der Prozesse im Software Engineering (Prozess-Management) für ein Informatik-Projekt. Die Projektabwicklung wird von der Systemplanung, über die Systemanalyse, den Software-Entwurf bis zur Abnahme und Software- Verteilung systematisiert. Ein Vorgehensmodell beschreibt damit den Arbeitsablauf im Software-Lebenszyklus von der Analyse der Anforderungen für eine Anwendung bis zur Pflege und Wartung der Software-Produkte. Das Ziel der Nutzung der Vorgehensmodelle in der Anwendungsentwicklung ist die Beherrschung der Komplexität. Erreicht wird dieses Ziel durch die Organisation der Software-Entwicklung und die Definition der notwendigen Aktivitäten der Projektdurchführung. Über das Prozessmanagement wird der Entwicklungsprozess in klare und für alle Entwickler verbindliche Arbeitsschritte eines Workflow aufgeteilt (Prozessentwicklung). Im Allgemeinen ist ein Vorgehensmodell des Software Engineering eine sehr umfangreiche, für viele denkbare Ablauf-Varianten geeignete Beschreibung von Aktivitäten (Phasenmodell) und Ergebnistypen (Produktmodell). - 4 - tfbseke it rai 03.2012
Die klassischen Phasenmodelle sind: Wasserfallmodell Das Wasserfallmodell ist ein sequenzielles Vorgehensmodell, das die Entwicklung anhand aufeinanderfolgender Phasen organisiert. Es wurde 1970 von Royce vorgeschlagen und wurde von Boehm als Wasserfallmodell bezeichnet, da Ergebnisse einer Phase immer in die folgende fließen. Entgegen der landläufigen Meinung, das Wasserfallmodell sei ein rein sequenzielles Vorgehen, gibt es zwischen den einzelnen Phasen Rückkopplungen, jedoch nur zur jeweils benachbarten, vorausgehenden Phase. Die grundlegende Idee des Wasserfallmodells ist die Aufteilung des Projekts anhand der Entwicklungstätigkeiten in Phasen. Folgende Phasen werden im Wasserfallmodell verwendet: Analyse Design (Architekturentwurf) Implementierung (Codierung) Test Betrieb und Wartung V-Modell Die Phasenergebnisse sind bindende Vorgaben für die nächsttiefere Projektphase. Der linke, nach unten führende Ast für die Spezifizierungsphasen schließt mit der Realisierungsphase ab. Eine Erweiterung gegenüber dem Wasserfallmodell sind die zeitlich nachfolgenden Testphasen, die im rechten, nach oben führenden Ast dargestellt werden. Den spezifizierenden Phasen stehen jeweils testende Phasen gegenüber, was in der Darstellung ein charakteristisches "V" ergibt, das dem Modell auch den Namen gab. Diese Gegenüberstellung soll zu einer möglichst hohen Testabdeckung führen, weil die Spezifikationen der jeweiligen Entwicklungsstufen die Grundlage für die Tests (Testfälle) in den entsprechenden Teststufen sind. - 5 - tfbseke it rai 03.2012
Spiralmodell as Spiralmodell ist es ein risikogetriebenes Vorgehensmodell für die Entwicklung (Wartung betrachtet es nicht explizit). Das Prinzip des Spiralmodells ist das wiederholte Durchlaufen (in Iterationen) von vier Schritten: 1. Ziele aufstellen bzw. Review der vorangegangenen Schritte und Planung der nächsten Iteration 2. Risikoanalyse; Beschreibung von Rahmenbedingungen, Zielen und (Lösungs-)Alternativen 3. Evaluierung der (Lösungs-)Alternativen und auf dieser Basis Erkennen von Risiken und Ausarbeiten adäquater Strategien zur Minderung/Vermeidung etc. 4. In Abhängigkeit von den identifizierten Risiken, wird das Vorgehen für die nächste Iteration festgelegt. Diese Schritte werden durch Quadranten visualisiert. - 6 - tfbseke it rai 03.2012
Durch die iterative Vorgehensweise wird das zu entwickelnde System schrittweise ausgebaut. Eine Linie, die das Fortschreiten der Entwicklung kennzeichnet und in die Quadranten eingetragen wird, liefert das typische Spiralmuster, dem dieses Modell seinen Namen verdankt. Qualitätskriterien der Software-Entwicklung Will man Software bewerten, benötigt man Kriterien, die den Qualitätsgrad festlegen. Softwarequalität ist noch kein feststehender, exakt definierter Begriff. Damit kann nicht genau gesagt werden, was ein gutes Programm ausmacht. Qualitätsmerkmale werden in der Norm ISO/IEC 9126 aufgeführt. Kriterien für die Qualität von Software Korrektheit Fähigkeit von Softwareprodukten, die definierten Anforderungen exakt zu erfüllen. Robustheit Fähigkeit von Softwaresystemen, auch unter außergewöhnlichen Bedingungen zu funktionieren. Erweiterbarkeit Softwareprodukte müssen an neue Anforderungen angepaßt werden können. Erweiterbarkeit wird begünstigt durch die Einfachheit des Entwurfs und durch Dezentralisierung in Module mit hoher Autonomie. Wiederverwendbarkeit Eigenschaft der Software, ganz oder teilweise für neue Aufgaben wiederbenutzt zu werden. Verträglichkeit (Kompatibilität) Das Maß der Leichtigkeit, mit der Softwareprodukte mit anderen verbunden werden können. Zu oft gibt es große Interaktionsprobleme, weil ein Programm unverträgliche Annahmen über den Rest der Welt macht. Der Schlüssel zu einer besseren Verträglichkeit liegt in der Standardisierung der Kommunikation zwischen verschiedenen Programmen. - 7 - tfbseke it rai 03.2012
Portabilität Die Leichtigkeit, mit der Softwareprodukte auf verschiedene Hardware- und Software-Umgebungen angepaßt werden können. Verifizierbarkeit Die Leichtigkeit, mit der Abnahmeprozeduren (Fehlererkennung und -verfolgung) erzeugt werden können. Integrität Fähigkeit des Softwaresystems, seine verschiedenen Komponenten gegen unberechtigte Zugriffe und Veränderungen zu schützen. Benutzerfreundlichkeit Die Leichtigkeit, mit der die Benutzer die Handhabung des Softwaresystems wahrnehmen und erlernen können. Bewertung der Entwurfsmethoden für Software Zerlegbarkeit Bei der Zerlegung eines Problems in Teilprobleme können die Lösungen jeweils getrennt gesucht und gefunden werden. Kombinierbarkeit Module können frei zur Herstellung neuer Systeme kombiniert werden, etwa im Sinne eines Baukastenprinzips. Verständlichkeit die Leistung von einzelnen Softwaremodulen soll aus sich heraus verständlich sein, ohne daß man eine Vielzahl von Nachbarmodulen untersuchen muß. Insbesondere sollen keine Abhängigkeiten von der Reihenfolge des Aufrufs bestehen. Stetigkeit eine Änderung der Programmspezifikation soll nur wenige Module betreffen und nicht die gesamte Architektur des Systems berühren. - 8 - tfbseke it rai 03.2012
Modulgeschütztheit Die Auswirkung einer zur Laufzeit eines Moduls auftretenden Ausnahmesituation soll sich nur auf das betroffene Modul, höchstens auf wenige benachbarte Module erstrecken. Notizen: Quellenverzeichnis: http://weiterbildung-programmierer.de/programmieren/softwareprinzipien.php http://www.enzyklopaedie-der-wirtschaftsinformatik.de/wi-enzyklopaedie/lexikon/is-management/systementwicklung/vorgehensmodell http://test.silke-wingens.de/2010/10/04/softwarelebenszyklus/ http://www.tse.de/papiere/ergonomie/softwarekriterien.html Bleßmann, Büttner, Dax: Anwendungsentwicklung; Bildungsverlag EINS, Toisdorf, 2004-9 - tfbseke it rai 03.2012