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.