Hinweise für kleine Softwareprojekte

Werkzeuge

Bei einem Software-Projekt an dem mehr als eine Person arbeitet ist es unerlässlich Software-Werkzeuge zu verwenden, die bei der Umsetzung helfen. 

Auswahl der Werkzeuge

Bei einem Software-Projekt an dem mehr als eine Person arbeitet ist es unerlässlich Software-Werkzeuge zu verwenden, die bei der Umsetzung helfen. Dazu gehört ein Projektlaufwerk des r/ft, auf dem unter anderem die Fortschritte und Ergebnisse zentral gespeichert werden. Des Weiteren ist ein Versionsverwaltungssystem wie zum Beispiel SVN[28] oder Git[29] notwendig, ohne das ein gemeinsames und gleichzeitig produktives Arbeiten am Quellcode nicht möglich ist. Außerdem sollte man, abhängig von der gewählten Programmiersprache, eine Entwicklungsumgebung verwenden (zum Beispiel Eclipse im Falle von Java). Eine solche kann die Implementierung erheblich vereinfachen und hat zudem den Vorteil, dass durch Plugins oft auch eine nahtlose Integration mit dem gewählten Versionsverwaltungssystems möglich wird. Schließlich bleiben verschiedene Modellierungstools zur Erstellung von Grafiken und UML-Diagrammen zu erwähnen. 

Für die Erstellung der Projektdokumente bietet sich aus folgenden Gründen LaTeX[30] an:

  • Es ist kostenlos, für alle Plattformen geeignet und sehr gut dokumentiert. 
  • LaTeX ermöglicht die Erstellung leserlicher und einheitlich formatierter Dokumente. 
  • Es bietet eine sehr gute Unterstützung für mathematischen Formeln. 
  • Da Dokumente aus einzelnen Modulen zusammengesetzt werden können, eignet es sich für Gruppenarbeiten.
Versionsverwaltungssysteme

SVN

SVN ist ein weit verbreitetes Versionsverwaltungssystem, das bei studentischen Softwareprojekten im Fachbereich Informatik bisher häufig verwendet wurde. Das hat unter anderem folgende Gründe:

  • SVN ist einfach zu verstehen und bietet gerade für Eclipse eine sehr gute Toolunterstützung.
  • Das SVN-Repository kann auf dem Projektlaufwerk gehostet werden.
  • SVN ist kostenlos

Wie man ein SVN-Repository auf dem Projektlaufwerk einrichtet, ist auf den Seiten des r/ft beschrieben[31].

Hier einige SVN-Clients:

  • Eclipse-Plugin Subversive[32] oder Subclipse[33]
  • Tortoise SVN für Windows[34]
  • Eine umfangreiche Liste von Clients inklusive Vergleich ist auf Wikipedia zu finden[35]

Git

Git[36] ist dabei nach und nach SVN abzulösen. Einer der wesentlichen Unterschiede zu SVN besteht darin, dass es dezentral ist. Das heißt es gibt nicht ein zentrales Repository auf einem entfernten Server, wie das bei SVN der Fall ist, sondern jeder Benutzer hat eine Kopie des gesamten Repositories lokal verfügbar. Auf diese Weise kann auch weiter versioniert werden, wenn man gerade keine Verbindung zum Server hat. Außerdem bietet der dezentrale Ansatz eine erhöhte Ausfallsicherheit. Sollte das sogenannte Remote-Repository (besonderes Repository zur Synchronisation im Team) ausfallen, kann ein beliebiges lokales Repository als Backup dienen. Ein weiterer Vorteil ist die Performanz, da für keine Operation eine Server-Verbindung hergestellt werden muss (abgesehen von den Synchronisations-Operationen).

Git ist zudem sehr gut dokumentiert. Das frei verfügbare Buch Pro Git[37] wird direkt auf der Projekt-Seite zum Download angeboten.

Auch die Tool-Unterstützung ist relativ gut. Unter Windows hat sich besonders die Software Git Extensions[38] bewehrt. Eine Liste verfügbarer GUI-Clients für unterschiedliche Plattformen ist auf der Git-Seite zu finden[39].

SVN

SVN ist ein weit verbreitetes Versionsverwaltungssystem, das bei studentischen Softwareprojekten im Fachbereich Informatik bisher häufig verwendet wurde. Das hat unter anderem folgende Gründe:

  • SVN ist einfach zu verstehen und bietet gerade für Eclipse eine sehr gute Toolunterstützung.
  • Das SVN-Repository kann auf dem Projektlaufwerk gehostet werden.
  • SVN ist kostenlos

Wie man ein SVN-Repository auf dem Projektlaufwerk einrichtet, ist auf den Seiten des r/ft beschrieben[31].

Hier einige SVN-Clients:

  • Eclipse-Plugin Subversive[32] oder Subclipse[33]
  • Tortoise SVN für Windows[34]
  • Eine umfangreiche Liste von Clients inklusive Vergleich ist auf Wikipedia zu finden[35]

SVN

SVN ist ein weit verbreitetes Versionsverwaltungssystem, das bei studentischen Softwareprojekten im Fachbereich Informatik bisher häufig verwendet wurde. Das hat unter anderem folgende Gründe:

  • SVN ist einfach zu verstehen und bietet gerade für Eclipse eine sehr gute Toolunterstützung.
  • Das SVN-Repository kann auf dem Projektlaufwerk gehostet werden.
  • SVN ist kostenlos

Wie man ein SVN-Repository auf dem Projektlaufwerk einrichtet, ist auf den Seiten des r/ft beschrieben[31].

Hier einige SVN-Clients:

  • Eclipse-Plugin Subversive[32] oder Subclipse[33]
  • Tortoise SVN für Windows[34]
  • Eine umfangreiche Liste von Clients inklusive Vergleich ist auf Wikipedia zu finden[35]

Git

Git[36] ist dabei nach und nach SVN abzulösen. Einer der wesentlichen Unterschiede zu SVN besteht darin, dass es dezentral ist. Das heißt es gibt nicht ein zentrales Repository auf einem entfernten Server, wie das bei SVN der Fall ist, sondern jeder Benutzer hat eine Kopie des gesamten Repositories lokal verfügbar. Auf diese Weise kann auch weiter versioniert werden, wenn man gerade keine Verbindung zum Server hat. Außerdem bietet der dezentrale Ansatz eine erhöhte Ausfallsicherheit. Sollte das sogenannte Remote-Repository (besonderes Repository zur Synchronisation im Team) ausfallen, kann ein beliebiges lokales Repository als Backup dienen. Ein weiterer Vorteil ist die Performanz, da für keine Operation eine Server-Verbindung hergestellt werden muss (abgesehen von den Synchronisations-Operationen).

Git ist zudem sehr gut dokumentiert. Das frei verfügbare Buch Pro Git[37] wird direkt auf der Projekt-Seite zum Download angeboten.

Auch die Tool-Unterstützung ist relativ gut. Unter Windows hat sich besonders die Software Git Extensions[38] bewehrt. Eine Liste verfügbarer GUI-Clients für unterschiedliche Plattformen ist auf der Git-Seite zu finden[39].

Git

Git[36] ist dabei nach und nach SVN abzulösen. Einer der wesentlichen Unterschiede zu SVN besteht darin, dass es dezentral ist. Das heißt es gibt nicht ein zentrales Repository auf einem entfernten Server, wie das bei SVN der Fall ist, sondern jeder Benutzer hat eine Kopie des gesamten Repositories lokal verfügbar. Auf diese Weise kann auch weiter versioniert werden, wenn man gerade keine Verbindung zum Server hat. Außerdem bietet der dezentrale Ansatz eine erhöhte Ausfallsicherheit. Sollte das sogenannte Remote-Repository (besonderes Repository zur Synchronisation im Team) ausfallen, kann ein beliebiges lokales Repository als Backup dienen. Ein weiterer Vorteil ist die Performanz, da für keine Operation eine Server-Verbindung hergestellt werden muss (abgesehen von den Synchronisations-Operationen).

Git ist zudem sehr gut dokumentiert. Das frei verfügbare Buch Pro Git[37] wird direkt auf der Projekt-Seite zum Download angeboten.

Auch die Tool-Unterstützung ist relativ gut. Unter Windows hat sich besonders die Software Git Extensions[38] bewehrt. Eine Liste verfügbarer GUI-Clients für unterschiedliche Plattformen ist auf der Git-Seite zu finden[39].

Eclipse IDE

Eclipse ist mächtig und man lernst ständig neue Features oder Shortcuts, die einem das Leben beim Programmieren deutlich vereinfachen. Hier zunächst eine Auflistung sinnvoller Plugins, dann ein paar Worte zu Einstellungen, die am Anfang eines Projekts vor dem ersten Commit vollzogen werden sollten und dann eine Liste praktischer Shortcuts. Der Fachbereich Informatik bietet auf seinem YouTube-Channel eine Tutorial-Reihe an, welche den Einstieg und das effiziente Arbeiten mit Eclipse behandelt[40].

Plugins:

Eclipse kennt zwei verschiedene Einstellungs-Scopes. Zum einen die "Globalen Einstellungen", die für die gesamte Eclipse-Installation gelten und zum anderen "Projektspezifische Einstellungen", die nur für ein Projekt gelten. Projektspezifische Einstellungen überschreiben möglicherweise bereits gesetzte globale Einstellungen. Außerdem werden diese in einer Datei ".project" gespeichert, die sinnvollerweise ebenfalls in die Versionsverwaltung wandern sollte. Auf diese Weise müssen projektspezifische Einstellungen nur einmal gesetzt werden und sind dann nach dem Einchecken auch für die restlichen Teammitglieder verfügbar.

Projektspezifische Einstellungen:

  • Text-Encoding auf UTF-8 setzen. Auf diese Weise gibt es keine Probleme, wenn aktuell im Team oder auch in zukünftigen Teams nicht nur auf Windows, sondern auch auf Mac OS X und Linux entwickelt wird.
  • Einrichtung geeigneter Task-Tags pro Entwickler.
  • Geeignete Einrichtung aller anderen Plugins, die im Projekt verwendet werden sollen (z.B. FindBugs und Checkstyle).

Globale Einstellungen:

  • Einrichtung des automatischen Formatters. Dabei sollte man im Team festlegen, ob die geschweiften Klammern bei Beginn eines Codeblocks an das Ende einer Zeile kommen oder in die nächste rutschen.
  • Aktivierung und Einrichtung von "Save-Actions". Dabei handelt es sich um Aktionen, die bei jedem Speichern der aktuellen Datei ausgeführt werden. Aktivierbar ist zum Beispiel die automatische Ausführung des Formatters oder auch die automatische Organisation der Imports. Es lohnt sich dort einen genaueren Blick drauf zu werfen.
Ticket-System

Ein Ticket-System dient zur zentralen Sammlung von auftretenden Bugs bei der Software-Entwicklung. Jeder Bug wird in einem eigenen Ticket erfasst, wobei der aufgetretene Fehler und dessen Reproduktion möglichst genau beschrieben wird. Dabei hat jedes Ticket einen sogenannten Life-Cycle, der den aktuellen Zustand eines Tickets beschreibt (z.B. "New", "Accepted", "Test", "Closed", "Dublicated"). Welche Zustände existieren hängt vom verwendeten Ticket-System und dem dazugehörigen Workflow ab. Oft lässt sich dieser Workflow für jedes Projekt individuell einstellen.

Die Verwendung eines Ticket-System hat sich in der Vergangenheit in Projekten im Fachbereich Informatik als sehr nützlich erwiesen. In großen Software-Projekten ist ein solches System eigentlich unumgänglich.

Hier einige bekannte und zudem freie Beispiele:

Das Rechenzentrum der Hochschule Trier bietet für studentische Projekte eine Trac-Instanz an. Diese kann beim Rechenzentrum beantragt werden. Assembla ist proprietär, bietet für offene Community-Projekte jedoch nahezu vollen Funktionsumfang. Neben einem äußerst guten Ticket-System bietet es dem Nutzer jedoch noch viel mehr, was für ein Projekt notwendig sein kann. Besonders wenn man agil entwickeln möchte, sollte man einen Blick darauf werfen.