Um wirkungs­volle IT-Lösungen zu planen und zu konzi­pieren, ist ein profes­sio­nelles Projekt­ma­nagement unumgänglich. Dabei sollten vor allem die Zielvor­gaben für die spezi­fische IT-Lösung klar definiert und das Projekt darauf aufbauend detail­liert konzi­piert werden. Zudem sollten Software-Projekte aufgrund ihrer Komple­xität generell in Arbeits­schritte aufge­teilt werden, nach deren Abschluss die jewei­ligen Ergeb­nisse analy­siert und für die weitere Konzeption berück­sichtigt werden. Da diese IT-Ergeb­nisse in ihren Auswir­kungen meist schwer abzuschätzen sind, sollten Sie unbedingt auf agile Projekt­me­thoden und die richtigen Techno­logien setzen. Aber auch der Anwender der späteren IT-Lösung sollte in den Konzep­ti­ons­prozess mit einge­bunden werden. Da profes­sio­nelles Projekt­ma­nagement zur Planung und Konzeption von IT-Lösungen so komplex inein­ander greifen, ist es eine logische Folge, dass die Nachfrage danach in Unter­nehmen konti­nu­ierlich steigt. Einige Kernpunkte, auf die beim profes­sio­nellen Projekt­ma­nagement zur Planung und Konzeption von IT-Lösungen zu achten ist, werden im Folgenden dargestellt.

Von der Wichtigkeit klarer Zielde­fi­ni­tionen vor Projektbeginn

Bereits die ESI-Studie aus dem Jahr 2005 ergab, dass geschei­terte IT-Projekte häufig auf fehlende oder gar unzurei­chende Zielde­fi­ni­tionen zurück­zu­führen sind. Daher sollten bereits vor der Planung und Konzeption von IT-Lösungen diese spezi­fisch festge­halten, von allen Betei­ligten akzep­tiert und zeitlich termi­niert worden sein. Dazu sollten ein gezieltes Projekt erstellt und festge­halten werden, wem welche Verant­wortung dabei zufällt und in welcher Zeit die einzelnen Arbeits­schritte abzuschließen sind.

IT-Projekte aufgrund ihrer Komple­xität in Entwick­lungs­phasen aufteilen

Da Projekte, die innerhalb derer IT-Lösungen geplant und konzi­piert werden komplex sind, sollten diese in Entwick­lungs­phasen aufge­teilt werden. Nach jeder Entwick­lungs­phase sollten die bisher erreichten Ergeb­nisse ausgiebig getestet und überprüft werden. Die Auswertung der Ergeb­nisse sollte im Folgenden dann auch für die zukünf­tigen Entwick­lungs­phasen berück­sichtigt, bzw. überar­beitet werden.
Agile Projekt­me­thoden ermög­lichen es außerdem, auf die Komple­xität eines IT-Projekts zu reagieren, indem zum Beispiel im Nachhinein noch Änderungs­wünsche vom Kunden berück­sichtigt werden können. Generell ist es dabei ratsam, dass die Anwender der späteren IT-Lösung in den Projekt­ablauf mit einbe­zogen werden, um auch hier zu erkennen, was zwingend einer Korrektur bedarf.

Moderne Software-Entwicklung ist eine sehr struk­tu­rierte und bis ins Detail durch­dachte Angele­genheit. Ein Ausdruck dieser klaren Struktur sind nicht nur das Lasten- und Pflich­tenheft, bei denen detail­liert festge­halten wird, welche Funktionen mit welchen Techniken erreicht werden sollen, sondern auch die rollen­ba­sierte Software-Entwicklung. Sie ermög­licht es jedem an der Entwicklung Betei­ligten, sich voll und ganz auf seine spezi­fische Aufgabe zu konzentrieren.

Rollen­ba­sierte Software-Entwicklung

Der Gedanke hinter der Struktur ist einfach: Durch die enge Inter­aktion von Menschen mit unter­schied­lichen Schwer­punkten wird ein breites Spektrum abgedeckt und so ein Produkt entwickelt, das möglichst vielen Anfor­de­rungen gerecht wird. Dabei ist es vor allem bei größeren Projekten dringend erfor­derlich, dass die Inter­aktion nicht nur mündlich erfolgt, sondern auch stark dokumen­ten­ba­siert ist.

Die Rolle

Unter der Rolle versteht man in der rollen­ba­sierten Entwicklung eine Menge zusam­men­ge­hö­riger Aufgaben, Quali­fi­ka­tionen und Befug­nisse. Sie kann von einer oder mehreren im Team zusam­men­ar­bei­tenden Personen wahrge­nommen werden. Gleich­zeitig kann ein Team oder eine Person auch mehrere Rollen erfüllen.

Folgende Rollen können in einem Software­projekt besetzt werden.

1. Projekt­ma­nager
Seine wesent­lichen Aufgaben sind die Planung, Kontrolle und Steuerung des Projekts.
2. Risikomanager
Seine Aufgabe ist es, poten­zielle Probleme zu erkennen und entspre­chend Abhilfe zu schaffen. Er ist in alle Phasen des Projekts involviert.
3. Der Qualitätsmanager
Er hat eine projekt­be­glei­tende Aufgabe und ist verant­wortlich für die Qualität des erzeugten Produkts. Er stellt Anfor­de­rungen, überwacht deren Einhaltung und kümmert sich um Maßnahmen zur Qualitätssicherung.

Weitere Rollen sind der Konfi­gu­ra­ti­ons­ma­nager, der Anfor­de­rungs­ana­ly­tiker, Konzep­tionier, Designer und letztlich der Program­mierer. Komplet­tiert wird das Ganze durch den Tester, den System­tech­niker, den Techno­lo­gie­be­rater, den Wartungs­experten, den Daten­sammler, den Software-Prozess­ver­bes­serer, den Wieder­ver­wender und die entspre­chenden Verant­wort­lichen auf den Führungsebenen.

Rollen in der Softwareentwicklung

Nicht alle der aufge­führten Rollen werden in jedem Software­projekt besetzt. Doch die wichtigsten, wie Projekt­ma­nager und Quali­täts­ma­nager, aber auch die Program­mierer finden sich so in jeder erfolg­reichen Software-Entwicklung wieder.

Die iterative Entwicklung beschreibt den Ansatz, ein Gesamt­projekt in viele kleine Projekte aufzu­teilen. Es werden in jeder Iteration alle Phasen, also Analyse, Entwurf (Grob- und Feindesign), Imple­men­tierung und Test durch­ge­führt. Nach jeder Iteration sollte eine Abnahme mit dem Kunden erfolgen, um so die Anfor­de­rungen und die Qualität der Software zu überprüfen.

Der Vorteil hierbei ist, dass Mängel bei jedem Itera­ti­ons­schritt beseitigt werden können und so das System ständig verbessert wird – durch Optimierung bereits bestehender Kompo­nenten oder Ergänzung um weitere.
Neben der konti­nu­ier­lichen Problem­be­he­bungs­mög­lichkeit bringt das iterative Vorgehen bei der Software­ent­wicklung auch den Vorteil, dass in diesem Ansatz gut auf Änderungen der Anfor­de­rungen während des Projekt­ab­laufs einge­gangen werden kann. Außerdem lässt sich so auch das Risiko unange­mes­sener Funktio­na­lität und überhand nehmender Kosten einschränken. Diese Vorge­hens­weise ermög­licht es,  technisch oder inhaltlich sehr riskante Bereiche eine Software­pro­jektes zuerst anzugehen.

Aller­dings bringt die mehrmalige Durch­führung der Entwick­lungs­phasen den Nachteil mit sich, dass das Projekt zeitlich schwer planbar ist, da bei jeder Iteration Zeitpuffer für die Reaktion auf aufkom­mende Probleme einkal­ku­liert werden müssen.

Der Ansatz der itera­tiven Entwicklung wird in vielen Vorge­hens­mo­dellen angewandt. Eines dieser Vorge­hens­mo­delle ist das sogenannte Spiralmodell.

Das Spiral­modell nach Boehm ist in folgende vier Schritte aufgeteilt:
Im ersten Schritt, der Analyse, werden alle wichtigen Infor­ma­tionen wie Ziele, Anfor­de­rungen, Rahmen­be­din­gungen und Lösungs­al­ter­na­tiven zusam­men­ge­tragen. Diese werden zur Umsetzung freige­geben und im zweiten Schritt evaluiert, um Risiken zu erkennen und entspre­chende Minde­rungs- bzw. Vermei­dungs­stra­tegien zu erarbeiten.
Anschließend wird nun das Vorgehen für die Reali­sierung festgelegt und durch­ge­führt. Schließlich wird in Schritt vier kritisch auf die voran­ge­gangen Schritte geschaut und der nächste Schlei­fen­durchlauf geplant.
Im Spiral­modell stellen die vier Quadranten die Vorge­hens­schritte dar und eine Linie zeigt den Fortschritt des Projektes, wodurch sich das für dieses Modell charak­te­ris­tische Spiral­muster ergibt. Die Proto­typen, die in jedem Schlei­fen­durchlauf erstellt werden, ermög­lichen, das System fortlaufend zu prüfen und weiterzuentwickeln.

Bei der Software­ent­wicklung können Probleme auftreten, die Folgen nach sich ziehen: Es besteht die Gefahr, dass die ursprünglich geplanten Entwick­lungs­kosten überschritten werden und sich die Entwick­lungs­dauer in die Länge zieht. Zudem besteht die Gefahr, dass das Endprodukt quali­tative Mängel aufweist.

Program­mier­stan­dards müssen einge­halten werden

Wenn jeder Entwickler Program­mier­stan­dards auf seine eigene Weise inter­pre­tiert, kann es zu erheb­lichen Diskre­panzen bei den Ergeb­nissen kommen, wodurch aufwen­diges Nachar­beiten nötig wird. Es empfiehlt sich, interne Handbücher mit den Program­mier­stan­dards zur Verfügung zu stellen und vor allem darauf zu achten, dass diese von den Projekt­mit­ar­beitern auch verwendet werden.

Auf die fachliche Quali­fi­kation der Mitar­beiter achten, die am Projekt beteiligt sind

Bei jedem Projekt sollte sicher­ge­stellt sein, dass sämtliche invol­vierte Mitar­beiter fachlich ausrei­chend quali­fi­ziert sind. Dies gilt besonders für sehr komplexe Software­pro­jekte, an denen viele Entwickler beteiligt sind. Ebenso ist es wichtig, dass die einzelnen Mitar­beiter über ein ähnliches fachliches Niveau verfügen, um Verstän­di­gungs­schwie­rig­keiten unter­ein­ander zu vermeiden.

Ständig neue Mitar­beiter ins Team holen

Bei der Software­ent­wicklung sollte vermieden werden, dass während eines laufenden Projekts die damit beauf­tragten Entwickler ausscheiden und durch neue Mitar­beiter ersetzt werden. Denn verlässt ein Mitar­beiter während der Entwicklung das Unter­nehmen oder wechselt zu einem anderen Projekt, gehen die bisher gesam­melten Erfah­rungen mit der werdenden Appli­kation meist verloren. Erfah­rungs­gemäß ist es äußerst schwer, das Wissen eines ausschei­denden Mitar­beiters auf den neuen Entwickler zu übertragen.

Für klare Prozesse sorgen

Intrans­pa­rente Abläufe in der Software­ent­wicklung führen zur Verun­si­cherung der Betei­ligten. Missver­ständ­nisse entstehen, wodurch sich Fehler einschleichen, die nur durch einen erhöhten Aufwand wieder beseitigt werden können und das Projekt zieht sich unnötig in die Länge. Es wird empfohlen, die Anwen­dungs­ent­wicklung im System von Produk­ti­ons­straßen aufzubauen.

Priori­täten setzen

Es fällt immer wieder auf, dass bezüglich der geplanten Features keine Priori­täten gesetzt werden, was meist zur Folge hat, dass die Features in der falschen Reihen­folge abgeschlossen werden. Deshalb sollte ein Team im Vorfeld entscheiden, welcher Arbeits­schritt als Erstes angegangen wird. Es empfiehlt sich, die Entscheidung intern vorzu­nehmen und den Auftrag­geber außen vor zu lassen. Denn Auftrag­gebern fehlt oft die Übersicht, welches Feature für den Erfolg des Projekts besonders wichtig ist.

Die Wahl der richtigen Software im Unter­nehmen und der dazu gehörenden Technik im Hinter­grund ist eine grund­le­gende Fragen. Hier kann es z.B. um die Verwaltung von Daten und Dokumente gehen. Jede vorhandene Lösung hat Vor- und Nachteile. Gerade in größeren Unter­nehmen, aber vor allem in spezia­li­sierten Firmen können die Standard­lö­sungen nicht immer das optimale Paket bieten, mit dem z.B. Dokumente oder andere Daten verwaltet werden können. Daher geht der Trend zur indivi­du­ellen Softwarelösung.

Hierbei spielen verschiedene Überle­gungen eine Rolle: Eine typische Voraus­setzung ist sicher, wenn die bestehenden Standard­pro­dukte zwar gut ins Konzept passen, aber gegenüber einer zugeschnit­tenen, indivi­du­ellen Variante schlicht teurer sind. In vielen Fällen sind keine Standard­pro­dukte vorhanden, die die gefor­derten Aufgaben erfüllen können. Weit komplexere Gründe sind die Unabhän­gigkeit vom Anbieter. Hat man sich früh für eine Standard­software entschieden, ist man vom Willen zu möglichen Verän­de­rungen dieses Anbieters abhängig und kann nicht mehr ohne großen Aufwand in ein vielleicht besseres System wechseln. Eine eigene optimierte Software­lösung kann somit auch ein entschei­dender Vorteil gegenüber der Konkurrenz sein. Eine optimale Software­lösung kann die Beziehung zum Kunden einfacher, trans­pa­renter und somit besser gestalten.

Die prakti­schen Vorteile und Begrün­dungen lassen sich wie folgt zusam­men­fassen: Indivi­duelle Lösungen können besser auf bestimmte Voraus­set­zungen und Anfor­de­rungen angepasst werden. Gleich­zeitig sind sie damit auch besser in der Lage, mit den steigenden Anfor­de­rungen ergänzt zu werden und somit zu wachsen. Der Aufwand für Mitar­bei­ter­schu­lungen wird meist erheblich verringert, wenn die Einga­be­masken an die bestehenden Betriebs­ab­läufe und das Vokabular angepasst sind. Zusätzlich können notwendige Regeln und Plausi­bi­li­täts­prü­fungen möglich gemacht werden, die automa­tisch verhindern, dass Aufträge mehrfach bearbeitet werden müssen. Mit diesen variablen Bestand­teilen kann die eigene Software­lösung optimal an die bestehenden Systeme und Anfor­de­rungen angepasst werden und ermög­licht es dem Unter­nehmen, seine Ressourcen optimal und gewinn­bringend einzu­setzen. Sind die Zielkri­terien klar definiert, können Anbieter für Indivi­du­al­lö­sungen ein Produkt zusam­men­stellen, dass die bestehenden Systeme und die neue Benut­zer­ober­fläche aufein­ander abstimmt und mitein­ander vernetzt. Spätere Änderungen oder Erwei­te­rungen sind auf diesem Weg einfacher zu bewerkstelligen.