Softwareprojekte in Asien/ Prinzipien
In diesem Kapitel werden grundsätzliche Prinzipien des Projektmanagements kurz beschrieben. Dabei wird auf das Projektmanagement im Allgemeinen und das Software-Projektmanagement im Speziellen eingegangen. Weiterhin werden die Grundsätze der Mensch-Maschine-Interaktion und deren Einfluss auf die Entwicklung von Benutzerschnittstellen von Softwareprodukten behandelt.
Notwendigkeit des Software-Projektmanagements
[Bearbeiten]Im Folgenden wird aufgezeigt, dass eine hohe Ausfallquote von Softwareprojekten in unzureichendem Projektmanagement liegt. Dazu wird zunächst der Begriff des Projektmanagements geklärt.
Definitionen
[Bearbeiten]"A Project is a temporary endeavor undertaken to create a unique product, service or result."[1]
Ein Projekt ist also ein temporäres Bemühen, um ein einmaliges Produkt, eine Dienstleistung oder ein Ergebnis zu erzeugen.
Allerdings missrät eine Vielzahl von Projekten aus unterschiedlichsten Gründen. Die Standish Group hat diese missratenen Projekte 2001 mit ihrem "Chaos Report" erforscht und herausgefunden, dass 23% aller Projekte abgebrochen werden, 49% aller Projekte zeitliche Verspätung haben oder das Budget übersteigen und nur 28% aller Projekte termingerecht und im Rahmen des Budgets fertiggestellt werden.[2]
Unter den Gründen für den Misserfolg liegen[2]
- 13,1% unvollständige Anforderungen
- 12,4% unzureichende Einbindung von betroffenen Personen
- 10,6% Fehlen von Ressourcen
- 9,9% unrealistische Erwartungen
- 9,3% unzureichende Unterstützung durch das Management
- 8,7% häufige Änderungen der Anforderungen
- 7,5% Projekt ist überflüssig geworden
- 6,2% unzureichendes IT-Management
- 4,3% unzureichende Technologiekenntnisse
Die hohen Misserfolge unter den Projekten zeigt den Bedarf an effizientem Projektmanagement, das diese Punkte berücksichtigt.
Projektmanagement und Softwareprojektmanagement
[Bearbeiten]"Projektmanagement ist die Gesamtheit von Führungsaufgaben, -organisation, -techniken und -mitteln
für die Abwicklung eines Projektes" [3]
Ziel des Projektmanagements im Softwareentwicklungsprozess ist das Verwenden von Methoden, Werkzeugen und Techniken, um die Software gemäß den Kundenvorgaben bezüglich Anforderungen, Kosten und Zeit fertig gestellt wird.[4]
Um den Softwareentwicklungsprozess zu standardisieren, haben sich über verschiedene Prozessmodelle entwickelt, hier einige Beispiele:[5]
- Wasserfallmodell
- Spiralmodell
- V-Modell
- Unified Process
- Rational Unified Process
Prozessmodelle beschreiben Methoden und Elemente in der Softwareentwicklung. Sie standardisieren den Softwareentwicklungsprozess und geben einen Leitfaden für das Projektmanagement. Sie bieten bessere Vorhersagbarkeit und Transparenz des Prozesses und des Budgetziels. Ein Prozessmodell ist ein Leitfaden für die tägliche Arbeit in einem Softwareprojekt.[5]
Phasen des Softwareentwicklungsprozesses
[Bearbeiten]Der Softwareentwicklungsprozess besteht aus verschiedenen Phasen, die in chronologischer Reihenfolge zu sehen sind. Das Ende einer jeden Phase ist durch ein spezifisches Ergebnis beschrieben.
1. Analyse Problemanalyse, Planung 2. Definition Anforderungsdefinition, Prämissen für die Realisierung 3. Entwurf Architektur, Komponenten, Schnittstellen 4. Implementierung Codierung / Generierung 5. Abnahme / Einführung Übergabe, Abnahmetest, Installation, Schulung, Inbetriebnahme 6. Wartung Fehlerbeseitigung, Änderungen, Optimierung
Die einzelnen Phasen werden im Folgenden genauer beschrieben.
Analysephase
[Bearbeiten]Die Phase des Zusammentragens der Ideen und Wünsche für eine neue Software ist die Analysephase. Ziel dieser Phase ist es, die Ausgangssituation zu beschreiben, die Ziele der Anwender zu definieren und die personelle, finanzielle, zeitliche und technische Ressourcenplanung durchzuführen.[4]
Um den Markt und Kundenbedürfnisse zu berücksichtigen, wird zunächst eine Voruntersuchung durchgeführt. Hierbei ist es wichtig, mehrere alternative Lösungen in Betracht zu ziehen. Die Vorstudie sollte beinhalten:[4]
- eine Übersicht mit begründeten Entscheidungsvorschlag inklusive der Profitabilitätsberechung
- eine Beschreibung der Projektaufgaben und -ziele
- eine Beschreibung jedes einzelnen möglichen Lösungsansatzes inklusive der genauen Beschreibung, benötigter Hard- und Software, organisatorischen Konsequenzen sowie einen Zeitplan für die Realisierung.
Neben der Erstellung der Vorstudie wird in der Analysephase die Ist-Situation erhoben. Weiterhin wird das System strukturiert und eine Durchführbarkeitsstudie vorgenommen. Es folgen Projektplan und Wirtschaftlichkeitsbetrachtung. Mögliche Restriktionen (z.B. zeitliche, hard- und softwarebedingte Restriktionen) müssen in der Analysephase berücksichtigt werden.
Soll in dem geplanten Softwareprojekt eine bereits bestehende standardisierte Softwarelösung eingeführt werden ist es notwendig, innerhalb der Analysephase den Markt über relevante Softwarelösungen zu untersuchen. Für Neu- oder Weiterentwicklungen wird eine ausführliche Vorstudie empfohlen, auf deren Basis eine bestimmte Lösung ausgewählt wird. Das begründete Ergebnis wird in der Anforderungsspezifikation festgehalten. Die Ergebnisse der Analysephase haben einen eher fachlichen Charakter, sie Beschreiben die z.B. betriebswirtschaftlichen Anforderungen an die Software.
Definitionsphase
[Bearbeiten]Auf Basis der Anforderungsspezifikation aus der Analysephase werden in der Definitionsphase die genauen Anforderungen an das Softwaresystem beschrieben. Dabei wird der Frage nachgegangen, was das neue System leisten soll und welche Prämissen die Realisierung birgt. Die genauen Anforderungen werden ermittelt, festgelegt, beschrieben und validiert und in der Anforderungsdefinition festgehalten. Inhalt der Anforderungsdefinition sollten Beschreibungen der
- relevanten Daten des Datenmodells,
- relevanten Funktionen de Funktionsmodells,
- Ereignisse, auf die das Softwaresystem reagieren soll,
- Benutzerschnittstellen z.B. durch Anzeigen, Menüs und Listen und
- organisatorischen Integration des Softwaresystems
sein.[4]
Die Anforderungsdefinition hat im Gegensatz zur Anforderungsspezifikation keinen fachlichen sondern einen eher technischen Charakter.
Entwurfsphase
[Bearbeiten]In der Entwurfsphase wird gemäß der Anforderungsdefinition ein Entwurf der Software erstellt. Hierbei werden die Einsatzbedingungen der Software analysiert, die Systemarchitektur entworfen, die Systemkomponenten definiert und Schnittstellen und Abhängigkeiten festgelegt. In der Phase werden also Objekt-, Klassen- und Datenmodell entworfen. Zum Schluss wird die gesamte Architektur überprüft. Das Ergebnis wird im so genannten Design-Konzept festgehalten.
Implementierungsphase
[Bearbeiten]In der Implementierungsphase wird die bisher spezifizierte und beschriebene Software ausprogrammiert. Bei dieser ausführbaren Form der Software muss die Fehlerfreiheit und Funktionalität der Implementierung sichergestellt werden. Qualitätsmanagement und Tests sind in dieser Phase besonders wichtig.[4]
Innerhalb der Phase werden Algorithmen verfeinert, Quellcode geschrieben oder generiert. Das logische Datenmodell muss auf ein physisches Datenbankkonzept umgewandelt werden. Die Komponenten werden auf semantische Vollständigkeit und Korrektheit hin überprüft. Ein besonders wichtiger Punkt ist das Testen des Zusammenspiels der einzeln programmierten Komponenten und das Beseitigen von Fehlern bzw. das Ergänzen fehlender Funktionalität.
Einführungsphase
[Bearbeiten]In der Einführungsphase wird die programmierte Software vom Kunden abgenommen und in seine Systemumgebung installiert und integriert. Aus rechtlicher Sicht ist in Deutschland eine Software erst dann komplett ausgeliefert, wenn neben der Software auch die Benutzerdokumentation übergeben wurde. Erforderlich sind auch ein ausführlicher Test der installierten Software in der Umgebung des Kunden, die Schulung der Benutzer und Administratoren und die schlussendliche Inbetriebnahme.
Wartung
[Bearbeiten]Auftretende Fahler in der Softwareentwicklung, die erst nach der Implementierung auffallen, oder Änderungen oder Ergänzungen, die der Kunde wünscht, werden in der Wartungsphase behoben. Durch diese Phase soll eine weiterhin produktive Nutzung der Software gewährleistet werden, die Installation stabilisiert bzw. optimiert werden. Die Wartungsphase erstreckt sich über die gesamte Lebenszeit der Software.[5]
Mensch-Maschine-Interaktion
[Bearbeiten]Die Mensch-Maschine-Interaktion hat einen signifikanten Einfluss auf den Software-Entwicklungsprozess.
Die ACM SIGCHI, eine Gruppe aus verschiedenen Unternehmensvertretern, die sich für das Thema Human-Computer-Interaction interessiert, definiert die Mensch-Maschine-Interaktion wie folgt:[6]
"Human-computer interaction is a discipline concerned with the design, evaluation and implementation of interactive computing systems for human use and with the study of major phenomena surrounding them."
Demnach ist die Mensch-Maschine-Interaktion eine Disziplin, die sich mit Entwurf, Bewertung und Implementierung von interaktiven, menschlich genutzten Computersystemen und mit dem Studium der umgebenden Phänomene beschäftigt.
Der Fokus liegt hierbei auf der Interaktion und speziell auf der Interaktion zwischen einem oder mehreren Menschen und einem oder mehreren Computern. Ein wesentliches Ziel der Mensch-Maschine-Interaktion ist die Verbesserung der Interaktion zwischen Nutzern und Computern, indem Computer leichter zu nutzen sind.
Die Mensch-Maschine-Interaktion beschäftigt sich dabei mit:
- Workflows,
- Fenstersystemen,
- der Hierarchie von Menüs,
- Informationsdesign (z.B. Farbe oder Schrift) und
- Funktionssplittung zwischen Mensch und Computer
Für das Stattfinden einer Interaktion zwischen Mensch und Computer ist eine Benutzerschnittstelle notwendig. Das folgende Kapitel stellt verschiedene Typen von Benutzerschnittstellen und generelle Anforderungen an diese vor.
Benutzerschnittstelle
[Bearbeiten]Eine Benutzerschnittstelle, auch User Interface (UI) ist der Verbindungspunkt zwischen Benutzer und einem Computerprogramm. Die Benutzerschnittstelle ist eines der wichtigsten Teile eines jeden Programms, weil diese bestimmt, wie einfach dem Computerprogramm Arbeitsanweisungen gegeben werden können. Ein leistungsfähiges Programm mit einer dürftig entwickelten Benutzerschnittstelle hat nur einen geringen Wert.
Es gibt verschiedene Arten von Benutzerschnittstellen. Gebräuchlich sind grafische Benutzerschnittstellen, Kommandozeilen und Web-basierte Schnittstellen. Grafische Benutzerschnittstellen, auch Graphical User Interfaces (GUI), erlauben es, Daten über Ein- und Ausgabegeräte wie Tastatur oder Maus ein- und über einen Bildschirm auszugeben. Bei Kommandozeilen benutzt der Nutzer die Tastatur als Eingabegerät, indem er einen Comando-String an das System abgibt. Das System stellt die Ausgabe als Text auf dem Bildschirm dar. Web-basierte Nutzerschnittstellen ermöglichen Ein- und Ausgaben über Webseiten, die über das Internet transportiert werden und durch den Web-Browser des Nutzers dargestellt werden. Grafische Benutzeroberflächen, die Fenster, Icons und Pop-Up-Menüs verwenden, sind mittlerweile Standard in der Informationstechnologie. Dieser Typ der Benuteroberfläche soll im Folgenden näher betrachtet werden.
Eine der wichtigsten Anforderungen an ein GUI ist, dass es auf die Bedürfnisse der Nutzer so gut wie möglich angepasst ist. Wissen über menschliche Fähigkeiten sollte in die Entwicklung eines GUIs einfließen. Nach Constantine und Lockwood sind die folgenden Aspekte wichtig bei dem Design eines GUI.[7]
- Fehlerbehandlung,
- Psychische Wahrnehmung,
- Nutzung von Tastatur und Maus,
- Menschliches Kurzzeitgedächtnis,
- Benutzerfreundlichkeit,
- Bekannte/unbekannte Technologie,
Zusätzlich ist es wichtig, die Psychologie der Wahrnehmung zu verstehen. Folgende Dinge sollten bei der Darstellung von Informationen auf einem Bildschirm beachtet werden:[7]
- Zeigen von erwarteten Informationen,
- Assoziation und Wiedererkennung des Nutzer hervorrufen
- Verwenden gebräuchlicher Symbole, Icons und Abkürzungen
- Nur so viele Daten wie notwendig anzeigen
Nach Balzert sind die Methoden Gruppierung und Akzentuierung hilfreich bei der Entwicklung eines GUIs.[8]Semantisch ähnliche Elemente sollten innerhalb einer Gruppe sortiert werden. Der Nutzer erfasst zuerst die Gruppen, bevor er den Inhalt wahrnimmt. Der Nutzer findet damit das Gesuchte schneller und Verwendet damit weniger Zeit für die Suche.
Weiterhin kann die passende Verwendung von Farben die Nutzerfreundlichkeit eines GUIs erhöhen. Unterschiedliche Farben werden sehr schnell erkannt. Dabei ist es wichtig, die Signale und Bedeutung unterschiedlicher Farben zu kennen. In westlichen Gesellschaften beispielsweise steht rot für „Gefahr“ oder „Halt!“, wobei grün „ok“, „Los“ bedeutet und gelb „Achtung!“. Die Bedeutung der Farben hängt jedoch von dem kulturellen Kontext des Nutzers ab. Werden Farben sinnvoll in einem Computerprogramm verwendet, kann das die Aufmerksamkeit des Nutzers steuern.
Abschließend kann festgestellt werden, dass das Design einer Benutzerschnittstelle den Aufwand beeinflusst, die der Nutzer aufbringen muss, um Eingaben zu tätigen und Ausgaben zu interpretieren. Es bestimmt außerdem, wie viel Zeit nötig ist, um den richtigen Umgang mit dem System zu lernen. Der Grad der Nutzerfreundlichkeit entscheidet, wie viel der menschlichen Psycho- und Physiologie Rechnung getragen wird. Es ermöglicht außerdem effektive und effiziente Ein- und Ausgabeprozesse.
Wie bereits angedeutet wurde, spielt der kulturelle Kontext des Nutzers eine Rolle bei der Wahrnehmung. Zur Vertiefung dieser Problematik stellt das folgende Kapitel dazu die japanische Kultur vor.
Literatur
[Bearbeiten]- ↑ Dawson, Wideman (2004): A Guide to the Project Management Body of Knowledge. Büssel: B&T
- ↑ 2,0 2,1 Standisch Group (2001): Chaos Report
- ↑ DIN 69901
- ↑ 4,0 4,1 4,2 4,3 4,4 Schneider, Werner (2001): Taschenbuch der Informatik. Leipzig: Hanser Fachbuchverlag
- ↑ 5,0 5,1 5,2 Hindel, Hörman, Müller, Schmied (2004): Basiswissen Software-Projektmanagement, Heidelberg: Dpunkt Verlag
- ↑ ACM SIGCHI Curricula for Human-Computer Interaction (1992) http://sigchi.org/cdg/cdg2.html zuletzt abgerufen am 9. Januar 2006
- ↑ 7,0 7,1 Constanine, Lockwood (1999): Software for Use - A practical Guide to the Models an Methods of Usage-Centered Design. Massachusetts: ACM Press
- ↑ Balzert, H. (2001): Lehrbuch der Software-Technik, Band 1: Software-Entwicklung. Heidelberg: Spektrum Akademischer Verlag