Uni Wien:Software Engineering 1 VU (Böhmer)

Aus VoWi
Zur Navigation springen Zur Suche springen
Ähnlich benannte LVAs (Materialien):

Daten[Bearbeiten | Quelltext bearbeiten]

Vortragende Kristof Böhmer
ECTS 6,00 / 4,00
Aufgezeichnet teilweise (Übung)„teilweise (Übung)“ ist kein Wahrheitswert (wahr/falsch).
Sprache Deutsch
Links ufind:051040
Zuordnungen
Bachelor Wirtschaftsinformatik Modul Informatik (Pflichtfach)
Bachelor Informatik Modul Informatik (Pflichtfach)
Bachelor Lehramt Informatik Modul INF 12 Wahlpflichtbereich (Gebundenes Wahlfach)
Master Lehramt Informatik Modul MA INF 01 Wahlpflichtbereich Masterstudium UF Informatik (Gebundenes Wahlfach)


Inhalt[Bearbeiten | Quelltext bearbeiten]

Die VU SE 1 zielt darauf ab einen Überblick über zentrale Konzepte der Softwareentwicklung mit Objekt Orientierter Java zu bieten:

  • Block 1: Motivation von SE, (Software-)Projektdefintionen, Theorie zu Risikoanalyse
  • Block 2 :Anforderungsanalyse
  • Block 3: Entwurf, Konzepte von OOP, Patterns (Strategy, Factory, Singleton, Observer), SOLID Aspekte
  • Block 4: Implementierung und deren Best Practises (KISS, YAGNI, DRY, Dependcy Injection, Law of Demeter, Best Practises of Coding, Composition und Inheritance, usage of null)
  • Block 5: Qualitätsaspekte, Testing
  • Block 6: Rollout, Wartung, Weiterentwicklung, Rollout
  • Verifikation, Validierung von Software
  • Softwareprojekte
  • Softwareentwicklungsprozesse
  • Sicherheit in der Softwareentwicklung (sehr kleiner Teil)
  • etc.


Methoden:

  • Interaktive Vorträge, Tutorials
  • Fachdiskurs in der Gruppe und mit den Lehrenden
  • Konzipierung, Planung und Umsetzung eines vereinfachten aber realistischen Projektes
  • Selbstständige Einzelarbeiten und (nach individueller Absprache mit der LV-Leitung) Gruppenarbeiten in den Bereichen Praxis und Theorie
  • Präsentation von Ausarbeitungen durch Studierende, Feedback
  • Online Selbstevaluation
  • Blended Learning

Ablauf[Bearbeiten | Quelltext bearbeiten]

  • 2 schriftliche Tests
  • (1 zusätzliche Test um sich einen der Tests auszubessern, bei diesem kommt jedoch der gesamte LV Stoff (und etwas mehr) und ist nicht wirklich einfacher als die vorigen. Dieser Test ist eigentlich nur an die krankgeschrieben oder negativen Studenten gedacht.)
  • 3 Teilaufgaben

Alle Übungen, Aufgaben, Prüfungen, etc. die im Rahmen der LV stattfinden sind (sofern nicht explizit anders angegeben) selbstständig durchzuführende Einzelarbeiten. Gruppenarbeiten sind selbstständig und nur von den offiziell für die Gruppe gemeldeten Studierenden umzusetzen - diese sind gemeinschaftlich als auch individuell für die Umsetzung verantwortlich. Gruppenarbeiten sind nur nach expliziter Genehmigung durch die LV Leitung möglich.

Bei den schriftlichen Tests kommen offene Fragen, MC-Fragen (wobei man diese auch mittels einer offenen Frage begründen muss). Es kommen auch Fragen, wo man UML zeichnen und Pseudo Java Code schreiben muss.

Sommer 2025: der dritte Test ist nur mehr für die krankgeschrieben (oder ähnliches) vorgesehen! Also man kann seine Note nicht mehr mit einem dritten Test verbessern.

Benötigte/Empfehlenswerte Vorkenntnisse[Bearbeiten | Quelltext bearbeiten]

Gut fundierte Java Kenntnisse (Packages, SOLID- und MVC-Prinzip) sind von großem Vorteil und würde ich fast als Voraussetzung bezeichnen. Ein Grundverständnis von UML (Klassen- und Sequenzdiagramm) von Vorteil. Gutes Verständnis von Git und Eclipse oder InteliJ (für die Deadline muss das Projekt in Eclipse importiert werden) auch als Vorteil.

Vortrag[Bearbeiten | Quelltext bearbeiten]

Gutes Mitschreiben hilft sehr beim Lernen für die Prüfung.

In der Vorlesung wird der Stoff in den Folien nicht vorgetragen, sondern Übungen dazu. Dabei wird der jeweilige Stoff erklärt. Die Vorlesung gibt an, was wichtig ist und was definitiv zum Test kommt, aber dieser behandelt nicht alles. Wichtig ist es die Folien selbst zu erarbeiten.

Übungen[Bearbeiten | Quelltext bearbeiten]

  • Die 1. Teilaufgabe: 2 Klassendiagramme und 2 Sequenzdiagramme zu modellieren, 8 Anforderungen und eine Anforderungsdokumentation zu schreiben. Im Sommersemester muss man die Übung in Markdown machen.
  • Die 2. (Client) und 3. Teilaufgabe (Server) ist ein Software-Projekt incl. Dokumentation (wobei man beim server nicht alles Implementieren muss von der Spielidee)

2024 Wintersemester hat sich die Übung geändert:

1.Teilaufgabe: 8 Punkte

  • 8 Anforderungen nur aus der Spielidee für den Client und dazu eine Anforderungsdokumentation
  • 1 UML Klassendiagram für den Client (MVC-Pattern wurde hierbei nicht behandelt)
  • 2 Sequenzdiagramme für den Client

2.Teilaufgabe: 5 Punkte

  • Funktionierenden Client implementieren, hierbei werden keine Qualitätsaspekte oder Best Practises beurteilt. Es wird nur darüber beurteilt, ob der Client das Spiel erfolgreich beenden kann. (MVC ist wieder kein Thema).
  • Es werden aber Punkte abgezogen, falls man code übernimmt (Quellen!)
    • Ziel des Clients ist es, dass der Spieler so schnell wie möglich den vom Server auf seiner eigenen Karte versteckten Gegner findet und dann auf der gegnerischen Seite die feindliche Burg entdeckt. Hierfür wird der Dijkstra-Algorithmus benötigt.
    • Der Client hat eine Netzwerkverbindung, die vom Professor vorgegeben wird. Es müssen lediglich die erforderlichen Daten eingesetzt werden, da die Methoden bereits implementiert sind. Es gibt jeweils zwei POST- und GET-Methoden.
    • Client muss eine Spielkarte generieren mit bestimmten Rules. Es gibt die Terrain Grass, Wasser und Berg. Wasser hat einige Einschränkungen, zb das man keine Insel haben darf. Alle Felder müssen erreichbar sein.
    • Der Client muss eine Spielkarte generieren, die bestimmten Regeln folgt. Diese Karte enthält verschiedene Terrainarten wie Gras, Wasser und Berge. Wasser hat dabei bestimmte Einschränkungen, zum Beispiel, dass keine Inseln erlaubt sind. Alle Felder müssen miteinander verbunden und erreichbar sein.
    • Es wird auch notwendig sein, Klassen zu implementieren, die den Spielfluss regeln.
    • Es wird auch drigend empfohlen, die GameStates vom Server auf die Client daten zu convertieren. Vice Versa.
    • Die Spieldauer darf nicht länger als zehn Minuten oder 320 Spielrunden sein.

3.Teilaufgabe: 27 Punkte

Client mit allen Best practises und mit MVC zu implementieren + Logging, Exceptions, Unit Tests

  • Refactoring wird beurteilt, hierbei muss man alle relevanten Best Practises aus der Vorlesung für den Client einbauen.
  • Notification Pattern mit allen in der Spielidee genannten Buisness Rules für die Kartengeneration muss implementiert werden (auch wenn die Karte immer beim ersten mal richtig generiert wird). Hier muss man unbedingt das Open Close Prinzip anwenden!
  • Den Observer für das MVC-Pattern muss man selber implementieren, wenn man die PropertyChange Klassen oder die LV-Bereitgestellte Implementiertung benutzt -> Punkteabzug (Weniger Eigenleistung, weniger Punkte). Man muss hierbei auch die Vorteile des modernen Javas ausnutzen wie: Generics, Lambda Expressions, Abstraktion, etc.
  • Die Leistung vom Pfadsuchalgorithmus wird beurteilt. Dafür tritt der Client gegen 3 verschiedene Schwierigkeitsgrade vom Testsserver an.
  • Es müssen 3 Use Cases mit Emojis! für die Benutzeroberfläche implementiert werden:
    • Ob der Client gewonnen oder verloren hat
    • Alle wichtigen Informationen des GameStates
    • technischen interna (Notification Pattern bei der Kartengeneration, wie oft die Karte neu generiert werden musste und deren Fehlermeldungen)
  • Der Client muss auf dem Evaluationsserver mind 1 von 3 erfolgreich sein, dass man für einen großteil der Punkte bekommt.
  • Die Qualitätsaspekte (Logging, Exceptions und Unit Tests) werden immer beurteilt, egal ob der Client die Evaluierung schafft.
  • Das Unit Tests beurteilt werden muss eine Coverage von mindestens 65% erreicht werden.
    • Test Driven Development muss man für 2 wichtige Business Rules aus der Spielidee implementieren (zb Keine Inseln, genug betretbare Ränder). Für jede Phase von TDD (Think, Red, Green, Refactor) muss man einen eigenen Commit machen.
    • Es müssen mindestens 10 Unit Tests geschrieben werden. Für die Coverage werden deutlich mehr benötigt.
    • Es muss mind ein datengetriebener Test, ein Negativtest sowie ein Test, der Mocking über Mockito implementiert werden

Prüfung, Benotung[Bearbeiten | Quelltext bearbeiten]

Wintersemester 2024:

  • Die Note und Punkte für 2.Test und 3.Teilaufgabe wurde am 6.02.2025 veröffentlicht und wurde sofort danach in Uspace eingetragen.

Prüfungsgegenstände[Bearbeiten | Quelltext bearbeiten]

  • Folien/Skripten
  • Arbeitsblätter
  • Vorlesungs- und Übungsvortrag (Eigene Mitschrift!)
  • Referenzliteratur
  • Grundlegende Programmier- (in Java) sowie Modellierungskenntnisse (in UML) werden vorausgesetzt
  • Alle Teilaufgaben
  • Screencast Videos

Zeitaufwand[Bearbeiten | Quelltext bearbeiten]

4 SWS, laut u:find. In realität ist der Aufwand sehr hoch, mehr als es ECTS dafür gibt. Nicht unterschätzen und bei Semesterplanung miteinbeziehen. 4 SWS ist allein die Zeit welche man damit verbringt die LV zu besuchen noch ganz ohne Projekte und für Tests lernen.

SWS ist die Zeit die man pro Woche in Uni verbringt laut Plan. Also sind 4 SWS pro Woche im Vortrag wohl das was zu erwarten ist. War aber im 2022w nicht jede Woche was oder auch mal nur optionale Fragestunden oder deutlich schneller fertig wenn wenig Fragen kamen. Von den ECTS her hat es bei mir gepasst, früh anfangen weil man für manche Programmierfehler länger sucht. Prof fragen, hilft weiter. TIP: In die Vorlesung gehen. Habe nur Mitschrift für den Test gelesen. Hat gereicht und war relativ schnell erledigt.

Würde dazu auch noch an den Übungen teilnehmen. Fand die hilfreich, da man in seinem eigenen Projekt darauf aufbauen kann. Es wird auch immer was vorprogrammiert und gezeigt, wie man es machen soll und worauf es ankommt.

Sehr Hoch. Die Inhalte sind meist einfach, aber es kostet viel Zeit. Dieses Fach nicht unterschätzen.

Unterlagen[Bearbeiten | Quelltext bearbeiten]

Die empfohlene Literatur ist in der Bibliothek in mehreren hundert Stück (z.B. als digitale Version) aufgelegt worden. Weitere themenspezifische Empfehlungen finden Sie in den zu den jeweiligen Vorlesungsblöcken passenden Unterlagen (z.B. zur Codequalität, sicherer Programmierung oder Softwarepattern) auf Moodle. Auch von diesen wurden soweit möglich Exemplare angeschafft.

(empfohlen) A. Schatten, S. Biffl, M. Demolsky, E. Gostischa-Franta, Th. Östreicher, D. Winkler: Best Practice Software-Engineering, Eine praxiserprobte Zusammenstellung von komponentenorientierten Konzepten, Methoden und Werkzeugen. Springer (2010)

(empfohlen) T. Grechenig, M. Bernhart, R. Breiteneder, K. Kappel: Softwaretechnik: Mit Fallbeispielen aus realen Entwicklungsprojekten. Pearson (2009)

Vergleichbares Werk in englischer Sprache: I. Sommerville: Software Engineering. Pearson (2016)

Weitere Literatur: C. Kecher, A. Salvanos: UML 2.5: Das umfassende Handbuch. Rheinwerk Computing (2015) D. Stuttard, M. Pinto: The Web Application Hacker's Handbook: Finding and Exploiting Security Flaws. Wiley (2011) B. Bruegge, A. Dutoit: Object Oriented Software Engineering Using UML, Patterns, and Java: International Version. Prentice Hall (2009) A. Moos: XQuery und SQL/XML in DB2-Datenbanken. Vieweg+Teubner (2008) G. Alonso, F. Casati, H. Kuno, V. Machiraju: Web Services - Concepts, Architectures and Applications. Springer-Verlag Berlin Heidelberg (2004) G. Fairbanks: Just Enough Software Architecture: A Risk-Driven Approach. Marshall & Brainerd (2010)

Tipps[Bearbeiten | Quelltext bearbeiten]

  • Es ist nicht notwendig, sich die Bücher zu kaufen; sie als Nachschlagewerke zu haben, schadet allerdings eventuell nicht.
  • Mit dem Projekt früh anfangen, erspart Stress und gibt Bonuspunkte
  • Bonuspunke sammeln! (Zb Helfen einem wenn man knapp die 4 verfehlt)
  • In der VO und in den Tutorials alles mitschreiben, auch wenn dies sehr anstrengend sein kann, da oft diese Bsp zum Test kommen, diese kommen so auch nicht in anderen Lernunterlagen vor
  • Die Bewertungskriterien sind bei jeder Teilaufgabe angegeben. Es ist äußerst wichtig, diese sorgfältig zu lesen und sich strikt daran zu halten, da die Bewertung genau danach erfolgt. Häufig ist es wichtiger, die Best Practices einzuhalten, als lediglich funktionierenden Code zu schreiben.
  • Man darf Source Code von Moodle übernehmen.
  • Es ist durchaus erlaubt Code/Ideen aus fremder Quelle zu benutzen (zb einen Suchalgorithmus aus dem Internet) oder MVC vom Moodle. ABER dieser muss immer als Quelle angegeben werden und es wird weniger Punkte für den Unterpunkt angegeben. Falls man fremde Quellen benutzt und keine Quellen angibt, führt das zu einem Plagiat und X im Zeugnis.
  • Moodle und die Erklärungen sehr gründlich durchlesen. Öfters sind manche Erklärungen als Verlinkungen im Text versteckt.
  • Folien zu den Inhalten vor der Vorlesung durchlesen. In den Vorlesungen werden die Aufgaben zu den Arbeitsblättern durchgemacht .
  • Test: Wintersemester 2024 musste man die in der Vorlesung besprochenen Patterns (Strategy, Factory, Observer) als UML Diagramm modellieren bzw Java schreiben auf Papier. Beim 2. Test musste man viel über Unit tests und TDD als Java Code schreiben auf Papier.

Verbesserungsvorschläge / Kritik[Bearbeiten | Quelltext bearbeiten]

Der Aufwand dieser LV ist sehr hoch und man sollte keinen zeitintensiven LV nebenbei machen.

Materialien

Diese Seite hat noch keine Anhänge, du kannst aber neue hinzufügen.