<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Formale Methoden in der Softwaretechnik-Vorlesung</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Bernd Westphal</string-name>
          <email>westphal@informatik.uni-freiburg.de</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Albert-Ludwigs-Universität Freiburg</string-name>
        </contrib>
      </contrib-group>
      <pub-date>
        <year>2019</year>
      </pub-date>
      <fpage>21</fpage>
      <lpage>33</lpage>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Zusammenfassung</title>
      <p>informal •
semi-formal •
formal •</p>
      <p>informal •
semi-formal •
formal •
•
simple</p>
      <p>•
complex
(a) (b)</p>
      <p>
        Abbildung 1: Einführung Formaler Methoden.
den (Semi-)Entscheidungsprozeduren. Das Ziel der
Ergänzung um Formale Methoden ist motiviert durch
unsere Erfahrung in zahlreichen Projekten mit
Partnern aus der Industrie von kleinen Anbietern
sicherheitskritischer Systeme (z.B.
        <xref ref-type="bibr" rid="ref21 ref3">(Arenis u. a., 2016)</xref>
        )
bis hin zu großen Automobilanbietern und
Zulieferern (z.B.
        <xref ref-type="bibr" rid="ref21 ref3">(Langenfeld u. a., 2016)</xref>
        ). In der
Projektarbeit nehmen wir eine klare Nachfrage nach und
Anwendung (!) von Formalen Methoden im oben
genannten Sinne in verschiedenen Bereichen der
Softwaretechnik in den Firmen wahr. Hierbei steht
üblicherweise nicht die vollständige und umfassende
formale Beschreibung von Anforderungen und
Entwurfsentscheidungen bzgl. Struktur und Verhalten im
Vordergrund (wie es etwa im Luft- und
Raumfahrtbereich teilweise angestrebt wird), sondern eine
angemessene Verwendung von Formalen Methoden, um
bestimmte, besonders kritische oder risikobehaftete
Aspekte von Software zu beschreiben und zu
analysieren. Dem entsprechend möchten wir heute
beginnen, die in vielen Einführungen in die
Softwaretechnik fest etablierte (semi-formale) Modellierung
von Softwareaspekten in unserer
Einführungsveranstaltung um eine formale Sicht zu erweitern und den
Studierenden eine Übersicht über Konzepte,
Möglichkeiten und Voraussetzungen Formaler Methoden für
ihre zukünftigen Berufssituationen zu vermitteln.
      </p>
      <p>
        Mit diesem Ziel ergibt sich neben der üblichen
Herausforderung, aus dem umfangreichen Angebot
der Lehrbücher eine ausgewogene Vorlesung
zusammenzustellen, die Herausforderung, Lehrmaterialien
für den Bereich Formale Methoden auszuwählen bzw.
herzustellen. Interessanterweise ist die zweite
Herausforderung keine Teilmenge der ersteren. In den
etablierten Lehrbüchern (s.o.) und dem vorhandenen
Material wird ganz überwiegend ein Ansatz verfolgt,
den wir in Abbildung 1(a) visualisieren. Wir sehen
die für z.B. die Beschreibung von Anforderungen
verfügbaren Mittel auf einer Achse, die von informal
(rein natürlichsprachlich), über semi-formal (mit
formaler konkreter Syntax, aber ohne formale abstrakte
Syntax oder Semantik) hin zu formal (mathematisch
präzise definierte Syntax und Semantik) reichen. Die
vorgenannten Lehrbücher und Materialien bewegen
sich auf dieser Achse zwischen informal und
semiformal und geben kurze Ausblicke auf Formale
Methoden, indem Beispiele auf einer intuitiven Ebene
diskutiert werden. Bei diesem Ansatz sehen wir ein
inhärentes Problem, das bereits Lehman &amp; Buth
        <xref ref-type="bibr" rid="ref23">(Lehmann u. a., 2015)</xref>
        beschreiben: „Es darf nicht
erwartet werden, dass die Studierenden UML Modelle
erstellen können, wenn in der Vorlesung nur die
einzelnen Symbole durchgearbeitet werden und dann auf
dieser Basis in der Prüfung Analyseaufgaben auf
einem gegebenen Diagramm gestellt werden.“ Streng
genommen können wir schon nicht erwarten, daß
Studierende in Bloom’s Taxonomie echt leichtere
Aufgaben, wie etwa gegebene Objektdiagramme
daraufhin analysieren, zu welchem der (drei)
Wahrheitswerte eine gegebene OCL-Formel ausgewertet wird, in
Übungen so zu bearbeiten, daß gegenüber den
Tutor::innen die Korrektheit der Lösung argumentiert
(im besten Falle: bewiesen) werden kann bzw. von
Seiten der Tutor::innen die Inkorrektheit eines
Lösungsvorschlags bewiesen und systematisch erklärt
werden kann. Unser Lösungsansatz besteht darin, in
der Veranstaltung Endpunkte der Formalitätsachse zu
behandeln. Wir diskutieren sowohl informale
Ansätze (und im Themenbereich Requirements
Engineering verschiedene semi-formale Ansätze) und
springen dann zu vollständig definierten
Beschreibungssprachen, die für den Zweck der Vorlesung (bis auf
eine Ausnahme) auf einen essentiellen Kern reduziert
sind (vgl. Abbildung 1(b)). Auf diese Weise geben wir
eine konkrete Übersicht über die gesamte Achse. Für
eine ausgewählte Beschreibungssprache diskutieren
wir mehr als einen essentiellen Kern, um zu
demonstrieren, daß es eine orthogonale Achse der
Einfachheit formaler Beschreibungssprachen gibt
(Einfachheit sowohl bzgl. der Ausdrucksstärke als auch bzgl.
des Aufwands, zu einer vollständigen Definition (von
abstrakter Syntax und Semantik) zu gelangen).
      </p>
      <p>Für den Bereich der Formalen Methoden in der
Softwaretechnik steht mit (Bjørner, 2006a,b,c) ein
dreibändiges Lehrbuch zur Verfügung, das versucht,
die Softwareentwicklung vollständig aus formaler
Sicht zu vermitteln. Wir haben uns aus zwei
Gründen dagegen entschieden, diesem Lehrbuch zu
folgen. Zunächst scheint uns das Ziel des Materials von
Bjørner zu sein, formale Beschreibungssprachen
möglichst in vollem Umfang darzustellen, was schlicht
den Rahmen unserer Veranstaltung sprengen würde
und für unsere Lernziele nicht notwendig ist.
Weiterhin ist das Material u.E. so weit von der (heutigen
und mutmaßlich morgigen) Lebenswirklichkeit und
den etablierten Lehrbüchern entfernt, daß wir
annehmen müssen, daß es Studierenden unnötig schwer
fallen würde, andere Lehrbücher oder Fortbildungen
in der Arbeitssituation zu unserer Veranstaltung in
Bezug zu setzen. Unser (zugegeben: hoher) Anspruch
an unsere Veranstaltung ist, daß nach der Teilnahme
an unserer Veranstaltung keines der etablierten
Lehrbücher große konzeptionelle Überraschungen bereit
hält, sondern nur von den Studierenden
einordnebares, zusätzliches Hintergrundwissen sowie weitere
Techniken liefert.</p>
      <p>
        In diesem Artikel beschreiben wir die
Konstruktion unserer Vorlesung zur Einführung in die
Softwaretechnik im Grundstudium, in der die in etablierten
Lehrbüchern zur Softwaretechnik (s.o.) vorgestellten
Inhalte um Techniken zur Beschreibung von
Anforderungen und Entwurfsaspekten vollständig formal,
also mit konkreter Syntax und präziser abstrakter
Syntax und Semantik, ergänzt werden, und berichten von
Erfahrungen aus vier Sommersemestern mit der neu
gestalteten Veranstaltung. Schwerpunkt dieses
Artikels sind die Voraussetzungen der Veranstaltung
(insbesondere die Einbettung in den Studienplan),
Konsequenzen der ergänzten Inhalte für Übungen und
Klausur, sowie Organisation und didaktische
Maßnahmen (vor allem Bereich des Übungsbetriebs), mit
denen wir die Vermittlung und Erarbeitung der
neuen Inhalte unterstützen. Die neuen Inhalte als solche
werden für den Bereich Requirements Engineering
in
        <xref ref-type="bibr" rid="ref32">(Westphal, 2018)</xref>
        vorgestellt und sind zudem auf
der Homepage der Veranstaltung frei zugänglich.1
      </p>
      <p>Der Artikel ist wie folgt strukturiert. In Abschnitt 2
beschreiben wir die Situation der Veranstaltung im
Studienplan der Universität Freiburg sowie der
Studierenden zu Beginn der Veranstaltung. Abschnitt 3
legt unsere Lernziele dar und beschreibt, wie wir die
neuen Inhalte bzgl. Formaler Methoden durch
didaktische Maßnahmen im Übungsbetrieb unterstützen.
Einen Überblick über die neuen Inhalte, ihre
Einbettung in die gesamte Vorlesung und unsere
Erfahrungen bzgl. Lernerfolgen gibt Abschnitt 4. Wir schließen
den Artikel mit einer Betrachtung von
Evaluationsergebnissen und einer Zusammenfassung.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Kontext der Veranstaltung und</title>
    </sec>
    <sec id="sec-3">
      <title>Situation der Studierenden</title>
      <p>Die Veranstaltung ‚Softwaretechnik‘ ist eine
Pflichtvorlesung im B. Sc.-Studiengang Informatik der
Universität Freiburg mit einem Umfang von 3+1 SWS für
Vorlesung und Übung und 6 ECTS-Punkten.
Zusätzlich besuchen Studierende des nicht-konsekutiven
Masterstudiengangs, der Studiengänge ‚Embedded
1Die URL für das Sommersemester 2018 ist: https://swt.
informatik.uni-freiburg.de/teaching/SS2018/swtvl
Systems Engineering‘ (ESE) und
‚Mikrosystemtechnik‘ sowie des bivalenten Studiengangs Informatik
die Veranstaltung. In den vier Jahren der
Veranstaltung haben wir zwischen 80 und 150
angemeldete Teilnehmer::innen beobachtet. Unter den
Teilnehmer::innen (der Evaluation2) studierten zwischen 73
und 96 % Informatik, der zu 100 % fehlende Teil
wird stark von ESE-Studierenden dominiert. Außer in
2016 strebten jeweils mehr als knapp zwei Drittel der
Teilnehmer::innen einen B. Sc.-Abschluss an.</p>
      <p>Die ‚Softwaretechnik‘ ist im 4. Semester
vorgesehen, d.h. wir können einen zweiteiligen
Programmierkurs und Algorithmen &amp; Datenstrukturen,
Technische und Praktische Informatik
(Betriebssysteme, Netzwerke, Datenbanken) und die
MathematikVorlesungen voraussetzen. Logik und die Einführung
in die Theoretische Informatik sind in Freiburg im
3. Semester vorgesehen, liegen also auch zeitlich vor
der ‚Softwaretechnik‘. Parallel zur ‚Softwaretechnik‘
findet für die B. Sc.-Studierenden der Informatik ein
Softwarepraktikum statt (vgl. Abschnitt 3).</p>
      <p>Entsprechend der Position der ‚Softwaretechnik‘ im
Curriculum und aus der Erfahrung der Jahre vor
2015 gehen wir einerseits davon aus, daß der
Großteil der Teilnehmer::innen vor unserer Veranstaltung
bzgl. der meisten Themenbereiche der
Softwaretechnik über wenig bis sehr wenig Erfahrung verfügt.
Andererseits wissen wir aus persönlichen
Gesprächen, daß es im nicht-konsekutiven M. Sc.-Programm
durchaus einzelne Studierende gibt, die über
mehrjährige Berufserfahrung verfügen.</p>
      <p>Seit 2016 überprüfen wir diese Annahme durch
eine Aufgabe auf dem ersten Übungsblatt, in der
wir die Teilnehmer um eine Selbsteinschätzung der
Vorkenntnisse in den Themenbereichen (die wir in
der ersten Vorlesung jeweils grob umreißen)
Projektmanagement (seit 2017), Requirements Engineering,
Programmierung, Modellierung und
Qualitätssicherung bitten. Wir schlagen in der Aufgabe die folgende,
subjektiv zu interpretierende Skala vor (die
Übungsblätter sind in Englisch verfasst):
0: I have no experience in that activity whatsoever. I have not
taken any related subjects during my studies.
1: I have only performed the activity in the context of a lecture
or programming course.
10: I have performed the activity in a project with a large user
base (100+ users), a large work volume (36+ person-months)
or a specific commercial purpose. I have been responsible for
2Zwischen 26 und 40 Angaben; leider haben wir keinen
direkten Zugriff auf Studiengang oder angestrebten Abschluss.
the planning and execution of the activity in a software
development project within defined resource and time constraints.
Tabelle 1 zeigt die bisherigen Ergebnisse, die
unsere Annahmen durchweg bestätigen. Etwas
überraschend finden wir, daß sich das obere Quartil der
Studierenden im Bereich Programmierung
regelmäßig als relativ erfahren einschätzte, sich im Bereich
Qualitätssicherung (der die Aktivität des Testens
einschließt, von der man erwarten sollte, daß diese
mit ernsthafter Programmierung einhergeht) als eine
oder zwei Stufen geringer erfahren einordnet.</p>
      <p>In der zweiten Vorlesung zeigen und diskutieren
wir die Ergebnisse des jeweiligen Jahres. Mit der
Präsentation der Ergebnisse verbinden wir die folgenden
Botschaften: Erstens, daß wir, d.h. die Veranstalter
und die Studierenden, es (auch dieses Jahr wieder)
mit einem bzgl. Vorerfahrung eher heterogenen
Auditorium zu tun haben. Zweitens, daß die Vorlesung
explizit für Studierende angelegt ist, die sich
zwischen den Werten 0 und 1 einordnen (und daß
diese Studierenden in der klaren Mehrheit sind, man
also nicht „allein“ ist, wenn man sich dort eingeordnet
hat). Drittens, daß für die Studierenden, die sich bei
Werten von 5 und höher einordnen, möglicherweise
keine Neuigkeiten vermittelt werden, daß diese
Studierenden jedoch explizit eingeladen sind, in Form
von Fragen oder Kommentaren ihre Vorerfahrung in
den Vorlesungs- und Übungsterminen einzubringen.
In der Diskussion der Ergebnisse stellen wir heraus,
daß die Inhalte der Vorlesung die Studierenden
darauf vorbereiten möchten, in
Softwarentwicklungsprojekten höherer Stufen mitzuarbeiten, also Projekte
die einen größeren Umfang und eine größere
Nutzerbasis haben als jedes Projekt, das man im Studium in
Freiburg erlebt, sowie üblicherweise einen
wirtschaftlichen Aspekt haben.
3</p>
    </sec>
    <sec id="sec-4">
      <title>Ziele und Konstruktion der Veranstaltung</title>
      <p>Ein Lernziel unserer Veranstaltung ist zunächst, wie
in der Einleitung beschrieben, eine Übersicht über
die verschiedenen Themenbereiche der
Softwaretechnik entsprechend der etablierten Lehrbücher zu
geben. Unser Schwerpunkt ist hierbei die Vermittlung
der verschiedenen Probleme, die sich daraus ergeben,
daß mehrere Menschen über einen längeren
Zeitraum zusammen nichttriviale Softwaresysteme
entwickeln, sowie bekannte Lösungsansätze und deren
Vorund Nachteile vorzustellen.</p>
      <p>Der neue Aspekt unserer Veranstaltung ist die
vollständig formale Definition von
Beschreibungssprachen und Analysetechniken an den entsprechenden
Stellen in der Vorlesung (vgl. Tabelle 2). Die
Lernziele sind hier das sichere Verstehen und Anwenden der
eingeführten Formalen Methoden, sowie die
Interpretation von Analyseergebnissen. Die entsprechenden
Inhalte und die Einbettung in die Vorlesung werden
in Abschnitt 4 beschrieben.</p>
      <p>Wir beschreiben die Ziele unserer Veranstaltung in
der ersten Vorlesung, um Missverständnisse (und
Enttäuschungen) zu vermeiden. In einer Aufgabe des
ersten Übungsblattes bitten wir die Studierenden,
ausgehend von der ersten Vorlesung ihre Erwartungen
an die Veranstaltung in eigenen Worten zu
beschreiben. In der zweiten Vorlesung stellen wir eine
Auswahl der Antworten vor, und gehen jeweils darauf
ein, inwiefern die Veranstaltung diese Erwartungen
erfüllen kann. Ein über die Jahre wiederkehrender
Punkt, ist der Wunsch, gutes Design zu lernen. Diese
Erwartungen liefern einen guten Anlass, erneut
auszuführen, daß ein Ziel der Vorlesung ist,
fundamentale Designprobleme zu verstehen und
Designentscheidungen präzise zu beschreiben und auf Aspekte
guten Designs hin zu analysieren, wir jedoch keine
konkreten Verfahren zur Erstellung guter Designs für
spezifische Anwendungsfelder diskutieren. Wir
plausibilisieren diese Zielsetzung durch eine grobe
Beschreibung des weiten Spektrums von Software: von
Onlineshops, über Standardanwendungen
(Textverarbeitung, etc.), kommerzielle Spiele,
Betriebswirtschaftliche Software, bis hin zu sicherheitskritischen,
eingebetteten Systemen. Jeder dieser Bereiche hat eigene,
bewährte Vorstellungen von gutem Design, die
untereinander nicht austauschbar sein müssen.
3.1</p>
      <p>
        Klausur
Ähnlich wie
        <xref ref-type="bibr" rid="ref23">(Lehmann u. a., 2015)</xref>
        , haben wir sehr
früh in der Überarbeitung der Veranstaltung mit
der Vorbereitung der Klausur begonnen. Laut
Modulhandbuch ist eine schriftliche Prüfung
vorgesehen und somit war klar, daß die Vorlesung
notwendig schriftlich prüfbare Inhalte in hinreichendem
Umfang und Tiefe präsentieren muß. Um das Risiko
zu mindern, zum zentral festgelegten Klausurtermin
keine geeignete Klausur stellen zu können, haben
wir, ausgehend von einem ersten Entwurf des
Zuschnitts der Vorlesung, Aufgabenskizzen und eine
grobe Festlegung der Proportionen für die
Themenbereiche erstellt. Vorlesungsinhalte, Klausuraufgaben
und Übungsinhalte wurden dann im Sinne eines
guten Constructive Alignments
        <xref ref-type="bibr" rid="ref5">(Biggs u. Tang, 2011)</xref>
        aufeinander abgestimmt. Zum Ende der Vorlesungszeit
2015 stand für die Studierenden zur
Klausurvorbereitung eine Beispielklausur zur Verfügung, seit 2016 ist
die Beispielklausur mit dem ersten Vorlesungstag auf
der Lernplattform verfügbar.
      </p>
      <p>
        Bei der Punkteverteilung der Klausur orientieren
wir uns grob an den Stufen der (überarbeiteten)
Taxonomie der Lernziele
        <xref ref-type="bibr" rid="ref1 ref11 ref17 ref18 ref9">(Bloom, 1956; Anderson u. a.,
2001)</xref>
        . Circa 50 % der Punkte entfallen auf „leichte“
Aufgaben (Vokabular, einfache Verfahren verstehen
und wie in den Übungen (jedoch auf andere
Probleme) anwenden), ca. 33 % der Punkte entfallen auf
„mittlere“ Aufgaben (ähnlich wie Übungsaufgaben,
jedoch Analyse bzw. Transfer notwendig) und ca. 17 %
der Punkte sind für „schwere“ Aufgaben (nicht in
den Übungen besprochen, neue Sichten auf
diskutierte Konzepte, offenere kreative Aufgaben) vorgesehen.
Unsere Absicht ist, Kompetenzen über alle kognitiven
Kategorien hinweg zu prüfen; in der o.g.
Punkteverteilung reicht es z.B. zum Bestehen nicht aus, alle
„schweren“ Aufgaben (ggf. intuitiv oder zufällig) zu
lösen, sondern es sind Punkte aus den Bereichen
Verstehen und Anwenden zum Bestehen notwendig.
3.2
      </p>
      <sec id="sec-4-1">
        <title>Vorlesungen</title>
        <p>Teil unserer Veranstaltung ‚Softwaretechnik‘ ist eine
klassische Vorlesung im Umfang von 3 SWS. Um nicht
an einem Tag der Woche auf eine Stunde Tutorium
umschalten zu müssen, interpretieren wir das
3+1Format als drei Vorlesungen (à 90 Minuten) und ein
Tutorium (à 90 Minuten) in zwei Wochen.</p>
        <p>Über die vorhandene Infrastruktur zeichnen wir
das gesprochene Wort und den Bildschirminhalt auf
und stellen die Aufzeichnungen zeitnah zur
Verfügung. Auf diese Weise konnten wir die Vorlesungen
ohne Skript bestreiten, da das gesprochene Wort
jederzeit zum Nachhören verfügbar ist. Weiterhin
können die Teilnehmer::innen, denen unser Vortrag zu
langsam oder zu ausführlich ist, die
Geschwindigkeit beim Anhören der Aufzeichnung selbst
bestimmen. Entsprechend der Selbsteinschätzung der
Teilnehmer::innen (vgl. Abschnitt 1) sprechen wir in der
Vorlesung lieber zu langsam als zu schnell und
betrachten neue Inhalte ggf. aus mehreren
Perspektiven, was für einige Teilnehmer::innen zu langsam
sein kann. In der Evaluation geben, über die
Jahre 2016 bis 2018 aggregiert,3 von 99
Rückmeldungen knapp 25 % an, sich die Inhalte hauptsächlich
durch Anwesenheit anzueignen, und 18 % bzw. 33 %
geben ‚teils/teils‘ bzw. ‚hauptsächlich über die
Aufzeichnungen‘ an. Entsprechend haben wir eher
geringe Besucherzahlen in der eigentlichen Vorlesung,
dafür jedoch Besucher::innen, die die Präsenz für
Fragen oder Kommentare nutzen möchten, denen wir, so
gut es die Zeit erlaubt, Raum geben.</p>
        <p>
          Das Lernziel, eine Übersicht entsprechend der
etablierten Lehrbücher zu geben, hat für uns zwei
Teilaspekte. Einerseits den Aspekt der Vermittlung
von Techniken und Verfahren und andererseits den
Aspekt „der Mensch steht im Mittelpunkt“
          <xref ref-type="bibr" rid="ref24">(Ludewig
u. Lichter, 2013)</xref>
          . Der erste Aspekt ist relativ gut
prüf3Im Jahr 2015 wurde in der Evaluation zum Vortragsbesuch
eine andere, nicht gut vergleichbare Frage gestellt.
bar (und kann als Vorbereitung auf die Klausur
gesehen werden). Zum zweiten Aspekt ist unser Ziel, das
(gesprochene und schriftliche) Kommunizieren von
Softwaretechnik-Problemen und Lösungsideen und
die Analyse und Bewertung von Lösungsideen
einzuüben. Dieser zweite Aspekt ist ungleich schwerer
prüfbar (und kann als Vorbereitung auf „das echte
Leben“ gesehen werden) und findet in unserer
Veranstaltung schwerpunktmäßig im Übungsbetrieb statt
(siehe folgender Abschnitt).
3.3
        </p>
        <p>Übungsaufgaben und Tutorate
Die Vorlesung wird von Übungen begleitet. Vor der
ersten Vorlesung jedes 3er Blocks steht ein
Übungsblatt zur Verfügung, das direkt nach dieser Vorlesung
teilweise und nach der zweiten Vorlesung des Blocks
vollständig bearbeitet werden kann, sodaß für jede
Aufgabe mindestens eine Woche zur Bearbeitung zur
Verfügung steht. Studierende bearbeiten die
Aufgaben in Teams aus 2 bis 3 Personen und können ihre
Bearbeitungen bis zur Minute vor Beginn des
Tutoriums auf der Lernplattform einreichen.</p>
        <p>
          In den Tutorien legen wir Wert auf Interaktion
(i.S.v.
          <xref ref-type="bibr" rid="ref19 ref27 ref30">(Krusche u. a., 2017)</xref>
          ). Das heißt, es sind nicht
die Tutor::innen, die eine Beispiellösung vorstellen,
die „passiv konsumiert“ werden kann („man trifft sich
nicht mehr nur, um ‚gemeinsam zuzuhören‘“
          <xref ref-type="bibr" rid="ref28">(Siegeris, 2017)</xref>
          ),4 sondern der Modus der Tutorien ist „wir
erarbeiten eine gute Lösung zusammen“ bzw. „wir
analysieren und bewerten Lösungsvorschläge und
diskutieren weiterführende Fragen“. Die Tutor::innen
sehen wir im Tutorium vor allem als Moderator::in,
nicht als Vortragende::r. Hierbei sollen die
Lösungswege und -überlegungen transparent werden. Zu
diesem Zweck sind die Tutor::innen angehalten, für die
technischen Aufgaben (im Sinne des
Retrieval-BasedLearning) die Teilnehmer::innen zunächst nach den
relevanten Definitionen zu fragen. Bei kleinen
Aufgaben schreiben die Tutor::innen Lösungsvorschläge
aus dem Auditorium auf den Bildschirm, bei
größeren Aufgaben bringen die Tutor::innen
bemerkenswerte Lösungen mit ins Tutorium und stellen sie zur
Diskussion. Die bemerkenswert guten oder
eigenartigen Lösungen werden aus sogenannten Early
Submissions ausgewählt. Wir bieten denjenigen Teams, die
24 Stunden vor dem Tutorium Lösungen einreichen,
einen 10 %-Bonus auf die erzielten
Zulassungspunkte. Beispiele für weiterführende Fragen ergeben sich
z.B. im Bereich des Requirements Engineering wie
folgt. Eine technische Aufgabe kann darin bestehen,
eine gegebene Formalisierung einer Anforderung auf
(formale) Vollständigkeit zu untersuchen. Ausgehend
von der (technischen) Lösung ergibt sich die Frage,
wie das Resultat in der Rolle Requirements Engineer
zu interpretieren ist und welche Konsequenzen für
die Kommunikation mit der Kundenseite ggf. zu
zie4Auch wenn einige Studierende sich dies lt. Evaluation
wünschen würden.
hen sind. Weiterführende technische Fragen können
konstruiert werden, indem man die gezeigte
Problemstellung leicht modifiziert und eine erneute Analyse
erfragt. Bei der Diskussion von Lösungen und
weiterführenden Fragen achten die Tutor::innen auf präzise
Sprache, insbesondere die korrekte Verwendung von
Softwaretechnik-Fachsprache.
        </p>
        <p>Für die schriftliche Darstellung in den
Einreichungen fordern wir regelmäßig die Form „Problem in
eigenen Worten darstellen – eigenen Lösungsvorschlag
formulieren – begründen, argumentieren, im besten
Falle: beweisen, daß der Lösungsvorschlag das
definierte Problem löst“ und halten die Tutor::innen
dazu an, in Kommentaren zu den Einreichungen
kontinuierlich diese Form nachzufragen.5 Entsprechend
sind die (ausgewogen vorkommenden) offenen
Modellierungsaufgaben absichtlich unpräzise formuliert.
Hierbei ist unserer Erfahrung nach der
angemessene Grad an Unschärfe in der Aufgabenstellung im
B. Sc.-Programm signifikant geringer als im M.
Sc.Programm. Diese absichtliche Unschärfe und die
didaktische Absicht kommunizieren wir ganz explizit:
wir gehen (stark) davon aus, daß die
allerwenigsten Absolventen in ihrer beruflichen Laufbahn
präzise Aufgabenstellungen bekommen werden — und
unter dieser Annahme können wir ruhig im 4. Semester
langsam mit Aufgaben dieser Art beginnen. Im ersten
Jahr der Veranstaltung gab es in der Evaluation
vereinzelt Wünsche nach ganz klaren Aufgaben. Unsere
Hypothese ist, daß in den meisten vorherigen
Veranstaltungen präzise Aufgabenstellungen vorherrschen
(und den Lernzielen angemessen sind, vgl. auch
Abschnitt 4.2) und die ‚Softwaretechnik‘ sich in diesem
Aspekt für die Studierenden ungewohnt anfühlt.</p>
        <p>Am Tag vor den Tutorien führen wir jeweils ein
Tutorium für die Tutor::innen durch, vor dem die
Tutor::innen das Übungsblatt selbst skizzenhaft lösen.
In diesen Tutors’ Tutorials gehen wir (in der Art der
Tutorien für die Studierenden) die Aufgaben durch,
diskutieren weiterführende Fragen, legen die
Lernziele der jeweiligen Aufgaben und Fragen dar und geben
Tips zur Moderation. Der Ablauf der Tutorien steht
danach inklusive Vorschlägen für weiterführende
Fragen und Lernziele als eine Art „Drehbuch“ zur
Verfügung. In der ersten Durchführung hatten wir
leichte Sorge, daß sich die Tutor::innen in ihrer
gestalterischen Freiheit beschränkt fühlen könnten. Hier
waren die Rückmeldungen bisher durchweg positiv:
ganz im Gegenteil würden die Tutors’ Tutorials
Sicherheit (z.B. im Zeitmanagement) geben und kognitive
Kapazitäten für tiefer gehende Fragen und
Kommentare von Seiten der Studierenden freihalten.
Weiterhin erreichen wir durch diesen Ansatz eine
überwiegend gleichbleibende Qualität der Tutorien,
unabhängig von dem/der konkreten Tutor::in.</p>
        <p>5Nicht zuletzt im Interesse der Studierenden: Wir gehen davon
aus, daß gut präsentierte Lösungsvorschläge bei der
Klausurvorbereitung zumindest nicht hinderlich sind.</p>
        <p>In der auf das Tutorium folgenden Woche geben
die Tutor::innen individuelle (für die
Klausurzulassung relevante) Bewertungen und Kommentare zu
den Einreichungen. Hierbei werden die
Einreichungen auf zwei verschiedenen Skalen bewertet. Die für
die Klausurzulassung relevante good-will-Skala
bewertet „sinnvolle Bearbeitung“ relativ zum Wissen
der Studierenden vor dem Tutorium. Hier
interpretieren die Tutor::innen unklare Formulierungen im
Zweifel zugunsten der Studierenden. Um einen
Eindruck von der Bewertung in der Klausur zu geben,
bewerten wir außerdem jede Aufgabe auf der evil-Skala,
die sich am Punkteschema der Klausur und am
Wissen nach dem Tutorium orientiert, insbesondere
darüber, wie bestimmte Aufgabenstellungen im Kontext
der Veranstaltung im Zweifel zu interpretieren sind.
Hier werden unklare Formulierungen oder Fehler in
der Syntax zuungunsten der Studierenden gewertet.
4</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Formale Methoden in der</title>
    </sec>
    <sec id="sec-6">
      <title>Softwaretechnik-Vorlesung</title>
      <p>
        Für die Darstellung von Vokabular, Problembereichen
und nicht formalen Inhalten folgt unsere Vorlesung
im Wesentlichen dem Lehrbuch
        <xref ref-type="bibr" rid="ref24">(Ludewig u. Lichter,
2013)</xref>
        . Wir schätzen an diesem Lehrbuch die
explizit adressierte Sicht, „dass sich Software-Engineering
vor allem mit den Menschen befasst, die Software in
Auftrag geben, entwickeln und ändern oder
benutzen“ und das u.E. sehr gelungene „[B]emühen [...]
um eine rationale Wertung“ und darum, „alle
Quellen [...] vollständig anzugeben“.
      </p>
      <p>
        Im folgenden beschreiben wir unsere Erweiterung
der Inhalte um formale Modelle in der
Softwareentwicklung, die sich unserer Wahrnehmung nach
nahtlos an die Diskussion der Begriffe der Modellierung
und die Bedeutung von Modellen in der
Softwareentwicklung bereits im ersten Kapitel von
        <xref ref-type="bibr" rid="ref24">(Ludewig u.
Lichter, 2013)</xref>
        anfügt. In der Diskussion der
(gegenüber
        <xref ref-type="bibr" rid="ref24">(Ludewig u. Lichter, 2013)</xref>
        ) neuen Inhalte
bemühen wir uns, dem evidenzbasierten Stil des Lehrbuchs
zu folgen, also rationale Wertungen zu ermöglichen
und soweit möglich die (ursprünglichen) Quellen
anzugeben. Entsprechend zeigen wir anhand von
Beispielen, was Formale Methoden konkret leisten
können, was ihre Fürsprecher::innen versprechen und
welche Kritik vorgebracht wird, sodaß die
Studierenden Vor- und Nachteile verantwortlich und
kontextabhängig abwägen können.
      </p>
      <p>Tabelle 2 gibt einen Überblick über die Inhalte
der Vorlesung. Wir beginnen mit dem Themenbereich
Projektmanagement, da die Inhalte dieses Bereichs
für die Teilnehmer::innen des parallel im 4.
Semester stattfindenden Software-Praktikums (SoPra) für
B. Sc.-Studierende nützlich sein können. Es gibt von
Seiten der Teilnehmer::innen durchaus den Wunsch
nach einer Abstimmung zwischen dem SoPra und
der ‚Softwaretechnik‘, der aus verschiedenen
Gründen nicht praktikabel (und, da das SoPra eine in sich
abgeschlossene Veranstaltung mit eigenen
Vorlesungen ist, auch nicht notwendig) ist. Ein Grund ist, daß
im SoPra bereits in der dritten Woche die
Spezifikation und ein Architekturentwurf abzugeben sind. Ein
weiterer Grund ist, daß in jedem Jahr über 30 % der
‚Softwaretechnik‘-Teilnehmer::innen das SoPra nicht
in ihrem Studienplan haben und Versuche einer
engeren Abstimmung bei diesen Teilnehmer::innen zu
signifikanten Verwirrungen geführt haben. Als
Kompromiss haben einige Übungsaufgaben einen Bezug
zum SoPra, der sich den SoPra-Teilnehmer::innen
erschließt, und für die anderen Studierenden einfach
„ein Beispielprojekt“ ist.</p>
      <p>
        In der Präsentation und Diskussion der
nichtformalen Inhalte folgen wir
        <xref ref-type="bibr" rid="ref24">(Ludewig u. Lichter,
2013)</xref>
        , wobei wir im Zweifel direkt auf die
ursprünglichen Quellen zurückgreifen, z.B. die Normtexte
IEEE 601.12 und ISO 24765 für Vokabular und
IEEE 830 zur Struktur von Anforderungsdokumenten.
In den folgenden Abschnitten geben wir einen
Überblick über die von uns ergänzten formalen und
semiformalen Inhalte.
      </p>
      <p>Aufgrund unserer in der Einleitung ausgeführten
Beobachtung eines Mangels an geeigneten
Lehrbüchern, haben wir die formalen Inhalte selbst
ausgewählt bzw. konstruiert. Der Überarbeitung der
Veranstaltung lag die Hypothese zugrunde, daß es durch
eine angemessene Reduktion des Sprachumfangs
möglich ist z.B. die formale Spezifikationssprache für
Strukturaspekte OCL vollständig definiert
einzuführen und die Idee Formaler Methoden und Analysen
zu vermitteln, und gleichzeitig der Vermittlung der
etablierten nicht-formalen Inhalte einen
angemessenen Raum zu geben. Bei der Auswahl der
Teilsprachen von z.B. OCL stand das Ziel im Vordergrund,
die formalen Sprachen nicht artifiziell zu
vereinfachen, sondern echte Teilsprachen auszuwählen, die
in Spezialvorlesungen konservativ erweitert werden.
Wir konnten hierbei auf eine langjährige Erfahrung
aus Forschungs- und Projektarbeit sowie aus
unseren Spezialvorlesungen ‚Software, Design, Modelling,
and Analysis in UML‘ (UML) und ‚Real-Time
Systems‘ im M. Sc. Informatik zurückgreifen, in denen
für die Modellierungssprachen jeweils eine
vollständige konkrete und abstrakte Syntax sowie eine
formale Semantik eingeführt wird. In der UML-Vorlesung
sind dies Klassen- und Objektdiagramme, OCL,
StateMachines und Sequenzdiagramme.</p>
      <p>Bei der Auswahl der Beispiele in der Vorlesung und
der Konstruktion der Übungsaufgaben greifen wir
soweit möglich auf reale, industrielle Softwareprojekte
(bestenfalls aus unserer eigenen Erfahrung) zurück,
da so sichergestellt ist, daß wir Nachfragen in
beliebiger Detailtiefe zufriedenstellend beantworten
können.6 Dabei verwendet die Vorlesung für die
verschiedenen Formalen Methoden verschiedene Beispiele an
denen sich die spezifischen Stärken zeigen. Wir
möchten (und können redlicherweise) nicht den Eindruck
erwecken, daß der Stand der Technik der Formalen
Methoden ist, ein Softwaresystem vollständig und
durchgängig konsistent formal zu beschreiben.
Formale Methoden sind dann effektiv, wenn geeignete
Formalismen zur Beschreibung und Analyse
spezifischer, besonders kritischer oder komplexer Aspekte
von Software mit Bedacht eingesetzt werden.</p>
      <p>6Dies ist bei artifiziell konstruierten Beispielen ungleich
schwerer herzustellen und kann, wenn es nicht gelingt, unnötige
Unzufriedenheit auf Seiten der Studierenden hervorrufen.</p>
      <p>Wir nutzen bei der Auswahl der Inhalte die
relative späte Lage der Veranstaltung im Studienplan
aus (vgl. Abschnitt 2). So bauen wir auf
‚Grundlagen der Theoretischen Informatik‘, die
MathematikVorlesungen und ‚Rechnerarchitektur‘ auf, in denen
die Studierenden bereits mit verschiedenen
Formalen Methoden konfrontiert wurden (wenn auch
vielleicht nicht unter diesem Namen). Unsere
Veranstaltung zeigt gewissermaßen, wie ein großer Teil des
bisher Gelernten in der Softwarekonstruktion
angewandt werden kann.
4.1</p>
      <sec id="sec-6-1">
        <title>Themenbereich</title>
      </sec>
      <sec id="sec-6-2">
        <title>Softwareprojektmanagement</title>
        <p>
          Im Themenbereich Softwareprojektmanagement
überwiegen nicht-formale Inhalte (vgl. Tabelle 2).
Ein Schwerpunkt sind Softwaremetriken als ein
Aspekt der ingenieurmäßigen, objektivierten
Softwareentwicklung (inklusive des Bewusstseins für
Pseudometriken (vgl.
          <xref ref-type="bibr" rid="ref24">(Ludewig u. Lichter, 2013)</xref>
          )).
Ein weiterer Schwerpunkt ist die
Prozessmodellierung. Hier führen wir zunächst eine semi-formale7
graphische Beschreibungssprache für Prozesse ein,
bestehend aus Rollen, Artefakten, Aktivitäten und
den entsprechenden Relationen. Wie zeigen, wie
ein konkreter Ablauf (oder Prozess) einer
Softwareentwicklung modelliert werden kann (deskriptiv,
Abbild), um dann zu zeigen, wie ein graphisches
Prozessmodell präskriptiv (Vorbild) verwendet werden
kann, um Prozessabläufe vorzugeben. Wir
verwenden unsere graphische Beschreibungssprache, um
konkrete Prozedur- und Prozessmodelle (Wasserfall,
V-Modell, XP, Scrum) vorzustellen bzw. setzen die
Notation z.B. der V-Modell-Beschreibung zu unserer
Teilsprache in Beziehung.
        </p>
        <p>In den Übungsaufgaben ist anhand von
vorgegebenen Prozessbausteinen ein kleines
Entwicklungsprojekt zu planen inklusive Besetzung von Rollen mit
Personen. Um die Tutor::innen insbesondere auf Fragen
und Diskussionen zur Verwendung und zum Nutzen
von Prozessmodellen vorzubereiten, haben wir
entsprechend des Prinzips „lehren, was wir praktizieren“
in 2018 den Prozess des Übungsbetrieb vollständig
modelliert. Die Erläuterung des Prozesses ist
aufwendig, dafür weiß über das gesamte Semester jede::r
Tutor::in, wer wann welches Artefakt wie zu
bearbeiten hat und wir können unsere ganze
Aufmerksamkeit den eingereichten Lösungsvorschlägen widmen.
4.2</p>
      </sec>
      <sec id="sec-6-3">
        <title>Themenbereich</title>
      </sec>
      <sec id="sec-6-4">
        <title>Requirements Engineering</title>
        <p>
          Der Themenbereich Requirements Engineering (RE)
ist in der Veranstaltung etwas stärker gewichtet als
die weiteren Themenbereiche (vgl. Tabelle 2). Dies
ist vor allem drei Überlegungen geschuldet. Erstens
stimmen wir zu (etwa
          <xref ref-type="bibr" rid="ref19 ref27 ref30">(Sedelmaier u. Landes, 2017)</xref>
          ),
7d.h. präzise konkrete Syntax, informelle Beschreibung der
Bedeutung.
daß dem Themenbereich RE in der
Softwareentwicklung eine besondere Relevanz zukommt. Die
Relevanz wird dabei in den späteren Themenbereichen
sehr natürlich aufgegriffen: Der Begriff der
Korrektheit von Softwareentwürfen (insbesondere bzgl. des
Verhaltens) und von Software ist relativ zu einer
Anforderung. Etwa ein Algorithmus kann nur als korrekt
(bzgl. einer Anforderung) bewiesen werden, wenn
es eine formale Beschreibung der Anforderung gibt.
Zweitens beobachten wir, daß die Vermittlung von
Problemen und Techniken des RE für Studierende mit
wenig oder keiner Vorerfahrung eine besondere
Herausforderung darstellt (vgl. Selbsteinschätzung der
Studierenden, Abschnitt 2). Drittens führen wir in
unserer Veranstaltung im Themenbereich RE zum
ersten Mal Formale Methoden ein.
        </p>
        <p>Wir sprechen bei unseren Diskussionen i.d.R. über
die u.E. besonders herausfordernde Situation eines
Softwareentwicklungsvertrages zwischen getrennten
Kunden- und Entwicklungsunternehmen. Die
Softwareentwicklung in Start-Ups, innerhalb einer
Abteilung oder zwischen Abteilungen desselben
Unternehmens hat ggf. andere Rahmenbedingungen.</p>
        <p>Bei der Vermittlung von Problemen und Techniken
des RE arbeiten wir mit zwei (bisher leider nicht
empirisch belegten) Hypothesen zu Ursachen von
Schwierigkeiten. Eine Ursache sehen wir darin, daß
der weitaus überwiegende Teil der Übungsaufgaben,
die die Studierenden bis zum 4. Semester
bearbeiten, von Fachleuten in Fachsprache präzise
formuliert sind (nicht zuletzt, um die Korrektur zu
vereinfachen). Entsprechend stellen wir Übungsaufgaben zu
unserer Veranstaltung absichtlich unpräzise und
halten dazu an, in den Einreichungen zunächst die
Aufgabenstellung in eigenen Worten wiederzugeben (vgl.
Abschnitt 3.3). Als zweite Ursache vermuten wir, daß
der Umgang mit Sprache im Alltag von dem in der
RE-Arbeit verschieden ist. Im Alltag sind Menschen
üblicherweise gern bereit, einen Satz wie:</p>
        <p>Spielfiguren müssen indirekt gesteuert werden.
direkt als „klar“ zu akzeptieren und keinen Bedarf
für Nachfragen zu sehen (fehlende Information wird
plausibel aufgefüllt; man sieht nur Information). In
der RE-Arbeit geht es unseres Erachtens beim Blick
auf den obigen Satz vor allem darum, zu sehen,
welche Information der Satz nicht enthält.</p>
        <p>Um diesen Sichtwechsel anzuregen, führen wir
eine Übung durch, in der die Studierenden eine
textuell gegebene Anforderung analysieren. Diese
Übung wird in verschiedenen Ausprägungen im
REUnterricht eingesetzt, etwa mit Paaren von
studentischen Teams, die jeweils die Kunden- bzw.
Entwicklerrolle übernehmen oder mit nicht technisch
vorgebildeten (echten) Kunden. Wir verwenden eine
Variante mit einem technisch vorgebildeten Kunden, da wir
in den anderen Szenarien die Gefahr sehen, daß die
Parteien aneinander vorbeireden und es aufwendig
ist, eine für alle Beteiligten gute Beispiellösung zu
erarbeiten. Unser Kunde ist ein Organisator des SoPra,
unsere Anforderung war in 2018 der oben genannte
Satz. Die Aufgabe besteht darin, durch
Kommunikation mit dem Kunden ein Begriffslexikon zu
erarbeiten und die nicht im Satz enthaltenen Informationen
„herauszukitzeln“. Um die Aufgabe skalierbar zu
gestalten, führen zunächst die Organisatoren unserer
Veranstaltung eine Anforderungsanalyse durch und
notieren die Findungen in einem Wiki. Die
Studierenden kommunizieren mit dem (für sie anonymen)
Kunden per Mail, vermittelt durch die Tutor::innen. Mit
Hilfe des Wiki können die Tutor::innen die meisten
Fragen ihrer Tutanden schon im Stile eines Kunden
beantworten, noch unklare Aspekte werden an den
SoPra-Organisator weitergeleitet und im Wiki
nachgeführt; weiterhin sind die Tutor::innen angehalten,
die Kommunikation in der Art eines Coaches zu
beobachten und Tips für weitere Fragen zu geben. Für
das Tutorium bereiten wir eine Liste von bekannten
Beispielspielen vor, die die Anforderung lt. Kunde
erfüllen bzw. nicht erfüllen. Im Tutorium sollen die
Teilnehmer::innen durch Handzeichen pro Beispiel
anzeigen, ob nach ihrer konkreten Anforderungsanalyse
das Beispiel vom Kunden akzeptiert oder abgelehnt
wird bzw. ob sie sich nicht sicher sind. In 4 Jahren
Durchführung dieser Übung hat noch nicht ein Team
alle Beispiele korrekt klassifiziert; dies wird durch das
Verfahren mit den Handzeichen im Tutorium
unmittelbar für die Studierenden erfahrbar.</p>
        <p>
          In der Einführung der Problemstellung der
Anforderungsanalyse und nicht-formalen Beschreibung
von Anforderungen folgen wir
          <xref ref-type="bibr" rid="ref26">(Rupp u. a., 2014)</xref>
          .
Wir beginnen die Diskussion von
Beschreibungssprachen am nicht-formalen Ende der in Abbildung 1(b)
dargestellten Achse mit der natürlichsprachlichen
Beschreibung und Sprach-Patterns
          <xref ref-type="bibr" rid="ref26">(Rupp u. a., 2014)</xref>
          und diskutieren Eigenschaften guter
Anforderungsdokumente wie Vollständigkeit. Die Präsentation
wechselt dann ans formale Ende der Achse und dort
zu einem möglichst einfachen Formalismus (vgl.
Abschnitt 4.2.1), um dann im semi-formalen Bereich
z.B. User Stories und Use Cases einzuführen. Ein
komplexer Formalismus (vgl. Abschnitt 4.2.2) und ein
Rückblick schließen den Themenbereich ab.
        </p>
      </sec>
      <sec id="sec-6-5">
        <title>4.2.1 Entscheidungstabellen</title>
        <p>Als Einstieg in die formale Beschreibung von
Anforderungen haben wir als eine möglichst einfache
Sprache die in vielen Lehrbüchern semi-formal
eingeführten Entscheidungstabellen (ET) ausgewählt. ET sind
eine der einfachsten Beschreibungssprachen, die mit
formaler Semantik und Analysen versehen werden
können, sind jedoch weder trivial noch eine
artifizielle Lehrsprache. Die schlichten Sprachmittel von
ET reichen vollständig aus, um Anforderungen zu
beschreiben, die in textueller Form sehr schnell nicht
mehr überblickbar, wartbar oder analysierbar sind.
T : decision table
c1 description of condition c1
... ...
cm description of condition cm
a1 description of action a1
... ...
ak description of action ak
r1 · · · rn
v1,1 · · · v1,n</p>
        <p>... ... ...
vm,1 · · · vm,n
w1,1 · · · w1,n</p>
        <p>... ... ...</p>
        <p>wk,1 · · · wk,n</p>
        <p>Abbildung 2: Konkrete Syntax von ET.</p>
        <p>Formal ist eine ET T über disjunkte Mengen von
Bedingungen C und Aktionen A eine n × m-Matrix
(siehe Abbildung 2) wobei c1, . . . , cm ∈ C, a1, . . . , ak ∈
A, v1,1, . . . , vm,n ∈ {−, ×, ∗}, und w1,1, . . . , wk,n ∈
{−, ×}. Eine wohlgeformte ET hat einen Namen.
Spalten (v1,i, . . . , vm,i, w1,i, . . . , wk,i), 1 ≤ i ≤ n,
werden Regeln genannt und haben einen eindeutigen
Namen (hier: r1, . . . , rn). Die Vektoren (v1,i, . . . , vm,i)
und (w1,i, . . . , wk,i) heißen Prämisse und Effekt von
Regel ri. Die Semantik einer ET T ist durch die
Funktion F gegeben, die jeder Regel r in T eine Formel
der propositionalen Logik über C und A wie folgt
zuordnet. Seien (v1, . . . , vm) und (w1, . . . , wk) Prämisse
und Effekt von r. Dann ist</p>
        <p>F (r) := V1≤i≤m F (vi, ci) ∧ V1≤j≤k F (wj , aj) (1)
| =:F{pzre(r) } | =:F{ezff (r) }
mit F := {(×, x) 7→ x, (−, x) 7→ ¬x, (∗, x) 7→
true}. Die Teilformeln Fpre(r) und Feff (r) heißen
Prämissen- bzw. Effektformel.</p>
        <p>Eine ET kann wie folgt zur Formalisierung einer
Anforderung der Art, daß Systemverhalten in
akzeptabel (oder erwünscht) und unerwünscht klassifiziert
wird, verwendet werden. Ein System erfüllt die durch
ET T gegebene Anforderung genau dann, wenn
jedes beobachtbare Systemverhalten durch eine Regel
in T erlaubt wird. Formal kann eine Beobachtung
eines Systems bzgl. der Bedingungen und Aktionen in
C und A, also welche Bedingungen aus C erfüllt sind
und welche Aktionen aus A ausgeführt werden, als
Boole’sche Belegung σ : C ∪ A → {0, 1} der logischen
Variablen in C ∪ A notiert werden. Die Beobachtung
σ erfüllt T genau dann, wenn es eine Regel r in T
gibt, sodaß σ |= F (r).</p>
        <p>Begriffe wie Vollständigkeit können für ET präzise
definiert werden, z.B. nennen wir eine ET T (formal)
vollständig, wenn die Disjunktion der
Prämissenformeln von T eine Tautologie ist. Das Problem der
Analyse auf (formale) Vollständigkeit kann auf das
Erfüllbarkeitsproblem propositionaler Logik reduziert
werden, für das in Form von sogenannten SAT-Solvern
Entscheidungswerkzeuge zur Verfügung stehen.</p>
        <p>
          In der Vorlesung ‚Softwaretechnik‘ diskutieren wir
nun nicht eine Reduktionsprozedur oder die
Konstruktion von SAT-Solvern, sondern nehmen eine
Nutzersicht ein, nehmen also zur Kenntnis, daß
Werkzeuge dieser Art existieren. Wir führen am Beispiel der
ET die wichtige Diskussion, wie sich z.B. die formale
Vollständigkeit einer ET zur vollständigen Erfassung
einer Anforderung im Sinne von
          <xref ref-type="bibr" rid="ref26">(Rupp u. a., 2014)</xref>
          verhält. Eine Analyse einer formalen Beschreibung
bzgl. einer Eigenschaft wie Vollständigkeit kann
positiv (Eigenschaft nicht gegeben) oder negativ
ausfallen und dieses Ergebnis kann (wie Testresultate)
falsch oder richtig sein. Ein Grund für ein
falschpositives Resultat kann z.B. ein simpler
Schreibfehler beim Verfassen der formalen Beschreibung sein.
Ein positives Resultat liefert jedoch in jedem Fall ein
Indiz dafür, daß uns z.B. in der
Anforderungserfassung ein Fehler unterlaufen ist und dieses Indiz ist
im Zweifel zusammen mit den Kunden zu klären. Für
ET liefern die Werkzeuge im positiv-Fall sogar alle
Beobachtungen, die in T nicht berücksichtigt werden,
und die sich üblicherweise gut in die Begriffs- und
Erfahrungswelt der Kunden übersetzen und als solche
klären lassen. Die Formalisierung einer Anforderung
und die formale Analyse kann also sicherstellen, daß
alle Probleme, die zu positiven Resultaten führen,
erkannt und ggf. ausgeräumt werden. Die formale
Analyse kann nicht sicherstellen, daß die
Anforderungsanalyse als solche vollständig ist, da falsch-negative
Resultate möglich sind. Ob der Aufwand der
Formalisierung und Analyse von Anforderungen oder
Designideen das verringerte Fehlerrisiko rechtfertigt, ist je
nach Projektkontext zu entscheiden.
        </p>
        <p>
          Die Übungsaufgaben zu ET umfassen verschiedene
formale Analysen von gegebenen ET sowie eine
Aufgabe, in der ein Transkript eines Kundeninterviews
(mit absichtlichen Redundanzen und
Mehrdeutigkeiten) im Umfang von ca. einer DIN-A4-Seite in eine
ET mit ca. 10 Regeln über jeweils 5 Bedingungen und
Aktionen überführt werden soll. Im Tutorium stellen
wir die (provokante) Frage: Nehmen wir an, man
müsste als Implementierer::in des Kundenwunsches
zwischen Text und ET als Spezifikation wählen, was
wäre die Wahl? Und warum? Meiner Kenntnis nach
hat sich in den 4 Jahren der Veranstaltung noch
niemand ausdrücklich den Text gewünscht. Hier
versuchen wir, einen Aspekt sichtbar zu machen, der
unserer Meinung nach im Kontext formaler
Beschreibungen noch vor der Anwendung von formalen
Analysen steht. Eine formale Beschreibung einer
Anforderung hat den Effekt, daß (mit hoher
Wahrscheinlichkeit) alle im verwendeten Formalismus ausgebildeten
Softwaretechniker::innen zu jeder Zeit dieselbe
Information sehen.8 So sehen wir formale
Beschreibungen zuvorderst als Werkzeug, um auf Seiten der
Softwaretechniker::innen das Risiko von
Missverständnissen zu verringern. Als Analogie verwenden wir z.B.
von Jurist::innen konstruierte Individualverträge,
deren Konsequenzen man als Nicht-Jurist
üblicherweise nicht überblicken kann. Man hat als
Auftraggeber des Individualvertrags jedoch den Anspruch, von
8Gestandene Praktiker::innen berichten, daß es vorkommt, daß
dieselbe Person am selben Tag einen Text verschieden interpretiert.
der Fachperson eine „Übersetzung“ zu erhalten bzw.
darauf, wichtige Szenarien gemeinsam
durchzuspielen. Ebenso hat man als Softwarekunde einen
Anspruch, von den Entwickler::innen deren z.B. in
formaler Form notiertes Verständnis der
Anforderungen erklärt zu bekommen. Dies kann insbesondere
durch Szenarien gelingen (vgl.
          <xref ref-type="bibr" rid="ref21 ref3">(Arenis u. a., 2016)</xref>
          ).
Für jedes von dem/der Kund::in formulierte
Szenario können Entwickler::innen auf Basis der formalen
Beschreibung Auskunft geben, ob ihrem Verständnis
nach dieses Szenario erwünscht oder unerwünscht
ist. Bei Verwendung formaler Beschreibungen ist
diese Auskunft objektiv und beliebig reproduzierbar.
        </p>
        <p>
          Die Klausur umfasst Aufgaben verschiedener
Taxonomie-Stufen zu ET, vom Beweis z.B. der
Vollständigkeit einer ET, über die Analyse einer gegebenen
ET auf Konsistenz bis hin zur Erstellung einer
kleinen ET zu einem Text. Die Ergebnisse (vgl.
          <xref ref-type="bibr" rid="ref32">(Westphal,
2018)</xref>
          ) sind sehr erfreulich. Den gesamten
Aufgabenbereich lösten in 2015 bis 2017 mehr als 50 % der
Teilnehmer::innen mit 14 bzw. 13 von 15 Punkten,
liegen also im guten oder sehr guten Bereich, obwohl
wir die Analyseaufgabe klar den „schweren“
Aufgaben der Klausur zuordnen. Die Grenze zum unteren
Quartil liegt bei erfreulichen 12,5 bzw. 12 Punkten.
        </p>
      </sec>
      <sec id="sec-6-6">
        <title>4.2.2 Live Sequence Charts</title>
        <p>
          Als komplexen Formalismus (mit höherer
Ausdrucksstärke und Informationsdichte, und höherem
Aufwand zur Definition von (abstrakter) Syntax und
Semantik) haben wir Live Sequence Charts
          <xref ref-type="bibr" rid="ref1 ref11 ref17 ref18">(Damm u.
Harel, 2001)</xref>
          (LSCs) ausgewählt, eine formale
Variante der weit verbreiteten Sequenzdiagramme. Wir
führen die Automatensemantik für LSCs nach
          <xref ref-type="bibr" rid="ref1 ref11 ref17 ref18">(Klose u. Wittke, 2001)</xref>
          ein, inklusive Chart-Modus, Cold
Conditions, und Pre-Charts. Ein System erfüllt eine
(universelle) LSC genau dann, wenn alle
Berechnungen des Systems von dem aus der LSC
konstruierten Automaten akzeptiert werden. Weiterhin führen
wir aus, wie LSCs (bzw. ihre Automaten) in der
automatischen Testdurchführung verwendet werden
können
          <xref ref-type="bibr" rid="ref1 ref11 ref17 ref18">(Klose u. Lettrari, 2001)</xref>
          .
        </p>
        <p>Die Klausur umfasst Aufgaben zur Konstruktion
der Automaten sowie erfragt Beispiele für
akzeptierte bzw. nicht akzeptierte Systemberechnungen. Nicht
zuletzt da die Einführung von LSCs den technisch
anspruchsvollsten Teil unserer Vorlesung darstellt,
sehen wir diese Aufgaben im „mittleren“ und
„schweren“ Bereich, der am Ende die guten und sehr guten
Gesamtnoten entscheidet. Mit den Resultaten sind
wir auch hier zufrieden, das untere Quartil endet bei
8,5 bzw. 7 von 15 bzw. 16 Punkten, das obere Quartil
beginnt bei 13 bzw. 12 Punkten.</p>
        <p>Im ersten Jahr waren wir von den guten
Ergebnissen bei aller Zuversicht positiv überrascht. Wir hatten
uns vereinzelt vorgetragenen Sorgen, daß die
LSCSemantik zu schwer sein könnte, nicht völlig
entziehen können und entsprechend Vorsorge getragen, die
Aufgaben zu LSCs ggf. aus der Wertung zu nehmen.
4.3</p>
      </sec>
      <sec id="sec-6-7">
        <title>Themenbereich Entwurf</title>
        <p>
          Im Themenbereich Softwarearchitektur und Entwurf
liegt der Schwerpunkt auf der Modellierung der
Struktur und des Verhaltens von Softwaresystemen
als Baupläne im Sinne von
          <xref ref-type="bibr" rid="ref20">(Lamport, 2015)</xref>
          . Zur
Strukturmodellierung führen wir eine übersichtliche
Teilsprache der Klassendiagramme von UML ein, die
im wesentlichen Klassen mit Attributen von
Basistypen und gerichteten Assoziationen der
Multiplizitäten 0,1 und 0,∗ mit Ownership umfasst.Neben der
bekannten Sicht, Klassendiagramme als Visualisierung
von (Klassen in) Programmen zu betrachten,
betonen wir die Sicht eines abstrakten (von der
Programmierung zunächst unabhängigen)
Strukturmodells. Die abstrakte Syntax eines Klassendiagramms
ist eine Signatur mit Klassen, Basis- und abgeleiteten
Typen, und je Klasse der Menge der Attribute dieser
Klasse. Die Semantik eines Klassendiagramms ist die
Menge der über dieser Signatur bildbaren
Systemzustände
          <xref ref-type="bibr" rid="ref25">(OMG, 2006)</xref>
          , d.h. partiellen Funktionen,
die (einige) Objektidentitäten auf jeweils eine
Belegung der Attribute mit Werten abbilden.
Systemzustände können graphisch (ohne Informationsverlust)
durch vollständige Objektdiagramme dargestellt
werden. Hier stellen wir die Anwendung von
Objektdiagrammen in der Dokumentation und Spezifikation
heraus. Wenn der Aufwand, bestimmte Annahmen
einer Datenstruktur z.B. mit OCL zu formalisieren,
in einem Projekt als zu hoch bewertet wird, kann
eine geeignete Auswahl von Objektdiagrammen
hervorragend zur Spezifikation dieser Annahmen „durch
Beispiel“ verwendet werden. Wenn etwa eine
Listenstruktur nur unter der Annahme verwendet werden
darf, daß keine Zyklen konstruiert werden.
        </p>
        <p>Eigenschaften von Strukturen können mit Hilfe der
Object Constraint Language (OCL) formalisiert
werden. Hier führen wir Proto-OCL ein, eine
Teilsprache der OCL, deren konkrete Syntax sich an der den
Studierenden vertrauten Form der Logik erster Stufe
orientiert. Die Semantik von Proto-OCL ist eine
Interpretationsfunktion, die eine gegebene
Proto-OCLFormel und einen gegebenen Systemzustand (oder
ein vollständiges Objektdiagramm) auf einen der drei
(!) Werte true, false und ⊥ abbildet. Wir stellen die
Besonderheiten heraus, daß OCL Assoziationen
verschiedener Multiplizität verschieden behandelt sowie
die Bedingungen, unter denen man eine Auswertung
zum dritten Wahrheitswert beobachten kann.</p>
        <p>
          Für die konstruktive Modellierung von Verhalten
führen wir eine einfache Teilsprache von
StateMachines ein. Unsere Communicating Finite
Automata (CFA) sind im Wesentlichen nicht-hierarchische
State-Machines mit Rendezvous-Synchronisation,
d.h. zwei Kanten in verschiedenen Automaten
können eine Transition begründen, wenn je eine
der Kanten bzgl. eines Events sende- bzw.
empfangsbereit ist. Dieses Synchronisationsparadigma
ist mit durch State-Machines implementierten
Behavioural Features in UML vergleichbar jedoch
nicht (ohne weitere Annahmen) identisch. Zu dieser
Abweichung von der UML-Semantik haben wir uns
vorrangig aus zwei Gründen entschieden. Einerseits
erfordert die formale Einführung des abstrakten
Event-Speichers (in der die UML-Semantik
bekanntlich parametrisiert ist) sowie einer konkreten
Ausprägung, etwa einer empfängerseitigen
FIFOQueue, wie sie IBM Rhapsody verwendet, in unserer
UML-Veranstaltung ca. 2 Vorlesungen. Der
Erkenntnisgewinn im Vergleich zum Aufwand erscheint uns
für eine Softwaretechnik-Veranstaltung zu gering.
Andererseits steht mit Uppaal
          <xref ref-type="bibr" rid="ref22">(Larsen u. a., 1997)</xref>
          ein Werkzeug zur Erstellung, Simulation und
Verifikation von (insbesondere)9 CFAs mit einer reichen
Programmiersprache für Guards und Aktionen zur
Verfügung, das nicht zuletzt aufgrund seines sehr gut
auf das Wesentliche reduzierten User-Interfaces10
hervorragend für unsere Ziele geeignet ist.11
        </p>
        <p>Die Übungsblätter zu CFA umfassen Aufgaben zur
Erstellung eines Modells eines verteilten Algorithmus
für Mutual-Exclusion (das den Teilnehmer::innen als
Problem aus der Betriebssysteme-Vorlesung bekannt
sein müsste), zur Simulation verschiedener
Abläufe und zur Verwendung von Uppaal’s Temporallogik
(Query Language) zur Spezifikation und
Verifikation der Mutual-Exclusion-Eigenschaft. Mit den
Übungen verfolgen wir insbesondere das Ziel, das
mächtige Modellierungskonzept des Nichtdeterminismus
und die durch nebenläufiges Verhalten induzierten
Schwierigkeiten sichtbar zu machen.</p>
        <p>In der Klausur ist üblicherweise der
Transitionsgraph eines gegebenen Systems von mehreren CFAs
zu erstellen. Mit den Ergebnissen sind wir durchweg
zufrieden, der Median liegt zwischen 10 und 12,25
von 13 Punkten, das obere Quartil beginnt zwischen
12 und 13 Punkten, liegt also im sehr guten Bereich.</p>
      </sec>
      <sec id="sec-6-8">
        <title>4.4 Themenbereich Qualitätssicherung</title>
        <p>Im Themenbereich Qualitätssicherung betrachten wir
speziell die Prüfung von Programmcode. Hier
diskutieren wir zunächst die Disziplin des Softwaretestens.
Dem formalen Charakter der gesamten Veranstaltung
folgend, führen wir Testfälle als Paare (In, Soll) aus
einer (Menge von) Eingabe(n) und Soll-Wert(en) ein.
Eine Ausführung eines Testfalls ist eine Beobachtung
des Systems, die Eingaben entsprechend In erhält,
was ein einzelner Wert oder eine Sequenz von z.B.
Events sein kann. Ein Test ist negativ (Test passed)
genau dann, wenn die betrachtete Beobachtung ein
Ele9Daß Uppaal für CFAs mit Uhrenvariablen, also Timed
Automata, entwickelt wurde, verschweigen wir schlankerhand.</p>
        <p>
          10Aus denselben Überlegungen führen wir kein Werkzeug zur
Erstellung von Klassendiagrammen ein. Die für die Einarbeitung
in die Bedienung der meisten dieser Werkzeuge notwendige Zeit
steht unserer Meinung nach in keinem akzeptablen Verhältnis zu
den Absichten z.B. unserer Übungen (vgl.
          <xref ref-type="bibr" rid="ref12">(Glinz, 1996)</xref>
          ).
        </p>
        <p>
          11Einige Teilnehmer::innen unserer UML-Veranstaltung, in der
wir IBM Rhapsody verwenden, vermissen die mächtige und leicht
zu bedienende Simulationsfunktion von Uppaal.
ment von Soll ist. Hier betonen wir (
          <xref ref-type="bibr" rid="ref24">(Ludewig u.
Lichter, 2013)</xref>
          folgend) besonders den Aspekt, daß die
Begriffe des positiven und negativen Tests relativ zu
Soll-Werten (die sich ggf. aus (formalen)
Anforderungen ableiten lassen) definiert sind. Die Resultate der
Klausuraufgaben zum Testen sind durchweg
ordentlich, jedoch sind wir jedes Jahr wieder überrascht,
daß eine signifikante Anzahl der Studierenden keine
Soll-Werte angibt, obwohl explizit nach einer
erfolglosen Test-Suite gefragt wird.
        </p>
        <p>
          Als gegenüber den etablierten Lehrbüchern
neuen Inhalt präsentieren wir Programmverifikation
nach
          <xref ref-type="bibr" rid="ref13">(Hoare, 1969)</xref>
          in der Form des Lehrbuchs
          <xref ref-type="bibr" rid="ref10 ref2">(Apt
u. a., 2009)</xref>
          . Für die Übungen verwenden wir das
Web-Interface des Verifying C Compilers
          <xref ref-type="bibr" rid="ref10 ref2">(Cohen u. a.,
2009)</xref>
          (VCC) und diskutieren als weiterführende
Fragen den Unterschied zwischen der Verifikation eines
Algorithmus und der Verifikation eines C-Programms
unter Annahmen über die Ausführungsplattform. Die
Klausuraufgabe besteht üblicherweise darin, eine
gegebene Beweisskizze mit den verwendeten Axiomen
und Beweisregeln zu annotieren. Hier erreicht das
obere Quartil zwischen 5,5 und 7 von 7 Punkten, das
untere Quartil endet bei 3 bis 5 Punkten.
5
        </p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Lehrevaluation</title>
      <p>Da die Veranstaltung neu konstruiert wurde,
beobachten wir seit der ersten Durchführung verschiedene
Metriken (vgl. Abschnitt 4.1) auf Indizien für
Fehlentwicklungen. Daten beziehen wir aus dem
Übungsbetrieb, den Klausuren und der zentralen Evaluation.</p>
      <p>
        In der Evaluation beachten wir besonders die
Aspekte „Workload“ und „Niveau“
        <xref ref-type="bibr" rid="ref19 ref27 ref30">(Uttl u. a., 2017)</xref>
        und die Freitexte. Den Workload sehen über alle
4 Jahre gesehen rund 62 % der Studierenden als
‚mittel‘ und rund 30 % als ‚hoch‘, das Niveau sehen rund
62 % als ‚angemessen‘ und rund 29 % als ‚hoch‘. Dies
entspricht vollständig unserem Ziel für eine
universitäre Lehrveranstaltung.
      </p>
      <p>Den Lernerfolg bzgl. des Lernziels der Vermittlung
von Methoden und Techniken messen wir anhand der
Klausurergebnisse, mit denen wir über alle 4 Jahre
sehr zufrieden sind. Das viel interessantere Lernziel
der Vorbereitung auf das „echte Leben“ läßt sich
leider notorisch nicht gut messen. Als ein positives
Indiz sehen wir unsere und von Kolleg::innen
berichtete Erfahrung aus Vorgesprächen zu individuellen
Projekten wie etwa B. Sc.-Arbeiten. Hier nehmen wir die
Inhalte der Vorlesung als (angestrebten) soliden
Bezugspunkt wahr, um über spezialisierte
Aufgabenstellungen zu sprechen. Wir hoffen, daß sich die
Veranstaltung ebensogut als Bezugspunkt für den Einstieg
in die berufliche Karriere der Studierenden eignet.
6</p>
    </sec>
    <sec id="sec-8">
      <title>Zusammenfassung</title>
      <p>Formale Methoden werden zunehmend in vielen
Bereichen der Softwaretechnik angewandt. Unserer
Überzeugung nach ist es hilfreich, wenn die
Bedeutung formaler Beschreibungen vollständig
durchdrungen wird und die aus formalen Analysen zu
ziehenden Schlüsse verstanden werden.</p>
      <p>Unsere Erfahrung zeigt, daß es möglich ist, eine
Veranstaltung zur Einführung in die Softwaretechnik
im Grundstudium um genau diese Aspekte zu
ergänzen ohne hierbei die Inhalte der etablierten
Lehrbücher zu vernachlässigen.</p>
      <p>Danksagungen. Wir danken Sergio Feo Arenis und
Christian Schilling für ihre Unterstützung als Assistenten
der ersten beiden bzw. des letzten Jahres. Ohne die
Gespräche mit Sergio und Christian und ihre Ausarbeitung
und Weiterentwicklung der Übungsaufgaben wäre die
Veranstaltung in ihrer heutigen Form nur schwer vorstellbar.
Weiterhin danken wir unseren stud. Hilfskräften für ihre
engagierte Mitarbeit an Aufgaben und Tutorials.</p>
    </sec>
    <sec id="sec-9">
      <title>Literatur</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [Anderson u. a. 2001
          <string-name>
            <surname>] ANDERSON</surname>
            ,
            <given-names>L. W.</given-names>
          </string-name>
          (
          <article-title>Hrsg.) u. a.: A Revision of Bloom's Taxonomy of Educational Objectives</article-title>
          . Longman,
          <year>2001</year>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [Apt u. a. 2009] APT,
          <string-name>
            <surname>K. R. ; BOER</surname>
            ,
            <given-names>F. S.</given-names>
          </string-name>
          ; OLDEROG, E.-R.:
          <source>Verification of Sequential and Concurrent Programs</source>
          . Springer,
          <year>2009</year>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [Arenis u. a. 2016] ARENIS,
          <string-name>
            <given-names>S. F.</given-names>
            ;
            <surname>WESTPHAL</surname>
          </string-name>
          , B. u. a.:
          <article-title>Ready for testing: ensuring conformance to industrial standards through formal verification</article-title>
          .
          <source>In: FAoC</source>
          <volume>28</volume>
          (
          <year>2016</year>
          ),
          <year>Nr</year>
          . 3,
          <string-name>
            <surname>S.</surname>
          </string-name>
          499-
          <fpage>527</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <source>[Balzert</source>
          <year>2009</year>
          ] BALZERT, H.:
          <article-title>Lehrbuch der Softwaretechnik: Basiskonzepte und Requirements Engineering</article-title>
          . 3rd.
          <string-name>
            <surname>Spektrum</surname>
          </string-name>
          ,
          <year>2009</year>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [Biggs u.
          <source>Tang</source>
          <year>2011</year>
          ]
          <article-title>BIGGS</article-title>
          , J. ; TANG,
          <string-name>
            <surname>C.</surname>
          </string-name>
          : Teaching for Quality Learning at University. 4th. Open University Press,
          <year>2011</year>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <source>[Bjørner 2006a] BJØRNER, .: SWE</source>
          , Vol.
          <volume>1</volume>
          : Abstraction and Modelling. Springer,
          <year>2006</year>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [Bjørner 2006b]
          <string-name>
            <surname>BJØRNER</surname>
            ,
            <given-names>D.: SWE</given-names>
          </string-name>
          , Vol.
          <volume>2</volume>
          :
          <source>Specification of Systems and Languages</source>
          . Springer,
          <year>2006</year>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [Bjørner 2006c]
          <string-name>
            <surname>BJØRNER</surname>
            ,
            <given-names>D.: SWE</given-names>
          </string-name>
          , Vol.
          <volume>3</volume>
          : Domains, Req. and
          <string-name>
            <given-names>Software</given-names>
            <surname>Design</surname>
          </string-name>
          . Springer,
          <year>2006</year>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <source>[Bloom</source>
          <year>1956</year>
          ] BLOOM,
          <string-name>
            <surname>B. S.</surname>
          </string-name>
          (Hrsg.):
          <source>Taxonomy of Educat. Objectives: Cognitive Domain. Longman</source>
          ,
          <year>1956</year>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [Cohen u. a. 2009
          <string-name>
            <surname>] COHEN</surname>
          </string-name>
          , E. u. a.:
          <article-title>VCC: A Practical System for Verifying Concurrent C</article-title>
          . In: BERGHOFER,
          <string-name>
            <surname>S.</surname>
          </string-name>
          (Hrsg.) u. a.:
          <source>TPHOLs Bd. 5674</source>
          , Springer,
          <year>2009</year>
          (LNCS), S.
          <fpage>23</fpage>
          -
          <lpage>42</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [Damm u.
          <source>Harel</source>
          <year>2001</year>
          ] DAMM,
          <string-name>
            <surname>W.</surname>
          </string-name>
          ; HAREL, D.:
          <article-title>LSCs: Breathing Life into Message Sequence Charts</article-title>
          .
          <source>In: FMSD</source>
          <volume>19</volume>
          (
          <year>2001</year>
          ), Juli, Nr. 1,
          <string-name>
            <surname>S.</surname>
          </string-name>
          45-
          <fpage>80</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          <source>[Glinz</source>
          <year>1996</year>
          ] GLINZ,
          <string-name>
            <surname>M.:</surname>
          </string-name>
          <article-title>The Teacher: “Concepts!” The Student: “Tools!”</article-title>
          .
          <source>In: Softwaret.-Trends</source>
          <volume>16</volume>
          (
          <year>1996</year>
          ),
          <source>Nr. 1</source>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          <source>[Hoare</source>
          <year>1969</year>
          ] HOARE,
          <string-name>
            <surname>C. A. R.:</surname>
          </string-name>
          <article-title>An axiomatic basis for computer programming</article-title>
          .
          <source>In: CACM</source>
          <volume>12</volume>
          (
          <year>1969</year>
          ), Nr. 10, S.
          <fpage>576</fpage>
          -
          <lpage>580</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          <source>[IEEE 1990] IEEE: Standard Glossary of Software Engineering Terminology</source>
          ,
          <year>1990</year>
          . - Std
          <volume>610</volume>
          .
          <fpage>12</fpage>
          -
          <lpage>1990</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [IEEE 1998]
          <article-title>IEEE: Recommended Practice for Software Req</article-title>
          . Specifications,
          <year>1998</year>
          . - Std 830-1998
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [ISO/IEC/IEEE 2010]
          <article-title>ISO/IEC/IEEE: Systems and software eng</article-title>
          .
          <source>- Vocabulary</source>
          ,
          <year>2010</year>
          . -
          <fpage>24765</fpage>
          :
          <year>2010</year>
          (E)
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [Klose u.
          <source>Lettrari</source>
          <year>2001</year>
          ]
          <article-title>KLOSE</article-title>
          ,
          <string-name>
            <surname>J. ; LETTRARI</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          :
          <article-title>Scenario-based Monitoring and Testing of Realtime UML models</article-title>
          . In: GOGOLLA,
          <string-name>
            <surname>M.</surname>
          </string-name>
          (Hrsg.) u. a.:
          <source>UML Bd. 2185</source>
          , Springer,
          <year>2001</year>
          (LNCS)
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [Klose u.
          <source>Wittke</source>
          <year>2001</year>
          ]
          <article-title>KLOSE</article-title>
          ,
          <string-name>
            <surname>J. ; WITTKE</surname>
          </string-name>
          ,
          <string-name>
            <surname>H.</surname>
          </string-name>
          :
          <article-title>An Automata Based Representation of Live Sequence Charts</article-title>
          . In: MARGARIA,
          <string-name>
            <surname>T.</surname>
          </string-name>
          (Hrsg.) u. a.
          <source>: TACAS</source>
          , Springer,
          <year>2001</year>
          (LNCS
          <year>2031</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [Krusche u. a. 2017] KRUSCHE,
          <string-name>
            <surname>S.</surname>
          </string-name>
          ; FRANKENBERG,
          <string-name>
            <surname>N.</surname>
          </string-name>
          <article-title>von ; AFIFI, S.: Experiences of a Software Engineering Course based on Interactive Learning</article-title>
          .
          <source>In: SEUH</source>
          ,
          <year>2017</year>
          , S.
          <fpage>32</fpage>
          -
          <lpage>40</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          <source>[Lamport</source>
          <year>2015</year>
          ] LAMPORT,
          <string-name>
            <surname>L.</surname>
          </string-name>
          :
          <article-title>Who builds a house without drawing blueprints?</article-title>
          <source>In: CACM</source>
          <volume>58</volume>
          (
          <year>2015</year>
          ),
          <year>Nr</year>
          . 4,
          <string-name>
            <surname>S.</surname>
          </string-name>
          38-
          <fpage>41</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [Langenfeld u. a. 2016]
          <article-title>LANGENFELD, V. ; POST, A. u. a.: Requirements Defects over a Project Lifetime</article-title>
          . In: DANEVA,
          <string-name>
            <surname>M.</surname>
          </string-name>
          (Hrsg.) u. a.:
          <source>REFSQ Bd. 9619</source>
          , Springer,
          <year>2016</year>
          (LNCS), S.
          <fpage>145</fpage>
          -
          <lpage>160</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [Larsen u. a. 1997] LARSEN,
          <string-name>
            <surname>K. G. ; PETTERSSON</surname>
          </string-name>
          ,
          <string-name>
            <surname>P.</surname>
          </string-name>
          ; YI,
          <string-name>
            <surname>W.:</surname>
          </string-name>
          <article-title>UPPAAL in a Nutshell</article-title>
          .
          <source>In: STTT 1</source>
          (
          <year>1997</year>
          ), Dezember, Nr. 1,
          <string-name>
            <surname>S.</surname>
          </string-name>
          134-
          <fpage>152</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [Lehmann u. a. 2015] LEHMANN, T. u. a.: Lecture Engineering. In: SCHMOLITZKY,
          <string-name>
            <surname>A.</surname>
          </string-name>
          (Hrsg.) u. a.:
          <source>SEUH Bd</source>
          .
          <volume>1332</volume>
          ,
          <string-name>
            <surname>CEUR-WS</surname>
          </string-name>
          ,
          <year>2015</year>
          , S.
          <fpage>103</fpage>
          -
          <lpage>109</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [Ludewig u.
          <source>Lichter</source>
          <year>2013</year>
          ]
          <article-title>LUDEWIG</article-title>
          ,
          <string-name>
            <surname>J. ; LICHTER</surname>
          </string-name>
          , H.:
          <article-title>Software Engineering</article-title>
          . 3rd. dpunkt,
          <year>2013</year>
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          <source>[OMG</source>
          <year>2006</year>
          ]
          <article-title>OMG: Object Constraint Language, Version 2</article-title>
          .0. formal/06-05-01,
          <year>2006</year>
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [Rupp u. a. 2014] RUPP, C. u. a.:
          <source>RequirementsEngineering und -Management. 6th. Hanser</source>
          ,
          <year>2014</year>
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [Sedelmaier u.
          <source>Landes</source>
          <year>2017</year>
          ] SEDELMAIER,
          <string-name>
            <given-names>Y.</given-names>
            ;
            <surname>LANDES</surname>
          </string-name>
          ,
          <string-name>
            <surname>D.</surname>
          </string-name>
          :
          <article-title>Experiences in Teaching and Learning Req. Engineering on a Sound Didactical Basis</article-title>
          . In: DAVOLI,
          <string-name>
            <surname>R.</surname>
          </string-name>
          (Hrsg.) u. a.:
          <source>ITiCSE</source>
          , ACM,
          <year>2017</year>
          , S.
          <fpage>116</fpage>
          -
          <lpage>121</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          <source>[Siegeris</source>
          <year>2017</year>
          ]
          <article-title>SIEGERIS</article-title>
          , J.: LearnTeamPlenum. In: SEUH,
          <year>2017</year>
          , S. 1-
          <fpage>7</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          <source>[Sommerville 2010] SOMMERVILLE, I.: Software Engineering. 9th. Pearson</source>
          ,
          <year>2010</year>
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [Uttl u. a. 2017] UTTL, B. u. a.:
          <article-title>Meta-analysis of faculty's teaching effectiveness: Student evaluation of teaching ratings and student learning are not re-</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          lated. In: Stud. Educat. Eval.
          <volume>54</volume>
          (
          <year>2017</year>
          ), S.
          <fpage>22</fpage>
          -
          <lpage>42</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          <source>[Westphal</source>
          <year>2018</year>
          ] WESTPHAL,
          <string-name>
            <surname>B.</surname>
          </string-name>
          :
          <article-title>An Undergraduate Requirements Engineering Curriculum with Formal Methods</article-title>
          . In: REET, IEEE,
          <year>2018</year>
          , S.
          <fpage>1</fpage>
          -
          <lpage>11</lpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>