Projekt Von der Modellierung zur Realisierung verteilter und nebenläufiger Software-Systeme
Lehrende:
Dr. Daniel Moldt; David Christopher Mosteller
Veranstaltungsart:
Projekt
Kommentare/ Inhalte:
Interesse an professioneller Softwareentwicklung in einem verteilten Kontext?
Dann ist dies das richtige Projekt.
Das Projekt bietet die Möglichkeit relevante software-technische Erfahrungen im Bereich der verteilten Software-Entwicklung zu sammeln und dabei neuste Konzepte des agilen, kooperativen Arbeitens kennen zu lernen und zu erproben. Da dieses Projekt mit einem BSc-Projekte gemeinsam stattfindet, sollen Projektmanagementaufgaben insbesondere von den MSc-Studierenden übernommen werden. Dies erfordert ein entsprechendes Engagement.
Aktuelle Hinweise zum Projekt finden sich unter https://www.inf.uni-hamburg.de/inst/ab/art/teaching.html
Entwicklung komplexer Software erfordert hinreichend leistungsfähige Software-Entwicklungsansätze. Diese werden innerhalb eines Kontextes angewendet:Paradigmen (z.B. Objekt-, Komponenten-, Dienst- oder Agentenorientierung),
Prinzipien (Teile-und-Herrsche, Musterverwendung, Standards, Teamgeist, etc.),
Techniken (Programmiersprachen (Java, Javascript), Spezifikations- und Entwurfstechniken (UML, Petrinetze, BPMN, eEPKs, etc.)),
Methoden (agiles Vorgehen, Prototyping, RUP, Paose, etc.),
Werkzeuge (IDEs, Compiler, Ticketing-Systeme, Wikis, Rahmenwerke (Gitlab, Docker, Kubernetes, …) sowie
Ressourcen jeglicher Art.
Im diesem agentenorientierten Projekt werden diese Facetten eines agilen, kooperativen Ansatzes ganzheitlich angewendet. Dazu wird im Projekt nach einer Einarbeitungsphase gemeinsam an einem einzigen Software-Produkt gearbeitet. Den Herausforderungen, die sich durch die notwendige Kommunikation, Koordination und Kooperation ergeben, wird gezielt durch den verwendeten Ansatz im Projekt begegnet. Die Teilnehmenden erwerben so neue, relevante software-technische Kenntnisse und Fähigkeiten, die bisher im Studium nur bedingt behandelt wurden, da diese Art von Herausforderungen sich nur in einem größeren Team ergeben.
Die Teilnehmenden können praktische Erfahrungen im Bereich der agilen und verteilten Softwareentwicklung sammeln / vertiefen und sich selbst in diesem Kontext erproben. In der petrinetzbasierten, agenten- und organisationsorientierten Softwareentwicklung (PAOSE) werden die dafür notwendigen Werkzeuge, Konzepte, Methoden und Techniken zusammen mit einer Projektmanagementumgebung eingesetzt.
Die gesammelten Erfahrungen lassen sich auf andere Softwareentwicklungsprojekte übertragen. Die im Projekt erworbenen Kenntnisse und Fähigkeiten eignen sich in gleicher Weise für den Einsatz in Projekten in der Forschung und der Wirtschaft, so dass man in diesem Projekt Erfahrungen sammeln kann, die denen professioneller Softwareentwicklung entsprechen.
Lernziel:
Die Teilnehmenden erhalten die Möglichkeit zu erlernen, wie Softwareentwicklungsprojekte agil und modellbasiert strukturiert werden können, was es bedeutet die Verantwortung für Teilbereiche eines Softwaresystems zu übernehmen und wie sie sich erfolgreich in ein Team integrieren. In diesem Rahmen können sie die Herausforderungen in der dynamischen Teamkoordination selbst erfahren und somit wesentliche Einblicke in das selbstorganisierte Projektmanagement gewinnen.
Es werden u.a. der Einsatz und die Benutzung der folgenden Werkzeuge erlernt/vertieft:
Confluence, Jira / Redmine (Projektmanagementumgebung), Idea / Eclipse (Entwicklungsumgebungen), Renew (Integrierte Entwicklungsumgebung für Java Referenznetze), Mulan (Agentenframework), Gradle / Ant (Buildmanagement), Git (Versionierungssystem), CI/CD (Continuous Integration / Continuous Deployment), DevOps und andere. Darüber hinaus setzen wir Techniken wie Java, JavaScript, diverse UML-Techniken, BPMN und Java-Referenznetze (Petrinetze) ein.
Weiterhin besteht, je nach Interesse der Teilnehmenden, die Option, dass Data Mining / Process Mining / Business Intelligence Werkzeuge zur Erfassung, Analyse und Unterstützung des Projektablaufes eingesetzt werden.
Letztendlich erwerben die Teilnehmenden Kenntnisse und Fähigkeiten, die sie in die Lage versetzen effizient komplexe Systeme mittels höherer Modellabstraktion zu realisieren.
Vorgehen:
Alle Teilnehmenden werden kollaborativ als ein Team ein Ziel verfolgen. Dabei wird ein Ansatz verwendet, der Heterogenität der Teilnehmenden explizit unterstützt, so dass sowohl in unterschiedlichen Bereichen als auch mit unterschiedlichen Geschwindigkeiten gearbeitet werden kann. Dies ist vor dem Hintergrund des gemeinsam stattfindenden Masterprojekts 64-858-P auch notwendig, damit unterschiedliche Wissensstände genutzt und gefördert werden können.
Eine kurze Einführung in die relevanten Facetten des verwendeten Ansatzes wird zu Beginn durch die Veranstalter gegeben. Dies deckt alle relevanten Facetten professioneller Softwareentwicklung ab. Die koordinierte Zusammenarbeit einer größeren Anzahl Personen mit dem Ziel, erfolgreich gemeinsam verantwortete Software-Produkte zu entwickeln, ist zentraler Bestandteil des vorgestellten Ansatzes.
Unter Verwendung der agentenorientierten Konzepte werden die Möglichkeiten der existierenden Werkzeuge für ein Rapid-Prototyping Verfahren ausgenutzt. Es wird dem Vorgehen "Programmierung durch Modellierung" in agiler Weise gefolgt. Diese seit langem angewandte modellgetriebene Software-Entwicklung erlaubt eine nahtlose Integration von Spezifikationsmodellen mit den letztendlich laufenden Programmen.
Als Entwicklungsgegenstand dient ein mittelgroßes Open-Source-Projekt mit 300.000 Zeilen Code. Zentrale Programmiersprache ist Java, wobei andere Sprachen für spezielle Bereiche ebenfalls relevant sind. Insbesondere Aspekte der Modularisierung auf unterschiedlichsten Abstraktionsebenen werden im Projekt behandelt. Ein zentraler Gegenstand ist die Gestaltung einer verbesserten Softwarearchitektur auf der Basis von Schichten und Modulen. Dieses hochaktuelle Thema der Softwaretechnik wird gemeinsam ganzheitlich vom gesamten Team adressiert.
Je nach Vorkenntnissen und Vorlieben können Schwerpunkte z.B. bei der Softwarearchitektur, der Programmierung, verschiedenen DevOps Tätigkeiten, dem Projektmanagement, der Projektanalyse mittels Business Intelligence Analysen oder Algorithmenentwurf liegen.
Parallel zur praktischen Arbeit wird im Projekt eine gemeinsame Dokumentation erstellt. In dieser werden alle Teilnehmer gemeinsam die konzeptionellen und technischen Grundlagen ihrer jeweiligen Arbeiten festhalten. Diese Ausarbeitungen können optional mit denen des 64-160 Seminars Herausforderung und Lösungsansätze in der verteilten Software-Entwicklung zusammengefasst werden.
Literatur:
Literatur kann vorab bei den Veranstaltern erfragt werden und wird zudem in der Veranstaltung bekanntgegeben.
Zusätzliche Hinweise zu Prüfungen:
Bei Interesse die vorlesungsfreie Zeit im Oktober zu nutzen bitte bei den Veranstaltern melden.
Diese Veranstaltung ist Bestandteil des semesterübergreifenden Forschungsprojekts "Agentenorientierung" des Labors für agenten- und organisationsorientierte Softwareentwicklung (Laos). Im Rahmen des Forschungsprojektes besteht die Möglichkeit zur Abfassung von Projekt-, Bachelor-, Baccalaureats-, Master- und Diplomarbeiten.
Scheine und Noten können entsprechend der jeweiligen Prüfungsordnungen erworben werden.
Das Projekt eignet sich für alle Bachelorstudiengänge!
Zeit/Ort:
Do 12 - 16, Digital