Lizenzinformationen

Prof. Dr. Robin Nunkesser

Agentisches Beispiel: License

Verwendete Instructions

  • .github/copilot-instructions.md
  • .github/instructions/artifacts.instructions.md
  • .github/instructions/artifacts-consumers-education.instructions.md
  • .github/instructions/slides.instructions.md

Exakter Prompt

Erstelle ein agent-generated example für License (MAUI, fortgeschrittene Studierende).
Feature-Scope: minimal. Wende MVVM mit CommunityToolkit.Mvvm und Unit Tests mit MSTest an.
Entscheide anhand der Architektur-Entscheidungstabelle aus den Instructions, welche weiteren Muster (Core-Projekt, Architekturschichten) das Konzept rechtfertigt — verwende sie, wenn dieselbe Komplexität in einem produktiven Einsatz diese Strukturen erfordern würde.
Lies zuerst die Instructions, ermittle den Foliensatz, dokumentiere Instructions + Prompt dort, vergleiche mit manuellem Beispiel, verifiziere MacCatalyst Build mit workaround zum mismatch des workloads mit der xcode version.

Architekturentscheidung (gemäß Tabelle)

Aspekt Entscheidung Begründung
Feature-Scope Minimal (Lizenztext laden und anzeigen) Fokus auf Struktur statt Feature-Breite
MVVM Ja Lade-Command und UI-Zustand sind zentrale Lernpunkte
Unit Tests Ja (MSTest) ViewModel-Logik vollständig UI-unabhängig testbar
Core-Projekt + Interfaces Nein Keine Domänen-/Persistenzkomplexität nötig
Architekturschichten Nein Für statischen Lizenz-Content unnötig

Ergebnis (agent-generated)

  • LicenseRecipe.ViewModels mit MainPageViewModel und ILicenseContentService
  • AppPackageLicenseContentService lädt licenses.html aus App-Package
  • CommunityToolkit.Mvvm für Observable Properties und RelayCommand
  • LicenseRecipe.Tests mit 3 MSTest-Fällen
  • MacCatalyst-Workaround gesetzt: ValidateXcodeVersion=false, SupportedOSPlatformVersion=15.0

Vergleich: manuell vs. agent-generated

Kriterium Manuelles Beispiel Agent-generated Beispiel
Ladeprozess in Code-Behind (OnAppearing) im ViewModel (LoadLicenseCommand)
UI-Bindung direkte WebView-Manipulation Bindings auf ViewModel-Zustände
MVVM-Struktur rudimentär klar getrennt (Service + ViewModel + View)
Unit Tests keine 3 MSTest-Fälle
Lifecycle-Rückmeldung keine sichtbar via LifecycleState
Architekturschichten nein nein (bewusst, gemäß Tabelle)

Fazit: Das agent-generated Beispiel ist didaktisch belastbarer, weil DI, Lifecycle und testbare Lade-Logik im gleichen minimalen Scope sichtbar sind.

Live-Coding

Repository

Verifikation

  • Tests: dotnet test LicenseRecipe.Tests/LicenseRecipe.Tests.csproj → 3/3 erfolgreich
  • MacCatalyst-Build: dotnet build LicenseRecipe/LicenseRecipe.csproj -f net10.0-maccatalyst → erfolgreich