This commit is contained in:
2026-08-25 10:20:31 +02:00
parent 376972453b
commit 714dab3986
14 changed files with 26970 additions and 26459 deletions
@@ -71,9 +71,9 @@ Methodisch lassen sich dabei grob zwei Analysestränge unterscheiden:
/ Statische Analyse: Ableitung von Struktur- und Datenflussinformationen aus Code und Artefakten ohne Ausführung (z. B. Abhängigkeiten, SQL-Statements, Aufrufketten). Statische Analyse skaliert gut, erkennt aber nicht zuverlässig Laufzeitbedingungen (z. B. Feature Flags, Konfigurationsvarianten). / Statische Analyse: Ableitung von Struktur- und Datenflussinformationen aus Code und Artefakten ohne Ausführung (z. B. Abhängigkeiten, SQL-Statements, Aufrufketten). Statische Analyse skaliert gut, erkennt aber nicht zuverlässig Laufzeitbedingungen (z. B. Feature Flags, Konfigurationsvarianten).
/ Dynamische Analyse: Beobachtung von Laufzeitverhalten durch Logging, Tracing oder instrumentierte Tests (z. B. welche Regeln bei bestimmten Eingaben greifen). Dynamische Analyse ist näher am realen Verhalten, benötigt aber reproduzierbare Szenarien und Testdaten. / Dynamische Analyse: Beobachtung von Laufzeitverhalten durch Logging, Tracing oder instrumentierte Tests (z. B. welche Regeln bei bestimmten Eingaben greifen). Dynamische Analyse ist näher am realen Verhalten, benötigt aber reproduzierbare Szenarien und Testdaten.
Reverse Requirements Engineering in einem Migrationsprojekt profitiert typischerweise von einer Kombination beider Stränge. Ohne dynamische Belege steigt das Risiko, dass nicht offensichtliche Bedingungen (z. B. kundenspezifische Schalter) übersehen werden; ohne statische Analyse bleibt die Abdeckung häufig zu gering. Reverse Requirements Engineering in einem Migrationsprojekt profitiert typischerweise von einer Kombination beider Stränge. Ohne dynamische Belege steigt das Risiko, dass nicht offensichtliche Bedingungen wie kundenspezifische Schalter übersehen werden. Ohne statische Analyse bleibt die Abdeckung häufig zu gering.
_Da eine Dynamische Analyse durch ein LLM mit den gegebenen technischen Möglichkeiten derzeit unpraktikabel ist, fokussiert sich diese Arbeit auf die statische Analyse von Artefakten, ergänzt manuell erstellte Artefakte zur Laufzeit (z.B. Screenshots)._ _Eine vollständige dynamische Analyse durch ein LLM ist mit den gegebenen technischen Möglichkeiten derzeit nicht praktikabel. Diese Arbeit fokussiert sich daher auf die statische Analyse von Artefakten und ergänzt sie um manuell erstellte Laufzeit-Artefakte wie Screenshots. Mit einem MCP-Server zur GUI-Beobachtung ist darüber hinaus eine teilweise dynamische Analyse möglich. Dieser Ansatz wird im Versuchsaufbau optional vorgesehen._
#heading(level: 3)[Typische Methodenkette für Requirements-Rückgewinnung aus Code] #heading(level: 3)[Typische Methodenkette für Requirements-Rückgewinnung aus Code]
@@ -9,8 +9,8 @@
Dieses Kapitel beschreibt die Methodik, mit der die in Kapitel 1 beschriebenen Ziele und Forschungsleitfragen beantwortet werden sollen. Ausgangspunkt ist das methodische Design. Aus diesem Design leiten sich alle weiteren methodischen Entscheidungen ab. Vorausgegangene Proof-of-Concept-Läufe haben einzelne Aspekte des Vorgehens informell erprobt und das hier dargestellte Vorgehen geprägt, sie sind aber nicht Gegenstand der Auswertung. Die eigentliche Untersuchung wird in den folgenden Abschnitten geplant und in den folgenden Kapiteln durchgeführt und bewertet. Dieses Kapitel beschreibt die Methodik, mit der die in Kapitel 1 beschriebenen Ziele und Forschungsleitfragen beantwortet werden sollen. Ausgangspunkt ist das methodische Design. Aus diesem Design leiten sich alle weiteren methodischen Entscheidungen ab. Vorausgegangene Proof-of-Concept-Läufe haben einzelne Aspekte des Vorgehens informell erprobt und das hier dargestellte Vorgehen geprägt, sie sind aber nicht Gegenstand der Auswertung. Die eigentliche Untersuchung wird in den folgenden Abschnitten geplant und in den folgenden Kapiteln durchgeführt und bewertet.
#include "04_konzeption_methodisches_vorgehen/04_01_methodisches_design.typ" #include "04_konzeption_methodisches_vorgehen/04_01_methodisches_design.typ"
#pagebreak()
#include "04_konzeption_methodisches_vorgehen/04_02_versuchsdesign.typ" #include "04_konzeption_methodisches_vorgehen/04_02_versuchsdesign.typ"
#pagebreak()
#include "04_konzeption_methodisches_vorgehen/04_03_evaluation_und_absicherung.typ" #include "04_konzeption_methodisches_vorgehen/04_03_evaluation_und_absicherung.typ"
#pagebreak()
@@ -80,7 +80,7 @@ Der Versuchsaufbau folgt einer schrittweise aufbauenden Vergleichslogik. Versuch
- DeepSeek R1 über Cloud-API - DeepSeek R1 über Cloud-API
- Qwen 3.5 Coder lokal über LM Studio - Qwen 3.5 Coder lokal über LM Studio
], ],
[Trennung modell- gegenüber werkzeugabhängiger Effekte], [- Trennung modell- gegenüber werkzeugabhängiger Effekte],
), ),
caption: [Übersicht der geplanten Versuche mit Werkzeugkonfiguration und Arbeitshypothese.], caption: [Übersicht der geplanten Versuche mit Werkzeugkonfiguration und Arbeitshypothese.],
) <tab_versuchsreihe> ) <tab_versuchsreihe>
+1 -1
View File
@@ -4,7 +4,7 @@
#hide(bibliography("../literatur.bib", style: "apa")) #hide(bibliography("../literatur.bib", style: "apa"))
] ]
#heading(level: 1)[Evaluation (ca. 12 Seiten)] #heading(level: 1)[Evaluation]
// TODO Variante B – Anwendung des in Kap 4.6 definierten Evaluationsrahmens auf die // TODO Variante B – Anwendung des in Kap 4.6 definierten Evaluationsrahmens auf die
// Ergebnisse aus Kap 5. Keine Erst-Definition von Kriterien hier. // Ergebnisse aus Kap 5. Keine Erst-Definition von Kriterien hier.
+1 -1
View File
@@ -1,3 +1,3 @@
#heading(level: 1)[Literaturverzeichnis (ca. 3 Seiten)] #heading(level: 1)[Literaturverzeichnis]
#bibliography("../literatur.bib", style: "apa") #bibliography("../literatur.bib", style: "apa")
+2 -4
View File
@@ -1,11 +1,9 @@
#heading(level: 1)[Anhang (ca. 6 Seiten)] #heading(level: 1)[Anhang]
#heading(level: 2)[Interviewleitfäden] #heading(level: 2)[Interviewleitfäden]
#heading(level: 3)[Stakeholder-Validierung der KI-extrahierten Anforderungen] <anh_interview_validierung> #heading(level: 3)[Stakeholder-Validierung der KI-extrahierten Anforderungen] <anh_interview_validierung>
_Ausarbeitung folgt._
#heading(level: 2)[Zusätzliches Datenmaterial] #heading(level: 2)[Zusätzliches Datenmaterial]
#heading(level: 2)[Konfigurationsdetails des Prototyps] #heading(level: 2)[Konfigurationsdetails]
File diff suppressed because it is too large Load Diff
-26310
View File
File diff suppressed because it is too large Load Diff
+5 -1
View File
@@ -7,7 +7,7 @@
"Masterarbeit an der Hochschule Neu-Ulm", "Masterarbeit an der Hochschule Neu-Ulm",
"Christoph Schwörer", "Christoph Schwörer",
"Master of Business Administration", "Master of Business Administration",
"Prof. Dr. Daniel Schallmö", "Prof. Dr. Daniel Schallmo",
"XX 2026" "XX 2026"
) )
@@ -15,6 +15,10 @@
#pagebreak() #pagebreak()
#(thesis.confidentiality)(meta)
#pagebreak()
#(thesis.declaration)(meta) #(thesis.declaration)(meta)
#pagebreak() #pagebreak()
File diff suppressed because one or more lines are too long
+1 -136
View File
File diff suppressed because one or more lines are too long
+26
View File
@@ -52,6 +52,24 @@
] ]
] ]
#let confidentiality(meta) = [
#set page(numbering: none)
#set text(font: "Times New Roman", size: 11pt)
#set par(leading: 14pt)
#heading(level: 1)[Vertraulichkeitserklärung]
Die vorliegende Masterarbeit enthält vertrauliche Informationen der c-entron GmbH, insbesondere zu Aufbau, Funktionsweise und Datenstrukturen der unternehmensinternen ERP-Software. Die Veröffentlichung, Vervielfältigung sowie die Weitergabe des Inhalts an Dritte ist auch in Auszügen ohne ausdrückliche schriftliche Zustimmung der c-entron GmbH und des Verfassers nicht gestattet.
Einsicht in diese Arbeit wird ausschließlich den Mitgliedern der Prüfungskommission der Hochschule Neu-Ulm sowie den durch den Verfasser ausdrücklich benannten Personen gewährt. Die Sperrfrist beträgt fünf Jahre ab dem Abgabedatum.
#v(2cm)
#align(left)[
#text(size: 11pt)[Neu-Ulm, #raw("______________________________")]
#v(3mm)
#text(size: 11pt)[Unterschrift: #raw("______________________________")]
]
]
#let abstract(content) = [ #let abstract(content) = [
#set page(numbering: "1") #set page(numbering: "1")
#set text(font: "Times New Roman", size: 11pt) #set text(font: "Times New Roman", size: 11pt)
@@ -84,6 +102,13 @@
#set text(size: 12pt, weight: "semibold") #set text(size: 12pt, weight: "semibold")
#it #it
] ]
#show figure.caption: it => block(
width: 92%,
align(left)[
#set par(justify: true)
#it
],
)
#set terms(separator: [], hanging-indent: 0pt, tight: false) #set terms(separator: [], hanging-indent: 0pt, tight: false)
#show terms.item: it => block(below: 0.8em, [ #show terms.item: it => block(below: 0.8em, [
#strong(it.term) \ #strong(it.term) \
@@ -109,6 +134,7 @@
meta: thesis_meta, meta: thesis_meta,
cover: cover, cover: cover,
declaration: declaration, declaration: declaration,
confidentiality: confidentiality,
abstract: abstract, abstract: abstract,
body_show: body_show, body_show: body_show,
body_content: body_content, body_content: body_content,