Softwareentwicklung

WAS BEDEUTET ÜBERHAUPT PROGRAMMIEREN?

Der kreative Prozess, Probleme maschinenlesbar abzubilden und dabei Eigenschaften wie Zuverlässigkeit und Bedienbarkeit zu beachten..

BENÖTIGEN DIE STUDIERENDEN IRGENDWELCHE VORKENNTNISSE?

Wir starten ohne Vorkenntnisse und bilden Sie zu professionellen Softwareentwicklern aus. Beginnend mit einfachen Beispielen leiten wir Sie bis zur Entwicklung verteilter Systeme und adressieren insbesondere auch Sicherheitsprobleme sowie Kommunikationsaspekte in der teambasierten Entwicklung. Im Hinblick auf eigene Beispielprojekte unterstützen wir Sie auf unterschiedlichen Ebenen bei der Umsetzung eigener Ideen. 

WIE ENTWICKELT MAN APPLIKATIONEN?

Zu Beginn des zweiten Semesters machen die Studierenden den Schritt weg von der hauptsächlichen Beschäftigung mit der Syntax einer Programmiersprache hin zur Lösung eines Problems durch eine Applikation. Der Schritt ist ohne Frage groß, schliesst er doch die Verwendung professioneller Werkzeuge (logging, Unit-Test, Git) zur Verwaltung und zum Betrieb professioneller Software ein. Die Syntax der Programmiersprache rückt plötzlich in den Hintergrund und das eigentliche Problem in den Vordergrund: Die Architektur der Applikation.

Auch im zweiten Semester wird ein "flipped-learning" Ansatz verfolgt, d.h. Studierende lesen vorab über die Themen der nächsten Stunde und in der Vorlesung werden Probleme diskutiert. Anschliessend wird in den Übungsräumen in kleinen Teams an einem selbstgewählten Projekt gearbeitet. Diese Arbeit beginnt mit der Modellierung des Problems in UML und setzt sich fort mit dem Einbau von Logging für den Betrieb, der Auswahl der passenden Collections, der Erstellung einer Architektur für Ausnahmebehandlung etc. fort. Parallel dazu werden die nötigen Werkzeuge wie Gitlab zur Verwaltung der Sourcen und Unit-Tests zur Sicherstellung der Gültigkeit eingeführt und sofort im Projekt verwendet.


Die behandelten Themen werden nach Möglichkeit direkt in die Teamprojekte eingebaut. Die Bewertung der Projekte kann jedes Team anhand einer klaren Anforderungsliste selber nachvollziehen.


Die weiteren Themen beinhalten u.a. funktionale Konzepte anhand von Streams-processing, Multithreading und Locking, Unit Tests und natürlich die Entwicklung eines ansprechenden User-Interfaces. Die Veranstaltung will hier Konzepte und Paradigmen vermitteln und führt daher das Interface Konzept als zentrales Muster erweiterbarer, professioneller Software sehr früh ein. Eine bewusste Herausforderung für die Studierenden die eine wesentliche Abstraktion von der Programmiersprache und ihrer Syntax darstellt.


Am Ende der Veranstaltung haben die Teams eine ansprechende Applikation gemeinsam erstellt und den Unterschied zwischen Software-Entwicklung und "Programmieren" erfahren.

Prof. Dr. Martin Goik & Prof. Walter Kriha