<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=Anwendungsentwicklung_und_Softwarequalit%C3%A4t_%E2%80%93_Anforderungen_als_Nutzungsf%C3%A4lle_erfassen</id>
	<title>Anwendungsentwicklung und Softwarequalität – Anforderungen als Nutzungsfälle erfassen - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://staging.moocwiki.org/index.php?action=history&amp;feed=atom&amp;title=Anwendungsentwicklung_und_Softwarequalit%C3%A4t_%E2%80%93_Anforderungen_als_Nutzungsf%C3%A4lle_erfassen"/>
	<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=Anwendungsentwicklung_und_Softwarequalit%C3%A4t_%E2%80%93_Anforderungen_als_Nutzungsf%C3%A4lle_erfassen&amp;action=history"/>
	<updated>2026-10-10T13:33:51Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in MOOCsWiki Staging</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://staging.moocwiki.org/index.php?title=Anwendungsentwicklung_und_Softwarequalit%C3%A4t_%E2%80%93_Anforderungen_als_Nutzungsf%C3%A4lle_erfassen&amp;diff=63472&amp;oldid=prev</id>
		<title>Glanz: aiMOOC über GPT aiMOOC Action erstellt</title>
		<link rel="alternate" type="text/html" href="https://staging.moocwiki.org/index.php?title=Anwendungsentwicklung_und_Softwarequalit%C3%A4t_%E2%80%93_Anforderungen_als_Nutzungsf%C3%A4lle_erfassen&amp;diff=63472&amp;oldid=prev"/>
		<updated>2026-10-09T19:21:07Z</updated>

		<summary type="html">&lt;p&gt;aiMOOC über GPT aiMOOC Action erstellt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{T}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Einleitung =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Anwendungsentwicklung und Softwarequalität – Anforderungen als Nutzungsfälle erfassen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Zielgruppe:&amp;#039;&amp;#039;&amp;#039; Ausbildung Fachinformatiker/in Anwendungsentwicklung und verwandte IT-Berufe&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lernziel:&amp;#039;&amp;#039;&amp;#039; Du kannst Rollen und fachliche Ziele erkennen, Nutzungsfälle beschreiben und überprüfbare Ergebnisse mit Akzeptanztests nachweisen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ausbildungsfall:&amp;#039;&amp;#039;&amp;#039; Eine fiktive Lernwerkstatt benötigt eine Anwendung zur Reservierung von Werkzeugen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:UML Use Case diagram.svg|500px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Bildimpuls: Welche Elemente zeigen Rollen, Systemgrenzen und fachliche Ziele?&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Dein Lernpfad ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Einheit&lt;br /&gt;
! Schwerpunkt&lt;br /&gt;
! Zeit&lt;br /&gt;
|-&lt;br /&gt;
| A&lt;br /&gt;
| Rollen und Systemgrenzen&lt;br /&gt;
| 8 Minuten&lt;br /&gt;
|-&lt;br /&gt;
| B&lt;br /&gt;
| Nutzungsfälle und Ziele&lt;br /&gt;
| 10 Minuten&lt;br /&gt;
|-&lt;br /&gt;
n| C&lt;br /&gt;
| Szenarien und Ergebnisse&lt;br /&gt;
| 12 Minuten&lt;br /&gt;
|-&lt;br /&gt;
| D&lt;br /&gt;
| Akzeptanzkriterien und Qualität&lt;br /&gt;
| 12 Minuten&lt;br /&gt;
|-&lt;br /&gt;
| E&lt;br /&gt;
| Lokales Python-Testlabor&lt;br /&gt;
| 15 Minuten&lt;br /&gt;
|-&lt;br /&gt;
| F&lt;br /&gt;
| Erweiterungen und Transfer&lt;br /&gt;
| 10 Minuten&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Arbeitsregel:&amp;#039;&amp;#039;&amp;#039; Verwende ausschließlich fiktive Daten und eigene lokale Übungsdateien. Die Codebeispiele benötigen keine Netzwerkverbindung, keine Zugangsdaten und keine fremden Systeme. Sie dürfen nicht ungefragt mit Produktivanlagen oder Kundendaten verbunden werden.&lt;br /&gt;
&lt;br /&gt;
Externe Videos, Wikipedia und LearningApps sind optionale Online-Lernmedien. Ihre Einbettung kann Verbindungen zu Drittanbietern herstellen. Nutze sie nur, wenn dies für Deine Lernumgebung freigegeben ist. Die Programmierübungen funktionieren offline.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Ausbildungsfall: Die Lernwerkstatt =&lt;br /&gt;
&lt;br /&gt;
Die fiktive &amp;#039;&amp;#039;&amp;#039;Lernwerkstatt Nord&amp;#039;&amp;#039;&amp;#039; möchte Werkzeuge digital reservieren.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Rolle&lt;br /&gt;
! Fachliches Ziel&lt;br /&gt;
! Beobachtbares Ergebnis&lt;br /&gt;
|-&lt;br /&gt;
| Auszubildende Person&lt;br /&gt;
| Gerät reservieren&lt;br /&gt;
| Reservierung wird bestätigt&lt;br /&gt;
|-&lt;br /&gt;
| Werkstattverwaltung&lt;br /&gt;
| Gerätebestand pflegen&lt;br /&gt;
| Bestand ist aktualisiert&lt;br /&gt;
|-&lt;br /&gt;
| Auszubildende Person&lt;br /&gt;
| Eigene Reservierung prüfen&lt;br /&gt;
| Reservierungsstatus wird angezeigt&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Leitfrage:&amp;#039;&amp;#039;&amp;#039; Was muss die Anwendung für welche Rolle leisten, und woran erkennst Du, dass das Ziel erreicht wurde?&lt;br /&gt;
&lt;br /&gt;
Die Reservierung wird vollständig als Übungsprototyp umgesetzt. Die anderen Nutzungsfälle dienen zunächst als Modellierungsaufgaben.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lerneinheit A: Rollen und Systemgrenzen =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Was ist ein Akteur? ==&lt;br /&gt;
&lt;br /&gt;
Ein [[Akteur (UML)|Akteur]] bezeichnet eine &amp;#039;&amp;#039;&amp;#039;Rolle außerhalb des betrachteten Systems&amp;#039;&amp;#039;&amp;#039;. Eine Person kann mehrere Rollen übernehmen. Auch ein externes System kann Akteur sein.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Uml-UseCase-Akteur.svg|250px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Merksatz:&amp;#039;&amp;#039;&amp;#039; Beschreibe Rollen statt konkreter Personen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Weniger geeignet&lt;br /&gt;
! Besser&lt;br /&gt;
|-&lt;br /&gt;
| Mila Müller&lt;br /&gt;
| Auszubildende Person&lt;br /&gt;
|-&lt;br /&gt;
| Herr Schneider&lt;br /&gt;
| Werkstattverwaltung&lt;br /&gt;
|-&lt;br /&gt;
| Der Computer&lt;br /&gt;
| Externer Geräteverwaltungsdienst, falls tatsächlich beteiligt&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Was gehört zum System? ==&lt;br /&gt;
&lt;br /&gt;
Die [[Systemgrenze]] trennt das betrachtete System von seiner Umgebung.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Uml-UseCase-Beispiel1.svg|500px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Mini-Aufgabe:&amp;#039;&amp;#039;&amp;#039; Entscheide, ob die Auszubildendenrolle innerhalb oder außerhalb der Systemgrenze liegt.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Feedback:&amp;#039;&amp;#039;&amp;#039; Die Rolle liegt außerhalb. Sie interagiert mit der Anwendung, ist aber nicht selbst Teil des Softwaresystems.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lerneinheit B: Fachliche Ziele als Nutzungsfälle =&lt;br /&gt;
&lt;br /&gt;
Ein [[Anwendungsfall|Nutzungsfall beziehungsweise Use Case]] beschreibt ein von außen sichtbares Systemverhalten, das für mindestens einen Akteur ein sinnvolles Ergebnis liefert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Uml-UseCase-Anwendungsfall.svg|350px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Zu technisch oder zu klein&lt;br /&gt;
! Fachliches Ziel&lt;br /&gt;
|-&lt;br /&gt;
| Auf Schaltfläche klicken&lt;br /&gt;
| Werkzeug reservieren&lt;br /&gt;
|-&lt;br /&gt;
| Textfeld ausfüllen&lt;br /&gt;
| Reservierung suchen&lt;br /&gt;
|-&lt;br /&gt;
| Datenbankzeile anlegen&lt;br /&gt;
| Gerätebestand verwalten&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Ein [[Anwendungsfalldiagramm]] zeigt Akteure, Nutzungsfälle und Beziehungen. Es beschreibt &amp;#039;&amp;#039;&amp;#039;nicht&amp;#039;&amp;#039;&amp;#039; die zeitliche Reihenfolge der Verarbeitungsschritte.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|   https://www.youtube.com/watch?v=eQoC4GDzYbI   |500|center}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Videolernauftrag:&amp;#039;&amp;#039;&amp;#039; Stefan Macke erklärt das UML-Anwendungsfalldiagramm für IT-Ausbildungsberufe. Beachte besonders die Abschnitte zu Systemkontext, Akteuren und Anwendungsfällen ab etwa Minute 2:33. Die weiterführenden Beziehungen werden später benötigt.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Modellskizze für unseren Ausbildungsfall ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Auszubildende Person&lt;br /&gt;
         |&lt;br /&gt;
         v&lt;br /&gt;
+--------------------------------+&lt;br /&gt;
| Lernwerkstatt-System           |&lt;br /&gt;
|                                |&lt;br /&gt;
|   (Gerät reservieren)          |&lt;br /&gt;
|   (Reservierung prüfen)        |&lt;br /&gt;
|   (Gerätebestand pflegen)      |&lt;br /&gt;
|                                |&lt;br /&gt;
+--------------------------------+&lt;br /&gt;
         ^&lt;br /&gt;
         |&lt;br /&gt;
  Werkstattverwaltung&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Didaktische Skizze, kein vollständig normgerechtes UML-Diagramm. Die Rolle Werkstattverwaltung ist fachlich dem Nutzungsfall Gerätebestand pflegen zugeordnet.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Deine Aufgabe:&amp;#039;&amp;#039;&amp;#039; Zeichne daraus ein UML-Anwendungsfalldiagramm mit passenden Assoziationen und einer klaren Systemgrenze.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lerneinheit C: Nutzungsfälle präzise beschreiben =&lt;br /&gt;
&lt;br /&gt;
Für einen Nutzungsfall genügen nicht allein ein Titel und eine Ellipse. Ein prüfbares Modell braucht Ausgangslage, Auslöser, Ablauf und Ergebnis.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== UC-01: Gerät reservieren ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Merkmal&lt;br /&gt;
! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| ID&lt;br /&gt;
| UC-01&lt;br /&gt;
|-&lt;br /&gt;
| Name&lt;br /&gt;
| Gerät reservieren&lt;br /&gt;
|-&lt;br /&gt;
| Primärer Akteur&lt;br /&gt;
| Auszubildende Person&lt;br /&gt;
|-&lt;br /&gt;
| Ziel&lt;br /&gt;
| Ein verfügbares Gerät reservieren&lt;br /&gt;
|-&lt;br /&gt;
| Auslöser&lt;br /&gt;
| Die Rolle fordert eine Reservierung an&lt;br /&gt;
|-&lt;br /&gt;
| Vorbedingung&lt;br /&gt;
| Eine fiktive Nutzerkennung ist vorhanden; die Geräteauswahl kann erfolgen&lt;br /&gt;
|-&lt;br /&gt;
| Hauptablauf&lt;br /&gt;
| Gerät auswählen, Verfügbarkeit prüfen, Reservierung speichern, Ergebnis zurückgeben&lt;br /&gt;
|-&lt;br /&gt;
| Erfolgsnachbedingung&lt;br /&gt;
| Das Gerät ist im Übungsspeicher der Nutzerkennung zugeordnet&lt;br /&gt;
|-&lt;br /&gt;
| Alternative&lt;br /&gt;
| Bereits reserviertes Gerät wird abgewiesen&lt;br /&gt;
|-&lt;br /&gt;
| Ausnahme&lt;br /&gt;
| Eine unbekannte Gerätekennung wird zurückgewiesen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Hauptablauf und Alternativen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Situation&lt;br /&gt;
! Systemreaktion&lt;br /&gt;
! Ergebnis&lt;br /&gt;
|-&lt;br /&gt;
| Bekanntes, freies Gerät&lt;br /&gt;
| Reservierung eintragen&lt;br /&gt;
| BESTAETIGT&lt;br /&gt;
|-&lt;br /&gt;
| Bekanntes, belegtes Gerät&lt;br /&gt;
| Keine Änderung vornehmen&lt;br /&gt;
| BELEGT&lt;br /&gt;
|-&lt;br /&gt;
| Unbekanntes Gerät&lt;br /&gt;
| Keine Änderung vornehmen&lt;br /&gt;
| UNBEKANNT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Mini-Aufgabe:&amp;#039;&amp;#039;&amp;#039; Warum darf ein belegtes Werkzeug nicht nochmals reserviert werden?&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Feedback:&amp;#039;&amp;#039;&amp;#039; Zwei gleichzeitig gültige Reservierungen für dasselbe Gerät würden die festgelegte Geschäftsregel verletzen. Die Ablehnung verhindert einen widersprüchlichen Zustand.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lerneinheit D: Überprüfbare Ergebnisse und Softwarequalität =&lt;br /&gt;
&lt;br /&gt;
Eine gute [[Anforderung (Informatik)|Anforderung]] ist hinreichend eindeutig, nachvollziehbar, konsistent und überprüfbar.&lt;br /&gt;
&lt;br /&gt;
[[Akzeptanzkriterium|Akzeptanzkriterien]] übersetzen fachliche Erwartungen in beobachtbare Bedingungen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Gegeben – Wenn – Dann ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Gegeben:&amp;#039;&amp;#039;&amp;#039; Das Gerät W01 existiert und ist frei.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wenn:&amp;#039;&amp;#039;&amp;#039; AZUBI_A das Gerät W01 reserviert.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dann:&amp;#039;&amp;#039;&amp;#039; Das System liefert BESTAETIGT und speichert die Zuordnung W01 zu AZUBI_A.&lt;br /&gt;
&lt;br /&gt;
Dieses Schema beschreibt den Startzustand, das Ereignis und das erwartete Ergebnis.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Akzeptanzmatrix ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Kennung&lt;br /&gt;
! Ausgangszustand und Aktion&lt;br /&gt;
! Erwarteter Nachweis&lt;br /&gt;
|-&lt;br /&gt;
| AK1&lt;br /&gt;
| W01 frei, AZUBI_A reserviert&lt;br /&gt;
| BESTAETIGT und gespeicherte Zuordnung&lt;br /&gt;
|-&lt;br /&gt;
| AK2&lt;br /&gt;
| W01 belegt, AZUBI_B reserviert W01&lt;br /&gt;
| BELEGT und keine Zustandsänderung&lt;br /&gt;
|-&lt;br /&gt;
| AK3&lt;br /&gt;
| W99 unbekannt, Reservierung angefordert&lt;br /&gt;
| UNBEKANNT und keine Zustandsänderung&lt;br /&gt;
|-&lt;br /&gt;
| AK4&lt;br /&gt;
| W01 und W02 frei, zwei Reservierungen&lt;br /&gt;
| Zwei Bestätigungen und zwei gespeicherte Zuordnungen&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Qualitätsziel des Übungsprototyps:&amp;#039;&amp;#039;&amp;#039; Alle vier beschriebenen automatisierten Akzeptanzbeispiele sollen erfolgreich ausgeführt werden. Das bedeutet nicht, dass damit eine vollständige Produktfreigabe oder vollständige Testabdeckung erreicht ist.&lt;br /&gt;
&lt;br /&gt;
Zur [[Softwarequalität]] gehören neben der funktionalen Eignung weitere Merkmale. Die Norm [[ISO/IEC 25010]] beschreibt ein Modell für Software- und ICT-Produktqualität. Für unseren Prototyp sind insbesondere funktionale Korrektheit, Zuverlässigkeit der Ergebnisse und Schutz der Übungsdaten relevant.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Testdaten visualisieren ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Fiktive Beispieldaten:&amp;#039;&amp;#039;&amp;#039; zwölf angenommene Reservierungsversuche für eine spätere Auswertung. Diese Häufigkeiten sind keine Messung der vier automatisierten Tests.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Ergebnis&lt;br /&gt;
! Anzahl&lt;br /&gt;
! Balken&lt;br /&gt;
|-&lt;br /&gt;
| BESTAETIGT&lt;br /&gt;
| 7&lt;br /&gt;
| ███████&lt;br /&gt;
|-&lt;br /&gt;
| BELEGT&lt;br /&gt;
| 3&lt;br /&gt;
| ███&lt;br /&gt;
|-&lt;br /&gt;
| UNBEKANNT&lt;br /&gt;
| 2&lt;br /&gt;
| ██&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Summe&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;12&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;████████████&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Auswertung:&amp;#039;&amp;#039;&amp;#039; Sieben von zwölf Anfragen waren erfolgreich. Die übrigen fünf Anfragen benötigen eine fachlich definierte Rückmeldung. Eine Ablehnung kann korrektes Verhalten sein und ist nicht automatisch ein Softwarefehler.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lerneinheit E: Lokales Python-Testlabor =&lt;br /&gt;
&lt;br /&gt;
Jetzt verbindest Du den Nutzungsfall mit überprüfbarem Programmverhalten.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Voraussetzung:&amp;#039;&amp;#039;&amp;#039; Lokal installiertes Python 3 und ein selbst angelegter Übungsordner. Es werden nur die Python-Standardbibliothek und fiktive Kennungen verwendet.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sicherheitsrahmen:&amp;#039;&amp;#039;&amp;#039; Keine Webanfragen, keine Datenbank, keine Zugangsdaten, keine echten Namen und keine Verbindung zu Produktivsystemen. Die Reservierungen bleiben im Arbeitsspeicher und werden beim Beenden verworfen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Codebeispiel 1: Interaktive Werkzeugreservierung ==&lt;br /&gt;
&lt;br /&gt;
Speichere den folgenden vollständigen Code als &amp;#039;&amp;#039;&amp;#039;werkstatt.py&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;Lokale Lernwerkstatt: nur fiktive Kennungen und RAM.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
GERAETE = {&amp;quot;W01&amp;quot;: &amp;quot;Akkuschrauber&amp;quot;, &amp;quot;W02&amp;quot;: &amp;quot;Multimeter&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
def reservieren(person, geraet, belegt):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Ergebnis ohne Netz- oder Datenbankzugriff.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    if geraet not in GERAETE:&lt;br /&gt;
        return &amp;quot;UNBEKANNT&amp;quot;&lt;br /&gt;
    if geraet in belegt:&lt;br /&gt;
        return &amp;quot;BELEGT&amp;quot;&lt;br /&gt;
    belegt[geraet] = person&lt;br /&gt;
    return &amp;quot;BESTAETIGT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    belegung = {}&lt;br /&gt;
    print(&amp;quot;Übungsmodus: W01 oder W02; X beendet.&amp;quot;)&lt;br /&gt;
    while True:&lt;br /&gt;
        geraet = input(&amp;quot;Gerätekennung: &amp;quot;).strip().upper()&lt;br /&gt;
        if geraet == &amp;quot;X&amp;quot;:&lt;br /&gt;
            break&lt;br /&gt;
        print(&amp;quot;Ergebnis:&amp;quot;,&lt;br /&gt;
              reservieren(&amp;quot;AZUBI_A&amp;quot;, geraet, belegung))&lt;br /&gt;
        print(&amp;quot;RAM-Zustand:&amp;quot;, belegung)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lokal starten:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python werkstatt.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls Dein System Python über den Befehl &amp;lt;code&amp;gt;python3&amp;lt;/code&amp;gt; startet, verwende stattdessen diesen Befehl.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Probiere nacheinander:&amp;#039;&amp;#039;&amp;#039; W01, W01, W99, W02 und X.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Eingabe&lt;br /&gt;
! Erwartete Ausgabe&lt;br /&gt;
|-&lt;br /&gt;
| W01&lt;br /&gt;
| BESTAETIGT&lt;br /&gt;
|-&lt;br /&gt;
| W01&lt;br /&gt;
| BELEGT&lt;br /&gt;
|-&lt;br /&gt;
| W99&lt;br /&gt;
| UNBEKANNT&lt;br /&gt;
|-&lt;br /&gt;
| W02&lt;br /&gt;
| BESTAETIGT&lt;br /&gt;
|-&lt;br /&gt;
| X&lt;br /&gt;
| Ende der Eingabe&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Begründetes Feedback:&amp;#039;&amp;#039;&amp;#039; Der zweite Versuch mit W01 muss BELEGT liefern, weil die erste Reservierung noch im Speicher steht. W99 ist nicht im fiktiven Gerätekatalog enthalten. W02 bleibt unabhängig von W01 reservierbar.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Codebeispiel 2: Isolierte automatisierte Tests ==&lt;br /&gt;
&lt;br /&gt;
Speichere die folgende Datei als &amp;#039;&amp;#039;&amp;#039;test_werkstatt.py&amp;#039;&amp;#039;&amp;#039; im selben lokalen Ordner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import unittest&lt;br /&gt;
from werkstatt import reservieren&lt;br /&gt;
&lt;br /&gt;
class ReservierungTest(unittest.TestCase):&lt;br /&gt;
    def setUp(self):&lt;br /&gt;
        self.belegt = {}  # jeder Test beginnt isoliert&lt;br /&gt;
&lt;br /&gt;
    def test_ak1_erfolg(self):&lt;br /&gt;
        self.assertEqual(&lt;br /&gt;
            reservieren(&amp;quot;AZUBI_A&amp;quot;, &amp;quot;W01&amp;quot;, self.belegt),&lt;br /&gt;
            &amp;quot;BESTAETIGT&amp;quot;)&lt;br /&gt;
        self.assertEqual(self.belegt[&amp;quot;W01&amp;quot;], &amp;quot;AZUBI_A&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    def test_ak2_belegt(self):&lt;br /&gt;
        self.belegt[&amp;quot;W01&amp;quot;] = &amp;quot;AZUBI_A&amp;quot;&lt;br /&gt;
        self.assertEqual(&lt;br /&gt;
            reservieren(&amp;quot;AZUBI_B&amp;quot;, &amp;quot;W01&amp;quot;, self.belegt),&lt;br /&gt;
            &amp;quot;BELEGT&amp;quot;)&lt;br /&gt;
        self.assertEqual(&lt;br /&gt;
            self.belegt, {&amp;quot;W01&amp;quot;: &amp;quot;AZUBI_A&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
    def test_ak3_unbekannt(self):&lt;br /&gt;
        self.assertEqual(&lt;br /&gt;
            reservieren(&amp;quot;AZUBI_A&amp;quot;, &amp;quot;W99&amp;quot;, self.belegt),&lt;br /&gt;
            &amp;quot;UNBEKANNT&amp;quot;)&lt;br /&gt;
        self.assertEqual(self.belegt, {})&lt;br /&gt;
&lt;br /&gt;
    def test_ak4_zwei_geraete(self):&lt;br /&gt;
        self.assertEqual(&lt;br /&gt;
            reservieren(&amp;quot;AZUBI_A&amp;quot;, &amp;quot;W01&amp;quot;, self.belegt),&lt;br /&gt;
            &amp;quot;BESTAETIGT&amp;quot;)&lt;br /&gt;
        self.assertEqual(&lt;br /&gt;
            reservieren(&amp;quot;AZUBI_B&amp;quot;, &amp;quot;W02&amp;quot;, self.belegt),&lt;br /&gt;
            &amp;quot;BESTAETIGT&amp;quot;)&lt;br /&gt;
        self.assertEqual(len(self.belegt), 2)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    unittest.main()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Testaufruf im lokalen Übungsordner:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python -m unittest -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Testdatei wird anhand ihres Dateinamens erkannt. Bei korrekter unveränderter Übernahme werden vier erfolgreiche Tests erwartet.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warum ist das isoliert?&amp;#039;&amp;#039;&amp;#039; Die Methode &amp;lt;code&amp;gt;setUp&amp;lt;/code&amp;gt; erzeugt für jeden Test einen eigenen leeren Speicherzustand. Damit beeinflussen die Reservierungen eines Tests nicht die anderen Tests.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|   https://www.youtube.com/watch?v=n4YPBuTkXYw   |500|center}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Video: Einführung in Python-Unittests von Datamics.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|   https://www.youtube.com/watch?v=ZQD4M3jSA1s   |500|center}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Video: Kurzdemo des Python-Unittest-Frameworks von Stefan Helmert.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Grenzen des Prototyps ==&lt;br /&gt;
&lt;br /&gt;
Der Prototyp überprüft weder eine reale Identität noch Berechtigungen. Auch gleichzeitige Zugriffe, dauerhafte Speicherung und eine Benutzeroberfläche sind nicht implementiert. Diese Punkte benötigen bei einer echten Anwendung zusätzliche Anforderungen und Tests.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Mini-Experiment:&amp;#039;&amp;#039;&amp;#039; Ändere in einer lokalen Kopie bei belegten Geräten den Rückgabewert von BELEGT zu BESTAETIGT. Führe die Tests erneut aus und mache die Änderung anschließend rückgängig.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Feedback:&amp;#039;&amp;#039;&amp;#039; Der Test zu AK2 muss fehlschlagen. Damit wird erkennbar, dass automatisierte Prüfungen eine konkrete Abweichung zwischen Erwartung und Implementierung anzeigen können.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lerneinheit F: Beziehungen und Transfer =&lt;br /&gt;
&lt;br /&gt;
Zusammenhänge zwischen Nutzungsfällen können in UML zusätzlich modelliert werden.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Include und Extend ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Uml-UseCase-Include.svg|500px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;include:&amp;#039;&amp;#039;&amp;#039; Ein Nutzungsfall bindet das Verhalten eines anderen Nutzungsfalls als verpflichtenden Bestandteil ein.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Uml-UseCase-Extend.svg|500px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;extend:&amp;#039;&amp;#039;&amp;#039; Ein Nutzungsfall ergänzt einen anderen unter festgelegten Bedingungen um optionales Verhalten.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Wichtig:&amp;#039;&amp;#039;&amp;#039; Verwende diese Beziehungen nur, wenn die fachlichen Voraussetzungen erfüllt sind. Nicht jede gemeinsame Programmanweisung ist ein eigener Nutzungsfall.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Uml-UseCase-Generalisierung2.svg|350px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Zusatz: Auch Akteure können durch Generalisierung in Beziehung stehen. Prüfe dabei, ob tatsächlich eine sinnvolle Rollenverallgemeinerung vorliegt.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Ein weiteres Modell betrachten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Se-lib course portal use case diagram.svg|500px|rahmenlos|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Transferfrage:&amp;#039;&amp;#039;&amp;#039; Welche externen Rollen und fachlichen Ziele lassen sich in diesem Diagramm erkennen? Wie würdest Du für einen Nutzungsfall ein überprüfbares Ergebnis formulieren?&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Feedback:&amp;#039;&amp;#039;&amp;#039; Ein gutes Ergebnis nennt einen von außen beobachtbaren Zustand und nicht nur eine technische Funktion oder einen Klick.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Gestufte Lernhilfen =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Stufe&lt;br /&gt;
! Hilfe&lt;br /&gt;
! Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Hilfe 1: Impuls&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Frage nach Rolle und Nutzen.&lt;br /&gt;
| Wer braucht welches Ergebnis?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Hilfe 2: Gerüst&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Nutze eine feste Satzstruktur.&lt;br /&gt;
| Als Rolle möchte ich Ziel, damit Nutzen entsteht.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Hilfe 3: Muster&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Vergleiche mit einem prüfbaren Beispiel.&lt;br /&gt;
| Als Auszubildende Person möchte ich W01 reservieren, damit ich das Gerät später nutzen kann.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Für Tests:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Stufe&lt;br /&gt;
! Vorgehen&lt;br /&gt;
|-&lt;br /&gt;
| Impuls&lt;br /&gt;
| Welchen Zustand hat das System vor der Aktion?&lt;br /&gt;
|-&lt;br /&gt;
| Gerüst&lt;br /&gt;
| Formuliere Gegeben – Wenn – Dann.&lt;br /&gt;
|-&lt;br /&gt;
| Muster&lt;br /&gt;
| W01 frei, AZUBI_A reserviert, Ergebnis BESTAETIGT und gespeicherte Zuordnung.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Interaktive Aufgaben =&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Quiz: Teste Dein Wissen ==&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was bezeichnet ein Akteur im UML-Nutzungsfallmodell?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Eine externe Rolle, die mit dem System interagiert)&lt;br /&gt;
(!Eine Datenbanktabelle)&lt;br /&gt;
(!Eine Programmiersprache)&lt;br /&gt;
(!Eine beliebige interne Methode)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welche Aufgabe hat die Systemgrenze?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Sie trennt das betrachtete System von seiner Umgebung)&lt;br /&gt;
(!Sie bestimmt die Bildschirmauflösung)&lt;br /&gt;
(!Sie legt die Anzahl der Programmiersprachen fest)&lt;br /&gt;
(!Sie speichert die Benutzerkennungen)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welches Beispiel beschreibt ein fachliches Ziel?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Gerät reservieren)&lt;br /&gt;
(!Schaltfläche anklicken)&lt;br /&gt;
(!Variable deklarieren)&lt;br /&gt;
(!Schriftfarbe ändern)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was zeigt ein Anwendungsfalldiagramm normalerweise nicht?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Die genaue zeitliche Reihenfolge aller Verarbeitungsschritte)&lt;br /&gt;
(!Die beteiligten Akteure)&lt;br /&gt;
(!Die Namen der Nutzungsfälle)&lt;br /&gt;
(!Die Beziehungen zwischen Akteuren und Nutzungsfällen)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was gehört zur erfolgreichen Nachbedingung von UC-01?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Das Gerät ist der fiktiven Nutzerkennung zugeordnet)&lt;br /&gt;
(!Die gesamte Anwendung wird gelöscht)&lt;br /&gt;
(!Das Gerät wird automatisch beschädigt)&lt;br /&gt;
(!Die Systemgrenze verschwindet)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welches Ergebnis ist für ein bereits reserviertes Gerät vorgesehen?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(BELEGT)&lt;br /&gt;
(!UNBEKANNT)&lt;br /&gt;
(!BESTAETIGT)&lt;br /&gt;
(!NEUSTART)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Was beschreibt der Dann-Teil eines Akzeptanzkriteriums?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Das erwartete beobachtbare Ergebnis)&lt;br /&gt;
(!Nur den Namen der entwickelnden Person)&lt;br /&gt;
(!Nur die installierte Python-Version)&lt;br /&gt;
(!Eine beliebige grafische Gestaltung)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welche Anforderung ist am besten überprüfbar?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Eine zweite Reservierung desselben Geräts wird mit BELEGT abgewiesen)&lt;br /&gt;
(!Die Anwendung soll irgendwie modern sein)&lt;br /&gt;
(!Die Reservierung soll sich besonders gut anfühlen)&lt;br /&gt;
(!Das System soll möglichst schön funktionieren)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Warum wird im Test vor jedem Testfall ein leerer Speicher angelegt?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Damit sich die Testfälle gegenseitig nicht beeinflussen)&lt;br /&gt;
(!Damit alle Reservierungen dauerhaft erhalten bleiben)&lt;br /&gt;
(!Damit ein fremder Server gestartet wird)&lt;br /&gt;
(!Damit vorhandene Kundendaten überschrieben werden)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{MC}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Welche Testumgebung ist für diesen Kurs vorgesehen?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
(Ein eigener lokaler Übungsordner mit fiktiven Daten)&lt;br /&gt;
(!Ein fremder Produktionsserver ohne Zustimmung)&lt;br /&gt;
(!Eine Kundendatenbank mit echten Personendaten)&lt;br /&gt;
(!Ein öffentlich erreichbares System mit unbekannter Berechtigung)&lt;br /&gt;
&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Memory ==&lt;br /&gt;
&lt;br /&gt;
Finde die zusammengehörenden Fachbegriffe und Erklärungen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;memo-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Akteur || Externe Rolle mit Systeminteraktion&lt;br /&gt;
|-&lt;br /&gt;
| Systemgrenze || Trennung von System und Umgebung&lt;br /&gt;
|-&lt;br /&gt;
| Nutzungsfall || Fachliches Ziel mit beobachtbarem Ergebnis&lt;br /&gt;
|-&lt;br /&gt;
| Vorbedingung || Erforderlicher Ausgangszustand&lt;br /&gt;
|-&lt;br /&gt;
| Nachbedingung || Überprüfbarer Endzustand&lt;br /&gt;
|-&lt;br /&gt;
| Alternativablauf || Abweichender fachlich definierter Verlauf&lt;br /&gt;
|-&lt;br /&gt;
| Akzeptanzkriterium || Bedingung für die fachliche Annahme&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Drag and Drop ==&lt;br /&gt;
&lt;br /&gt;
Ordne die Begriffe den Beschreibungen zu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;lueckentext-quiz&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Ordne die richtigen Begriffe zu.&lt;br /&gt;
! Thema&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Auszubildende Person&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Reservierung anfordern&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Werkstattverwaltung&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Gerätebestand verwalten&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Systemgrenze&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Innen und außen unterscheiden&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Nachbedingung&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Gespeicherte Zuordnung nachweisen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Alternativablauf&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Bereits belegtes Gerät behandeln&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Akzeptanztest&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| Erwartetes Verhalten überprüfen&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Kreuzworträtsel ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;kreuzwort-quiz&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| AKTEUR || Wie heißt eine externe Rolle im UML-Modell?&lt;br /&gt;
|-&lt;br /&gt;
| SYSTEMGRENZE || Welches Modellelement trennt das betrachtete System von seiner Umgebung?&lt;br /&gt;
|-&lt;br /&gt;
| SZENARIO || Wie nennt man eine konkrete Abfolge von Interaktionen innerhalb eines Nutzungsfalls?&lt;br /&gt;
|-&lt;br /&gt;
| VORBEDINGUNG || Wie heißt ein notwendiger Ausgangszustand für einen Ablauf?&lt;br /&gt;
|-&lt;br /&gt;
| NACHBEDINGUNG || Wie heißt ein überprüfbarer Zustand nach einem Ablauf?&lt;br /&gt;
|-&lt;br /&gt;
| RESERVIERUNG || Wie heißt die Zuordnung eines Geräts zu einer Person in unserem Ausbildungsfall?&lt;br /&gt;
|}&lt;br /&gt;
{{E}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== LearningApps ==&lt;br /&gt;
&lt;br /&gt;
Weitere Übungen kannst Du über die thematische Suche von LearningApps finden. Es handelt sich um einen externen Online-Dienst; nutze ihn nur bei freigegebenem Internetzugang.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://learningapps.org/index.php?s=Anwendungsentwicklung+und+Softwarequalität+-+Anforderungen+als+Nutzungsfälle+erfassen &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Lückentext ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;quiz display=simple&amp;gt;&lt;br /&gt;
{&amp;#039;&amp;#039;&amp;#039;Vervollständige den Text.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|type=&amp;quot;{}&amp;quot;}&lt;br /&gt;
Ein Akteur bezeichnet eine { Rolle } außerhalb des betrachteten Systems.&lt;br /&gt;
&lt;br /&gt;
Die Trennung zwischen System und Umgebung heißt { Systemgrenze }.&lt;br /&gt;
&lt;br /&gt;
Ein Nutzungsfall verfolgt ein fachliches { Ziel }.&lt;br /&gt;
&lt;br /&gt;
Ein Nutzungsfall wird in einem UML-Anwendungsfalldiagramm gewöhnlich durch eine { Ellipse } dargestellt.&lt;br /&gt;
&lt;br /&gt;
Ein notwendiger Ausgangszustand heißt { Vorbedingung }.&lt;br /&gt;
&lt;br /&gt;
Der erfolgreiche Standardverlauf wird als { Hauptablauf } beschrieben.&lt;br /&gt;
&lt;br /&gt;
Ein abweichender Verlauf wird als { Alternativablauf } dokumentiert.&lt;br /&gt;
&lt;br /&gt;
Ein überprüfbarer Zustand nach der Durchführung heißt { Nachbedingung }.&lt;br /&gt;
&lt;br /&gt;
Für die fachliche Überprüfung werden { Akzeptanzkriterien } formuliert.&lt;br /&gt;
&lt;br /&gt;
Eine erfolgreiche Reservierung liefert im lokalen Prototyp den Status { BESTAETIGT }.&lt;br /&gt;
&lt;br /&gt;
Eine bereits bestehende Reservierung führt zur Rückmeldung { BELEGT }.&lt;br /&gt;
&lt;br /&gt;
Das verwendete Python-Testframework heißt { unittest }.&lt;br /&gt;
&lt;br /&gt;
Die praktischen Übungen werden mit fiktiven Daten { lokal } ausgeführt.&lt;br /&gt;
&amp;lt;/quiz&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Offene Aufgaben =&lt;br /&gt;
&lt;br /&gt;
Bearbeite die Aufgaben in Deinem eigenen lokalen Übungsbereich. Erstelle ausschließlich fiktive Beispiele.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Leicht – Basisaufgaben ===&lt;br /&gt;
&lt;br /&gt;
# [[Akteur (UML)|Rollen erkennen]]: Benenne die beiden Rollen aus der Lernwerkstatt und erkläre ihren jeweiligen Nutzen.&lt;br /&gt;
# [[Anwendungsfall|Ziele formulieren]]: Formuliere drei fachliche Ziele für die Lernwerkstatt.&lt;br /&gt;
# [[Systemgrenze|System abgrenzen]]: Zeichne die Grenze zwischen Rollen und Anwendung.&lt;br /&gt;
# [[Anforderung (Informatik)|Anforderungen unterscheiden]]: Formuliere fünf Aussagen und ordne sie als fachliches Ziel, technische Lösung oder Qualitätsanforderung ein.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Standard – Anwendungsaufgaben ===&lt;br /&gt;
&lt;br /&gt;
# [[Anwendungsfall|UC-01 dokumentieren]]: Erstelle eine vollständige Nutzungsfallbeschreibung mit Vorbedingung, Hauptablauf und Alternativen.&lt;br /&gt;
# [[Akzeptanztest|Akzeptanztests entwerfen]]: Schreibe drei Gegeben-Wenn-Dann-Szenarien und begründe die erwarteten Ergebnisse.&lt;br /&gt;
# [[Python (Programmiersprache)|Code variieren]]: Führe das lokale Python-Beispiel aus und untersuche die Ergebnisse verschiedener fiktiver Gerätekennungen.&lt;br /&gt;
# [[Softwaretest|Testbericht erstellen]]: Dokumentiere die vier automatisierten Tests, ihre Erwartungen und die beobachteten Resultate in einer Tabelle.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
=== Schwer – Transferaufgaben ===&lt;br /&gt;
&lt;br /&gt;
# [[Geschäftsregel|Neue Regel entwickeln]]: Entwirf eine Begrenzung auf höchstens zwei gleichzeitige Reservierungen pro fiktiver Nutzerkennung und ergänze geeignete lokale Tests.&lt;br /&gt;
# [[Anwendungsfalldiagramm|Neuen Nutzungsfall modellieren]]: Ergänze Gerät stornieren mit eigenen Vorbedingungen, Erfolgsnachbedingungen und mindestens zwei Ausnahmefällen.&lt;br /&gt;
# [[Softwarequalität|Qualitätsreview durchführen]]: Untersuche den Prototyp bezüglich Rollenprüfung, gleichzeitiger Zugriffe und Datenspeicherung und leite überprüfbare zusätzliche Anforderungen ab.&lt;br /&gt;
# [[Requirements Engineering|Fiktives Anforderungsinterview]]: Führe ein Rollenspiel zwischen Werkstattverwaltung und Entwicklungsteam durch und dokumentiere offene Fragen, Annahmen und überprüfbare Ergebnisse.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Begründetes Feedback zu den Aufgaben ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Kompetenzstufe&lt;br /&gt;
! Gutes Ergebnis&lt;br /&gt;
! Überarbeiten, wenn ...&lt;br /&gt;
|-&lt;br /&gt;
| Basis&lt;br /&gt;
| Rolle und fachliches Ziel sind klar getrennt.&lt;br /&gt;
| Nur konkrete Personen oder Schaltflächen beschrieben werden, weil dadurch der fachliche Nutzen unklar bleibt.&lt;br /&gt;
|-&lt;br /&gt;
| Anwendung&lt;br /&gt;
| Ausgangszustand, Aktion und erwartetes Ergebnis sind widerspruchsfrei und testbar.&lt;br /&gt;
| Eine erwartete Zustandsänderung fehlt, weil der Test dann ein falsches Systemverhalten übersehen könnte.&lt;br /&gt;
|-&lt;br /&gt;
| Transfer&lt;br /&gt;
| Neue Geschäftsregeln sind begründet, berücksichtigen Fehlerfälle und besitzen eigene Prüfnachweise.&lt;br /&gt;
| Nur der Erfolgsfall behandelt wird, weil widersprüchliche Zustände oder unzulässige Reservierungen unentdeckt bleiben können.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{:Offene Aufgabe - MOOC erstellen}}&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lernkontrolle =&lt;br /&gt;
&lt;br /&gt;
Bearbeite die folgenden Aufgaben ohne Übertragung von Daten an externe Testdienste.&lt;br /&gt;
&lt;br /&gt;
# [[Anforderungsanalyse|Unklare Anforderung verbessern]]: Die Werkstattleitung verlangt eine schnelle und einfache Reservierung. Erkläre, warum diese Aussage nicht ausreichend prüfbar ist, und formuliere zwei konkrete Qualitätskriterien mit nachvollziehbarer Messmethode.&lt;br /&gt;
# [[Anwendungsfall|Ziel und Technik unterscheiden]]: Ein Entwicklerteam dokumentiert Datenbankeintrag anlegen als eigenständigen Nutzungsfall. Bewerte dieses Vorgehen anhand des fachlichen Nutzens und schlage eine bessere Modellierung vor.&lt;br /&gt;
# [[Softwaretest|Fehlerfall bewerten]]: Ein bereits belegtes Gerät wird ein zweites Mal bestätigt. Leite aus der fachlichen Regel die erforderliche Reaktion, die betroffenen Akzeptanzkriterien und geeignete Testfälle ab.&lt;br /&gt;
# [[Systemgrenze|Systemgrenze verändern]]: Ein externer Reservierungsdienst soll künftig beteiligt werden. Erläutere, wie sich Systemkontext, Akteure, Verantwortlichkeiten und Testanforderungen verändern können.&lt;br /&gt;
# [[Softwarequalität|Qualitätsrisiken analysieren]]: Zwei Reservierungsanfragen treffen nahezu gleichzeitig ein. Erkläre, weshalb die bisherigen lokalen Tests dafür nicht ausreichen und welche zusätzlichen Prüfungen in einer autorisierten Testumgebung erforderlich wären.&lt;br /&gt;
# [[Anforderungsmanagement|Änderungen nachvollziehen]]: Die Werkstattleitung möchte eine Stornierung ermöglichen. Beschreibe, welche Nutzungsfalltexte, Akzeptanzkriterien, Tests und Dokumentationen angepasst werden müssen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Bewertungshinweis:&amp;#039;&amp;#039;&amp;#039; Gute Antworten enthalten jeweils eine fachliche Begründung, ein konkretes Beispiel und einen überprüfbaren Nachweis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Lernnachweis =&lt;br /&gt;
&lt;br /&gt;
Für Deinen Lernnachweis erstellst Du ein kompaktes Portfolio zum fiktiven Ausbildungsfall.&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Rollenmodell:&amp;#039;&amp;#039;&amp;#039; Mindestens zwei Rollen mit ihren fachlichen Zielen.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Systemmodell:&amp;#039;&amp;#039;&amp;#039; Ein verständliches Anwendungsfalldiagramm mit abgegrenztem System.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Nutzungsfallbeschreibung:&amp;#039;&amp;#039;&amp;#039; UC-01 mit Auslöser, Vorbedingung, Hauptablauf, Alternativen und Nachbedingungen.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Akzeptanzmatrix:&amp;#039;&amp;#039;&amp;#039; Mindestens vier nachvollziehbare und überprüfbare Kriterien.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Lokaler Prototyp:&amp;#039;&amp;#039;&amp;#039; Lauffähige Python-Dateien mit ausschließlich fiktiven Daten.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Testnachweis:&amp;#039;&amp;#039;&amp;#039; Protokoll der vier automatisierten Prüfungen und Erläuterung ihrer Aussagekraft.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Reflexion:&amp;#039;&amp;#039;&amp;#039; Mindestens drei Grenzen des Prototyps und passende Vorschläge zur Qualitätssicherung.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beurteilungsmaßstab:&amp;#039;&amp;#039;&amp;#039; Fachliche Korrektheit, Prüfbarkeit, Konsistenz zwischen Nutzungsfall und Tests, sichere lokale Durchführung und begründete Transferleistung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Fachquellen und Medienrechte =&lt;br /&gt;
&lt;br /&gt;
Die fachliche Darstellung orientiert sich an den folgenden überprüfbaren Quellen:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;IREB – Requirements Engineering:&amp;#039;&amp;#039;&amp;#039; [https://cpre.ireb.org/de/downloads-and-resources/downloads CPRE Foundation Level – Lehrplan und weiterführende Unterlagen]. Die Unterlagen dienen als fachliche Referenz und werden hier nicht als frei nachnutzbare Volltexte übernommen.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;UML:&amp;#039;&amp;#039;&amp;#039; [https://de.wikipedia.org/wiki/Anwendungsfall_%28UML%29 Anwendungsfall in der UML] und [https://de.wikipedia.org/wiki/Anwendungsfalldiagramm Anwendungsfalldiagramm].&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Offenes Unterrichtsmaterial:&amp;#039;&amp;#039;&amp;#039; [https://oer-informatik.de/uml-usecase OER Informatik – UML-Anwendungsfalldiagramme].&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Produktqualität:&amp;#039;&amp;#039;&amp;#039; [https://www.iso.org/standard/78176.html ISO/IEC 25010:2023]. Die Norm wird als Referenz genannt, ihr urheberrechtlich geschützter Volltext wird nicht reproduziert.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Akzeptanzszenarien:&amp;#039;&amp;#039;&amp;#039; [https://agilealliance.org/glossary/given-when-then/ Agile Alliance – Given, When, Then].&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Python-Tests:&amp;#039;&amp;#039;&amp;#039; [https://docs.python.org/de/3.11/library/unittest.html Offizielle Python-Dokumentation zu unittest].&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Bildnachweise ==&lt;br /&gt;
&lt;br /&gt;
Die verwendeten Abbildungen sind auf Wikimedia Commons dokumentiert. Sie werden unverändert eingebunden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stkl – CC BY-SA 3.0:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# [https://commons.wikimedia.org/wiki/File:Uml-UseCase-Akteur.svg Akteur]&lt;br /&gt;
# [https://commons.wikimedia.org/wiki/File:Uml-UseCase-Anwendungsfall.svg Anwendungsfall]&lt;br /&gt;
# [https://commons.wikimedia.org/wiki/File:Uml-UseCase-Beispiel1.svg Anwendungsfallbeispiel]&lt;br /&gt;
# [https://commons.wikimedia.org/wiki/File:Uml-UseCase-Include.svg Include-Beziehung]&lt;br /&gt;
# [https://commons.wikimedia.org/wiki/File:Uml-UseCase-Extend.svg Extend-Beziehung]&lt;br /&gt;
# [https://commons.wikimedia.org/wiki/File:Uml-UseCase-Generalisierung2.svg Generalisierung von Akteuren]&lt;br /&gt;
&lt;br /&gt;
Lizenz: [https://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike 3.0].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Slashme – CC BY-SA 4.0:&amp;#039;&amp;#039;&amp;#039; [https://commons.wikimedia.org/wiki/File:UML_Use_Case_diagram.svg UML Use Case diagram]. Lizenz: [https://creativecommons.org/licenses/by-sa/4.0/ CC BY-SA 4.0].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Mudcap – CC0 1.0:&amp;#039;&amp;#039;&amp;#039; [https://commons.wikimedia.org/wiki/File:Se-lib_course_portal_use_case_diagram.svg Se-lib course portal use case diagram]. Lizenz: [https://creativecommons.org/publicdomain/zero/1.0/ CC0 1.0].&lt;br /&gt;
&lt;br /&gt;
Die jeweiligen Commons-Dateiseiten enthalten weitere Angaben zu Entstehung, Quellen und gegebenenfalls ursprünglichen Vorlagen.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
== Videonachweise ==&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Stefan Macke:&amp;#039;&amp;#039;&amp;#039; UML-Anwendungsfalldiagramm für die IT-Berufe. Verifiziertes YouTube-Video: https://www.youtube.com/watch?v=eQoC4GDzYbI&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Datamics:&amp;#039;&amp;#039;&amp;#039; Python Tutorial – Code testen mit Unittest. Verifiziertes YouTube-Video: https://www.youtube.com/watch?v=n4YPBuTkXYw&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Stefan Helmert:&amp;#039;&amp;#039;&amp;#039; Python Unittest Framework Kurzdemo. Verifiziertes YouTube-Video: https://www.youtube.com/watch?v=ZQD4M3jSA1s&lt;br /&gt;
&lt;br /&gt;
Die Videos sind als externe Medien eingebettet. Ihre Einbettung begründet keine freie Lizenz für Kopien, Bearbeitungen oder Weiterverbreitung.&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= OERs zum Thema =&lt;br /&gt;
&lt;br /&gt;
Weiterführende Informationen bietet der Wikipedia-Artikel zum UML-Anwendungsfalldiagramm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe&amp;gt; https://de.m.wikipedia.org/wiki/Anwendungsfalldiagramm &amp;lt;/iframe&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ergänzend eignet sich das frei zugängliche Lernangebot [https://oer-informatik.de/uml-usecase OER Informatik – UML Use Cases]. Beachte bei jeder Weiterverwendung die konkreten Lizenzangaben der jeweiligen Ressource.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= Verknüpfte Lernbereiche =&lt;br /&gt;
&lt;br /&gt;
{| align=center&lt;br /&gt;
{{:D-Tab}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[[Anwendungsentwicklung]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# [[Requirements Engineering]]&lt;br /&gt;
# [[Anforderungsanalyse]]&lt;br /&gt;
# [[Anforderungsmanagement]]&lt;br /&gt;
# [[Stakeholder]]&lt;br /&gt;
# [[Akteur (UML)]]&lt;br /&gt;
# [[Anwendungsfall]]&lt;br /&gt;
# [[Anwendungsfalldiagramm]]&lt;br /&gt;
# [[Unified Modeling Language]]&lt;br /&gt;
# [[Systemgrenze]]&lt;br /&gt;
# [[Szenario]]&lt;br /&gt;
# [[Akzeptanzkriterium]]&lt;br /&gt;
# [[Akzeptanztest]]&lt;br /&gt;
# [[Softwaretest]]&lt;br /&gt;
# [[Softwarequalität]]&lt;br /&gt;
# [[Python (Programmiersprache)]]&lt;br /&gt;
# [[Unit-Test]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Informatik]]&lt;br /&gt;
[[Kategorie:Softwaretechnik]]&lt;br /&gt;
[[Kategorie:Anwendungsentwicklung]]&lt;br /&gt;
[[Kategorie:Softwarequalität]]&lt;br /&gt;
[[Kategorie:Requirements Engineering]]&lt;br /&gt;
[[Kategorie:UML]]&lt;br /&gt;
[[Kategorie:Berufsausbildung]]&lt;br /&gt;
[[Kategorie:IT-Berufe]]&lt;br /&gt;
[[Kategorie:Fachinformatiker Anwendungsentwicklung]]&lt;br /&gt;
&lt;br /&gt;
{{BR}}&lt;br /&gt;
= aiMOOC-Projekte =&lt;br /&gt;
[[Kategorie:AI_MOOC]] [[Kategorie:GPT aiMOOC]]&lt;br /&gt;
{{MT}}&lt;/div&gt;</summary>
		<author><name>Glanz</name></author>
	</entry>
</feed>