Hinweise für kleine Softwareprojekte

Projektplanung und -organisation

Rollen

Die Aufgabenverteilung im Projekt wird durch Rollen festgelegt, die einzelnen Personen zugeordnet werden. In der Literatur werden unterschiedliche Angaben zu sinnvollen oder notwendigen Rollen innerhalb eines Projekts gemacht, deren Umsetzung u.a. von Größe und Art des Projekts abhängen. Diese gehen von einer Unterscheidung von Projektleiter und Projektmanager über Qualitätsbeauftragter und Qualitätspate bis hin zu Chefdesigner und Entwickler, siehe z.B. [3].

Meistens wird es so sein, dass alle Teammitglieder in der Rolle Entwickler beteiligt sind. Zusätzlich hat sich die explizite Wahrnehmung folgender Rollen durch Teammitglieder als nützlich erwiesen. Die Rollen sollten im Laufe des Projekts zwischen den Teammitgliedern getauscht werden, z.B. bei Abschluss einzelner Projektphasen.

Projektleiter

Der Projektleiter trägt die Verantwortung über die allgemeine Projektplanung und ist über den aktuellen Stand des Gesamtprojekts informiert. Er sorgt dafür, dass der Projektplan bei den Projekttreffen in aktualisierter Form vorliegt und fordert dazu rechtzeitig die notwendigen Informationen von den Teammitgliedern ein. Er kümmert sich um die Schaffung geeigneter Rahmenbedingungen (Projektlaufwerk, Werkzeuge, ... ) und kann einen Teil seiner Aufgaben delegieren. Schließlich vertritt er das Projekt nach "außen" (z.B. gegenüber dem Betreuer) und organisiert die regelmäßigen Projekttreffen.

Qualitätsbeauftragter

Der Qualitätsbeauftragte ist verantwortlich für die Durchführung der verschiedenen Maßnahmen zur Qualitätssicherung. Umfang und Art dieser Maßnahmen werden zu Anfang im Team abgestimmt. Dies sind üblicherweise Reviews aller wichtigen Projektdokumente (z.B. Lastenheft, Entwurfsdokumente, Sourcecode) sowie verschiedene Teststufen (Entwicklertest, Integrationstest, Systemtest). Zur Durchführung dieser Maßnahmen gehört zwingend die Vorbereitung und nachvollziehbare Dokumentation der Ergebnisse. Sämtliche Q-Aktivitäten sind im Projektplan vorzusehen und deren gewissenhafte Ausführung zu überwachen.

Tipps

Zu den Spielregeln im Projekt gehört selbstverständlich, dass jeder Projektbeteiligte - unabhängig von der aktuellen Rolle - durch offene und sachliche Kommunikation seinen Teil der Verantwortung für das Gelingen des Gesamtprojekts wahrnimmt. Insofern macht jeder im Team das Projekt zu seinem Projekt.

Projektplan

Der Projektplan ist das zentrale Dokument für die Steuerung des Projekts. Er dient in erster Linie dem Projektteam selbst als Werkzeug zur realistischen Einschätzung des Projektstatus (Fortschrittskontrolle, Machbarkeit der Projektziele), um frühzeitig auf Schwierigkeiten reagieren zu können. Außerdem eignet sich der Projektplan hervorragend zur Abstimmung im Team und zur Kommunikation mit dem Betreuer.

Aufbau eines Projektplans

Je nach gewähltem Vorgehensmodell und Aufteilung der Projekt-Phasen kann der Projektplan in seinem Aufbau variieren. Allen gemeinsam ist jedoch, dass für die kleinsten Arbeitspakete festgelegt wird, wer diese bis wann zu machen hat und wie viel Zeit dafür schätzungsweise nötig ist. Nachdem ein Arbeitspaket begonnen wurde ist außerdem in regelmäßigen Abständen wichtig zu erfassen, wie viel Zeit für das Arbeitspaket bereits investiert wurde und wie der Restaufwand geschätzt wird. Das hat folgende Vorteile:

  1. Es ist jederzeit nachvollziehbar, wie viel Zeit bereits in ein Arbeitspaket geflossen ist und wie sehr der geschätzte Zeitaufwand von dem tatsächlichen abweicht. Das ist wichtig, um die eigenen Schätzungen für zukünftige Arbeitspakete zu verbessern.
  2. Wenn sich der geschätzte Restaufwand eines Arbeitspaketes über einen gewissen Zeitraum nicht deutlich verringert oder sogar größer wird, ist das ein deutliches Zeichen für Probleme. Entweder das Arbeitspaket ist zu groß und die Schätzung damit nur sehr ungenau möglich. Dann bietet es sich an, das Arbeitspaket in kleinere Pakete aufzuteilen. Oder es bestehen möglicherweise Schwierigkeiten bei der Umsetzung, worüber im Team diskutiert werden muss.
  3. Aus den geschätzten Restaufwänden der Arbeitspakete, deren Abhängigkeiten untereinander und aus der Aufteilung der Verantwortlichkeiten auf die Teammitglieder lässt sich eine voraussichtliche Gesamtlaufzeit des Projekts ermitteln. Durch Vergleich mit dem Endetermin des Projekts ist sofort klar, ob dieser noch realistisch eingehalten werden kann. Ist dies nicht der Fall, muss frühzeitig in Abstimmung mit dem Betreuer über Maßnahmen gesprochen werden, um dem Termin doch noch gerecht zu werden (z.B. Reduktion von Funktionalität statt Qualität).

Mehrere zusammengehörende Arbeitspakete werden typischerweise einem Zwischentermin (Meilenstein) zugeordnet, um den Projektfortschritt in kürzeren Abständen zu überwachen.

Meilensteine

Meilensteine sind Terminfestlegungen für wichtige Teilziele des Projekts und werden durch Arbeitspakete charakterisiert, die bis zu einem bestimmten Datum fertiggestellt sein müssen, um das Projektergebnis bis zum Fertigstellungstermin zu erreichen.

Termine planen

Meilensteine sind wichtig, um den tatsächlichen Fortschritt des Projekts sicherzustellen. Sie sollten bereits zu Projektbeginn festgelegt werden, auch wenn das zu diesem Zeitpunkt möglicherweise nur sehr grob möglich ist. Kommt es zu einer Verschiebung eines Meilensteins, müssen alle nachfolgenden Meilensteine mindestens um diese Zeit verschoben werden, falls keine neue Aufwandsschätzung etwas anderes nahelegt. Die Abnahme der Meilensteine und der damit verbundenen Ergebnisdokumente erfolgt nach team-internen Qualitätssicherung durch den Betreuer des Projekts.

Bedienungsanleitung des Musterdokuments Projektplan

Um einen schnellen Einstieg zu ermöglichen, bieten wir hier einen Muster-Projektplan in Form eines OpenOffice-Calc-Sheets an. Auf diese Weise lassen sich einige Aufgaben der Projektplanung automatisieren und wichtige Informationen können direkt berechnet und übersichtlich dargestellt werden. Einige Zellen des Dokuments sind mit Hilfe der eingebauten Kommentar-Funktion erläutert, was jedoch für eine sinnvolle Nutzung möglicherweise noch nicht ausreicht. Aus diesem Grund wird im Folgenden eine Bedienungsanleitung gegeben, die den Einstieg so weit wie möglich erleichtern soll.

Aufbau des Projektplans

Das OpenOffice-Sheet besteht aus 4 Tabellen-Seiten, in denen unterschiedliche Informationen hinterlegt sind:

  • Projektplan
  • Meilensteine
  • Team
  • Aufwände laut Curriculum

Wir gehen nun die einzelnen Seiten durch und beschreiben, was sich dahinter verbirgt und welche Anpassungen für die eigene Nutzung durchgeführt werden müssen. Generell gilt, dass grau hinterlegte Felder mit Formeln ausgestattet sind und deshalb nicht bearbeitet werden dürfen.

Tabellenblatt: Aufwände laut Curriculum
Muster-Projektplan: Liste der voreingestellten Projekttypen, wie sie an der Hochschule Trier, Fachbereich Informatik existieren.

Hier sind die einzelnen Projekt-Typen aufgelistet, wie sie im Rahmen des Informatik-Studiums an der Hochschule Trier vorkommen. In den meisten Fällen muss hier keinerlei Änderung durchgeführt werden. Wird das Projekt nicht im Rahmen einer Studienleistung durchgeführt, kann diese Seite komplett ignoriert werden.

Tabellenblatt: Team
Muster-Projektplan: Liste des Team mit Informationen über Projekttyp laut Curriculum, sowie Summe investierter und geplanter Aufwände.

Hier werden alle Teammitglieder aufgelistet, die an dem Projekt beteiligt sind. Jedes Teammitglied erhält eine Nummer, mit deren Hilfe es an anderer Stelle eindeutig identifiziert wird. Hier ist ersichtlich, nach welchem Projekttyp laut Curriuculum das Teammitglied arbeitet, wie viele Stunden es bereits investiert hat und wie viele Stunden noch ausstehen. Diese Informationen werden automatisch anhand der Zeiterfassung im Projektplan errechnet. 

Möchte man ein neues Mitglied hinzufügen, reicht es eine neue Nummer zu wählen und die restlichen weiß hinterlegten Felder entsprechend auszufüllen.

Tabellenblatt: Meilensteine
Muster-Projektplan: Liste des Team mit Informationen über Projekttyp laut Curriculum, sowie Summe investierter und geplanter Aufwände.

Auf diesem Datenblatt werden die Meilensteine verwaltet, die das Projekt in kleinere Ziele unterteilt. Jeder Meilenstein erhält eine Nummer, eine Bezeichnung und ein Datum. Die Nummer muss eindeutig sein und identifiziert einen Meilenstein im Projektplan. Mit ihr werden einzelne Arbeitspakete dem Meilenstein zugeordnet. Im Projektplan werden später pro Arbeitspaket einzelne Aufwände erfasst und verplant. Auf diese Weise wird es möglich, pro Meilenstein eine Übersicht zu generieren, welche Aufwände bereits eingeflossen sind, wie hoch der Restaufwand ist und schließlich basierend darauf, wie weit der jeweilige Meilenstein von seiner Erreichung entfernt ist. Diese Werte errechnen sich automatisch, sofern bereits IST- und REST-Aufwände im Projektplan erfasst sind.

Tabellenblatt: Projektplan
Muster-Projektplan: Übersicht

Dies ist das wichtigste Tabellenblatt, mit dem auch am meisten gearbeitet wird. Hier fließen nun viele Dinge zusammen:

  • Allgemeine Angaben zum Projekt, unter anderem der Start des Projekts. Diese Angabe ist notwendig, damit der Kalender im rechten Teil des Projektplans den korrekten Zeitraum anzeigt.
  • Thematische Einteilung des Projekts in einzelne Kategorien, die wiederum in einzelne Arbeitspakete aufgeteilt sind. Die Größe eines Arbeitspakets sollte so gewählt werden, dass der Aufwand realistisch geschätzt werden kann. Um so größer das Arbeitspaket, um so schwieriger wird eine realistische Zeit-Schätzung.
  • Die Zuweisung von Arbeitspaketen zu vorher definierten Meilensteinen.
  • Die Zuweisung von Arbeitspaketen zu einem verantwortlichen Teammitglied.
  • Zeitplanung und Zeiterfassung pro Arbeitspaket.
  • Eine Kalenderübersicht, die den heutigen Tag, die Grenze des Planungshorizontes (PH) und alle eingetragenen Meilensteine anzeigt. Die Kalenderübersicht dient gleichzeitig als Zeiterfassung der IST-Aufwände sowie zur Vorausplanung im Rahmen des Planungshorizontes ab dem aktuellen Tag.

Die meisten Punkte erklären sich von selbst, während der letzte jedoch etwas mehr Erläuterung verdient. Im Kalender kann pro Arbeitspaket eingetragen werden, wie viel Zeit bereits dort hinein geflossen ist (IST-Aufwand). Dieser ergibt sich aus der Summe der Stunden von Beginn des Projekts bis zum jeweils aktuellen Tag. Der geschätzte REST-Aufwand gibt an, wie viele Stunden schätzungsweise noch für das Arbeitspaket aufgewandt werden müssen. Diese Zahl kann dann über den Planungshorizont verteilt werden, wobei es nicht zwingend notwendig ist, alle Stunden sofort zu verplanen.

Muster-Projektplan: Zeiterfassung des IST-Aufwandes links vom heutigen Tag.
Muster-Projektplan: Zeiterfassung des bereits verplanten REST-Aufwandes rechts vom heutigen Tag bis mindestens zur Grenze des Planungshorizontes
Aktualisierung des Projektplans

Die Aktualisierung muss in regelmäßigen Abständen erfolgen, typischerweise vor den Projekttreffen mit dem Betreuer. Dabei werden durch den Projektleiter folgende Schritte ausgeführt:

  1. die bis zum aktuellen Datum tatsächlich erbrachten IST-Aufwände eintragen (Planungswerte ggf. korrigieren), Daten von den Teammitgliedern einfordern
  2. REST-Aufwände in Absprache mit den Bearbeitern aktualisieren, bei Abschluss eines Arbeitspakets REST-Aufwand 0 eingetragen
  3. Verteilung der offenen REST-Aufwände je Arbeitspaket auf den PH in Absprache mit den Bearbeitern
  4. kritische Würdigung des Projektfortschritts: Gibt es neue Probleme, Risiken oder Verzögerungen? Sind Meilensteine gefährdet?

Es bietet sich an, vor jeder Aktualisierung eine Kopie des alten Projektplans abzulegen oder den Projektplan einer Versionsverwaltung zu unterstellen. Ein Vergleich des tatsächlichen Projektverlaufs mit einem früheren Planungsstand ist oft interessant.

Tipps

Begreifen Sie den Projektplan als Hilfsmittel für das eigene Team, nicht als Überwachungsinstrument des Betreuers, das jeweils für die Projekttreffen geschönt wird. Der Nutzen des Projektplans entsteht nur, wenn er die tatsächliche Situation abbildet. Es ist nicht ungewöhnlich, dass in einem Projekt Verzögerungen und Schwierigkeiten auftreten, was nicht automatisch bedeutet, dass das Projekt scheitern wird. Es macht allerdings einen großen Unterschied, ob sich das Projektteam der Probleme bewusst ist und sinnvoll darauf reagieren kann, oder ob das Projekt im Blindflug auf den Endetermin zusteuert.

Vergessen Sie nicht, die Aufwände für die Projektorganisation inkl. der Projektplanung ebenfalls zu schätzen und zu erfassen.

Wir schlagen hier eine relativ einfache Projektplanung auf Basis einer Tabellenkalkulation vor, die ausreicht, um in den kleinen Projekten im Rahmen der Ausbildung den Überblick zu behalten und um den Umgang mit einem Projektplan zu üben. Spezielle Werkzeuge zur Projektplanung sind viel mächtiger und ermöglichen beispielsweise eine Anbindung an Zeiterfassungssysteme oder eine bessere Verwaltung von Abhängigkeiten zwischen Arbeitspaketen. Andererseits erfordern sie einen größeren Einarbeitungsaufwand.

Projekttreffen

Projekttreffen finden regelmäßig statt und werden im Projektplan vorgesehen, zum Beispiel im ein- oder zwei-Wochen-Takt. 

Teamwork

Dies hat folgende Vorteile:

  1. Es wird sicher gestellt, dass alle nach wie vor am selben Strang ziehen und Missverständnisse bzw. Unklarheiten werden rechtzeitig erkannt.
  2. Teilergebnisse können den Team-Mitgliedern präsentiert werden, was sich positiv auf die Motivation aller auswirkt, da man sieht dass es voran geht.
  3. Es besteht stets Klarheit über den Stand des Projekts, sodass der IST und SOLL-Stand laut Projektplan verglichen und möglicherweise neu geplant werden kann.

Die regelmäßigen Projekttreffen sollten nicht übermäßig lange dauern und immer ein klares Ziel verfolgen. Neben den immer wiederkehrenden Ritualen wie die gemeinsame Validierung des Projektplans oder die Aufwandsschätzung noch ausstehender Arbeitspakete, könnten auch kritische Entscheidungen anfallen, die den weiteren Projektverlauf beeinflussen. Dabei ist es wichtig, dass sich die Teammitglieder nicht erst während des Treffens über solche Punkte Gedanken machen, sondern bereits vorher Wege oder Vorschläge erarbeitet haben, die dann in der Runde diskutiert werden können. 

Es ist Aufgabe des Projektleiters, vorher die Ziele für ein jedes Treffen zu definieren und die restlichen Teammitglieder rechtzeitig über diese zu informieren. Schließlich kann es sehr frustrierend sein, wenn viel Zeit für unvorbereitete Projekttreffen vergeudet wird.

Tipps

Es ist wenig sinnvoll viel Zeit damit zu verbringen, während eines Projekttreffens sofort gemeinsam eine Lösung für ein technisches Problem o.ä. zu erarbeiten. Es ist wesentlich besser, kleine Gruppen zu bilden (2-3 Personen), die sich intensiv und vor allem konzentriert mit einem Problem auseinandersetzen und Lösungswege erarbeiten, die dann wiederum im Team vorgestellt und diskutiert werden.

Projektlaufwerk

Das Projektlaufwerk ist die zentrale gemeinsame Datenbasis, auf die jedes Team-Mitglied zugreifen kann. 

Projektlaufwerk anlegen

Es kann beim r/ft beantragt werden, indem man (nach Anmeldung) ein Online-Formular auf den Seiten des Rechenzentrums ausfüllt[4]. Es dient einerseits zum Datenaustausch und andererseits als Backup, denn die Projektlaufwerke werden regelmäßig vom Rechenzentrum gesichert. Auf dem Laufwerk sollten mindestens folgende Dinge hinterlegt werden:

  • eine aktuelle und ausführbare Version der Software
  • alle Arten von Dokumentationen in ihrer aktuellen Fassung
  • der Projektplan
  • die Quelldateien (zum Beispiel in Form eines SVN- oder Git-Repositories)

Wir stellen beispielhaft eine Ordnerstruktur zur Verfügung, die bereits sämtliche Beispieldokumente enthält. In dieser sind ausschließlich die Quelldateien in Form eines Git-Repositories versioniert. Je nach Team-Größe und gewähltem Workflow kann es jedoch sinnvoll sein, wesentlich mehr zu versionieren, zum Beispiel auch die Anforderungs- und Entwurfsdokumente.

Das Beispielprojekt

Um den Einstieg noch weiter zu vereinfachen, wird hier ein Projektlaufwerk zur Verfügung gestellt, das ein komplettes (wenn auch kleines) Beispielprojekt enthält. 

Download

Dabei handelt es sich um die Umsetzung eines Movie-Managers zur Verwaltung einer Filmsammlung. Neben den Quelldateien, die in einem Git-Repository versioniert sind, und einer lauffähigen Version sind außerdem eine Anforderungssammlung sowie ein Projektplan vorhanden. Es wurde versucht die hier angesprochenen Aspekte einfließen zu lassen. Inbesondere die Strukturierung der Software und die Verwendung der Entwurfsmuster könnte hilfreich sein. Bitte beachten Sie, dass das Beispielprojekt nur zur Veranschaulichung dient und keinen Anspruch auf Vollständigkeit erhebt. Außerdem repräsentiert die zugehörige Software nur eine mögliche Art der Umsetzung.

Der Download der Zip-Datei befindet sich in der rechten Spalte.

Um an die Quelldateien zu kommen, muss man zunächst einen Git-Client installieren und dann das (Remote-)Repository in der Zip-Datei klonen. Wie das funktioniert ist in der Git-Dokumentation nachzulesen[5]. Weiter unten existiert außerdem ein Abschnitt (Werkzeuge/ Versionsverwaltungssyteme), der einen kurzen Überblick über Git verschafft.