Beschreibung
Softwaretechnik (oder englisch Software Engineering) ist die Lehre von
der Softwarekonstruktion im Großen, also das Grundlagenfach zur Methodik.
Die Softwaretechnik ist bemüht, Antworten auf die folgenden Fragen zu geben:
- Wie findet man heraus, was eine Software für Eigenschaften haben soll (Anforderungsermittlung)?
- Wie beschreibt man dann diese Eigenschaften (Spezifikation)?
- Wie strukturiert man die Software so, dass sie sich leicht bauen und flexibel verändern lässt (Entwurf)?
- Wie verändert man Software, die keine solche Struktur hat oder deren Struktur man nicht (mehr) versteht (Wartung, Reengineering)?
- Wie deckt man Mängel in Software auf (analytische Qualitätssicherung, Test)?
- Wie organisiert man die Arbeit einer Softwarefirma oder -abteilung, um regelmäßig kostengünstige und hochwertige Resultate zu erzielen (konstruktive Qualitätssicherung, Prozessmanagement, Projektmanagement)?
- Welche (großenteils gemeinsamen) Probleme liegen allen diesen Fragestellungen zu Grunde und welche (großenteils gemeinsamen) allgemeinen Lösungsansätze liegen den verwendeten Methoden und Techniken zu Grunde?
- ...und viele ähnliche mehr.
Diese Vorlesung gibt einen Überblick über die Probleme und Lösungsansätze
(Methodenlehre) und stellt
essentielles Grundwissen für jede/n ingenieurmäßig arbeitende/n
Informatiker/in dar.
Organisatorisches
Veranstalter
Voraussetzungen/Zielgruppe, Einordnung, Leistungpunkte etc.
Siehe den
Eintrag im KVV.
Die Veranstaltung ist eine Pflichtveranstaltung für die Studiengänge
Informatik Diplom und Informatik Bachelor.
Termine und Nachrichten
- Vorlesung:
- Mo, 12-14 Uhr, Großer Hörsaal der Informatik, Takustr. 9
- Do, 12-14 Uhr, Großer Hörsaal der Informatik, Takustr. 9
- Die Einteilung zu den Übungsgruppen erfolgt ausschließlich über das KVV:
- Mo 14-16 Uhr, T9/055, Julia Schenk
- Mo 14-16 Uhr, T9/049, Ute Neise
- Mo 16-18 Uhr, T9/055, Julia Schenk
- Do 10-12 Uhr, T9/055, Georg Köppen
- Fr 10-12 Uhr, T9/051, Ute Neise
- Fr 12-14 Uhr, T9/051, Sebastian Ziller
- Fr 12-14 Uhr, T9/049, Georg Köppen
- 1. Klausur: Do 22.07.2010, 12-14 Uhr, Hörsaal 1a und 1b, Habelschwerdter Allee 45
- Aufteilung auf die Räume nach Nachname:
- A* - K*: Hörsaal 1a
- L* - Z*: Hörsaal 1b
- Klausureinsicht: Fr XX.XX.10, 10:00 Uhr bis mindestens 10:30, SR 049, Takustr. 9
- 2. Klausur: Do XX.XX.2010
- Klausureinsicht: Mi XX.10.10, 16:00 Uhr bis mindestens 16:30, SR 049, Takustr. 9
Prüfungsmodalitäten
Kriterien für den Erwerb des Übungsscheins (Diplom) bzw. der Leistungspunkte
(Bachelor) sind
- Aktive Mitarbeit in den Übungen
- Erbringen von insgesamt 20 SE-Points im Übungsbetrieb
- diese können durch verschiedene Beiträge in den Übungen erreicht werden
- Bestehen der Klausur
- Die Klausur dauert 90 Minuten und es gibt 90 Punkte.
- Zum Bestehen wird eine Punktzahl ausreichen, die voraussichtlich im Bereich zwischen 28 und 38 liegen wird (ohne Gewähr). Die genaue Schwelle wird erst bei der Korrektur festgelegt.
- Bei der Klausur dürfen folgende Hilfsmittel verwendet werden:
- Ein selbst angefertigter Spickzettel mit maximaler Größe DIN A3. Alternativ: Zwei fest verbundene DIN A4 Zettel (tackern oder kleben). Es gibt keine Einschränkungen zu Schriftgröße und Inhalt. Der Zettel darf beidseitig beschrieben/bedruckt werden. Jede/r darf nur ihre/seine eigene mitgebrachte Unterlage benutzen.
- Studierende deren Muttersprache nicht Deutsch ist, dürfen selbstverständlich ein Wörterbuch in die Klausur mitbringen.
Inhalt
Literatur
Stoffplan
- Einführung:
Einführung
- Software; Softwaretechnik (SWT); Aufgaben der SWT; Persönlicher Bezug; Beteiligte; Gütemaßstab: Kosten/Nutzen; Qualität; Produkt und Prozess; Prinzip, Methode, Verfahren, Werkzeug; technische vs. menschliche Aspekte; Arten von SWT-Situationen; Lernziele; Lernstil
- Fallbeispiel:
Elektronische Gesundheitskarte
- Einordnung, Anforderungen 'eRezept' (funktionale, Leistungs-, Verfügbarkeits-, Sicherheits-), techn. Ablauf, einige Details, Dokumentenlandkarte, Beteiligte, Nutznießer und Konfliktlinien, Zeitverlauf, Exkurs Digitale Signatur.
- "Merke"-Hinweise zu: Domänen, nichtfunktionalen Anforderungen, Kooperationsbedarf, Projektrisiko.
- Einführung:
Die Welt der Softwaretechnik
- Routine und Innovation: Normales und radikales Vorgehen; Taxonomie: Probleme und Lösungen
- Modellierung:
Modellierung und UML
- Modelle und Modellierung (Realität vs. Modell; Phänomene vs. Konzepte); UML; Klassendiagramme; Sequenzdiagramme; Zustandsdiagramme (statechart); Aktivitätsdiagramme; sonstige Diagrammarten (Komponentendiagramme, Kollaborationsdiagramme, Inbetriebnahmediagramme, Kommunikationsdiagramme, Interaktions-Übersichts-Diagramme); UML Metamodell; Profile; einige Notationsdetails (Klassen, Assoziationen, Schnittstellen, Zustände)
- Ermitteln WAS:
Anforderungsbestimmung
- Erhebung (Requirements Elicitation): Anforderungen und Anforderungsbestimmung (Requirements Engineering); Arten von Anforderungen; Anforderungen und Modellierung; Harte und weiche Systeme; Probleme und Chancen erkennen; Erhebungstechniken (herkömmliche, darstellungs-basierte, soziale, wissenserhebende)
- Ermitteln WAS:
Anwendungsfälle (Use Cases)
- Was ist ein Use Case?; Wichtige Parameter (Bereich, Detailgrad/Zielniveau); schrittweise Präzisierung; Use-Case-Hierarchien (Überblick, Benutzerziele, Details); Checkliste für Use Cases
- Verstehen WAS:
Analyse (statisches Objektmodell)
- Von Use-Cases zu Klassen, Abbott's Methode (Substantive sind Kandidaten für Klassen, Verben für Operationen, Adjektive für Attribute, Eigennamen für Objekte, "ist ein" für Vererbung etc.); Checklisten zur Identifikation von Klassen, Assoziationen, Attributen, Operationen, Vererbung; Entwicklerrollen und Modellarten (Analysemodell vs. Entwurfsmodell)
- Verstehen WAS:
Analyse (dynamisches Objektmodell)
- Klassen finden mit dynamischer Modellierung; Zustandsdiagramme (statechart diagrams); Sequenzdiagramme; Aufbau eines Anforderungsanalyse-Dokuments; Validierung (und Gegensatz zu Verifikation)
- Entscheiden WIE:
Software-Architektur
- Architektur=Gesamtstruktur; Erfüllen nichtfunktionaler und funktionaler Anforderungen; globale Eigenschaften; wiederverwendbare Architekturen (Standard-Architekturen); Archtekturstile (zum Selbstentwickeln von Architekturen); Modularisierung (Modulbegriff, Aufteilungskriterien)
- Entscheiden WIE:
Modularisierung
- Modulbegriff; Kriterien für Aufteilung; Fallstudie: KWIC; KWIC 1: Datenflusskette; Einschätzen der Entwurfsqualität; KWIC 2: Zentrale Steuerung; KWIC 3: Datenabstraktion; Verhalten bei Änderungen; Verwandtschaft mit Architekturstilen
- Wiederverwenden WIE:
Entwurfsmuster, Teil 1
- Was macht ein Problem schwierig?; Einfachheit durch Wiedererkennen von Mustern; Idee von Entwurfsmustern; Kompositum-Muster (composite pattern); Adapter-Muster (adapter pattern); Brücken-Muster (bridge pattern); Fassaden-Muster (facade pattern)
- Wiederverwenden WIE:
Entwurfsmuster, Teil 2
- Arten von Entwurfsmustern; Stellvertreter-Muster (proxy pattern); Kommando-Muster (command pattern); Beobachter-Muster (observer pattern); Strategie-Muster (strategy pattern); Abstrakte-Fabrik-Muster (abstract factory pattern); Erbauer-Muster (builder pattern)
- Spezifizieren WIE:
Schnittstellenspezifikation
- Sichtbarkeiten (public, protected, private, package), Spezifikation von Voraussetzungen (preconditions) und Wirkungen (postconditions) mit OCL (context, pre, post, inv); Abbildung von Assoziationen in Code
- Prüfen OB:
Analytische Qualitätssicherung, Teil 1
- Defekttest; Auswahl der Eingaben (Funktionstest, Strukturtest); Auswahl der Testgegenstände (bottom-up, top-down, opportunistisch); Ermittlung des erwarteten Verhaltens (Referenzsystem, (Teil)Orakel); Wiederholung von Tests (Rückfalltesten, Testautomatisierung)
- Prüfen OB:
Analytische Qualitätssicherung, Teil 2
- Testautomatisierung (Werkzeuge, Strukturierung, JUnit); Stoppkriterien für das Testen; Defektortung; Benutzbarkeitstest; Lasttest; Akzeptanztest; manuelle statische Prüfung (Durchsicht; Inspektion; Perspektiven-basiertes Lesen); automatische statische Prüfung (Modellprüfung; Quelltextanalyse)
- Vorbeugen DAMIT:
Konstruktive Qualitätssicherung (Qualitätsmgmt., Prozessmgmt.)
- Projekt- vs. Prozessmgmt.; Arten von Prozessmgmt.-Leitlinien; CMM-SW/CMMI (5 Prozessreifestufen); TQM (Prinzip: Kundenzufriedenheit); ISO 9000
- Entscheiden WIE (Prozess):
Prozessmodelle
- Rollen, Artefakte, Aktivitäten; Wasserfallmodell; Reparatur 1: Iteration (Prototypmodell, Evolutionäre Modelle, Spiralmodell); Reparatur 2: Flexiblere Planung (Agile Methoden); Prozessmodell-Auswahlkriterien; Anpassbare Prozessmodelle: RUP, V-Modell XT; Erklärung "Agile Methode" (XP)
- Randbedingungen:
Persönlichkeitstyp
- Was und warum; Die MBTI-Dimensionen (E/I, S/N, T/F, J/P); Warnungen und Hinweise; Die Keirsey-Temperamente (SJ, SP, NT, NF); Andere Typsysteme; Typen und SW-Engineering; Stärken und Gefahren; Typische Tendenzen; Eigenen Typ herausfinden
- Umsetzen (Prozess):
Projektmanagement, Teil 1
- Was und wofür?; Aufgabenfelder; Schätzen (Schätzverfahren; Funktionspunktschätzung); Todesmarschprojekte
- Umsetzen (Prozess):
Projektmanagement, Teil 2
- Zeit- und Ressourcenplanung; Microsoft Project; Critical Path Method (CPM); Finden von Aufgabenzerlegungen; Risikomanagement; Risikolisten; DOs and DON'Ts
- Umsetzen (Prozess):
Projektmanagement, Teil 3
- Teams; Sportteam oder Chor?; Organisationsstrukturen; Rollen; Kommunikationsstrukturen; psychologische Faktoren; Schätzen von Wahrscheinlichkeiten; Motivation; Attribution; Haltungen; soziale Einflüsse
- Umsetzen (Prozess):
Projektmanagement, Teil 4
- Projektplan; Projektleitung; nichtlineare Dynamik (Brook's Gesetz; Selbstverstärkung von Qualitätsmängeln; Teufelskreis von Qualität und Zeitdruck); Kommunikation (geplant/ungeplant, synchron/asynchron); Medien; Besprechungen
- Normales Vorgehen maximieren:
Wiederverwendung, Teil 1
- Arten der WV (Produkt/Prozess; Gegenstand; Ziel); Risiken und Abwägung; Hindernisse; Produktivität; WV für normales Vorgehen; Muster; Arten von Mustern; Prinzipien (Abstraktion, Strukturierung, Hierarchisierung, Modularisierung, Lokalität, Konsistenz, Angemessenheit, Wiederverwendung, Notationen); Analysemuster
- Normales Vorgehen maximieren:
Wiederverwendung, Teil 2
- Benutzbarkeitsmuster; Prozessmuster; Mustersprachen; Anti-Muster; Werkzeuge
- Wissen weitergeben:
Dokumentation
- Arten von Dokumentation; Qualitätseigenschaften (übersichtlich, präzise, korrekt, hilfreich); positive und negative Beispiele; Prinzipien (Selbstdokumentation, Minimaldokumentation); Begründungsmanagement (Fragen + Vorschläge + Kriterien + Argumente ergeben Entscheidungen)
- Berühmte letzte Worte:
Zusammenfassung (entfällt dieses Jahr (wg. Ostermontag am Semesterbeginn) oder mit Sondertermin)
- Wiederholung aus 1. Vorlesung; Schnelldurchgang durch Stoffplan; wichtige nicht besprochene Themen; einige Empfehlungen
Übungen
Weblog Softwaretechnik
Blog zur Veranstaltung Softwaretechnik
Übungsblätter
Erreichen von SE-Points
Insgesamt müssen im Übungsbetrieb 10 SE-Points erbracht werden.
Die Teilnehmer können durch verschiedene Beiträge ihre SE-Points erreichen.
- Abgabe eines Übungsblattes (2 SE-Points)
- Posten eines Beitrags auf dem Blog der Veranstaltung (3 SE-Points)
- Ausarbeiten und halten einer kurzen Präsentation in der Übung (5 SE-Points)
- Ausarbeiten eines Quizzes, welches in der Übung durchgeführt wird. (5 SE-Points)
Alle Beiträge sind in Zweiergruppen durchzuführen; es erhalten beide Gruppenmitglieder die SE-Points.
Es ist den Teilnehmern frei gestellt, durch welche Beiträge oder Beitragskombinationen sie ihre SE-Points erreichen.
Für alle Beiträge gelten gewisse Ansprüche, damit diese als erfüllt gelten. Der Tutor bzw. die Tutorin werden beurteilen, ob diese Ansprüche erfüllt sind.
Die Themen für Präsentationen und Quizzes werden nicht vorgegeben, sondern es wird den Teilnehmern Freiraum bzgl. der Thematik als auch der Durchführungsgestaltung gelassen. Es ist jedoch aus organisationstechnischen Gründen eine terminliche und inhaltliche Abstimmung mit den Tutoren notwendig.
Wir freuen uns über Eure Ideen und Eure Kreativität zur Gestaltung der Tutorien. Solltet ihr Euch mit Euren Ideen unsicher sein oder Fragen haben, kommt auf uns zu. Wir helfen gerne dabei, wenn es darum geht einen Vortrag, ein Quiz oder eine andere Idee zu realisieren.
Erläuterungen zu den einzelnen Beitragsarten
Abgabe von Übungsblättern
Übungsblätter müssen über das Blackboard System abgegeben werden. Die Abgabe muss einen Tag vor dem Tutorium bis 16 Uhr erfolgt sein. Übungsblätter werden durchgeschaut, jedoch nicht benotet und nicht korrigiert.
Blogposts und Präsentationen
Blogposts und Präsentationen müssen sich thematisch im Kontext der Softwaretechnik wiederfinden. Es können Themen der Vorlesung vertiefend betrachtet oder andere softwaretechnisch interessante Themen bearbeitet werden.
Es muss erkennbar sein, dass sich die Studierenden mit dem Thema weitergehend beschäftigt haben.
Folgende Aspekte gelten als Anhaltspunkte zu betrachtender Aspekte:
- Thema und dessen Kontext/Relevanz in der Softwaretechnik (wie/wo/wozu ist es relevant) → “ Where we are ”
- Thematik bzgl. bestimmter Aspekte tiefergehend betrachten / Querbezüge zu anderen Bereichen der Softwaretechnik
- Probleme / weitergehende Fragestellungen aufwerfen (nicht unbedingt klären) → “ what's next ”
- Immer die verwendeten Quellen angeben
- Es muss klar erkennbar sein, was die Studierenden aus den Quellen selbst erarbeitet haben
Dauer eines Vortrags ca. 20 Min. mit anschliessender kurzer Diskussion.
Gerne können auch während des Vortrags die Teilnehmer einbezogen werden.
Quiz
Ein Quiz kann in beliebiger Form gestaltet werden (Papier, online-Quiz, Tafel, etc.).
Dabei muss das Quiz Themen der Vorlesung behandeln und soll diese durch anpruchsvoll gestaltete Elemente abfragen und festigen. Außerdem müssen sich die Studierenden überlegen, auf welche Art und Weise das Quiz in der Übung durchgeführt werden soll.
Auch muss erkennbar sein, dass die Studierenden ausführlich mit dem Thema und der Gestaltung des Quizzes und der Fragen beschäftigt haben.
Die Durchführung eines Quizzes sollte einen Umfang von ca. 20 - 30 Min. haben.
Quellen
Software
- UML-Diagramme
- Offiziell: BOUML. Es ist nicht das tollste Programm der Welt, aber schnell und hinreichend gut. Alternativ können Sie die folgende große Liste von UML-Werkzeugen durchstöbern oder aber ein ganz normales, vektor-orientiertes Zeichenprogramm wie z.B. Inkscape nutzen.
- In den Rechnerpools: Auf den Rechnern im Keller ist IBM Rational Rose installiert, mit dem man perfekt Diagramme zeichnen kann. Rose hat allerdings eine Menge zusätzlicher Funktionen und ist nicht gerade ein schlankes Softwarepaket.
- Von Studenten empfohlen: Dia - Teil des Gnome-Desktops (auch unter Windows erhältlich)
Klausurvorbereitung
Grundsätzlich wird der Stoff der Vorlesung plus Stoff der Übungen geprüft. Die Übungsblätter geben einen guten Hinweis auf mögliche Aufgaben. Sie waren meistens wie folgt aufgeteilt: In der ersten Aufgabe wurden Begriffe abgefragt. In der Klausur werden diese Begriffe ohne weitere Erläuterung benutzt, aber explizit abgefragt werden sie allenfalls in Richtig/Falsch-Fragen, die insgesamt nur einen kleinen Teil der Klausur ausmachen werden, wenn überhaupt. Die letzten Aufgaben der einzelnen Übungsblätter waren meist Diskussionsanregungen, die in dieser Form schwerlich für Klausuren geeignet sind. Das heißt: Die zwei oder drei Aufgaben dazwischen definieren also den typischen Klausurstoff! Einige der Übungsblattaufgaben sind aus alten Klausuraufgaben hervorgegangen.
Ein Extra-Übungsblatt zur Klausurvorbereitung ist unter den Übungsblättern zu finden, zu dem auch Lösungshinweise gibt. Selbstverständlich kann es in der Klausur auch andere Aufgabenthemen und -typen geben; einige der Aufgaben dort sind aber sogar alte Klausuraufgaben.
Historie des Stoffplans
- SS 2008 Vorlesung wegen Verlagerung ins Sommersemester von 30 auf 26 Einheiten gekürzt:
- die drei Einheiten zur eGK durch eine ganz neue ersetzt
- die zwei Einheiten zur UML-Einführung/Übersicht auf eine gekürzt
- die Einheit 35_Schnittstellenspezifikation etwas und 36_Objektimplementierung stark gekürzt und beide zusammengeführt
- WS 2005/2006
- Vorlesung komplett umgestellt auf ein eigenes Konzept, teilweise basierend auf Buch "Objektorientierte Softwaretechnik" von Brügge und Detoit.
- WS 2004/2005
- Vorlesung komplett umgestellt auf Buch SE7 von Ian Sommerville (zuvor: Buch von Helmut Balzert)
- WS 2003/2004
- Weggelassen:
- Einheit zu Komponenten (JavaBeans, COM);
- Einheit zu serverseitigen Komponenten (EJB, Corba, COM+)
- Einheit zu Web-UI (Servlet, JSP, CGI)
- Einheit zu Wiederverwendung
- Zugefügt:
- Einheit zu Dokumentation
- Einheit zu Testautomatisierung
- Einheit zu Risikomanagement
- WS 2002/2003 (Blockkurs im März)
- erste Durchführung, basierend auf Buch "Lehrbuch der Softwaretechnik" (Teil 1 und 2) von Helmut Balzert.
(Kommentare)
Wenn Sie Anmerkungen oder Vorschläge zu dieser Seite haben, können Sie sie
hier (möglichst mit Datum und Name) hinterlassen:
SWTIDSR