Compare commits
15 Commits
dc10316a31
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
d8c6e25376 | ||
|
1adff08581 | ||
|
d12f68d001 | ||
|
5ea0bff54e | ||
|
4b3d9840ef | ||
|
11a37dd86e | ||
|
f17df3eaf8 | ||
|
0e93df5ca8 | ||
|
db6bc3620a | ||
|
d1fb52f321 | ||
|
0d4a48b942 | ||
|
e700beb2f8 | ||
|
3ae107edf3 | ||
|
4007c8d530 | ||
|
bda9c44668 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -60,3 +60,6 @@ Thumbs.db
|
|||||||
# Editor-spezifische Dateien (optional)
|
# Editor-spezifische Dateien (optional)
|
||||||
*.swp
|
*.swp
|
||||||
*.swo
|
*.swo
|
||||||
|
|
||||||
|
#config files
|
||||||
|
.env
|
||||||
|
93
Makefile
Normal file
93
Makefile
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
.PHONY: help build-thesis build-expose clean clean-paper check-variables set-shell set-directory
|
||||||
|
.DEFAULT_GOAL := help
|
||||||
|
|
||||||
|
# --- Load .env if it exists (no error if missing) ---
|
||||||
|
-include .env
|
||||||
|
|
||||||
|
# --- Set default directory if not defined ---
|
||||||
|
DIRECTORY ?= $(shell pwd)
|
||||||
|
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
LATEX_DIR = paper
|
||||||
|
LATEX_CONTAINER = texlive/texlive:TL2024-historic
|
||||||
|
|
||||||
|
THESIS_SRC = dokumentation.tex
|
||||||
|
EXPOSE_SRC = expose.tex
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
GREEN := \033[1;32m
|
||||||
|
WHITE := \033[0;37m
|
||||||
|
GRAY := \033[0;37m
|
||||||
|
RESET := \033[0m
|
||||||
|
|
||||||
|
help: ## Show this help message
|
||||||
|
@echo "Available commands:"
|
||||||
|
@grep -E "^[a-zA-Z_-]+:.*?## .*$$" "$(firstword $(MAKEFILE_LIST))" \
|
||||||
|
| sort \
|
||||||
|
| awk -v GREEN="$(GREEN)" -v RESET="$(RESET)" -v GRAY="$(GRAY)" 'BEGIN {FS=":.*?## "} {printf " %smake %-15s%s %s%s\n", GREEN, $$1, RESET, GRAY, $$2}'
|
||||||
|
|
||||||
|
clean: clean-paper ## Remove all auxiliary files (calls clean-paper)
|
||||||
|
|
||||||
|
clean-paper: ## Remove LaTeX auxiliary files from the 'paper' directory
|
||||||
|
@rm -f $(LATEX_DIR)/*.aux \
|
||||||
|
$(LATEX_DIR)/*.log \
|
||||||
|
$(LATEX_DIR)/*.out \
|
||||||
|
$(LATEX_DIR)/*.toc \
|
||||||
|
$(LATEX_DIR)/*.bbl \
|
||||||
|
$(LATEX_DIR)/*.blg \
|
||||||
|
$(LATEX_DIR)/*.fls \
|
||||||
|
$(LATEX_DIR)/*.fdb_latexmk \
|
||||||
|
$(LATEX_DIR)/*.bcf \
|
||||||
|
$(LATEX_DIR)/*.run.xml
|
||||||
|
|
||||||
|
build-thesis: clean-paper ## Build the main thesis PDF (dokumentation.tex) using DockerJa, and latexmk
|
||||||
|
@docker run --rm -v "$(DIRECTORY)/$(LATEX_DIR):/data" -w //data $(LATEX_CONTAINER) latexmk -pdf $(THESIS_SRC)
|
||||||
|
|
||||||
|
build-expose: clean-paper ## Build the expose PDF (expose.tex) using Docker and latexmk
|
||||||
|
@docker run --rm -v "$(DIRECTORY)/$(LATEX_DIR):/data" -w //data $(LATEX_CONTAINER) latexmk -pdf $(EXPOSE_SRC)
|
||||||
|
|
||||||
|
set-shell: ## Set the shell Make should use
|
||||||
|
ifeq ($(LOCAL_SHELL),)
|
||||||
|
@echo "Usage: make set-shell LOCAL_SHELL=<path to shell> [LOCAL_SHELLFLAGS='<flags>']"
|
||||||
|
@echo "Example: make set-shell LOCAL_SHELL=\"C:/Progra~1/Git/usr/bin/bash.exe\" LOCAL_SHELLFLAGS=\"--login -i -c\""
|
||||||
|
else
|
||||||
|
@echo "LOCAL_SHELL parameter detected, updating .env..."
|
||||||
|
@if grep -q '^SHELL=' .env 2>/dev/null; then \
|
||||||
|
sed -i 's|^SHELL=.*|SHELL=$(LOCAL_SHELL)|' .env; \
|
||||||
|
echo "Updated SHELL in .env"; \
|
||||||
|
else \
|
||||||
|
echo "SHELL=$(LOCAL_SHELL)" >> .env; \
|
||||||
|
echo "Added SHELL to .env"; \
|
||||||
|
fi
|
||||||
|
ifneq ($(LOCAL_SHELLFLAGS),)
|
||||||
|
@echo "LOCAL_SHELLFLAGS parameter detected, updating .env..."
|
||||||
|
@if grep -q '^SHELLFLAGS=' .env 2>/dev/null; then \
|
||||||
|
sed -i 's|^SHELLFLAGS=.*|SHELLFLAGS=$(LOCAL_SHELLFLAGS)|' .env; \
|
||||||
|
echo "Updated SHELLFLAGS in .env"; \
|
||||||
|
else \
|
||||||
|
echo "SHELLFLAGS=$(LOCAL_SHELLFLAGS)" >> .env; \
|
||||||
|
echo "Added SHELLFLAGS to .env"; \
|
||||||
|
fi
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
set-directory: ## Set the project directory Make should use
|
||||||
|
ifeq ($(LOCAL_DIRECTORY),)
|
||||||
|
@echo "Usage: make set-directory LOCAL_DIRECTORY=<path to project>"
|
||||||
|
else
|
||||||
|
@echo "LOCAL_DIRECTORY parameter detected, updating .env..."
|
||||||
|
@if grep -q '^DIRECTORY=' .env 2>/dev/null; then \
|
||||||
|
sed -i 's|^DIRECTORY=.*|DIRECTORY=$(LOCAL_DIRECTORY)|' .env; \
|
||||||
|
echo "Updated DIRECTORY in .env"; \
|
||||||
|
else \
|
||||||
|
echo "DIRECTORY=$(LOCAL_DIRECTORY)" >> .env; \
|
||||||
|
echo "Added DIRECTORY to .env"; \
|
||||||
|
fi
|
||||||
|
endif
|
||||||
|
|
||||||
|
check-variables: ## Checks which variables Make is using (SHELL, SHELLFLAGS, DIRECTORY)
|
||||||
|
@echo "---- Makefile Variables Check ----"
|
||||||
|
@echo "SHELL = $(SHELL)"
|
||||||
|
@echo "SHELLFLAGS = $(SHELLFLAGS)"
|
||||||
|
@echo "DIRECTORY = $(DIRECTORY)"
|
78
README.md
78
README.md
@@ -1 +1,77 @@
|
|||||||
# studienarbeit-transpiler
|
# COBOL-to-Java Interactive Transpiler (Study Project)
|
||||||
|
This repository is part of an academic study project.
|
||||||
|
Its primary goal is to design and implement an **interactive transpiler** that translates COBOL code into Java, while allowing user-guided customization and integration of modern design patterns.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
Before using the provided commands, ensure you have the following installed on your system:
|
||||||
|
|
||||||
|
- [Docker](https://docs.docker.com/get-docker/)
|
||||||
|
Used to build LaTeX documents inside a containerized environment.
|
||||||
|
- [Make](https://www.gnu.org/software/make/)
|
||||||
|
Used to execute the predefined commands in the `Makefile`.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
The repository includes a `Makefile` with predefined commands.
|
||||||
|
|
||||||
|
To list all available commands, run:
|
||||||
|
|
||||||
|
```
|
||||||
|
make help
|
||||||
|
```
|
||||||
|
|
||||||
|
To build the pdf documents (thesis or exposé) from latex, run:
|
||||||
|
```
|
||||||
|
make build-thesis
|
||||||
|
make build-expose
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Windwows-specific notes
|
||||||
|
|
||||||
|
- On **Windows**, you may need to adjust the shell used by Make, especially if you are running PowerShell.
|
||||||
|
- It is recommended to use **Git Bash** as the shell for full compatibility.
|
||||||
|
- You may also need to adjust the `DIRECTORY` variable in `.env` if Docker requires a Windows-style path (e.g., `C:/Users/...`).
|
||||||
|
|
||||||
|
|
||||||
|
#### Setting shell and directory
|
||||||
|
|
||||||
|
You can set the shell and project directory with Make targets:
|
||||||
|
```
|
||||||
|
make set-shell LOCAL_SHELL="C:/Program Files/Git/usr/bin/bash.exe" LOCAL_SHELLFLAGS="--login -i -c"
|
||||||
|
make set-directory LOCAL_DIRECTORY="C:/users/admin/project"
|
||||||
|
```
|
||||||
|
- `set-shell` updates `SHELL` and `SHELLFLAGS` in `.env`.
|
||||||
|
You can run it like this:
|
||||||
|
- `set-directory` updates `DIRECTORY` in `.env`.
|
||||||
|
|
||||||
|
#### Checking variables
|
||||||
|
|
||||||
|
You can check which variables Make is using:
|
||||||
|
```
|
||||||
|
make check-variables
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### Manual `.env` setup
|
||||||
|
|
||||||
|
If nothing works yet, you can manually create or edit `.env` in the project root:
|
||||||
|
|
||||||
|
```text
|
||||||
|
SHELL=C:/Program Files/Git/usr/bin/bash.exe
|
||||||
|
SHELLFLAGS=--login -i -c
|
||||||
|
DIRECTORY=C:/users/admin/project
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
<pre>
|
||||||
|
.
|
||||||
|
├── paper/ LaTeX sources for thesis and exposé
|
||||||
|
├── implementation/ Source code of the interactive COBOL-to-Java transpiler
|
||||||
|
└── final/ Finalized documents for submission (thesis, exposé, reports)
|
||||||
|
</pre>
|
BIN
final/Exposé.pdf
Normal file
BIN
final/Exposé.pdf
Normal file
Binary file not shown.
19
paper/ads/abstract.tex
Normal file
19
paper/ads/abstract.tex
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
%!TEX root = ../dokumentation.tex
|
||||||
|
|
||||||
|
\pagestyle{empty}
|
||||||
|
|
||||||
|
\iflang{de}{%
|
||||||
|
% Dieser englische Teil wird nur angezeigt, wenn die Sprache auf Englisch eingestellt ist.
|
||||||
|
\renewcommand{\abstractname}{\langabstract} % Text für Überschrift
|
||||||
|
|
||||||
|
\begin{abstract}
|
||||||
|
%\textbf{[1]Motivation}:
|
||||||
|
%\textbf{[2]Problem statement}:
|
||||||
|
%\textbf{[3]Approach}:
|
||||||
|
%\textbf{[5]Conclusions}:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\end{abstract}
|
||||||
|
}
|
16
paper/ads/acronyms.tex
Normal file
16
paper/ads/acronyms.tex
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
%!TEX root = ../dokumentation.tex
|
||||||
|
|
||||||
|
\addchap{\langabkverz}
|
||||||
|
%nur verwendete Akronyme werden letztlich im Abkürzungsverzeichnis des Dokuments angezeigt
|
||||||
|
%Verwendung:
|
||||||
|
% \ac{Abk.} --> fügt die Abkürzung ein, beim ersten Aufruf wird zusätzlich automatisch die ausgeschriebene Version davor eingefügt bzw. in einer Fußnote (hierfür muss in header.tex \usepackage[printonlyused,footnote]{acronym} stehen) dargestellt
|
||||||
|
% \acs{Abk.} --> fügt die Abkürzung ein
|
||||||
|
% \acf{Abk.} --> fügt die Abkürzung UND die Erklärung ein
|
||||||
|
% \acl{Abk.} --> fügt nur die Erklärung ein
|
||||||
|
% \acp{Abk.} --> gibt Plural aus (angefügtes 's'); das zusätzliche 'p' funktioniert auch bei obigen Befehlen
|
||||||
|
% siehe auch: http://golatex.de/wiki/%5Cacronym
|
||||||
|
%
|
||||||
|
\begin{acronym}[YTMMM] %YTMMM
|
||||||
|
%\setlength{\itemsep}{-\parsep}
|
||||||
|
\acro{abk.}{Abkürzung}
|
||||||
|
\end{acronym}
|
4
paper/ads/appendix.tex
Normal file
4
paper/ads/appendix.tex
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
% !TeX root = ../dokumentation.tex
|
||||||
|
\setcounter{chapter}{1}
|
||||||
|
\renewcommand\thechapter{\Alph{chapter}}
|
||||||
|
\addchap{\langanhang}
|
34
paper/ads/deckblatt.tex
Normal file
34
paper/ads/deckblatt.tex
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
%!TEX root = ../dokumentation.tex
|
||||||
|
|
||||||
|
\begin{titlepage}
|
||||||
|
\begin{longtable}{p{8.2cm} p{5.4cm}}
|
||||||
|
%{\raisebox{\ht\strutbox-\totalheight}{\includegraphics[height=2.5cm]{images/hpe_logo.png}}} &
|
||||||
|
{\raisebox{\ht\strutbox-\totalheight}{\includegraphics[height=2.5cm]{images/dhbw.png}}}
|
||||||
|
\end{longtable}
|
||||||
|
|
||||||
|
\enlargethispage{20mm}
|
||||||
|
\begin{center}
|
||||||
|
\vspace*{12mm} {\LARGE\textbf \titel }\\
|
||||||
|
\vspace*{12mm} {\large\textbf \arbeit}\\
|
||||||
|
\vspace*{12mm} \langdeckblattabschlusshinleitung\\
|
||||||
|
\vspace*{3mm} {\textbf \abschluss}\\
|
||||||
|
\vspace*{12mm} \langartikelstudiengang{} \langstudiengang{} \studiengang\\
|
||||||
|
\vspace*{3mm} \langanderdh{}\\
|
||||||
|
\vspace*{12mm} \langvon\\
|
||||||
|
\vspace*{3mm} {\large\textbf \autor}\\
|
||||||
|
\vspace*{12mm} \datumAbgabe\\
|
||||||
|
\vspace*{12mm}
|
||||||
|
\end{center}
|
||||||
|
\vfill
|
||||||
|
\begin{spacing}{1.2}
|
||||||
|
\begin{tabbing}
|
||||||
|
mmmmmmmmmmmmmmmmmmmmmmmmmm \= \kill
|
||||||
|
\textbf{\langdbbearbeitungszeit} \> \zeitraum\\
|
||||||
|
\textbf{\langdbmatriknr} \> \martrikelnr\\
|
||||||
|
%\textbf{\langdbfirma} \> \firma, \firmenort\\
|
||||||
|
\textbf{\langdbbetreuer} \> \betreuer\\
|
||||||
|
\textbf{\langdbgutachter} \> \gutachter\\
|
||||||
|
%\textbf{\langdbzweitgutachter} \> \zweitgutachter
|
||||||
|
\end{tabbing}
|
||||||
|
\end{spacing}
|
||||||
|
\end{titlepage}
|
23
paper/ads/einstellungen_liste.tex
Normal file
23
paper/ads/einstellungen_liste.tex
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
\einstellung{martrikelnr}
|
||||||
|
\einstellung{titel}
|
||||||
|
\einstellung{kurs}
|
||||||
|
\einstellung{datumAbgabe}
|
||||||
|
\einstellung{firma}
|
||||||
|
\einstellung{firmenort}
|
||||||
|
\einstellung{abgabeort}
|
||||||
|
\einstellung{abschluss}
|
||||||
|
\einstellung{studiengang}
|
||||||
|
\einstellung{dhbw}
|
||||||
|
\einstellung{betreuer}
|
||||||
|
\einstellung{gutachter}
|
||||||
|
\einstellung{zweitgutachter}
|
||||||
|
\einstellung{zeitraum}
|
||||||
|
\einstellung{arbeit}
|
||||||
|
\einstellung{autor}
|
||||||
|
\einstellung{sprache}
|
||||||
|
\einstellung{schriftart}
|
||||||
|
\einstellung{seitenrand}
|
||||||
|
\einstellung{kapitelabstand}
|
||||||
|
\einstellung{spaltenabstand}
|
||||||
|
\einstellung{zeilenabstand}
|
||||||
|
\einstellung{zitierstil}
|
50
paper/ads/erklaerung.tex
Normal file
50
paper/ads/erklaerung.tex
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
%!TEX root = ../dokumentation.tex
|
||||||
|
|
||||||
|
\thispagestyle{empty}
|
||||||
|
|
||||||
|
\section*{\langerklaerung}
|
||||||
|
% http://www.se.dhbw-mannheim.de/fileadmin/ms/wi/dl_swm/dhbw-ma-wi-organisation-bewertung-bachelorarbeit-v2-00.pdf
|
||||||
|
\vspace*{2em}
|
||||||
|
|
||||||
|
\iflang{de}{%
|
||||||
|
Ich versichere hiermit, dass ich meine {\arbeit} mit dem Thema: {\itshape \titel } selbstständig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt habe. Ich versichere zudem, dass die eingereichte elektronische Fassung mit der gedruckten Fassung übereinstimmt.
|
||||||
|
|
||||||
|
% https://www.dhbw-karlsruhe.de/fileadmin/user_upload/dokumente/T-Informatik/Prüfungsordnung-Technik-2015-09-29.pdf (S. 19)
|
||||||
|
|
||||||
|
|
||||||
|
% Ich erkläre hiermit ehrenwörtlich: \\
|
||||||
|
% \begin{enumerate}
|
||||||
|
% \item dass ich meine {\arbeit} mit dem Thema
|
||||||
|
% {\itshape \titel } ohne fremde Hilfe angefertigt habe;
|
||||||
|
% \item dass ich die Übernahme wörtlicher Zitate aus der Literatur sowie die Verwendung der Gedanken
|
||||||
|
% anderer Autoren an den entsprechenden Stellen innerhalb der Arbeit gekennzeichnet habe;
|
||||||
|
% \item dass ich meine {\arbeit} bei keiner anderen Prüfung vorgelegt habe;
|
||||||
|
% \item dass die eingereichte elektronische Fassung exakt mit der eingereichten schriftlichen Fassung
|
||||||
|
% übereinstimmt.
|
||||||
|
% \end{enumerate}
|
||||||
|
%
|
||||||
|
% Ich bin mir bewusst, dass eine falsche Erklärung rechtliche Folgen haben wird.
|
||||||
|
|
||||||
|
% % http://www.ib.dhbw-mannheim.de/fileadmin/ms/bwl-ib/Downloads_alt/Leitfaden_31.05.pdf (S. 52)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
\iflang{en}{%
|
||||||
|
Hereby I solemnly declare:
|
||||||
|
\begin{enumerate}
|
||||||
|
\item that this {\arbeit}, titled {\itshape \titel } is entirely the product of my own scholarly work, unless otherwise indicated in the text or references, or acknowledged below;
|
||||||
|
\item I have indicated the thoughts adopted directly or indirectly from other sources at the appropriate places within the document;
|
||||||
|
\item this {\arbeit} has not been submitted either in whole or part, for a degree at this or any other university or institution;
|
||||||
|
\item I have not published this {\arbeit} in the past;
|
||||||
|
\item the printed version is equivalent to the submitted electronic one.
|
||||||
|
\end{enumerate}
|
||||||
|
I am aware that a dishonest declaration will entail legal consequences.
|
||||||
|
}
|
||||||
|
|
||||||
|
\vspace{3em}
|
||||||
|
|
||||||
|
\abgabeort, \datumAbgabe
|
||||||
|
\vspace{4em}
|
||||||
|
|
||||||
|
\rule{6cm}{0.4pt}\\
|
||||||
|
\autor
|
13
paper/ads/glossary.tex
Normal file
13
paper/ads/glossary.tex
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
%!TEX root = ../dokumentation.tex
|
||||||
|
|
||||||
|
%
|
||||||
|
% vorher in Konsole folgendes aufrufen:
|
||||||
|
% makeglossaries makeglossaries dokumentation.acn && makeglossaries dokumentation.glo
|
||||||
|
%
|
||||||
|
|
||||||
|
%
|
||||||
|
% Glossareintraege --> referenz, name, beschreibung
|
||||||
|
% Aufruf mit \gls{...}
|
||||||
|
%
|
||||||
|
|
||||||
|
%\newglossaryentry{SVM}{name={Support Vector Machine}, description={\acf{SVM}} ist ein Modell.}
|
190
paper/ads/header.tex
Normal file
190
paper/ads/header.tex
Normal file
@@ -0,0 +1,190 @@
|
|||||||
|
%!TEX root = ../dokumentation.tex
|
||||||
|
|
||||||
|
%
|
||||||
|
% Nahezu alle Einstellungen koennen hier getaetigt werden
|
||||||
|
%
|
||||||
|
|
||||||
|
\RequirePackage[l2tabu, orthodox]{nag} % weist in Commandozeile bzw. log auf veraltete LaTeX Syntax hin
|
||||||
|
|
||||||
|
\documentclass[%
|
||||||
|
pdftex,
|
||||||
|
oneside, % Einseitiger Druck.
|
||||||
|
12pt, % Schriftgroesse
|
||||||
|
parskip=half, % Halbe Zeile Abstand zwischen Absätzen.
|
||||||
|
% topmargin = 10pt, % Abstand Seitenrand (Std:1in) zu Kopfzeile [laut log: unused]
|
||||||
|
headheight = 12pt, % Höhe der Kopfzeile
|
||||||
|
% headsep = 30pt, % Abstand zwischen Kopfzeile und Text Body [laut log: unused]
|
||||||
|
headsepline, % Linie nach Kopfzeile.
|
||||||
|
footsepline, % Linie vor Fusszeile.
|
||||||
|
footheight = 16pt, % Höhe der Fusszeile
|
||||||
|
abstracton, % Abstract Überschriften
|
||||||
|
DIV=calc, % Satzspiegel berechnen
|
||||||
|
BCOR=8mm, % Bindekorrektur links: 8mm
|
||||||
|
headinclude=false, % Kopfzeile nicht in den Satzspiegel einbeziehen
|
||||||
|
footinclude=false, % Fußzeile nicht in den Satzspiegel einbeziehen
|
||||||
|
listof=totoc, % Abbildungs-/ Tabellenverzeichnis im Inhaltsverzeichnis darstellen
|
||||||
|
toc=bibliography, % Literaturverzeichnis im Inhaltsverzeichnis darstellen
|
||||||
|
]{scrreprt} % Koma-Script report-Klasse, fuer laengere Bachelorarbeiten alternativ auch: scrbook
|
||||||
|
|
||||||
|
% Einstellungen laden
|
||||||
|
\usepackage{xstring}
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
|
||||||
|
\newcommand{\einstellung}[1]{%
|
||||||
|
\expandafter\newcommand\csname #1\endcsname{}
|
||||||
|
\expandafter\newcommand\csname setze#1\endcsname[1]{\expandafter\renewcommand\csname#1\endcsname{##1}}
|
||||||
|
}
|
||||||
|
\newcommand{\langstr}[1]{\einstellung{lang#1}}
|
||||||
|
|
||||||
|
\input{ads/einstellungen_liste} % verfügbare Einstellungen
|
||||||
|
\input{einstellungen} % lese Einstellungen
|
||||||
|
|
||||||
|
\input{lang/strings} % verfügbare Strings
|
||||||
|
\input{lang/\sprache} % Übersetzung einlesen
|
||||||
|
|
||||||
|
% Einstellung der Sprache des Paketes Babel und der Verzeichnisüberschriften
|
||||||
|
\iflang{de}{\usepackage[english, ngerman]{babel}}
|
||||||
|
\iflang{en}{\usepackage[ngerman, american]{babel}}
|
||||||
|
|
||||||
|
|
||||||
|
%%%%%%% Package Includes %%%%%%%
|
||||||
|
|
||||||
|
\usepackage[margin=\seitenrand,foot=1cm]{geometry} % Seitenränder und Abstände
|
||||||
|
\usepackage[activate]{microtype} %Zeilenumbruch und mehr
|
||||||
|
\usepackage[onehalfspacing]{setspace}
|
||||||
|
\usepackage{makeidx}
|
||||||
|
\usepackage[autostyle=true,german=quotes]{csquotes}
|
||||||
|
\usepackage{longtable}
|
||||||
|
\usepackage{enumitem} % mehr Optionen bei Aufzählungen
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage{pdfpages} % zum Einbinden von PDFs
|
||||||
|
\usepackage{xcolor} % für HTML-Notation
|
||||||
|
\usepackage{float}
|
||||||
|
\usepackage{array}
|
||||||
|
\usepackage{calc} % zum Rechnen (Bildtabelle in Deckblatt)
|
||||||
|
\usepackage[right]{eurosym}
|
||||||
|
\usepackage{wrapfig}
|
||||||
|
\usepackage{pgffor} % für automatische Kapiteldateieinbindung
|
||||||
|
\usepackage[perpage, hang, multiple, stable]{footmisc} % Fussnoten
|
||||||
|
\usepackage[printonlyused]{acronym} % falls gewünscht kann die Option footnote eingefügt werden, dann wird die Erklärung nicht inline sondern in einer Fußnote dargestellt
|
||||||
|
\usepackage{listings}
|
||||||
|
\usepackage{tabu}
|
||||||
|
\usepackage{tabu}
|
||||||
|
\usepackage{lscape}
|
||||||
|
\usepackage{listings}
|
||||||
|
\usepackage{rotating}
|
||||||
|
\usepackage{colortbl}
|
||||||
|
\definecolor{lightgray}{gray}{0.6}
|
||||||
|
\definecolor{red}{HTML}{FD2C2C}
|
||||||
|
\definecolor{yellow}{HTML}{F0F01B}
|
||||||
|
\definecolor{green}{HTML}{1BF04D}
|
||||||
|
|
||||||
|
\usepackage{amssymb}% http://ctan.org/pkg/amssymb
|
||||||
|
\usepackage{pifont}% http://ctan.org/pkg/pifont
|
||||||
|
\newcommand{\cmark}{\ding{51}}%
|
||||||
|
\newcommand{\xmark}{\ding{55}}%
|
||||||
|
|
||||||
|
% Notizen. Einsatz mit \todo{Notiz} oder \todo[inline]{Notiz}.
|
||||||
|
\usepackage[obeyFinal,backgroundcolor=yellow,linecolor=black]{todonotes}
|
||||||
|
% Alle Notizen ausblenden mit der Option "final" in \documentclass[...] oder durch das auskommentieren folgender Zeile
|
||||||
|
% \usepackage[disable]{todonotes}
|
||||||
|
|
||||||
|
% Kommentarumgebung. Einsatz mit \comment{}. Alle Kommentare ausblenden mit dem Auskommentieren der folgenden und dem aktivieren der nächsten Zeile.
|
||||||
|
\newcommand{\comment}[1]{\par {\bfseries \color{blue} #1 \par}} %Kommentar anzeigen
|
||||||
|
% \newcommand{\comment}[1]{} %Kommentar ausblenden
|
||||||
|
|
||||||
|
|
||||||
|
%%%%%% Configuration %%%%%
|
||||||
|
|
||||||
|
%% Anwenden der Einstellungen
|
||||||
|
|
||||||
|
\usepackage[scaled=.95]{\schriftart}
|
||||||
|
\renewcommand\familydefault{\sfdefault}
|
||||||
|
\ladefarben{}
|
||||||
|
|
||||||
|
% Titel, Autor und Datum
|
||||||
|
\title{\titel}
|
||||||
|
\author{\autor}
|
||||||
|
\date{\datum}
|
||||||
|
|
||||||
|
% PDF Einstellungen
|
||||||
|
\usepackage[%
|
||||||
|
pdftitle={\titel},
|
||||||
|
pdfauthor={\autor},
|
||||||
|
pdfsubject={\arbeit},
|
||||||
|
pdfcreator={pdflatex, LaTeX with KOMA-Script},
|
||||||
|
pdfpagemode=UseOutlines, % Beim Oeffnen Inhaltsverzeichnis anzeigen
|
||||||
|
pdfdisplaydoctitle=true, % Dokumenttitel statt Dateiname anzeigen.
|
||||||
|
pdflang={\sprache}, % Sprache des Dokuments.
|
||||||
|
]{hyperref}
|
||||||
|
|
||||||
|
% (Farb-)einstellungen für die Links im PDF
|
||||||
|
\hypersetup{%
|
||||||
|
colorlinks=true, % Aktivieren von farbigen Links im Dokument
|
||||||
|
linkcolor=LinkColor, % Farbe festlegen
|
||||||
|
citecolor=LinkColor,
|
||||||
|
filecolor=LinkColor,
|
||||||
|
menucolor=LinkColor,
|
||||||
|
urlcolor=LinkColor,
|
||||||
|
linktocpage=true, % Nicht der Text sondern die Seitenzahlen in Verzeichnissen klickbar
|
||||||
|
bookmarksnumbered=true % Überschriftsnummerierung im PDF Inhalt anzeigen.
|
||||||
|
}
|
||||||
|
% Workaround um Fehler in Hyperref, muss hier stehen bleiben
|
||||||
|
\usepackage{bookmark} %nur ein latex-Durchlauf für die Aktualisierung von Verzeichnissen nötig
|
||||||
|
|
||||||
|
% Schriftart in Captions etwas kleiner
|
||||||
|
\addtokomafont{caption}{\small}
|
||||||
|
|
||||||
|
% Literaturverweise (sowohl deutsch als auch englisch)
|
||||||
|
\iflang{de}{%
|
||||||
|
\usepackage[
|
||||||
|
backend=biber, % empfohlen. Falls biber Probleme macht: bibtex
|
||||||
|
bibwarn=true,
|
||||||
|
bibencoding=utf8, % wenn .bib in utf8, sonst ascii
|
||||||
|
sortlocale=de_DE,
|
||||||
|
style=\zitierstil,
|
||||||
|
]{biblatex}
|
||||||
|
}
|
||||||
|
\iflang{en}{%
|
||||||
|
\usepackage[backend=biber]{biblatex}
|
||||||
|
\DeclareLanguageMapping{american}{american-apa}
|
||||||
|
%\usepackage[
|
||||||
|
% backend=biber, % empfohlen. Falls biber Probleme macht: bibtex
|
||||||
|
% bibwarn=true,
|
||||||
|
% bibencoding=utf8, % wenn .bib in utf8, sonst ascii
|
||||||
|
% sortlocale=en_US,
|
||||||
|
% style=\zitierstil,
|
||||||
|
%]{biblatex}
|
||||||
|
}
|
||||||
|
|
||||||
|
\ladeliteratur{}
|
||||||
|
|
||||||
|
% Glossar
|
||||||
|
\usepackage[nonumberlist,toc]{glossaries}
|
||||||
|
|
||||||
|
%%%%%% Additional settings %%%%%%
|
||||||
|
|
||||||
|
% Hurenkinder und Schusterjungen verhindern
|
||||||
|
% http://projekte.dante.de/DanteFAQ/Silbentrennung
|
||||||
|
\clubpenalty = 10000 % schließt Schusterjungen aus (Seitenumbruch nach der ersten Zeile eines neuen Absatzes)
|
||||||
|
\widowpenalty = 10000 % schließt Hurenkinder aus (die letzte Zeile eines Absatzes steht auf einer neuen Seite)
|
||||||
|
\displaywidowpenalty=10000
|
||||||
|
|
||||||
|
% Bildpfad
|
||||||
|
\graphicspath{{images/}}
|
||||||
|
|
||||||
|
% Einige häufig verwendete Sprachen
|
||||||
|
\lstloadlanguages{PHP,Python,Java,C,C++,bash}
|
||||||
|
\listingsettings{}
|
||||||
|
% Umbennung des Listings
|
||||||
|
\renewcommand\lstlistingname{\langlistingname}
|
||||||
|
\renewcommand\lstlistlistingname{\langlistlistingname}
|
||||||
|
\def\lstlistingautorefname{\langlistingautorefname}
|
||||||
|
|
||||||
|
% Abstände in Tabellen
|
||||||
|
\setlength{\tabcolsep}{\spaltenabstand}
|
||||||
|
\renewcommand{\arraystretch}{\zeilenabstand}
|
||||||
|
\usepackage{subcaption}
|
||||||
|
\usepackage{cleveref}
|
||||||
|
\usepackage{pdfcomment}
|
39
paper/ads/sperrvermerk.tex
Normal file
39
paper/ads/sperrvermerk.tex
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
%!TEX root = ../dokumentation.tex
|
||||||
|
|
||||||
|
\thispagestyle{empty}
|
||||||
|
% Sperrvermerk direkt hinter Titelseite
|
||||||
|
\section*{\langsperrvermerk}
|
||||||
|
|
||||||
|
\vspace*{2em}
|
||||||
|
|
||||||
|
\iflang{de}{%
|
||||||
|
Die vorliegende {\arbeit} mit dem Titel {\itshape{} \titel{}\/} enthält unternehmensinterne bzw. vertrauliche Informationen der {\firma}, ist deshalb mit einem Sperrvermerk versehen und wird ausschließlich zu Prüfungszwecken am Studiengang {\studiengang} der Dualen Hochschule Baden-Württemberg {\dhbw} vorgelegt. Sie ist ausschließlich zur Einsicht durch den zugeteilten Gutachter, die Leitung des Studiengangs und ggf. den Prüfungsausschuss des Studiengangs bestimmt. Es ist untersagt,
|
||||||
|
\begin{itemize}
|
||||||
|
\item den Inhalt dieser Arbeit (einschließlich Daten, Abbildungen, Tabellen, Zeichnungen usw.) als Ganzes oder auszugsweise weiterzugeben,
|
||||||
|
\item Kopien oder Abschriften dieser Arbeit (einschließlich Daten, Abbildungen, Tabellen, Zeichnungen usw.) als Ganzes oder in Auszügen anzufertigen,
|
||||||
|
\item diese Arbeit zu veröffentlichen bzw. digital, elektronisch oder virtuell zur Verfügung zu stellen.
|
||||||
|
\end{itemize}
|
||||||
|
Jede anderweitige Einsichtnahme und Veröffentlichung – auch von Teilen der Arbeit – bedarf der vorherigen Zustimmung durch den Verfasser und {\firma}.
|
||||||
|
}
|
||||||
|
|
||||||
|
%http://www.ib.dhbw-mannheim.de/fileadmin/ms/bwl-ib/Downloads_alt/Leitfaden_31.05.pdf
|
||||||
|
|
||||||
|
\iflang{en}{%
|
||||||
|
The {\arbeit} on hand
|
||||||
|
\begin{center}{\itshape{} \titel{}\/}\end{center}
|
||||||
|
contains internal resp.\ confidential data of {\firma}. It is intended solely for inspection by the assigned examiner, the head of the {\studiengang} department and, if necessary, the Audit Committee \langanderdh{} {\dhbw}. It is strictly forbidden
|
||||||
|
\begin{itemize}
|
||||||
|
\item to distribute the content of this paper (including data, figures, tables, charts etc.) as a whole or in extracts,
|
||||||
|
\item to make copies or transcripts of this paper or of parts of it,
|
||||||
|
\item to display this paper or make it available in digital, electronic or virtual form.
|
||||||
|
\end{itemize}
|
||||||
|
Exceptional cases may be considered through permission granted in written form by the author and {\firma}.
|
||||||
|
}
|
||||||
|
|
||||||
|
\vspace{3em}
|
||||||
|
|
||||||
|
\abgabeort, \datumAbgabe
|
||||||
|
\vspace{4em}
|
||||||
|
|
||||||
|
\rule{6cm}{0.4pt}\\
|
||||||
|
\autor
|
176
paper/bib_expose.bib
Normal file
176
paper/bib_expose.bib
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
|
||||||
|
@incollection{escalona_open_2019,
|
||||||
|
address = {Cham},
|
||||||
|
title = {An {Open} {Source} {Approach} for {Modernizing} {Message}-{Processing} and {Transactional} {COBOL} {Applications} by {Integration} in {Java} {EE} {Application} {Servers}},
|
||||||
|
volume = {372},
|
||||||
|
isbn = {978-3-030-35329-2 978-3-030-35330-8},
|
||||||
|
url = {http://link.springer.com/10.1007/978-3-030-35330-8_12},
|
||||||
|
language = {en},
|
||||||
|
urldate = {2025-09-02},
|
||||||
|
booktitle = {Web {Information} {Systems} and {Technologies}},
|
||||||
|
publisher = {Springer International Publishing},
|
||||||
|
author = {Brune, Philipp},
|
||||||
|
editor = {Escalona, María José and Domínguez Mayo, Francisco and Majchrzak, Tim A. and Monfort, Valérie},
|
||||||
|
year = {2019},
|
||||||
|
doi = {10.1007/978-3-030-35330-8_12},
|
||||||
|
note = {Series Title: Lecture Notes in Business Information Processing},
|
||||||
|
pages = {244--261},
|
||||||
|
}
|
||||||
|
|
||||||
|
@book{wendt_cobol_1991,
|
||||||
|
address = {Wiesbaden},
|
||||||
|
title = {{COBOL}},
|
||||||
|
copyright = {http://www.springer.com/tdm},
|
||||||
|
isbn = {978-3-409-19726-7 978-3-322-87615-7},
|
||||||
|
url = {http://link.springer.com/10.1007/978-3-322-87615-7},
|
||||||
|
language = {de},
|
||||||
|
urldate = {2025-09-02},
|
||||||
|
publisher = {Gabler Verlag},
|
||||||
|
author = {Wendt, Joachim},
|
||||||
|
year = {1991},
|
||||||
|
doi = {10.1007/978-3-322-87615-7},
|
||||||
|
keywords = {Algorithmen, Betriebswirtschaft, COBOL, Compiler, Datenverarbeitung, Debugging, Funktionen, Graphen, Maschinensprache, Programmentwicklung, Programmiersprache, Programmierung, Selektion, Suche, Windows},
|
||||||
|
file = {Full Text PDF:C\:\\Users\\mujdrica\\Zotero\\storage\\NLKVU7AV\\Wendt - 1991 - COBOL.pdf:application/pdf},
|
||||||
|
}
|
||||||
|
|
||||||
|
@book{coughlan_beginning_2014,
|
||||||
|
address = {Berkeley, CA},
|
||||||
|
title = {Beginning {COBOL} for {Programmers}},
|
||||||
|
copyright = {http://www.springer.com/tdm},
|
||||||
|
isbn = {978-1-4302-6253-4 978-1-4302-6254-1},
|
||||||
|
url = {http://link.springer.com/10.1007/978-1-4302-6254-1},
|
||||||
|
language = {en},
|
||||||
|
urldate = {2025-09-02},
|
||||||
|
publisher = {Apress},
|
||||||
|
author = {Coughlan, Michael},
|
||||||
|
year = {2014},
|
||||||
|
doi = {10.1007/978-1-4302-6254-1},
|
||||||
|
file = {Full Text PDF:C\:\\Users\\mujdrica\\Zotero\\storage\\9J98MS66\\Coughlan - 2014 - Beginning COBOL for Programmers.pdf:application/pdf},
|
||||||
|
}
|
||||||
|
|
||||||
|
@article{lano_agile_2024,
|
||||||
|
title = {Agile model-driven re-engineering},
|
||||||
|
volume = {20},
|
||||||
|
issn = {1614-5046, 1614-5054},
|
||||||
|
url = {https://link.springer.com/10.1007/s11334-024-00568-z},
|
||||||
|
doi = {10.1007/s11334-024-00568-z},
|
||||||
|
abstract = {Abstract
|
||||||
|
In this paper we describe an Agile model-driven engineering (MDE) approach, AMDRE, for the re-engineering of legacy systems. The objective is to support the reuse of business-critical functionality from such systems and the porting of legacy code to modernised platforms, together with technical debt reduction to improve the system maintainability and extend its useful life. AMDRE uses a lightweight MDE process which involves the automated abstraction of software systems to UML specifications and the interactive application of refactoring and rearchitecting transformations to remove quality flaws and architectural flaws. We demonstrate the approach on Visual Basic, COBOL and Python legacy codes, including a finance industry case. Significant quality improvements are achieved, and translation accuracy over 80\% is demonstrated. In comparison to other MDE re-engineering approaches, AMDRE does not require high MDE skills and should be usable by mainstream software practitioners.},
|
||||||
|
language = {en},
|
||||||
|
number = {4},
|
||||||
|
urldate = {2025-09-02},
|
||||||
|
journal = {Innovations in Systems and Software Engineering},
|
||||||
|
author = {Lano, Kevin and Haughton, Howard and Yuan, Ziwen and Alfraihi, Hessa},
|
||||||
|
month = dec,
|
||||||
|
year = {2024},
|
||||||
|
pages = {559--584},
|
||||||
|
file = {Full Text:C\:\\Users\\mujdrica\\Zotero\\storage\\I9X9GXIA\\Lano et al. - 2024 - Agile model-driven re-engineering.pdf:application/pdf},
|
||||||
|
}
|
||||||
|
|
||||||
|
@article{petrulio_indolent_2021,
|
||||||
|
title = {The indolent lambdification of {Java}: {Understanding} the support for lambda expressions in the {Java} ecosystem},
|
||||||
|
volume = {26},
|
||||||
|
issn = {1382-3256, 1573-7616},
|
||||||
|
shorttitle = {The indolent lambdification of {Java}},
|
||||||
|
url = {https://link.springer.com/10.1007/s10664-021-10039-9},
|
||||||
|
doi = {10.1007/s10664-021-10039-9},
|
||||||
|
abstract = {Abstract
|
||||||
|
As Java 8 introduced functional interfaces and lambda expressions to the Java programming language, the JDK API was changed to introduce support for lambda expressions, thus allowing consumers to define lambda functions when using Java’s collections. While the JDK API allows for a functional paradigm, for API consumers to be able to completely embrace Java’s new functional features, third-party APIs must also support lambda expressions. To understand the current state of the Java ecosystem, we investigate (i) the extent to which third-party Java APIs have changed their interfaces, (ii) why or why not they introduce functional interface support and (iii) in the case the API has changed its interface how it does so. We also investigate the consumers’ perspective, particularly their ease in using lambda expressions in Java with APIs. We perform our investigation by manually analyzing the top 50 popular Java APIs, conducting in-person and email interviews with 23 API producers, and surveying 110 developers. We find that only a minority of the top 50 APIs support functional interfaces, the rest does not support them, predominantly in the interest of backward compatibility. Java 7 support is still greatly desirable due to enterprise projects not migrating to newer versions of Java. This suggests that the Java ecosystem is stagnant and that the introduction of new language features will not be enough to save it from the advent of new languages such as Kotlin (JVM based) and Rust (non-JVM based).},
|
||||||
|
language = {en},
|
||||||
|
number = {6},
|
||||||
|
urldate = {2025-09-02},
|
||||||
|
journal = {Empirical Software Engineering},
|
||||||
|
author = {Petrulio, Fernando and Sawant, Anand Ashok and Bacchelli, Alberto},
|
||||||
|
month = nov,
|
||||||
|
year = {2021},
|
||||||
|
pages = {134},
|
||||||
|
file = {Full Text:C\:\\Users\\mujdrica\\Zotero\\storage\\GGRBSV58\\Petrulio et al. - 2021 - The indolent lambdification of Java Understanding the support for lambda expressions in the Java ec.pdf:application/pdf},
|
||||||
|
}
|
||||||
|
|
||||||
|
@inproceedings{hans_automated_2025,
|
||||||
|
address = {Clarion Hotel Trondheim Trondheim Norway},
|
||||||
|
title = {Automated {Testing} of {COBOL} to {Java} {Transformation}},
|
||||||
|
isbn = {979-8-4007-1276-0},
|
||||||
|
url = {https://dl.acm.org/doi/10.1145/3696630.3728548},
|
||||||
|
doi = {10.1145/3696630.3728548},
|
||||||
|
language = {en},
|
||||||
|
urldate = {2025-09-02},
|
||||||
|
booktitle = {Proceedings of the 33rd {ACM} {International} {Conference} on the {Foundations} of {Software} {Engineering}},
|
||||||
|
publisher = {ACM},
|
||||||
|
author = {Hans, Sandeep and Kumar, Atul and Yasue, Toshiaki and Ono, Kouichi and Krishnan, Saravanan and Sondhi, Devika and Satoh, Fumiko and Mitchell, Gerald and Kumar, Sachin and Saha, Diptikalyan},
|
||||||
|
month = jun,
|
||||||
|
year = {2025},
|
||||||
|
pages = {227--237},
|
||||||
|
}
|
||||||
|
|
||||||
|
@inproceedings{gandhi_translation_2024,
|
||||||
|
title = {Translation of {Low}-{Resource} {COBOL} to {Logically} {Correct} and {Readable} {Java} leveraging {High}-{Resource} {Java} {Refinement}},
|
||||||
|
url = {https://ieeexplore.ieee.org/document/10734649},
|
||||||
|
abstract = {Automated translation of legacy code to modern programming languages is the need of the hour for modernizing enterprise systems. This work specifically addresses automated COBOL to Java translation. Traditional rule-based tools for this perform statement-wise translation, overlooking possible modularization and refactoring of the source COBOL code to translate to human-readable target Java code. Our investigation reveals that state-of-the-art Large Language Models (LLMs) in the domain of code encounter difficulties with regard to logical correctness and readability when directly translating low-resource COBOL code to Java. To address these challenges, we propose an LLM-based workflow, leveraging temperature sampling and refinement-based strategies, to not only ensure logical correctness of the translation but also maximize the readability of the target Java code. We exploit the fact that, due to their extensive exposure to human-written Java codes during pre-training, the LLMs are more equipped with profound comprehension and capability for refining translated Java codes than COBOL to Java translation. With a dataset sourced from CodeNet, we perform sequential refinement of the translated high-resource Java code with execution-guided logic feedback followed by LLM-based readability feedback. We demonstrate that this yields better performance in terms of logical correctness (81.99\% execution accuracy) and readability (0.610 score), than LLM based translation with test cases and readability guidance (60.25\% and 0.539) or refinement of the translation task itself (77.95\% and 0.572).CCS CONCEPTS• Computing methodologies → Machine translation; Neural networks; • Software and its engineering → Software evolution; Maintaining software.},
|
||||||
|
urldate = {2025-09-02},
|
||||||
|
booktitle = {2024 {IEEE}/{ACM} {International} {Workshop} on {Large} {Language} {Models} for {Code} ({LLM4Code})},
|
||||||
|
author = {Gandhi, Shubham and Patwardhan, Manasi and Khatri, Jyotsana and Vig, Lovekesh and Medicherla, Raveendra Kumar},
|
||||||
|
month = apr,
|
||||||
|
year = {2024},
|
||||||
|
keywords = {Accuracy, Code Readability, Code Translation, Codes, Java, Large language models, Large Language Models, Logic, Low Resource Programming Languages, Machine translation, Neural networks, Programming, Refining, Self-Refinement, Software},
|
||||||
|
pages = {46--53},
|
||||||
|
file = {Snapshot:C\:\\Users\\mujdrica\\Zotero\\storage\\HJVVTKWX\\10734649.html:text/html},
|
||||||
|
}
|
||||||
|
|
||||||
|
@inproceedings{suganuma_performance_2008,
|
||||||
|
address = {Nashville TN USA},
|
||||||
|
title = {Performance pitfalls in large-scale java applications translated from {COBOL}},
|
||||||
|
isbn = {978-1-60558-220-7},
|
||||||
|
url = {https://dl.acm.org/doi/10.1145/1449814.1449822},
|
||||||
|
doi = {10.1145/1449814.1449822},
|
||||||
|
language = {en},
|
||||||
|
urldate = {2025-09-02},
|
||||||
|
booktitle = {Companion to the 23rd {ACM} {SIGPLAN} conference on {Object}-oriented programming systems languages and applications},
|
||||||
|
publisher = {ACM},
|
||||||
|
author = {Suganuma, Toshio and Yasue, Toshiaki and Onodera, Tamiya and Nakatani, Toshio},
|
||||||
|
month = oct,
|
||||||
|
year = {2008},
|
||||||
|
pages = {685--696},
|
||||||
|
}
|
||||||
|
|
||||||
|
@misc{ali_x-cobol_2023,
|
||||||
|
title = {X-{COBOL}: {A} {Dataset} of {COBOL} {Repositories}},
|
||||||
|
copyright = {Creative Commons Attribution Non Commercial Share Alike 4.0 International},
|
||||||
|
shorttitle = {X-{COBOL}},
|
||||||
|
url = {https://arxiv.org/abs/2306.04892},
|
||||||
|
doi = {10.48550/ARXIV.2306.04892},
|
||||||
|
abstract = {Despite being proposed as early as 1959, COBOL (Common Business-Oriented Language) still predominantly acts as an integral part of the majority of operations of several financial, banking, and governmental organizations. To support the inevitable modernization and maintenance of legacy systems written in COBOL, it is essential for organizations, researchers, and developers to understand the nature and source code of COBOL programs. However, to the best of our knowledge, we are unaware of any dataset that provides data on COBOL software projects, motivating the need for the dataset. Thus, to aid empirical research on comprehending COBOL in open-source repositories, we constructed a dataset of 84 COBOL repositories mined from GitHub, containing rich metadata on the development cycle of the projects. We envision that researchers can utilize our dataset to study COBOL projects' evolution, code properties and develop tools to support their development. Our dataset also provides 1255 COBOL files present inside the mined repositories. The dataset and artifacts are available at https://doi.org/10.5281/zenodo.7968845.},
|
||||||
|
urldate = {2025-09-02},
|
||||||
|
publisher = {arXiv},
|
||||||
|
author = {Ali, Mir Sameed and Manjunath, Nikhil and Chimalakonda, Sridhar},
|
||||||
|
year = {2023},
|
||||||
|
note = {Version Number: 1},
|
||||||
|
keywords = {D.2.6; D.3, FOS: Computer and information sciences, Programming Languages (cs.PL), Software Engineering (cs.SE)},
|
||||||
|
annote = {Other
|
||||||
|
5 pages},
|
||||||
|
}
|
||||||
|
|
||||||
|
@inproceedings{erdmenger_translator_2011,
|
||||||
|
title = {Ein {Translator} für die {COBOL}-{Java}-{Migration}},
|
||||||
|
url = {https://dl.gi.de/handle/20.500.12116/40991},
|
||||||
|
abstract = {In [1] wurden von pro et con bereits erste Ansätze der Migration von COBOL nach Java dargestellt. Nach dem erfolgreichen Abschluss des Projektes SOAMIG1 sollen in diesem Beitrag die Ergebnisse im Bereich der COBOLMigration vorgestellt werden. Neben einem Überblick über das entstandene Werkzeug CoJaC (COBOL to Java Converter) sollen dabei die Migration der Schnittstellen eines COBOL-Programms und eine differenzierte Betrachtung des generierten Java-Codes bezüglich seiner Wartbarkeit und Qualität im Vordergrund stehen.},
|
||||||
|
language = {de},
|
||||||
|
urldate = {2025-09-02},
|
||||||
|
publisher = {Geselllschaft für Informatik e.V.},
|
||||||
|
author = {Erdmenger, Uwe and Uhlig, Denis},
|
||||||
|
year = {2011},
|
||||||
|
file = {Full Text PDF:C\:\\Users\\mujdrica\\Zotero\\storage\\HKNDUGFB\\Erdmenger and Uhlig - 2011 - Ein Translator für die COBOL-Java-Migration.pdf:application/pdf},
|
||||||
|
}
|
||||||
|
|
||||||
|
@book{tsui_essentials_2022,
|
||||||
|
title = {Essentials of {Software} {Engineering}},
|
||||||
|
isbn = {978-1-284-22899-1},
|
||||||
|
abstract = {Written for the undergraduate, 1-term course, Essentials of Software Engineering provides students with a systematic engineering approach to software engineering principles and methodologies. Comprehensive yet concise, the new edition covers some of the latest improvements in technology and tools, while reducing areas that are becoming less relevant. In-depth coverage of key issues, combined with a strong focus on software quality, makes Essentials of Software Engineering the perfect text for students entering the fast-growing and lucrative field of software development. The text includes thorough overviews of programming concepts, system analysis and design, principles of software engineering, development and support processes, methodologies, software testing, quality assurance, and product management, while incorporating real-world examples throughout. Presents a broad coverage of the software engineering field that lends itself well to an introductory course. Clearly differentiates and explains software engineering from the subtopics of software processes, software development, and software management. Expanded coverage of continuous integration and Agile methodologies. New coverage of contemporary design and development ideas, including SOA, microservices, virtualization, and containerization. © 2023 {\textbar} 332 pages},
|
||||||
|
language = {en},
|
||||||
|
publisher = {Jones \& Bartlett Learning},
|
||||||
|
author = {Tsui, Frank and Karam, Orlando and Bernal, Barbara},
|
||||||
|
month = jan,
|
||||||
|
year = {2022},
|
||||||
|
note = {Google-Books-ID: lN9XEAAAQBAJ},
|
||||||
|
keywords = {Computers / Programming / General, Computers / Security / Network Security, Computers / Software Development \& Engineering / General, Mathematics / General},
|
||||||
|
}
|
47
paper/bibliographie.bib
Normal file
47
paper/bibliographie.bib
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
@book{example.book,
|
||||||
|
author = {Mitchell, Tom Michael},
|
||||||
|
year = {1997},
|
||||||
|
title = {Machine Learning},
|
||||||
|
keywords = {Buch;Entscheidungsb{\"a}ume},
|
||||||
|
address = {New York},
|
||||||
|
edition = {International ed.},
|
||||||
|
publisher = {McGraw-Hill},
|
||||||
|
isbn = {0071154671 },
|
||||||
|
series = {McGraw-Hill international editions. Computer science series}
|
||||||
|
}
|
||||||
|
|
||||||
|
@article{example.article,
|
||||||
|
abstract = {The technology for building knowledge-based systems by inductive inference from examples has been demonstrated successfully in several practical applications. This paper summarizes an approach to synthesizing decision trees that has been used in a variety of systems, and it describes one such system, ID3, in detail. Results from recent studies show ways in which the methodology can be modified to deal with information that is noisy and/or incomplete. A reported shortcoming of the basic algorithm is discussed and two means of overcoming it are compared. The paper concludes with illustrations of current research directions.},
|
||||||
|
author = {Quinlan, J. R.},
|
||||||
|
year = {1986},
|
||||||
|
title = {Induction of decision trees},
|
||||||
|
url = {https://link.springer.com/article/10.1007/BF00116251 },
|
||||||
|
keywords = {Entscheidungsb{\"a}ume},
|
||||||
|
pages = {81--106},
|
||||||
|
volume = {1},
|
||||||
|
number = {1},
|
||||||
|
issn = {1573-0565},
|
||||||
|
journal = {Machine Learning},
|
||||||
|
doi = {10.1007/BF00116251 },
|
||||||
|
file = {31146d1f-a5a1-42b8-bf8d-c1994fd774dc:C\:\\Users\\mujdrica\\AppData\\Local\\Swiss Academic Software\\Citavi 6\\ProjectCache\\dzg95emdx4uirv928vw5rt5frpkg46ghw8vr21834ibg6\\Citavi Attachments\\31146d1f-a5a1-42b8-bf8d-c1994fd774dc.pdf:pdf}
|
||||||
|
}
|
||||||
|
|
||||||
|
@inproceedings{example.inproceeding,
|
||||||
|
abstract = {In this paper, the effect of overfitting displayed by a decision tree classifier model is studied and the method of resampling technique to eliminate the overfitting is implemented in the pre-pruning stage of the algorithm. The classifier is built for fault classification function subjected to a synthetically generated dataset of the benchmark DAMADICS process which represents a pneumatic actuator system. The overfitting problem for both multiclass classification and binary class classification using maximum depth as the optimized hyper parameter is analyzed. The results before and after eradicating the overfit are tabulated. The performance of the model is plotted between hyper parameter chosen and the testing, training accuracy. The best fit tree model is also graphically visualized.},
|
||||||
|
author = {{P. Mahalingam} and {D. Kalpana} and {T. Thyagarajan}},
|
||||||
|
title = {Overfit Analysis on Decision Tree Classifier for Fault Classification in DAMADICS},
|
||||||
|
keywords = {Entscheidungsb{\"a}ume;Paper},
|
||||||
|
pages = {1--4},
|
||||||
|
booktitle = {2021 IEEE Madras Section Conference (MASCON)},
|
||||||
|
year = {2021},
|
||||||
|
doi = {10.1109/MASCON51689.2021.9563557 }
|
||||||
|
}
|
||||||
|
|
||||||
|
@misc{example.misc,
|
||||||
|
abstract = {When we discuss prediction models, prediction errors can be decomposed into two main subcomponents we care about: error due to bias and error due to variance. There is a tradeoff between a model's ability to minimize bias and variance. Understanding these two types of error can help us diagnose model results and avoid the mistake of over- or under-fitting.},
|
||||||
|
year = {01.06.2012},
|
||||||
|
author = {Scott Fortmann-Roe},
|
||||||
|
title = {Understanding the Bias-Variance Tradeoff},
|
||||||
|
url = {https://scott.fortmann-roe.com/docs/BiasVariance.html},
|
||||||
|
urldate = {13.07.2023}
|
||||||
|
}
|
7
paper/content/01kapitel.tex
Normal file
7
paper/content/01kapitel.tex
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
%!TEX root = ../dokumentation.tex
|
||||||
|
\chapter{Einleitung} \label{kap:einleitung}
|
||||||
|
\section{Ziel der wissenschaftlichen Arbeit} \label{kap:einleitung_ziel}
|
||||||
|
\section{Vorgehensweise}
|
||||||
|
\label{kap:einleitung_vorgehensweise}
|
||||||
|
\section{Wirtschaftlicher Wert}
|
||||||
|
\label{kap:einleitung_wirtschaft}
|
2
paper/content/02kapitel.tex
Normal file
2
paper/content/02kapitel.tex
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
\chapter{Ein einf\"uhrendes Beispiel}
|
||||||
|
\label{kap:beispiel}
|
8
paper/content/03kapitel.tex
Normal file
8
paper/content/03kapitel.tex
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
\chapter{Theoretische Grundlagen}
|
||||||
|
\label{kap:theorie}
|
||||||
|
\section{COBOL}
|
||||||
|
\label{kap:theorie_cobol}
|
||||||
|
\section{Compiler und Transpiler}
|
||||||
|
\label{kap:theorie_compiler}
|
||||||
|
\section{State of the Art: heutiger Umgang mit COBOL}
|
||||||
|
\label{kap:theorie_state_of_the_art}
|
2
paper/content/04kapitel.tex
Normal file
2
paper/content/04kapitel.tex
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
\chapter{Methodik}
|
||||||
|
\label{kap:methodik}
|
2
paper/content/05kapitel.tex
Normal file
2
paper/content/05kapitel.tex
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
\chapter{Praktischer Teil}
|
||||||
|
\label{kap:praxis}
|
12
paper/content/06kapitel.tex
Normal file
12
paper/content/06kapitel.tex
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
\chapter{Diskussion}
|
||||||
|
\label{kap:diskussion}
|
||||||
|
\section{Zusammenfassung der Ergebnisse}
|
||||||
|
\label{kap:diskussion_zusammenfassung}
|
||||||
|
\section{Bewertung der Ergebnisse}
|
||||||
|
\label{kap:bewertung_ergebnisse}
|
||||||
|
\section{Bewertung der Durchführung}
|
||||||
|
\label{kap:diskussion_bewertung_durchfuehrung}
|
||||||
|
\section{Einordnung in aktuellen Stand der Wissenschaft}
|
||||||
|
\label{kap:Diskussion_einordnung}
|
||||||
|
\section{Limitationen der Arbeit}
|
||||||
|
\label{kap:diskussion_limitation}
|
2
paper/content/07kapitel.tex
Normal file
2
paper/content/07kapitel.tex
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
\chapter{Fazit und Ausblick}
|
||||||
|
\label{kap:fazit}
|
48
paper/content/Codebeispiel.tex
Normal file
48
paper/content/Codebeispiel.tex
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
%!TEX root = ../dokumentation.tex
|
||||||
|
|
||||||
|
\chapter{Beispiel Code-schnipsel einbinden}
|
||||||
|
|
||||||
|
%title wird unter dem Bsp. abgedruckt
|
||||||
|
%caption wird im Verzeichnis abgedruckt
|
||||||
|
%label wird zum referenzieren benutzt, muss einzigartig sein.
|
||||||
|
|
||||||
|
\begin{lstlisting}[caption=Code-Beispiel, label=Bsp.1]
|
||||||
|
public class HelloWorld {
|
||||||
|
public static void main (String[] args) {
|
||||||
|
// Ausgabe Hello World!
|
||||||
|
System.out.println("Hello World!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\end{lstlisting}
|
||||||
|
|
||||||
|
|
||||||
|
%\begin{lstlisting}[caption=HTML-Code, label=HTML-Code, title=Erstellen %eines %Video-Element, language=HTML]
|
||||||
|
%<video id="videoAnimation1" className="mx-60 hidden" %src="file/videoname.mp4"></video>
|
||||||
|
%\end{lstlisting}
|
||||||
|
|
||||||
|
%language ändert die Sprache. (Wenn nur eine Sprache verwendet wird, kann diese Sprache in einstellungen.tex geändert werden. Standardmäßig Java.)
|
||||||
|
\begin{lstlisting}[caption=Python-Code, label=Python-Code, title=Titel des Python-Codes,language=Python]
|
||||||
|
def quicksort(liste):
|
||||||
|
if len(liste) <= 1:
|
||||||
|
return liste
|
||||||
|
pivotelement = liste.pop()
|
||||||
|
links = [element for element in liste if element < pivotelement]
|
||||||
|
rechts = [element for element in liste if element >= pivotelement]
|
||||||
|
return quicksort(links) + [pivotelement] + quicksort(rechts)
|
||||||
|
# Quelle: http://de.wikipedia.org/wiki/Python_(Programmiersprache)
|
||||||
|
\end{lstlisting}
|
||||||
|
|
||||||
|
\section{lorem ipsum}
|
||||||
|
Looking for the one superhero comic you just have to read. Following the antics and adventures of May Mayday Parker, this Spider-book has everything you could want in a comic--action, laughs, mystery and someone in a Spidey suit. Collects Alias \#1-28, What If. Jessica Jones had Joined the Avengers. In her inaugural arc, Jessicas life immediately becomes expendable when she uncovers the potentially explosive secret of one heros true identity.
|
||||||
|
|
||||||
|
Once upon a time, Jessica Jones was a costumed super-hero, just not a very good one. First, a story where Wolverine and Hulk come together, and then Captain America and Cable meet up. In a city of Marvels, Jessica Jones never found her niche. The classic adventures of Spider-Man from the early days up until the 90s. Looking for the one superhero comic you just have to read.
|
||||||
|
|
||||||
|
Meet all of Spideys deadly enemies, from the Green Goblin and Doctor Octopus to Venom and Carnage, plus see Peter Parker fall in love, face tragedy and triumph, and learn that with great power comes great responsibility. In a city of Marvels, Jessica Jones never found her niche. Bitten by a radioactive spider, high school student Peter Parker gained the speed, strength and powers of a spider. Looking for the one superhero comic you just have to read. What do you get when you ask the question, What if Spider-Man had a daughter.
|
||||||
|
|
||||||
|
The classic adventures of Spider-Man from the early days up until the 90s. Amazing Spider-Man is the cornerstone of the Marvel Universe. But will each partner’s combined strength be enough. Adopting the name Spider-Man, Peter hoped to start a career using his new abilities. Youve found it.
|
||||||
|
|
||||||
|
\section{Verweis auf Code}
|
||||||
|
Verweis auf den Code \autoref{Bsp.1}.\\
|
||||||
|
und der Python-Code \autoref{Python-Code}.
|
||||||
|
|
||||||
|
Zweite Erwähnung einer Abkürzung \ac{AGPL} (Erlärung wird nicht mehr angezeigt)
|
102
paper/dokumentation.tex
Normal file
102
paper/dokumentation.tex
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
%%**************************************************************
|
||||||
|
%% Vorlage fuer Bachelorarbeiten (o.ä.) der DHBW
|
||||||
|
%%
|
||||||
|
%% Autor: Tobias Dreher, Yves Fischer
|
||||||
|
%% Datum: 06.07.2011
|
||||||
|
%%
|
||||||
|
%% Autor: Michael Gruben
|
||||||
|
%% Datum: 15.05.2013
|
||||||
|
%%
|
||||||
|
%% Autor: Markus Barthel
|
||||||
|
%% Datum: 22.08.2014
|
||||||
|
%%**************************************************************
|
||||||
|
|
||||||
|
\input{ads/header}
|
||||||
|
|
||||||
|
\makeglossaries
|
||||||
|
\input{ads/glossary}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
% Deckblatt
|
||||||
|
\begin{spacing}{1}
|
||||||
|
\input{ads/deckblatt}
|
||||||
|
\end{spacing}
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
\pagenumbering{Roman}
|
||||||
|
|
||||||
|
% Sperrvermerk
|
||||||
|
%\input{ads/sperrvermerk}
|
||||||
|
%\newpage
|
||||||
|
|
||||||
|
% Erklärung
|
||||||
|
\input{ads/erklaerung}
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
% Abstract
|
||||||
|
\input{ads/abstract}
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
\pagestyle{plain} % nur Seitenzahlen im Fuß
|
||||||
|
|
||||||
|
\RedeclareSectionCommand[beforeskip=\kapitelabstand ]{chapter} % stellt Abstand vor Kapitelüberschriften ein
|
||||||
|
|
||||||
|
% Inhaltsverzeichnis
|
||||||
|
\begin{spacing}{1.1}
|
||||||
|
\begingroup
|
||||||
|
|
||||||
|
% auskommentieren für Seitenzahlen unter Inhaltsverzeichnis
|
||||||
|
\renewcommand*{\chapterpagestyle}{empty}
|
||||||
|
\pagestyle{empty}
|
||||||
|
|
||||||
|
|
||||||
|
\setcounter{tocdepth}{2}
|
||||||
|
%für die Anzeige von Unterkapiteln im Inhaltsverzeichnis
|
||||||
|
%\setcounter{tocdepth}{2}
|
||||||
|
|
||||||
|
\tableofcontents
|
||||||
|
\clearpage
|
||||||
|
\endgroup
|
||||||
|
\end{spacing}
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
% Abkürzungsverzeichnis
|
||||||
|
\cleardoublepage
|
||||||
|
\input{ads/acronyms}
|
||||||
|
|
||||||
|
% Abbildungsverzeichnis
|
||||||
|
|
||||||
|
\listoffigures
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
\cleardoublepage
|
||||||
|
|
||||||
|
\pagestyle{headings} % Kolumnentitel im Kopf, Seitenzahlen im Fuß
|
||||||
|
\pagenumbering{arabic}
|
||||||
|
% Inhalt
|
||||||
|
\foreach \i in {01,02,03,04,05,06,07,08,09,...,99} {%
|
||||||
|
\edef\FileName{content/\i kapitel}%
|
||||||
|
\IfFileExists{\FileName}{%
|
||||||
|
\input{\FileName}
|
||||||
|
}
|
||||||
|
{%
|
||||||
|
%file does not exist
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
% Literaturverzeichnis
|
||||||
|
\cleardoublepage
|
||||||
|
\printbibliography
|
||||||
|
|
||||||
|
% Glossar
|
||||||
|
\printglossary[style=altlist,title=\langglossar]
|
||||||
|
|
||||||
|
% sonstiger Anhang
|
||||||
|
%\clearpage
|
||||||
|
%\appendix
|
||||||
|
%\input{ads/appendix}
|
||||||
|
|
||||||
|
\end{document}
|
120
paper/einstellungen.tex
Normal file
120
paper/einstellungen.tex
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
% Einstellungen
|
||||||
|
%
|
||||||
|
% Hier können alle relevanten Einstellungen für diese Arbeit gesetzt werden.
|
||||||
|
% Dazu gehören Angaben u.a. über den Autor sowie Formatierungen.
|
||||||
|
%
|
||||||
|
%
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Sprache %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% Aktuell sind Deutsch und Englisch unterstützt.
|
||||||
|
%% Es werden nicht nur alle vom Dokument erzeugten Texte in
|
||||||
|
%% der entsprechenden Sprache angezeigt, sondern auch weitere
|
||||||
|
%% Aspekte angepasst, wie z.B. die Anführungszeichen und
|
||||||
|
%% Datumsformate.
|
||||||
|
\setzesprache{de} % oder en
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Angaben %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% Die meisten der folgenden Daten werden auf dem
|
||||||
|
%% Deckblatt angezeigt, einige auch im weiteren Verlauf
|
||||||
|
%% des Dokuments.
|
||||||
|
\setzemartrikelnr{8603858}
|
||||||
|
\setzekurs{CAS-TMINF24-W}
|
||||||
|
\setzetitel{Proof of Concept eines interaktiven Transpilers zur teilautomatisierten Übersetzung von COBOL in eine moderne Hochsprache}
|
||||||
|
\setzedatumAbgabe{Abgabedatum}
|
||||||
|
\setzefirma{Firmenname}
|
||||||
|
\setzefirmenort{Firmenort}
|
||||||
|
\setzeabgabeort{Abgabeort}
|
||||||
|
\setzeabschluss{Master of Science}
|
||||||
|
\setzestudiengang{Informatik}
|
||||||
|
\setzedhbw{DHBW Ort}
|
||||||
|
\setzebetreuer{Betreuer}
|
||||||
|
\setzegutachter{Gutachter}
|
||||||
|
\setzezweitgutachter{Zweitgutachter}
|
||||||
|
\setzezeitraum{Zeitraum}
|
||||||
|
\setzearbeit{Studienarbeit}
|
||||||
|
\setzeautor{Fabian Mujdrica}
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%% Literaturverzeichnis %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% Bei Fehlern während der Verarbeitung bitte in ads/header.tex bei der
|
||||||
|
%% Einbindung des Pakets biblatex (ungefähr ab Zeile 110,
|
||||||
|
%% einmal für jede Sprache), biber in bibtex ändern.
|
||||||
|
\newcommand{\ladeliteratur}{%
|
||||||
|
\addbibresource{bibliographie.bib}
|
||||||
|
%\addbibresource{weitereDatei.bib}
|
||||||
|
}
|
||||||
|
%% Zitierstil
|
||||||
|
%% siehe: http://ctan.mirrorcatalogs.com/macros/latex/contrib/biblatex/doc/biblatex.pdf (3.3.1 Citation Styles)
|
||||||
|
%% mögliche Werte z.B numeric-comp, alphabetic, authoryear
|
||||||
|
\setzezitierstil{ieee}
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% Verschiedene Schriftarten
|
||||||
|
% laut nag Warnung: palatino obsolete, use mathpazo, helvet (option scaled=.95), courier instead
|
||||||
|
\setzeschriftart{helvet} % palatino oder goudysans, lmodern, libertine
|
||||||
|
|
||||||
|
%% Paket um Textteile drehen gzu können
|
||||||
|
\usepackage{rotating}
|
||||||
|
%% Paket um Seite im Querformat anzuzeigen
|
||||||
|
%\usepackage{lscape}
|
||||||
|
|
||||||
|
%% Seitenränder
|
||||||
|
\setzeseitenrand{2.5cm}
|
||||||
|
|
||||||
|
%% Abstand vor Kapitelüberschriften zum oberen Seitenrand
|
||||||
|
\setzekapitelabstand{20pt}
|
||||||
|
|
||||||
|
%% Spaltenabstand
|
||||||
|
\setzespaltenabstand{10pt}
|
||||||
|
%%Zeilenabstand innerhalb einer Tabelle
|
||||||
|
\setzezeilenabstand{1.5}
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Verschiedenes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% Farben (Angabe in HTML-Notation mit großen Buchstaben)
|
||||||
|
\newcommand{\ladefarben}{%
|
||||||
|
\definecolor{LinkColor}{HTML}{00007A}
|
||||||
|
\definecolor{ListingBackground}{HTML}{FCF7DE}
|
||||||
|
}
|
||||||
|
%% Mathematikpakete benutzen (Pakete aktivieren)
|
||||||
|
%\usepackage{amsmath}
|
||||||
|
%\usepackage{amssymb}
|
||||||
|
|
||||||
|
%% Programmiersprachen Highlighting (Listings)
|
||||||
|
\newcommand{\listingsettings}{%
|
||||||
|
\lstset{%
|
||||||
|
language=C++, % Standardsprache des Quellcodes
|
||||||
|
numbers=left, % Zeilennummern links
|
||||||
|
stepnumber=1, % Jede Zeile nummerieren.
|
||||||
|
numbersep=5pt, % 5pt Abstand zum Quellcode
|
||||||
|
numberstyle=\tiny, % Zeichengrösse 'tiny' für die Nummern.
|
||||||
|
breaklines=true, % Zeilen umbrechen wenn notwendig.
|
||||||
|
breakautoindent=true, % Nach dem Zeilenumbruch Zeile einrücken.
|
||||||
|
postbreak=\space, % Bei Leerzeichen umbrechen.
|
||||||
|
tabsize=2, % Tabulatorgrösse 2
|
||||||
|
basicstyle=\ttfamily\footnotesize, % Nichtproportionale Schrift, klein für den Quellcode
|
||||||
|
showspaces=false, % Leerzeichen nicht anzeigen.
|
||||||
|
showstringspaces=false, % Leerzeichen auch in Strings ('') nicht anzeigen.
|
||||||
|
extendedchars=true, % Alle Zeichen vom Latin1 Zeichensatz anzeigen.
|
||||||
|
captionpos=b, % sets the caption-position to bottom
|
||||||
|
backgroundcolor=\color{ListingBackground}, % Hintergrundfarbe des Quellcodes setzen.
|
||||||
|
xleftmargin=0pt, % Rand links
|
||||||
|
xrightmargin=0pt, % Rand rechts
|
||||||
|
frame=single, % Rahmen an
|
||||||
|
frameround=ffff,
|
||||||
|
rulecolor=\color{darkgray}, % Rahmenfarbe
|
||||||
|
fillcolor=\color{ListingBackground},
|
||||||
|
keywordstyle=\color[rgb]{0.133,0.133,0.6},
|
||||||
|
commentstyle=\color[rgb]{0.133,0.545,0.133},
|
||||||
|
stringstyle=\color[rgb]{0.627,0.126,0.941}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Eigenes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% Hier können Ergänzungen zur Präambel vorgenommen werden (eigene Pakete, Einstellungen)
|
153
paper/expose.tex
Normal file
153
paper/expose.tex
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
\documentclass[12pt,a4paper]{article}
|
||||||
|
|
||||||
|
% Pakete
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
\usepackage[ngerman]{babel}
|
||||||
|
\usepackage[scaled=.95]{helvet}\renewcommand\familydefault{\sfdefault}
|
||||||
|
\usepackage{geometry}
|
||||||
|
\usepackage{setspace}
|
||||||
|
\usepackage{csquotes} % für korrekte Zitate
|
||||||
|
\usepackage[backend=biber,style=ieee]{biblatex}
|
||||||
|
|
||||||
|
% Seitenränder und Format
|
||||||
|
\geometry{left=3cm,right=2.5cm,top=3cm,bottom=3cm}
|
||||||
|
\onehalfspacing
|
||||||
|
\setlength{\parindent}{0pt}
|
||||||
|
\setlength{\parskip}{1em}
|
||||||
|
|
||||||
|
% Bibliographie-Datei einbinden
|
||||||
|
\addbibresource{bib_expose.bib}
|
||||||
|
|
||||||
|
% Titel
|
||||||
|
\title{
|
||||||
|
Exposé zur Studienarbeit \\[1cm]
|
||||||
|
\large Arbeitstitel: \\[0.5cm]
|
||||||
|
\LARGE \textbf{Proof of Concept eines interaktiven Transpilers
|
||||||
|
zur teilautomatisierten Übersetzung von COBOL
|
||||||
|
in eine moderne Hochsprache}
|
||||||
|
}
|
||||||
|
\author{Fabian Mujdrica \\
|
||||||
|
Matrikelnummer: 8603858 \\
|
||||||
|
Studiengang: Informatik \\
|
||||||
|
Duale Hochschule Baden-Württemberg Center of Advanced Studies}
|
||||||
|
\date{\today}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
\thispagestyle{empty}
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
\tableofcontents
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
\section{Einleitung}
|
||||||
|
Die Studienarbeit befasst sich mit der Entwicklung eines interaktiven Transpilers
|
||||||
|
zur teilautomatisierten Übersetzung von COBOL-Programmen in Java-Code. Dabei liegt
|
||||||
|
der Fokus des Compilers auf einen interaktiven Aspekt, sodass der Benutzer
|
||||||
|
Merkmale des Codes angeben kann. Dies soll dazu dienen, dass der Code aktuelle Standards
|
||||||
|
der Software-Entwicklung ertfüllt und einfacher wartbar ist.
|
||||||
|
|
||||||
|
\section{Problemstellung}
|
||||||
|
In einer Zeit, in der zwischen 70-80\% der weltweiten Geschäftstransaktionen
|
||||||
|
noch immer von COBOL-Systemen verarbeitet werden, stehen Unternehmen vor der Herausforderung,
|
||||||
|
ihre kritischen Legacy-Systeme zu modernisieren, ohne die Betriebsstabilität zu gefährden.
|
||||||
|
Die immernoch bestehende Abhängigkeit von veralteten Technologien bringt zunehmende Risiken mit sich
|
||||||
|
wie eine schrumpfende Anzahl an COBOL-Entwicklern, steigende Wartungskosten und Schwierigkeiten bei der
|
||||||
|
Integration moderner Technologien. Die Migration von COBOL zu modernen Programmiersprachen ist durch verschiedene technische und organisatorische Herausforderungen
|
||||||
|
charakterisiert. COBOL basiert auf festen Datentypen und starren Datenstrukturen, während moderne
|
||||||
|
(objektorientierte) Programmiersprachen wie Java flexiblere Paradigmen und Architekturmuster bieten.
|
||||||
|
Diese paradigmatischen Unterschiede erschweren eine direkte Transformation. Bestehende automatisierte Transpiler verwenden primär statische Regelwerke ohne Möglichkeit
|
||||||
|
zur benutzerdefinierten Anpassung der Code-Struktur.
|
||||||
|
Dies führt häufig zu starren Ergebnissen, die nicht den idiomatischen Strukturen der Zielsprache entsprechen.
|
||||||
|
Neuere Ansätze mit neuronalen Übersetzungsmodellen zeigen zwar Verbesserungen bei der
|
||||||
|
Codequalität, haben jedoch Schwächen bei der semantischen Äquivalenz und der Einhaltung von Zielsprachen-Idiomen.
|
||||||
|
Auch die technologischen Abhängigkeiten verschärfen die Problematik zusätzlich, da COBOL-Anwendungen häufig auf spezifischen
|
||||||
|
Mainframe-Umgebungen und Datenbanksystemen läuft.
|
||||||
|
\section{Zielsetzung}
|
||||||
|
Das Ziel der Studienarbeit ist die Entwicklung und systematische Evaluation eines Proof of Concept für einen
|
||||||
|
interaktiven COBOL-zu-Java Transpiler. Der Transpiler soll ein beispielhaftes
|
||||||
|
(möglichst realitätsnahes) COBOL-Programm vollständig transpilieren.
|
||||||
|
Der generierte Java-Code soll dabei möglichst den aktuellen Standards der Softwareentwicklung entsprechen
|
||||||
|
und moderne Java-Idiome befolgen. Dabei muss der Transpiler semantische Äquivalenz zwischen Quell- und Zielcode
|
||||||
|
gewährleisten. Der wesentliche Fokus des Transpilers liegt auf der Möglichkeit der
|
||||||
|
Integration moderner Java-Frameworks und Libraries. Der Transpiler soll die automatische Nutzung
|
||||||
|
sowie Ersetzung etablierter Java-Komponenten ermöglichen. Beispielseweise können für Datenbankzugriffe automatisch
|
||||||
|
hierfür standardisierte Libraries verwendet werden. Oder es können Framworks für eine automatische Bereitstellung verwendet werden.
|
||||||
|
Der Fokus auf dem Transpiler soll nicht liegen, dass dieser ohne weitere Inputs/Entschiedungen des Benutzers Code generiert,
|
||||||
|
sondern dass der entstehende Code in Betracht auf Metriken der Softwareengineering- und Codequalität besser ist als
|
||||||
|
der Code von anderen Transpilern. So soll neben der Modernität des generierten Codes auch dessen Wartbarkeit und Erweiterbarkeit
|
||||||
|
gewährleistet werden.
|
||||||
|
|
||||||
|
Die Evaluation des Transpilers ist eine systematische Bewertung der generierten Codequalität nach etablierten Metriken
|
||||||
|
der Softwareentwicklung, diese werden im Rahmen der Arbeit erarbeitet und definiert. Dies umfasst Aspekte wie Lesbarkeit,
|
||||||
|
Wartbarkeit, Einhaltung von Coding-Standards und Modularität. Auch eine Bewewrtung der Performance (Geschwindigkeit) des Codes
|
||||||
|
ist denkbar, wobei im Rahmen dieser Studienarbeit nicht der Fokus auf performanten Code liegt. Wenn es der Umfang und die Bearbeitungszeit
|
||||||
|
der Studienarbeit erlaubt, wird die Evaluation des Transpilers mit der Evaulation von anderen Transpilern verglichen.
|
||||||
|
|
||||||
|
Die Studienarbeit orientiert sich dabei an folgender Leitfrage: \textbf{Wie kann durch einen
|
||||||
|
interaktiven Transpiler bei der teilautomatisierten Übersetzung von COBOL nach Java die
|
||||||
|
Codequalität im Hinblick auf moderne Softwareengineering-Standards gegenüber bestehenden Transpilern verbessert werden?}.
|
||||||
|
\section{Geplantes Vorgehen}
|
||||||
|
Die methodische Herangehensweise der Studienarbeit gliedert sich in eine theoretiche Forschungsphase und eine
|
||||||
|
praktische Implementierung. Die theoretische Forschungsphase umfasst drei zentrale Untersuchungsfelder.
|
||||||
|
Zunächst erfolgt eine systematische Analyse der Sprachparadigmen von COBOL und Java, wobei sowohl syntaktische als auch semantische Unterschiede
|
||||||
|
detailliert erfasst werden. Diese Analyse identifiziert Konstrukte, die direkt transformiert werden können, sowie kritische Bereiche, in denen paradigmatische
|
||||||
|
Unterschiede komplexere Transformationsstrategien erfordern. Dabei liegt ein besonderer Fokus auf der Behandlung von COBOL-spezifischen Konzepten wie
|
||||||
|
PICTURE-Klauseln, hierarchischen Datenstrukturen und prozeduralen Verarbeitungsmustern im Kontext objektorientierter Java-Paradigmen.
|
||||||
|
Der zweite Forschungsbereich untersucht den aktuellen Stand der COBOL-Nutzung in der Industrie und die bestehende Migrationserfahrungen.
|
||||||
|
Diese Analyse erfasst dokumentierte Herausforderungen, Erfolgsstrategien und Limitationen
|
||||||
|
existierender Ansätze, um daraus Anforderungen für die Transpiler-Entwicklung abzuleiten. Dies soll auch als Grundlage dienen,
|
||||||
|
um zu schauen, inwiefern der Ansatz eines interaktiven Transpilers eine bestehende Lücke in diesem Themengebiet
|
||||||
|
darstellt. Der dritte Forschungsbereich erarbeitet die fundierten Bewertungskriterien für modernes Software Engineering, um daraus eine objektive
|
||||||
|
Evaluation der generierten Code-Qualität durchführen zu können.
|
||||||
|
|
||||||
|
Der erste Schritt der praktischen Implementierung umfasst
|
||||||
|
die Definition einer COBOL-Grammatik für die lexikalische Analyse unter Verwendung von ANTLR.
|
||||||
|
Existierende COBOL-Grammatiken können als Ausgangsbasis dienen und entsprechend den spezifischen Anforderungen erweitert werden.
|
||||||
|
Nach der Definition der kontextfreien Grammatik wird ein Parser in Java implementiert, der COBOL-Quellcode in eine
|
||||||
|
abstrakte Syntaxstruktur überführt. Der AST fungiert als zentrale Datenstruktur für alle
|
||||||
|
nachfolgenden Analyse- und Transformationsschritte. Eine semantische Analysephase überprüft Typ-Konsistenz, Variablen-Scopes und andere
|
||||||
|
semantische Eigenschaften des COBOL-Codes, um eine fundierte Basis für die Transformation zu schaffen. Die eigentliche Codeerzeugung ensteht
|
||||||
|
durch ein flexibles Mapping-System zur regel-basierten Transformation von COBOL-Konstrukten in Java-Code. Dieses System wird
|
||||||
|
Interface-basiert implementiert, um verschiedene Transformationsstrategien zu ermöglichen und zwischen
|
||||||
|
Implementierungen von Standard-Java und spezialisierten Library-Integrationen zu unterscheiden. Ein intelligentes Variablen-Management-System behandelt
|
||||||
|
die Umbenennung von COBOL-Varaiblen entsprechend Java-Namenskonventionen sowie die Auflösung
|
||||||
|
von Unterschieden des Scopes zwischen den Sprachen.
|
||||||
|
Die Evaluation erfolgt neben der aufgestellten Kriterien an Softwareengineering zuerst auf funktionaler Korrektheit.
|
||||||
|
Hierfür sollen systematische Tests mit vordefinierten COBOL-Programmen erzeugt, indem Input-Daten generiert und die Outputs
|
||||||
|
zwischen Original- und transformierter Version verglichen werden.
|
||||||
|
\section{Vorläufige Gliederung}
|
||||||
|
\begin{tabular}{ll}
|
||||||
|
\textbf{1.} & \textbf{Einleitung} \\
|
||||||
|
1.1 & Ziel der wissenschaftlichen Arbeit \\
|
||||||
|
1.2 & Vorgehensweise \\
|
||||||
|
1.3 & Wirtschaftlicher Wert \\
|
||||||
|
\\
|
||||||
|
\textbf{2.} & \textbf{Theoretische Grundlagen} \\
|
||||||
|
2.1 & COBOL, Java und ihre Paradigmen \\
|
||||||
|
2.2 & Compiler und Transpiler \\
|
||||||
|
2.3 & State of the Art: heutiger Umgang mit COBOL \\
|
||||||
|
2.4 & Best Practices des Softwareengineering \\
|
||||||
|
\\
|
||||||
|
\\
|
||||||
|
\textbf{3.} & \textbf{Praktischer Teil} \\
|
||||||
|
\\
|
||||||
|
\textbf{4.} & \textbf{Diskussion} \\
|
||||||
|
4.1 & Zusammenfassung der Ergebnisse \\
|
||||||
|
4.2 & Bewertung der Ergebnisse \\
|
||||||
|
4.3 & Bewertung der Durchführung \\
|
||||||
|
4.4 & Einordnung in aktuellen Stand der Wissenschaft \\
|
||||||
|
4.5 & Limitationen der Arbeit \\
|
||||||
|
\\
|
||||||
|
\textbf{5.} & \textbf{Fazit und Ausblick} \\
|
||||||
|
\end{tabular}
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
\section{Relevante Literatur}
|
||||||
|
% Bibliographie anzeigen
|
||||||
|
\nocite{*}
|
||||||
|
\printbibliography[heading=none]
|
||||||
|
\end{document}
|
BIN
paper/images/dhbw.png
Normal file
BIN
paper/images/dhbw.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
BIN
paper/images/hpe_logo.png
Normal file
BIN
paper/images/hpe_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
21
paper/lang/de.tex
Normal file
21
paper/lang/de.tex
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
\setzelangdeckblattabschlusshinleitung{für die Prüfung zum}
|
||||||
|
\setzelangartikelstudiengang{des}
|
||||||
|
\setzelangstudiengang{Studiengangs}
|
||||||
|
\setzelanganderdh{an der DHBW CAS - Duale Hochschule Baden-Württemberg}
|
||||||
|
\setzelangvon{von}
|
||||||
|
\setzelangdbbearbeitungszeit{Bearbeitungszeitraum}
|
||||||
|
\setzelangdbmatriknr{Matrikelnummer}
|
||||||
|
\setzelangdbkurs{Kurs}
|
||||||
|
\setzelangdbfirma{Ausbildungsfirma}
|
||||||
|
\setzelangdbbetreuer{Betreuer}
|
||||||
|
\setzelangdbgutachter{Gutachter}
|
||||||
|
\setzelangdbzweitgutachter{Zweitgutachter}
|
||||||
|
\setzelangsperrvermerk{Sperrvermerk}
|
||||||
|
\setzelangerklaerung{Erklärung}
|
||||||
|
\setzelangabkverz{Abkürzungsverzeichnis}
|
||||||
|
\setzelangglossar{Glossar}
|
||||||
|
\setzelanganhang{Anhang}
|
||||||
|
\setzelangabstract{Abstract}
|
||||||
|
\setzelanglistingname{Listing}
|
||||||
|
\setzelanglistlistingname{Listings}
|
||||||
|
\setzelanglistingautorefname{Listing}
|
21
paper/lang/en.tex
Normal file
21
paper/lang/en.tex
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
\setzelangdeckblattabschlusshinleitung{for the}
|
||||||
|
\setzelangartikelstudiengang{from}
|
||||||
|
\setzelangstudiengang{the Course of Studies}
|
||||||
|
\setzelanganderdh{at the Cooperative State University Baden-Württemberg}
|
||||||
|
\setzelangvon{by}
|
||||||
|
\setzelangdbbearbeitungszeit{Due Date}
|
||||||
|
\setzelangdbmatriknr{Student ID}
|
||||||
|
\setzelangdbkurs{Course}
|
||||||
|
\setzelangdbfirma{Company}
|
||||||
|
\setzelangdbbetreuer{Supervisor in the Company}
|
||||||
|
\setzelangdbgutachter{Reviewer}
|
||||||
|
\setzelangdbzweitgutachter{Second Reviewer}
|
||||||
|
\setzelangsperrvermerk{Confidentiality Statement} %Restriction Notice}
|
||||||
|
\setzelangerklaerung{Author's declaration}
|
||||||
|
\setzelangglossar{Glossary}
|
||||||
|
\setzelangabkverz{Acronyms}
|
||||||
|
\setzelangabstract{Abstract}
|
||||||
|
\setzelanganhang{Appendix}
|
||||||
|
\setzelanglistingname{Listing}
|
||||||
|
\setzelanglistlistingname{Listings}
|
||||||
|
\setzelanglistingautorefname{Listing}
|
25
paper/lang/strings.tex
Normal file
25
paper/lang/strings.tex
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
\newcommand{\iflang}[2]{%
|
||||||
|
\IfStrEq{\sprache}{#1}{#2}{}
|
||||||
|
}
|
||||||
|
|
||||||
|
\langstr{abkverz}
|
||||||
|
\langstr{anhang}
|
||||||
|
\langstr{glossar}
|
||||||
|
\langstr{deckblattabschlusshinleitung}
|
||||||
|
\langstr{artikelstudiengang}
|
||||||
|
\langstr{studiengang}
|
||||||
|
\langstr{anderdh}
|
||||||
|
\langstr{von}
|
||||||
|
\langstr{dbbearbeitungszeit}
|
||||||
|
\langstr{dbmatriknr}
|
||||||
|
\langstr{dbkurs}
|
||||||
|
\langstr{dbfirma}
|
||||||
|
\langstr{dbbetreuer}
|
||||||
|
\langstr{dbgutachter}
|
||||||
|
\langstr{dbzweitgutachter}
|
||||||
|
\langstr{sperrvermerk}
|
||||||
|
\langstr{erklaerung}
|
||||||
|
\langstr{abstract}
|
||||||
|
\langstr{listingname}
|
||||||
|
\langstr{listlistingname}
|
||||||
|
\langstr{listingautorefname}
|
Reference in New Issue
Block a user