Uni Wien:Softwareentwicklung VO (Benkner)

Aus VoWi
Wechseln zu: Navigation, Suche

Hard Facts[Bearbeiten]

Inhalt[Bearbeiten]

  • Grundlagen Software Engineering
  • Life-Cycle Modelle
  • Objektorientierte Softwareentwicklung,
  • OO-Konzepte anhand von Java
  • Objektorientierte Analyse und Design
  • Patterns
  • Testmethoden,
  • Qualitätskriterien für Softwareprodukte
  • Softwareentwicklungswerkzeuge und Entwicklungsumgebungen.
    • Als Softwareentwicklungsframework wird schwerpunktsmäßig der Unified Process (UP) behandelt

Ziel[Bearbeiten]

  • Lifecycle-Modelle kennen
  • Objektorientierte Konzepte verstehen und anwenden können
  • gezielte Softwareentwicklung nach Qualitätskriterien

Themen[Bearbeiten]

Java-Einführung[Bearbeiten]

Softwareentwicklungsmodelle[Bearbeiten]

  • Wasserfallmodell, Spiralmodell
  • Unified Process
    • Zentrale Merkmale: Use-Case-gesteuert, Architektur-zentriert, iterativ & inkrementell
    • Phasen, Workflows, Worker, Aktivitäten, Ziele,...
    • Analyseklassen: Entity, Boundary, Controller

UML[Bearbeiten]

  • Statische Strukturen (Objekt-/Komponenten-/Deployment-Diagramm)
  • Dynamisches Verhalten (UseCase-/Sequenz-/Kollaborations-/Zustands-/Aktivitäts-Diagramm)

Objektorientierte Konzepte[Bearbeiten]

  • Abstraktion
  • Kapselung
  • Modularität: Kohäsion
  • Hierarchie
  • Overwriting vs. Overloading vs. Shadowing
  • Objektzustand, Objektverhalten, Objektinteraktion
  • Wiederverwendbarkeit (Vererbung, Komposition, Delegation)

Patterns[Bearbeiten]

  • Architekturpatterns
    • Layers
    • Broker
    • Model-View-Controller (MVC)
  • Analysepatterns
    • Liste, Exemplartyp, Baugruppe
    • Stückliste, Koordinator
    • Rollen, Wechselnde Rollen
    • Historie, Gruppe, Gruppenhistorie
  • Designpatterns
    • Klassifikation/Beschreibung von Designpatterns
    • JSP-Modell1, JSP-Modell2, Struts
    • Singleton
    • Composite
    • Observer
    • Adapter
    • Abstract Factory
    • Abstract Method
    • Proxy
    • Strategy
    • Facade


Vorwissen[Bearbeiten]

Voraussetzungen (gültig für Studienplan 521)[Bearbeiten]

Dadurch ist impliziert:

Vorkenntnisse[Bearbeiten]

  • Wenn man Objektorientiertes Programmieren (vorzüglich Java) schon mal hatte, tut man sich etwas leichter
  • Ein bisschen ein Verständnis für Grundprobleme bei der Softwareentwicklung (besonders bei großen Projekten) kann nicht schaden und weckt die Motivation

Zeitaufwand[Bearbeiten]

  • Wenn man die Übung parallel dazu macht, sollte man mit dem praktischen Teil der Vorlesungsprüfung keine gröberen Probleme haben (Klassendiagramme, Sequenzdiagramme, Transformation von UML in Java-Code und vice versa) und bekommt nebenbei auch ein bisschen ein Gefühl für die Schwierigkeiten in der SW-Entwicklung (die bei großen Projekten in der Bewältigung der Komplexität sowie der Aufgabenverteilung auf mehrere Personen liegen).
  • Im Großen und Ganzen sollte man mit 2-4 Tagen auskommen, je nachdem ob man in der Vorlesung/Übung war und dort verstanden hat, worum es geht.

Vortrag[Bearbeiten]

  • Prof. Benkner kennt sich mit dem, was er vorträgt aus und verzichtet darauf, die Folien nur herunterzubeten, sondern benutzt (das ist eher eine Seltenheit im Informatik-Studium) Kreide und Tafel, um die Folieninhalte zu ergänzen und mögliche Prüfungsbeispiele durchzugehen. Es lohnt sich also, bei essentiellen Einheiten in die Vorlesung zu gehen.
  • Der Vortagsstil von Prof. Benkner ist wahrscheinlich etwas gewöhnungsbedürftig (er benutzt gerne Füllwörter wie "wie gsogt" oder "eben") - aber ich konnte den Themen ohne Probleme folgen und konnte mit dem, was er sagt, auch etwas anfangen.

Autodidakt[Bearbeiten]

  • Man kann mit den Vorlesungsfolien im WEB alleine auch auskommen, wenn man die Übung besucht hat.
  • Wenn man die Übung nicht besucht hat und mit UML und SW-Entwicklung noch wenig Erfahrung hat, ist man vielleicht doch besser beraten, in die Vorlesung zu gehen (wenn man verstehen will, was man da für die Prüfung lernt).

Prüfung[Bearbeiten]

  • Modus: Freitext (Vor-&Nachteile diskutieren), Beispiele (Klassendiagramme, Java-Code)
  • Hilfsmittel: Keine!
  • Zeit: 1 Stunde
    • war extrem knapp. Man hatte keine Zeit mehr sich seine Prüfung durchzulesen
    • Zum Nachdenken, wie man den Code jetzt schreiben soll oder wie jenes Pattern aussieht, hat man nicht wirklich Zeit.
  • Benotung: in Ordnung
  • In der letzten Vorlesungseinheit besprach Prof. Benkner die 4 Themenkomplexe, die für die Vorlesung relevant sind:
    • Unified Process: High-Level-Verständnis, Welche Modelle werden erzeugt, Welche Workflows gibt es,...
    • Objektorientierte Analyse und Design: z.B. aus einer natürlichsprachlichen Beschreibung eines Sachverhalts ein UML-Diagramm / Sequenzdiagramm / Java-Code generieren.
    • Objektorientierte Konzepte: Wiederverwendbarkeit, Vererbung, Delegation, Dynamic Binding,...
    • Patterns: Für den 1. Prüfungstermin waren vor allem Observer, Abstract Factory und Singleton relevant. Man muss jedoch erklären können, wie das Pattern funktioniert (Klassendiagramm hinzeichnen reicht nicht aus) und welche Funktion die einzelnen Klassen haben.

Literatur[Bearbeiten]

  • Vorlesungsfolien auf der Homepage verfügbar
  • In den Folien finden sich auch ziemlich umfangreiche Literaturhinweise, die manchmal auch für Ideen von Prüfungsbeispielen herangezogen werden (laut Angaben des Vortragenden).