Design und Implementierung einer prototypischen Code-Review-Plattform für peer-based Feedback im Rahmen der Softwaretechnik-Ausbildung

Hintergrund

Code Review ist eine etablierte Methode im Software-Engineering, um folgenschwere Fehler in Entwicklungsprojekten möglichst früh zu entdecken und zu beheben. Das Korrekturlesen von Code durch einen Peer bietet dabei weit mehr Vorteile als das Finden von Bugs. Von dem Finden alternativer Lösungswege bis zu der Weitergabe von Wissen kann ein peer review verhelfen. Deshalb ist es bei Unternehmen gang und gäbe Code Reviews fortlaufend während eines Projekts einzusetzen und somit zählen sie auch zu dem Berufsalltag eines Software Engineers.

Da Code Review ein wesentlicher Aspekt des Software Engineering ist, sollte bereits während des Studiums gelehrt werden, wie es funktioniert und erstellt wird, Code zur Kritik offenzulegen als auch die Vorteile von Code Review zu erfahren. Um den Studierenden eine Plattform zu bieten, auf der sie nach der Erledigung von Programmieraufgaben wie Übungsaufgaben, Studienleistungen etc. ihren Code zum Feedback durch einen Peer freigeben können, soll im Rahmen der Arbeit dazu eine Webanwendung entwickelt werden. Die Anwendung soll somit dazu verhelfen, Code Reviewing kennenzulernen, als auch den Studierenden die Möglichkeit zu bieten sich untereinander bei dem fixing von Bugs, der Entdeckung von Verbesserungsmöglichkeiten und somit auch der Verbesserung ihrer Codequalität auszutauschen und weiterzuhelfen.

Die Plattform richtet sich dabei an Studierende in fortgeschrittenen Semestern, die bereits über erste Programmierkenntnisse verfügen.

Zielsetzung der Arbeit

Ziel der Arbeit ist eine prototypische Entwicklung und Evaluation einer geeigneten Webanwendung, die den Studenten eine einfache und nutzerfreundliche Möglichkeit zum gegenseitigen code reviewing von Programmieraufgaben, wie Übungsaufgaben oder Studienleistungen, bietet. Auf der Basis vorhandener Literatur werden code reviews als Methodik der Softwaretechnik beschrieben und zusammengefasst. Ebenso wird nach Ansätzen zur Integration von code reviews in der Softwaretechnik-Ausbildung recherchiert und die Ergebnisse zusammengetragen. Im Anschluss wird eine benutzerzentrierte Anforderungsanalyse, für die im Rahmen der Arbeit zu entwickelnden Plattform, durchgeführt. Auf Grundlage der bis dahin erarbeiteten Ergebnisse wird ein Prototyp entwickelt, der als Webanwendung umgesetzt wird. Die Anwendung basiert dabei auf Grundlage von Github bzw. der Github-API und findet ihren Fokus im Frontend der Anwendung. In einer abschließenden Evaluation soll der Prototyp auf dessen Gebrauchstauglichkeit mit einer Stichprobe der potentiellen Nutzergruppe getestet werden.

Konkrete Aufgaben

Erfassen der Methodik des Code Reviewing durch Literaturrecherche

Recherche möglicher Anwendungsszenarien von Code Reviews innerhalb der Softwaretechnik-Ausbildung

Durchführen der Benutzer-zentrierten Anforderungserhebung

Implementierung und Dokumentation des Prototyps

Evaluation der Anwendung mit einer Stichprobe der potentiellen Nutzergruppe

Erwartete Vorkenntnisse

Kenntnisse in der Webentwicklung

Grundkenntnisse im Usability-Engineering

Weiterführende Quellen

Bacchelli, A. and Bird, C. (2013). Expectations, outcomes, and challenges of modern code review, in Proceedings of the 2013 International Conference on Software Engineering, ser. ICSE ’13, S.712 – 721

Bavota, G., & Russo, B. (2015). Four eyes are better than two: On the impact of code reviews on software quality. In Software Maintenance and Evolution (ICSME), 2015 IEEE International Conference on (pp. 81-90). IEEE., S. 85-87

Clark, N. (2004). Peer testing in software engineering projects. In Proceedings of the Sixth Australasian Conference on Computing Education-Volume 30 (S. 41-48). Australian Computer Society, Inc..

Hyyrynen, V., Hämäläinen, H., Ikonen, J., & Porras, J. (2010). MyPeerReview: an online peer-reviewing system for programming courses. In Proceedings of the 10th Koli Calling International Conference on Computing Education Research (S. 94-99). ACM.

MacLeod, L., Greiler, M., Storey, M. A., Bird, C., & Czerwonka, J. (2018). Code Reviewing in the Trenches: Challenges and Best Practices. IEEE Software, 35(4), S. 34-42.

Liggesmeyer, P. (2009). Software-Qualität: Testen, Analysieren und Verifizieren von Software. (2. Aufl.) Heidelberg: Spektrum Akademischer Verlag.