Software Engineering (InfM-Proj)
Dieses Projekt wird über zwei Semester veranstaltet:
Beginn im Sommersemester, Abschluss im darauffolgenden Wintersemester.
Neues Format
Das Modul Projekt (InfM-Proj) wird in dieser Form über zwei Semester nicht mehr angeboten. Stattdessen findet regelmäßig ein einsemestriges Projekt Werkzeuggestützte Softwarearchitekturanalyse im Wintersemester statt.
Masterprojekt 2020/2021
Zeit und Ort:
Leitung:
Material:
Inhalte
Die Studierenden entwickeln (unter Anleitung) nach aktuellen Methoden und Erkenntnissen ein System zur gegebenen Aufgabe. Die typischen Phasen des Entwicklungsprojektes werden unter der beruflichen Praxis weitestgehend entsprechenden Rahmenbedingungen durchlaufen. Die Studierenden verantworten auch (unter Anleitung) das Projektmanagement selbstständig.
Das integrierte Seminar begleitet die praktischen Aufgaben des Masterprojekts durch die Recherche, Erarbeitung und gegenseitige Vermittlung von theoretischen und wissenschaftlichen Grundlagen zum Projektthema.
Einordnung ins Studium – Voraussetzungen
InfM-Proj wird im Pflichtbereich für die Masterstudiengänge Informatik und Intelligent Adaptive Systems angeboten. Dieses Projekt kann in der Regel auch als Modul WI-MA-P im Masterstudiengang Wirtschaftsinformatik anerkannt werden. Für andere Studiengänge ist ggf. die Verwendung im freien Wahlbereich möglich. Für das Modul kann aus verschiedenen Lehrangeboten unterschiedlicher Arbeitsbereiche gewählt werden.
Für den Abschluss des Moduls am Arbeitsbereich SWK ist die Teilnahme an den Lehrveranstaltungen 64-860 S Integriertes Seminar (Sommersemester), 64-860 P1 Masterprojekt Teil 1 (gleiches Sommersemester), 64-860 P2 Masterprojekt Teil 2 (darauf folgendes Wintersemester) erforderlich.
Vorkenntnisse im Bereich der Softwaretechnik – z.B. durch Abschluss des Moduls InfB-SWT Softwaretechnik sowie weiterer Lehr-Angebote des Arbeitsbereichs – werden empfohlen.
Das Modul InfM-Proj umfasst einen Arbeitsaufwand von 12 LP nach ECTS.
Prüfung
Für das Modul wird eine Gesamtnote vergeben.
Aktive Teilnahme an Projekt und integriertem Seminar, kontinuierliche Beteiligung und erfolgreiche Projektmitarbeit, Vorstellung der Ergebnisse/Lösungsansätze in Referat und Hausarbeit sowie in einem Abschlussbericht sind erforderlich.
Masterprojekt 2013/14
Teil 1 - SoSe 2013
Dozent: Prof. Matthias Riebisch
64-460 Masterprojekt Software-Engineering
64-461 Integriertes Seminar Software-Engineering
Das Masterprojekt beinhaltet ein Integriertes Seminar und die eigentliche Projektaufgabe. Es wird im Wintersemester fortgesetzt.
Thema 1: Methoden des Software-(Architektur-)Entwurfs
Thema 2: Variabilität, Produktlinien und Konfiguration von Produktvarianten aus Bausteinen
Teil 2 - WiSe 2013/14
Dozent: Prof. Matthias Riebisch
64-460 Masterprojekt Software-Engineering
Dieser Teil 2 des Masterprojekts knüpft zeitlich und inhaltlich an die Arbeit aus dem vorhergehenden Semester an.
Aufgaben: Die Aufgaben für die Projektteilnehmer bestehen in der Weiterentwicklung der Software-Architektur aus beiden Themen-Gruppen zu einer Produktlinien-Architektur, deren Implementierung als System, die Integration, Bewertung und Überarbeitung. Dabei wird besonderes Augenmerk auf die Anwendung von fortgeschrittenen Methoden des Software Engineering bei Entwurf, Modellierung und Weiterentwicklung gelegt.
Werkzeuge: Alle Werkzeuge werden auf der Basis des Eclipse Modeling Frameworks EMF integriert. Wir nutzen dazu EMFtrace und EMFStore, um die Modelle mittels Metamodellen zusammenzuführen. Die Entwicklung der Anforderungsbeschreibung erfolgt mit Werkzeugen, deren Auswahl dem Team freigestellt ist. Featuremodelle werden mit pure::variants modelliert. Mit dem gleichen Werkzeug erfolgt später auch die Konfiguration von Produkten auf Basis der Produktlinie. Die Modellierung der Softwarearchitektur erfolgt mit Visual Paradigm for UML.
Masterprojekt 2014/15
Teil 1 - SoSe 2014
Das Masterprojekt beinhaltet die eigentliche Projektaufgabe und ein integrietes Seminar.
Dozenten: Prof. Dr. Matthias Riebisch, Sebastian Gerdes, Dipl.-Inform.
64-460 Masterprojekt Software-Engineering
Die Projektaufgabe wird im Team bearbeitet, das aus mehreren Personen besteht. Die Arbeit umfasst eine Anforderungsanalyse-Phase sowie danach eine Entwicklungsphase, in der die Entwurfsmethode auf eine Aufgabenstellung angewendet wird. Dabei geht es darum, durch praktische Anwendung von Methoden genauer kennen zu lernen. Danach schließt sich eine Bewertungsphase an, in der das Ergebnis einer anderen Entwurfsaufgabe daraufhin bewertet wird, ob die Entwurfsmethode korrekt angewendet wurde.
64-461 Integriertes Seminar Software-Engineering
Im Seminar ist ein Vortrag sowie eine Seminararbeit mit Bezug auf die Entwurfsmethode oder die Aufgabenstellung zu erarbeiten. Dabei geht es darum, die im Projekt benötigten Methoden und die Aufgabenstellung zu analysieren und kennenzulernen, und auf diese Weise Wissen für das Projektteam und die Bearbeitung der Aufgabenstellung aufzubereiten.
Zur Projektaufgabe/Domänenbezug:
Die Aufgabe beinhaltet die Entwicklung eines Empfehlungs- und Informationssystems für Entwurfsentscheidungen für Softwareentwickler, insbesondere während der Architekturentwicklung. Das Werkzeug wird als Webapplikation entwickelt. Es dient dazu,
- dem Entwickler Entscheidungsunterstützung zu bieten, indem er bei der Verfeinerung und der schrittweisen Lösung von Entwurfsaufgaben geleitet wird,
- die Dokumentation von Entwurfsentscheidungen zu unterstützen,
- einen Katalog von anwendbaren und wiederverwendbaren Lösungsbausteinen für Entwickler für die Problemlösung bereitstellen, wie Design Pattern, Bausteine, etc.
- Erfahrungswissen als Empfehlungen zu präsentieren und in Entscheidungen einfließen zu lassen.
Die Modellierung der Softwarearchitektur erfolgte mit Visual Paradigm for UML.
Das hier beschriebene "Masterprojekt Teil 1" fand immer im Sommersemester statt. Es wurde im Wintersemester als "Masterprojekt Teil 2" mit den gleichen Teilnehmern fortgesetzt, da es auch inhaltlich an die Arbeit aus dem vorhergehenden Semester anknüpfte.
Teil 2 - WiSe 2014/15
64-460 Masterprojekt Software-Engineering
Prof. Dr. Matthias Riebisch, Sebastian Gerdes, Dipl.-Inform.
Aufgaben:
- Die Aufgaben für die Projektteilnehmer bestehen in der Weiterentwicklung der Software-Architektur aus beiden Themen-Gruppen zu einer Produktlinien-Architektur, deren Implementierung als System, die Integration, Bewertung und Überarbeitung. Dabei wird besonderes Augenmerk auf die Anwendung von fortgeschrittenen Methoden des Software Engineering bei Entwurf, Modellierung und Weiterentwicklung gelegt.
Werkzeuge:
- Alle Werkzeuge werden auf der Basis des Eclipse Modeling Frameworks EMF integriert. Wir nutzen dazu EMFtrace und EMFStore, um die Modelle mittels Metamodellen zusammenzuführen.
- Die Entwicklung der Anforderungsbeschreibung erfolgt mit Werkzeugen, deren Auswahl dem Team freigestellt ist.
- Featuremodelle werden mit pure::variants modelliert. Mit dem gleichen Werkzeug erfolgt später auch die Konfiguration von Produkten auf Basis der Produktlinie.
- Die Modellierung der Softwarearchitektur erfolgt mit Visual Paradigm for UML.
Für die Umsetzung wird Eclipse benutzt.
Masterprojekt 2015/16
Dozenten: Mohamed Soliman, M.Sc., Sebastian Gerdes, Dipl. Inform.
64-460 Masterprojekt Software-Engineering
Die Projektaufgabe wird im Team bearbeitet, das aus mehreren Personen besteht. Die Arbeit umfasst eine Anforderungsanalyse-Phase sowie danach eine Entwicklungsphase, in der die Entwurfsmethode auf eine Aufgabenstellung angewendet wird. Dabei geht es darum, durch praktische Anwendung von Methoden genauer kennen zu lernen. Danach schließt sich eine Bewertungsphase an, in der das Ergebnis einer anderen Entwurfsaufgabe daraufhin bewertet wird, ob die Entwurfsmethode korrekt angewendet wurde.
64-461 Integriertes Seminar Software-Engineering
Im Seminar ist ein Vortrag sowie eine Seminararbeit mit Bezug auf die Entwurfsmethode oder die Aufgabenstellung zu erarbeiten. Dabei geht es darum, die im Projekt benötigten Methoden und die Aufgabenstellung zu analysieren und kennenzulernen, und auf diese Weise Wissen für das Projektteam und die Bearbeitung der Aufgabenstellung aufzubereiten.
Zur Projektaufgabe/Domänenbezug:
Die Aufgabe beinhaltet die Entwicklung eines Empfehlungs- und Informationssystems für Entwurfsentscheidungen für Softwareentwickler, insbesondere während der Architekturentwicklung. Das Werkzeug wird als Webapplikation entwickelt. Es dient dazu,
- dem Entwickler Entscheidungsunterstützung zu bieten, indem er bei der Verfeinerung und der schrittweisen Lösung von Entwurfsaufgaben geleitet wird,
- die Dokumentation von Entwurfsentscheidungen zu unterstützen,
- einen Katalog von anwendbaren und wiederverwendbaren Lösungsbausteinen für Entwickler für die Problemlösung bereitstellen, wie Design Pattern, Bausteine, etc.
- Erfahrungswissen als Empfehlungen zu präsentieren und in Entscheidungen einfließen zu lassen.
Die Modellierung der Softwarearchitektur erfolgt mit Visual Paradigm for UML.
Dieser Teil 2 des Masterprojekts knüpft zeitlich und inhaltlich an die Arbeit aus dem vorhergehenden Semester an.
Aufgaben:
- Die Aufgaben der Projektteilnehmer bestehen in der Weiterentwicklung des entwickelten Prototyps des „Decision Buddy Analyzers" und der Präsentation von Anaylsedaten des neuen Werkzeuges sowie weiterer ausgewählter Werkzeuge in der grafischen Benutzeroberfläche des Tools "Decision Buddy“. Dabei wird besonderes Augenmerk auf die Anwendung von fortgeschrittenen Methoden des Software Engineering bei Entwurf, Modellierung und Weiterentwicklung gelegt.
Werkzeuge:
- Zur Implementierung der Software wird Eclipse eingesetzt.
- Zur Vorgangsverwaltung und Projektmanagement wird Atlassian Jira benutzt.
- Die Modellierung der Softwarearchitektur erfolgt mit Visual Paradigm for UML.
Masterprojekt 2016/17
Dozenten: Sebastian Gerdes, Tilmann Stehle
Thema: Mobile Anwendungen für mehrere Plattformen – Portierung, Architektur- und Tool-Entwicklung
In diesem Jahr werden wir uns mit der systematischen Portierung und der Weiterentwicklung mobiler Apps beschäftigen. Dazu wird eine vorhandene, in Java entwickelte Android-Anwendung mittels einer aktuellen Portierungsmethode auf weitere Plattformen wie iOS übertragen. Zu diesem Zweck wird die Portierung geplant, die einzusetzenden Tools identifiziert oder (weiter-) entwickelt, Refactorings am bestehenden Code durchgeführt und eine inkrementelle Portierung vorgenommen. Abschließend wird die Anwendung um zusätzliche Funktionalität erweitert werden, um den Aufwand für die plattformübergreifende Weiterentwicklung zu bewerten. Mit diesem Vorgehen sollen die Teilnehmer ein Gespür für diesen aktuell häufig zu findenden Projekttypus der Portierung gewinnen und praktische Erfahrungen sammeln.
Das Masterprojekt beinhaltet die praktische Anwendung von Methoden, Techniken und Werkzeugen des Software Engineering. Die Projektarbeit wird in Kleingruppen durchgeführt, deshalb gehören der Erwerb von Kenntnissen und Erfahrungen des Projektmanagements ebenfalls zu den angestrebten Ergebnissen.
Vorkenntnisse
Von den TeilnehmerInnen werden gute Kenntnisse der Programmiersprache Java oder C#, mindestens auf dem Niveau von SE2 erwartet.
64-460a Integriertes Seminar - Software-Engineering
Das Seminar begleitet die praktischen Aufgaben des Masterprojekts Software-Engineering, indem es die theoretischen Grundlagen für die Bearbeitung der Projektaufgaben schafft. Wichtige Themen des Software-Engineering, insbesondere der Entwicklung mobiler Anwendungen, der Portierung solcher Anwendungen, sowie über bestehenden Toolsupport werden behandelt. Die Teilnehmer bereiten selbstständig ein Thema im Kontext des Projekts auf und stellen ihre Ergebnisse in einer schriftlichen Ausarbeitung sowie in einer Präsentation vor.
Masterprojekt 2018/19
Dozenten: Sandra Schröder, Sebastian Gerdes
Thema: Softwareanalyse im Team mit Multitouch-Tischen
In diesem Masterprojekt entwickeln wir ein Werkzeug, das die Analyse von bestehenden Softwaresystemen am Touchtisch, sowie das Verstehen einer Software im Team ermöglicht. Es ist ein Konzept für die Multitouch-Interaktion zu entwickeln und umzusetzen. Es sollen Ergebnisse von existierenden Werkzeugen (zum Beispiel aus statischen Codeanalyse-Werkzeugen wie Sonarqube oder Monitoring-Werkzeugen wie Kieker) in das zu entwickelnde Werkzeug importiert und angemessen visualisiert werden können. Die Visualisierung wird durch die sogenannte "CodeCity" inspiriert, ein Visualisierungtyp, der ein Softwaresystem als navigierbare, drei-dimensionale Stadt darstellt. Es werden 7 Multitouch-Systeme für die Entwicklung zur Verfügung gestellt. Das Betriebssystem ist Windows 10. Über die Programmiersprache und weitere benötigte Technologien wird gemeinsam im Team entschieden.
Lernziel
Das Masterprojekt beinhaltet die praktische Anwendung von Methoden, Techniken und Werkzeugen des Software Engineering. Die Projektarbeit wird in Kleingruppen durchgeführt, deshalb gehören der Erwerb von Kenntnissen und Erfahrungen des Projektmanagements ebenfalls zu den angestrebten Ergebnissen.
Zusätzlich werden praktische Kenntnisse über Architekturdesign, Programmierung, sowie Visualisierungen für Multitouch-Anwendungen erworben. Wissen über existierende Konzepte bezüglich Softwareanalyse, Code- sowie
Architekturmetriken werden angeeignet.
Die Bewertung der Ergebnisse ergibt sich aus:
- Zielerreichung
- Qualität der Anwendung von Methoden und Techniken des Software-Engineering, insbesondere der Portierung
- Qualität der Ergebnisse aller Teilschritte
- Qualität des Vorgehens: Projektmanagement, Termineinhaltung, Team-Organisation
- Qualität der Dokumentation und Präsentation
Im integrierten Seminar werden die wichtigen Vorarbeiten geleistet, die im Projekt benötigt werden, wie zum Beispiel Architekturdesign sowie Programmierung für Multitouch-Anwendungen, Multitouch-Interaktionen, Softwareanalyse-Techniken und existierende Werkzeuge. In der Projektphase erfolgt die Umsetzung des Werkzeugs und es werden die üblichen Tätigkeiten von Planung bis Integration und Test durchgeführt
Masterprojekt 2019/20
Zeit und Raum: Integriertes Seminar Do 10-12:00 und Masterprojekt 12:00-14:00, Raum D-217
Materialien: siehe CommSy
Dozentin: Sandra Schröder
Thema: Softwareanalyse im Team mit Multitouch-Tischen
In diesem Masterprojekt entwickeln wir ein Werkzeug, das die Analyse von bestehenden Softwaresystemen am Touchtisch, sowie das Verstehen einer Software im Team ermöglicht.
In einem vorigen Masterprojekt wurde bereits ein prototypisches Werkzeug umgesetzt, dass die Definition von Detektionsregeln für sogenannte Bad Smells erlaubt. Die Regeln können auf Softwaresysteme ausgeführt werden, um Bad Smells zu erkennen. Das Ergebnis der Analyse wird grafisch dargestellt. Das Werkzeug wird mittels Gesten auf Multitouch-Tischen bedient.
In diesem Masterprojekt soll dieses Werkzeug um weitere Funktionen erweitert werden.
Lernziel
Das Masterprojekt beinhaltet die praktische Anwendung von Methoden, Techniken und Werkzeugen des Software Engineering. Die Projektarbeit wird in Kleingruppen durchgeführt, deshalb gehören der Erwerb von Kenntnissen und Erfahrungen des Projektmanagements ebenfalls zu den angestrebten Ergebnissen.
Zusätzlich werden praktische Kenntnisse über Architekturdesign, Programmierung, sowie Visualisierungen für Multitouch-Anwendungen erworben.
Vorgehen
Im integrierten Seminar werden die wichtigen Vorarbeiten geleistet, die im Projekt benötigt werden, wie zum Beispiel Architekturdesign sowie Programmierung für Multitouch-Anwendungen, Multitouch-Interaktionen und Softwareanalyse. In der Projektphase erfolgt die Umsetzung des Werkzeugs und es werden die üblichen Tätigkeiten von Planung bis Integration und Test durchgeführt.
Die Bewertung der Ergebnisse ergibt sich aus:
- Zielerreichung
- Qualität der Anwendung von Methoden und Techniken des Software-Engineering, insbesondere der Portierung
- Qualität der Ergebnisse aller Teilschritte
- Qualität des Vorgehens: Projektmanagement, Termineinhaltung, Team-Organisation
- Qualität der Dokumentation und Präsentation
Masterprojekt 2020/21
Zeit und Ort: Do 10–14 Uhr, D-217/online
Leitung: Leif Bonorden
Material: –
Thema im Sommersemester 2020:
Multitouch-Multiuser-Multidevice-Systeme für produktiven und unterhaltsamen Einsatz
Touchscreens sind heute für verschiedenste Einsatzszenarien weit verbreitet. Auf größeren Geräten ist nicht nur die gleichzeitige Berührung mehrerer Punkte möglich (Multi-Touch), sondern dies kann und soll auch durch mehrere Nutzer gleichzeitig erfolgen (Multi-User). Durch Kombination mehrerer solcher Systeme (Multi-Device) entstehen noch weitere Möglichkeiten, beispielsweise
- gemeinsame Arbeit an visuellen Dokumenten (z.B. Software-Modelle) durch mehrere Teams an verschiedenen Orten,
- Spiele mit mehreren Parteien gegeneinander, die unterschiedliche Informationen haben (z.B. einer-gegen-alle wie Scotland Yard, oder in gleichen Teams wie Captain Sonar).
Im Rahmen des diesjährigen Master-Projektes wird ein Framework für solche Multitouch-Multiuser-Multidevice-Systeme entwickelt und anhand von zwei Beispielanwendungen implementiert. Die Studierenden sind an der Anforderungserfassung beteiligt und wählen die Beispielanwendungen mit aus. Anschließend werden im Sommersemester die gemeinsamen Grundlagen für das Projekt gelegt (Seminar) und ein Prototyp entwickelt (Projekt: Teil 1). Im folgenden Wintersemester wird das Framework umgesetzt und die Beispielanwendungen implementiert (Projekt: Teil 2).
Für das Projekt steht unser Touchtisch-Labor (Raum D-217) mit 46"- bzw. 55"-Multitouch-Tischen und weiterer entsprechender Hardware zur Verfügung.
Masterprojekt 2021/22
Zeit und Ort: digital
Leitung: Marion Wiese
Material: wird im Seminar bekannt gegeben
Thema im Sommersemester 2021: Weiterentwicklung eines Systems zur Architekturüberwachung
Wie kann sichergestellt werden, dass eine vorgegebene Architektur in der Entwicklung auch wirklich eingehalten wird?
Ein häufiges Problem in der Praxis ist, dass mit der Zeit die ursprünglich beschlossene Architektur "verwässert". Schnelle Änderungen (Hotfixes, Workarounds), Unwissenheit oder auch nur Unachtsamkeit führt dazu, dass die Implementation nicht mehr der gewünschten Architektur entspricht. Die Folgen davon sind schwere lesbare Programme, Fehleranfälligkeit der Systeme, nicht (mehr) eingehaltene Qualitätsanforderungen und schlimmstenfalls ein System, dass sich nur schwer oder gar nicht mehr weiterentwickeln lässt. Viele Systeme in der Industrie kämpfen mit diesem Problem, dass dort unter dem Begriff "Technische Schulden" bekannt ist.
Mit ArchCNL wurde bei SWK ein System entwickelt, mit dem die geplante Architektur in Form von Architekturregeln beschrieben werden kann, und mit dem diese Beschreibung mit der implementierten Architektur abgeglichen werden kann. Abweichungen, sog. Violations, werden identifiziert und dem Nutzer zurückgemeldet, der dann die Probleme zeitnah beheben kann.
Doch dieses System hat Schwächen. Es existiert nur eine Basis-Implementierung. Die Architekturreglen müssen z.B. in umständlicher Weise zur Implementierung gemappt werden, die Ergebnisse liegen nur als Datenbank-Eintrag vor, die Installation des Systems ist aufwendig, u.v.m. Das gesamte "Handling" ist daher umständlich und optimierungbedürftig.
Genau dort setzt dieses Projekt an. Das Ziel des Projekts ist es, das System so weiterzuentwickeln dass es einfach(er) nutzbar wird. Ihr arbeitet also in einem sog. Brownfield-Projekt, bei dem schon ein System vorliegt und angepasst wird. Dies wird auch in der Praxis zu einem Großteil Eure Aufgabe sein. Studien haben nämlich gezeigt, dass Entwickler nur zu einem sehr gerigen Anteil (< 20%) tatsächlich Systeme neu entwickeln (sog. Greenfield-Projekte). Zusätzlich lernt ihr das Arbeiten in einer OpenSource Collaborationsumgebung kennen.
Folgende spannende Themen werden uns auf unserem gemeinsamen Weg begegnen und begleiten:
Organisationsformen (Scrum/Kanban), Architekturstile (z.B. Plugin-Architektur), Domain Specific Languages DSLs und Architecture Description Languages ADLs (Xtend/Xtext), Semantic Web und Ontologien, Graph-Datenbanken, Software Architecture Reconstruction SAR , Sorce Code Verwaltung (Git / Github), Build Tools (Maven, Gradle), Continous Integration & Delivery & Deployment, OpenSource Collaboration
Das Masterprojekt ist Bestandteil des laufenden Forschungsprojekts "Ontology-based Support for Architecture Evolution and Artifact Traceability" und wir freuen uns auf Eure Mitarbeit.
Visual Paradigm grants University of Hamburg UML tools, BPMN tools, Agile Story Mapping tools and DFD tools under the Academic Partner Program.