Leitfaden für Software-Projektplanung und Qualität

Eingeordnet in Informatik

Geschrieben am in Deutsch mit einer Größe von 9,78 KB

Grundlagen der Software-Projektplanung

Diese Planung kann aus zwei Perspektiven betrachtet werden:

  • Der Zeitpunkt der Markteinführung des Systems ist definitiv festgelegt. Hierbei ist es notwendig, die Bemühungen innerhalb des vorgeschriebenen Rahmens effizient zu verteilen.
  • Der zweite Ansatz geht davon aus, dass ungefähre zeitliche Grenzen studiert werden, aber die Organisation des Systems den endgültigen Termin festsetzt.

Ist Teamarbeit kontraproduktiv?

Die Antwort lautet NEIN, wenn man bedenkt, dass die Kommunikation die Qualität verbessert und eine einfache Wartung der Software ermöglicht.

Definition der Aufgaben und Parallelität

Wenn an einem Software-Engineering-Projekt mehr als eine Person beteiligt ist, können die Entwicklungsaktivitäten parallel durchgeführt werden.

Projektüberwachung und Kontrolle

"Softwareprojekte geraten Tag für Tag in Verzug."

Ein einzelner Tag mag die Agenda nicht sofort gefährden, aber Verzögerungen akkumulieren sich und können schließlich zu großen Problemen führen. Daher ist die Überwachung entscheidend für den Projekterfolg. Sie kann wie folgt umgesetzt werden:

  • Durchführung regelmäßiger Status-Sitzungen, in denen jedes Teammitglied über Fortschritte und Probleme berichtet.
  • Bewertung der Ergebnisse aller im Engineering-Prozess durchgeführten Reviews.
  • Bestimmung, ob formelle Projekt-Meilensteine termingerecht erreicht wurden.
  • Vergleich des tatsächlichen Starttermins mit dem geplanten Starttermin für jede Projektaufgabe.
  • Informelle Treffen mit Technikern, um subjektive Urteile über Fortschritte und sich am Horizont abzeichnende Probleme einzuholen.
  • Projektmanager nutzen die Kontrolle, um Ressourcen zu verwalten, Probleme anzugehen und Mitarbeiter zu lenken.

Software-Reengineering

Viele Unternehmen stellen fest, dass ihre Software "altert". Programme, die für die Organisation entscheidend sind, werden teurer und schwieriger in der Wartung. Oft erreicht man den Grad von "Flicken auf Flicken", was zu ineffizientem Betrieb führt, die Umsetzung stört und nicht mehr auf Nutzerbedürfnisse reagiert.

Aspekte der Überarbeitung

  • Wählen Sie Programme aus, die aktuell viel genutzt werden und voraussichtlich noch 5 bis 10 Jahre im Einsatz bleiben.
  • Schätzen Sie die jährlichen Wartungskosten (Fehlerkorrektur, Anpassung, Verbesserungen).
  • Priorisieren Sie Programme nach Bedeutung und Wartungskosten.
  • Schätzen Sie die Kosten für das Reengineering.
  • Vergleichen Sie Wartungskosten mit Reengineering-Kosten.
  • Berechnen Sie die Zeit bis zum Return on Investment (ROI).
  • Berücksichtigen Sie immaterielle Aspekte wie Zuverlässigkeit, Systemleistung und verbesserte Benutzeroberflächen.
  • Starten Sie das Reengineering mit einem einfachen Programm und nutzen Sie die Erfahrungen für folgende Strategien.

Der Software-Projektplan

Der Software-Projektplan ist der Höhepunkt der Planung und stellt die Baseline für Kosten und Zeitplan dar. Er sollte folgende Punkte beinhalten:

  • Kommunikation von Umfang und Ressourcen an Manager, Techniker und Kunden.
  • Definition von Risiken und Strategien zur Risikoaverminderung.
  • Festlegung von Kosten und Zeitplan für das Management.
  • Bereitstellung eines umfassenden Ansatzes für alle Projektbeteiligten.

Software-Design und Architektur

Design ist die erste von drei technischen Tätigkeiten: Design, Programmierung und Testing. Es ist der Prozess der Anwendung von Techniken, um ein System so detailliert festzulegen, dass eine physische Realisierung möglich ist.

Design-Methoden

  • Daten-Design: Wandelt das Informationsmodell in erforderliche Datenstrukturen um.
  • Architektur-Design: Definiert die Beziehung zwischen den strukturellen Elementen des Programms.
  • Prozedurales Design: Verwandelt Strukturelemente in eine verfahrenstechnische Beschreibung.

In der Planungsphase werden Entscheidungen getroffen, die den Erfolg der Implementierung und die Wartungsfreundlichkeit maßgeblich beeinflussen.

Der Design-Prozess

Das Software-Design erfolgt in zwei Schritten:

  • Vorläufiges Design: Fokus auf Datenanforderungen und Software-Architektur.
  • Detailliertes Design: Verfeinerung der Architektur zu detaillierten Datenstrukturen und Algorithmen.

Grundlagen des Designs

Diese Konzepte bieten dem Konstrukteur eine Basis für ausgefeilte Methoden:

  • Abstraktion: Ermöglicht die Darstellung von Datenobjekten auf verschiedenen Ebenen.
  • Verfeinerung: Ein Prozess, der mit einer Funktion auf hoher Abstraktionsebene beginnt.
  • Modularität: Unterteilung der Software in Komponenten (Module).
  • Software-Architektur: Hierarchische Struktur der Komponenten und Daten.
  • Kontrollhierarchie: Organisation der Systemkomponenten.
  • Datenstruktur: Logische Beziehungen zwischen Daten.
  • Software-Verfahren: Details der Verarbeitung jedes Moduls.
  • Information Hiding: Informationen innerhalb eines Moduls bleiben für andere Module unzugänglich.

Software-Qualität (SQA)

Software-Qualität bedeutet Übereinstimmung mit expliziten Anforderungen, dokumentierten Standards und impliziten Merkmalen professioneller Software. Drei Punkte sind zentral:

  1. Anforderungen sind das Maß der Qualität.
  2. Standards definieren die Kriterien des SW-Engineerings.
  3. Implizite Anforderungen (z. B. Wartbarkeit) müssen erfüllt sein.

Qualitätsfaktoren

  • Wartbarkeit: Kann ich es reparieren?
  • Flexibilität: Kann ich es ändern?
  • Testbarkeit: Kann ich es prüfen?
  • Portabilität: Läuft es auf anderen Rechnern?
  • Wiederverwendbarkeit: Teile in anderen Anwendungen nutzen.
  • Interoperabilität: Interaktion mit anderen Systemen.
  • Korrektheit: Erfüllung der Spezifikationen.
  • Zuverlässigkeit: Genauigkeit der Aufgabenausführung.
  • Effizienz: Ressourcen- und Codeverbrauch.
  • Integrität: Kontrolle über den Zugriff durch Unbefugte.

Software-Qualitätssicherung (SQA)

Die SQA umfasst planmäßige Maßnahmen zur Gewährleistung der Qualität. Die SQA-Gruppe erfüllt folgende Aufgaben:

  • Anwendung technischer Methoden und Werkzeuge.
  • Formale technische Reviews (RTF): Sitzungen zur Entdeckung von Qualitätsproblemen.
  • Software-Tests: Strategien zur effektiven Fehlererkennung.
  • Festlegung von Standards und deren Einhaltung.
  • Change-Control: Formalisierung von Änderungen und Kontrolle der Auswirkungen.
  • Messung durch Metriken für ein quantitatives Qualitätsbild.
  • Erstellung von Qualitätsberichten.

Software-Testing

Testing ist ein kritisches Element der Qualitätssicherung und die finale Überprüfung von Design und Programmierung. Es kann als "destruktiv" (Fehler finden) und "konstruktiv" (Qualität bestätigen) angesehen werden.

Testziele und Informationsfluss

Das Hauptziel ist es, systematisch verschiedene Fehlerarten mit minimalem Zeitaufwand aufzudecken. Wenn keine Fehler gefunden werden, kann dies an hoher Qualität liegen oder an unzureichenden Tests. Unentdeckte Fehler werden sonst erst durch den Endanwender in der Wartungsphase gefunden.

Test-Case-Design

Man unterscheidet zwischen Black-Box-Tests und White-Box-Tests.

  • Black-Box-Test: Prüfung der Oberfläche und Funktionen (Eingabe/Ausgabe), ohne die interne Struktur zu betrachten.
  • White-Box-Test: Prüfung der internen logischen Pfade, Bedingungen und Datenstrukturen.

Details zum White-Box-Test

Diese Technik stellt sicher, dass:

  • Alle unabhängigen Pfade mindestens einmal ausgeführt werden.
  • Alle logischen Entscheidungen geprüft werden.
  • Grenzen der Bedingungen getestet werden.
  • Interne Datenstrukturen valide sind.

Sie hilft gegen logische Fehler, falsche Annahmen und Tippfehler.

Details zum Black-Box-Test

Fokus auf funktionale Anforderungen und Fehlersuche in folgenden Kategorien:

  • Falsche oder fehlende Funktionen.
  • Schnittstellenfehler.
  • Fehler in Datenstrukturen oder Datenbankzugriffen.
  • Performance-Probleme.
  • Initialisierungs- und Abbruchfehler.

Methoden hierfür sind die Äquivalenzpartitionierung, die Grenzwertanalyse (AVL), Ursache-Wirkungs-Diagramme und Vergleichstests.

Tests von Echtzeitsystemen

Bei Echtzeitsystemen kommt das Element Zeit als Schwierigkeit hinzu. Die Strategie umfasst:

  1. Task-Testing: Unabhängiges Testen aller Aufgaben.
  2. Performance-Tests: Untersuchung des Verhaltens bei externen Ereignissen.
  3. Inter-Task-Tests: Suche nach zeitbezogenen Fehlern in der Kommunikation.
  4. System-Tests: Integration von Hard- und Software zur Prüfung der Schnittstellen.

Verwandte Einträge: