You are here: SE » TeachingHome » ProjektLeistungsDB2015

Softwareprojekt "Leichtathletik-Leistungsdatenbank"

Dies ist ein Selbstorganisiertes Softwareprojekt.
Veranstalter ist LutzPrechelt.


Ausgangssituation und Projektziel

Der Kunde ist der Berliner Leichtathletikverband. Dieser moechte eine einheitliche Loesung um Leistungsdaten der im Verband organisierten Kaderathleten zu speichern und auszuwerten. Bisher variiert die Datenerfassung und -speicherung je nach Landestrainer. Es wird ein System gefordert, das einfach zu bedienen ist und eine tabellarische sowie graphische Ausgabe verschiedener Daten.

Mitglieder des Team

Dennis Ventzke
  • abgeschlossenes juristisches Grundstudium
  • Kompetenzen im Bereich Algorithmik (HA abgeschlossen)
  • Kompetenzen im Bereich Modellierung UML/ERM

Paul Harfenmeister
  • Domaenenwissen (Leichtathletik Trainer/Sportler)
  • Erfahrung in Softwareentwicklung durch Werksstudententaetigkeit
  • Erfahrung mit SCRUM durch Werksstudententaetigkeit
  • Erfahrung mit Django/Python

Benyamin Bertrand
  • Erfahrung mit Webdesign und -Entwicklung
  • Erfahrung mit Systemadministration und Kundenbetreuung durch Werksstudententaetigkeit
  • B.Sc. Biologie

Leon Weber
  • Erfahrung in Softwareentwicklung durch Werksstudententaetigkeit
  • Erfahrung in Systemadministration durch Werksstudententaetigkeit
  • Erfahrung in der Programmierung mit Python
  • Spezialisierung auf Datascience/Visualization => Erfahrung mit den einschlaegigen Frameworks
  • B.A. Philosophie

Adrian Defer
  • Kompetenzen in Bereich der Usability
  • Erfahrung mit Webdesign durch Praktikum
  • Guter Ueberblick ueber aktuelle Technologien und deren Entwicklung

Ungefaehrer Inhalt jeder Iteration

Grober Plan: Drei Releases in sechs Sprints

1. Organisationsstruktur aufbauen:
  • Klaerung der Anforderungen fuer erstes Release
  • Abklaeren der Toolchain
  • Interne Schulungen durch die einzelnen Technologieexperten
  • Aufsetzen der Entwicklungsumgebung
2. Erstes Release:
  • Funktionierender Prototyp zur genaueren Klaerung der Anforderungen
  • Stabiles Datenmodell, das ueber die weiteren Releases hinaus erhalten bleibt
  • Prototyp bietet Moeglichkeit die Daten einzupflegen, die zur weiteren Entwicklung benoetigt werden
3. Eingehen auf Feedback nach erstem Release:
  • Eventuelle Neuimplementierungen
  • Erweiterung des Funktionsumfangs
4. Zweites Release:
  • Modulstruktur fertig
  • Seite fertig strukturiert, so dass Einhaengen von neuen Features ohne grosse Aenderungen moeglich ist
  • Benutzbare GUI
  • Verteilung des Releases, Usability Testing im erweiterten Anwenderbereich
5. Endet mit Feature Freeze 6. Drittes Release, Bugfixes und Usability Optimization

Welche Softwaretechnischen Methoden

Programmieren nach SCRUM mit Programmiertechniken aus XP[Extreme Programming]. Wir wollen auf jeden Fall Testdriven Development, Shared Responsibility und Pair Programming einsetzen. Ausserdem wollen wir natuerlich Continuous Integration und Source Code Management verwenden.

Welche anspruchsvollen Techniken

  • Security
  • Data Analysis
  • Data Visualization
  • Responsive Design

Welches Mitglied hat welche Rolle/Zuständigkeit

  • Bertrand: Security, Testing
  • Defer: GUI, Benutzerhandbuch
  • Harfenmeister: API, Kundenkontakt
  • Ventzke: Datenmodell, Projektdokumentation
  • Weber: Daten Analyse und Visualisierung, Serveradministration

Liste von Sprachen, Frameworks, Werkzeugen und Bausteinen

Sprachen und Frameworks:
  • Python 3.4, Django, Bokeh, Blaze, pylab stack
  • HTML5, bootstrap
  • Javascript, JQuery

Werkzeuge:
  • git
  • jenkins
  • pycharm
  • docker

Wie oft wird der Kunde eingebunden

Nach Abschluss jeder Iteration, d.h. mindestens alle zwei Wochen.

Hauptrisiken für den Erfolg

  • Zeitproblem
  • Verlust eines Mitglieds unseres Teams (aufgrund von Formalitaeten)

Eintrittswahrscheinlichkeiten reduzieren und Beherrschen der Auswirkungen

  • Bei Verlust eines Teammitglieds noch ein weiteres an Bord holen
  • Evtl. Wochenendarbeit

Notenvergabe

Eventuell die Tendenz durch den globalen Erfolg des Projekts festlegen und Abweichungen durch die lokalen Ergebnisse der einzelnen Schwerpunkte rechtfertigen.

Die benoetigten Informationen koennen wir am Ende des Projekts verfuegbar machen indem wir das produktive System, den Quellcode samt der commit-history und die Dokumentation einreichen.