Programmierwerkzeuge-04-IDE

TeX document icon Programmierwerkzeuge-04-IDE.tex — TeX document, 13 KB (13947 bytes)

File contents

\documentclass[12pt, twoside]{scrartcl}
%Anfang OERMacros.tex
% Zum Erstellen mit pdfLaTeX wird diese Datei und der CC BY Button by.png im selben Verzeichnis benötigt. 
% by.png ist unter https://mirrors.creativecommons.org/presskit/buttons/88x31/png/by.png zu finden. 

% Für den Lizenzhinweis zur Nutzung dieser OER kann das Macro \OERLizenzHinweis verendet werden. 

\usepackage[utf8]{inputenc}
\def\Autor {Reinhard Brocks}
\def\HomeAutor {https://www.htwsaar.de/ingwi/fakultaet/personen/profile/Reinhard\%20Brocks}
\def\OERLizenzHinweis 
{
	\includegraphics{by} % by.png ist unter https://mirrors.creativecommons.org/presskit/buttons/88x31/png/by.png zu finden. 
	\begin{minipage}[b]{11cm}\footnotesize
		\href{\HomeAutor/oer/pwz/programmierwerkzeuge-04-ide/at_download/file}{Programmierwerkzeuge - \mysubtitle} 
		von 
		\href{\HomeAutor}{\Autor} 
		ist lizenziert unter einer 
		\href{http://creativecommons.org/licenses/by/4.0/}{Creative Commons Namensnennung 4.0 International Lizenz}.
	\end{minipage}
}


\def\HinweisLatex {Für die Nutzung und die Bearbeitung steht das Dokument \href{\HomeAutor/oer/pwz/latex}{hier} 
	auch im \LaTeX-Format zur Verfügung.}

\def\MailAutor {reinhard.brocks@htwsaar.de}

\def\MiniKontakt 
{
	Fragen und Verbesserungsvorschläge bitte an Prof.~Dr.~\Autor, 
	Hochschule für Technik und Wirtschaft des Saarlandes. \\
	E-Mail: \href{mailto:\MailAutor}{\MailAutor}\\[2ex]
}

\def\Kontakt
{
	\MiniKontakt
	Einen Überblick über die Unterrichtseinheiten zu \glqq Programmierwerkzeuge\grqq{} 
	findet man \href{\HomeAutor/oer/pwz/programmierwerkzeuge-00-unterrichtskonzept/at_download/file}{hier}.\\[1ex]
}

\def\Disclaimer 
{
	\begin{footnotesize}
		\textbf{Disclaimer}: Der Autor übernimmt keine Haftung für eventuelle 
		Datenschutz- und sonstige Rechtsverletzungen in anderen Webangeboten, 
		auf die er einen Link gesetzt hat. Für die Inhalte der von ihm 
		verlinkten Fremdangebote sind die jeweiligen Herausgeber verantwortlich. 
		Vor dem Einrichten von Links sind die Webseiten der anderen Anbieter 
		mit großer Sorgfalt und nach bestem Wissen und Gewissen geprüft worden. 
		Es kann jedoch keine Gewähr für die Vollständigkeit und Richtigkeit von 
		Informationen auf verlinkten Seiten übernommen werden. 
		Falls auf Seiten verweisen wird, deren Inhalt Anlass zur 
		Beanstandung gibt, bittet der Autor um eine Mitteilung 
		(\textit{\href{mailto:\MailAutor}{\MailAutor}}).
	\end{footnotesize}
}
%Ende OERMacros.tex%

%Anfang PackagesMacros.tex
\usepackage{a4,german}
\usepackage{hyperref}
\usepackage{hyperxmp}
\usepackage{color}
\usepackage{graphics}
\usepackage{listings}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{shapes.misc}
\usetikzlibrary{decorations}

\parindent 0pt
\definecolor{Definitionsfarbe}{RGB}{0,100,0}
\newcommand{\TextBegriff}[1]{\textcolor{Definitionsfarbe}{\textbf{#1}}}

%Makros für die Graphiken mit Symbolen wie Datei, Verzeichnis, Tool
\newcommand{\dir}[6]{ %x - Koord, y - Koord, Breite, Hoehe, Text, NodeName
	\draw  (#1, #2) rectangle (#1 + #3,#2 + #4);
	\draw  (#1, #2 + #4) rectangle (#1 + 1,#2 + #4 + 0.5);
	\node (#6) at (#1 + 0.5 * #3, #2 + 0.5 * #4) {#5};
}
\newcommand{\file}[4]{ %x - Koord, y -Koord, NodeName, Text
	\tikzset{every node/.style={chamfered rectangle, draw}}
	\node(#3)[align=center,chamfered rectangle corners=north east] at (#1,#2) {#4};
}
%Ende PackagesMacros.tex%

\def\mysubtitle {Unterrichtseinheit 4: Integrierte Entwicklungsumgebung}
\def\mykeywords {Programmierwerkzeuge, IDE, Integrierte Entwicklungsumgebung, integrated development environment, workspace, project}

\hypersetup
{
	pdftitle={Programmierwerkzeuge},
	pdfsubject={\mysubtitle},
	pdfauthor={Reinhard Brocks},
	pdfkeywords={\mykeywords},
	pdfcopyright={CC BY 4.0},
	pdflicenseurl={http://creativecommon.org/licenses/by/4.0/}
}

\title{\textbf{Programmierwerkzeuge}}
\subtitle{\mysubtitle \\[2ex]{\small Lehr- und Lernmaterialien}}
\author{}
\date{}

\begin{document}
\maketitle
\thispagestyle{empty}
\vfill
\begin{tabular}{|p{3cm}|p{10,5cm}|} \hline 
	Zielgruppe	&	Lernende, die schon eine Programmiersprache gelernt und erste 
					Erfahrungen in der Programmierung gesammelt haben.\\ \hline 
	Lernziele	&	Die Lernenden haben einen Überblick über integrierten 
					Entwicklungsumgebungen für Java. Sie haben eine konkrete IDE auf dem 
					eigenen Rechner installiert und können damit ein Hello-World-Programm
					erstellen. Sie können das Prinzip \glqq Project\grqq{} und 
					\glqq Workspace\grqq{} erläutern. Sie kennen eine 
					typische Projektverzeichnisstruktur. Sie haben einen Überblick 
					über die wichtigsten Projekt- und Workspace-Eigenschaften 
					und können diese in der IDE ändern. \\ \hline 
	Stichwörter & \mykeywords\\ \hline 
\end{tabular} \\[2ex]
\Kontakt
Versionsgeschichte\\[1ex]
\begin{tabular}{|l|l|l|}\hline 
	Datum 	& Änderung \\ \hline 
	26. Oktober 2019 & Erste Version \\ \hline 
\end{tabular}\\[1ex]
\OERLizenzHinweis\HinweisLatex
\newpage

\section*{Programmierwerkzeuge - Integrierte Entwicklungsumgebung}
\subsection*{Aufgabe: Integrierte Entwicklungsumgebung, 45 Minuten}
Entscheiden Sie sich für eine Java-IDE, entweder Eclipse,  IntelliJ IDEA 
oder NetBeans IDE und installieren Sie diese auf Ihrem Rechner. 

\subsection*{Aufgabe: Workspace / Project, 120 Minuten}
\begin{enumerate}
	\item Legen Sie ein Hello-World Java-Programm mit der IDE Ihrer Wahl an. 
			Listen Sie die wichtigsten Eigenschaften 
			eines Projekts und eines Workspaces auf, die Sie beim Erstellen 
			eines Projekts übernehmen oder angeben müssen. 
			Was sind allgemeine Eigenschaften und welche sind Java-spezifisch? 
			Wo werden die Eigenschaften gespeichert? 
	\item Führen Sie das Hello-World-Programm aus. Schauen Sie sich die 
			generierten Dateien an. Nach welchen Prinzipien sind die 
			Verzeichnisse generiert worden? 
	\item Wie groß ist das Projektverzeichnis? Was können Sie alles löschen, 
			so dass das Projekt dennoch wieder in der IDE geöffnet und 
			ausgeführt werden kann? Wie groß ist dann das Verzeichnis? 
	\item Definieren Sie die Begriffe \glqq Project\grqq{} und \glqq Workspace\grqq{}. 
	\item Fassen Sie in Gruppenarbeit die Ergebnisse auf einer Flipchart zusammen. 
\end{enumerate}
\subsection*{Aufgabe: Prüfungsleistung}
Legen Sie für Ihr Projekt der Prüfungsleistung eine Workspace-/Projekt- und Package-Struktur fest. 
Passen Sie die Eigenschaften des IDE-Projekts so an, dass es in der IDE kompiliert und ausgeführt 
werden kann. 

\newpage
\subsection*{Arbeitsergebnisse}
\textbf{Definition} \TextBegriff{Integrierte Entwicklungsumgebung, IDE}: 
\textit{Eine Integrated Development Environment ist eine Sammlung von Tools 
(CASE tools - Computer-Aided Software Engineering tools) innerhalb eines 
Programms für die Softwareentwicklung. Die Basiswerkzeuge sind Source-Code-Editor, 
Compiler, Debugger und Build-Werkzeuge (ant, maven, gradle). 
Weitere Tools sind z.\,B. Versionsverwaltung, Aufgabenlisten / issue tracker, Javadoc-Generator. }\\

\textbf{Definition} \TextBegriff{Projekt}: 
\textit{Innerhalb einer IDE gruppiert ein Projekt alle projektrelevanten 
Dateien. Diese werden strukturiert in einem gemeinsamen Projektverzeichnis gespeichert 
(siehe Abbildung \ref{fig:Projekt}). Die Projekteigenschaften sind normalerweise in einer textbasierten 
und IDE-spezifischen Projektdatei. \\
Das Ergebnis eines Build-Vorgangs auf Projektebene, das \TextBegriff{Artefakt}, 
ist üblicherweise ein ausführbares Programm oder eine Bibliothek. } 

\begin{figure}[htbp]
	\centering
	\begin{tikzpicture}[scale=0.5]
		\def\b{14}\def\h{1}
		\def\x{0}
		\def\xx{9}
		\def\y{0}
		\dir{\x}{\y}{8}{\h}{Projektverzeichnis}{P}
		\dir{\xx}{\y-1}{\b}{\h}{settings / IDE-Konfigurationsdateien}{P}
		\dir{\xx}{\y-3}{\b}{\h}{src / Quellcode-Dateien}{P}
		\dir{\xx}{\y-5}{\b}{\h}{res / Ressource-Dateien}{P}
		\dir{\xx}{\y-7}{\b}{\h}{test / Unit-Test-Dateien}{P}
		\dir{\xx}{\y-9}{\b}{\h}{build / build-Verzeichnis}{P}
		\dir{\xx}{\y-11}{\b}{\h}{bin / Artefakte}{P}
		\dir{\xx}{\y-13}{\b}{\h}{doc / API-Dokumentation}{P}
		\dir{\xx}{\y-15}{\b}{\h}{config / Projektkonfiguration}{P}
		\draw[->,thick] (1.5,0) -- (1.5,-12.5) -- (\xx,-12.5);
		\draw[->,thick] (1.5,-0.5) -- (\xx,-0.5);
		\draw[->,thick] (1.5,-2.5) -- (\xx,-2.5);
		\draw[->,thick] (1.5,-4.5) -- (\xx,-4.5);
		\draw[->,thick] (1.5,-6.5) -- (\xx,-6.5);
		\draw[->,thick] (1.50,-8.5) -- (\xx,-8.5);
		\draw[->,thick] (1.5,-10.5) -- (\xx,-10.5);
		\draw[->,thick] (1.5,-12.5) -- (\xx,-12.5);
		\draw[->,thick] (1.5,0) -- (1.5,-14.5) -- (\xx,-14.5);
	\end{tikzpicture}
	\caption{Schematische Struktur eines Projektverzeichnisses}\label{fig:Projekt}
\end{figure}

Abbildung \ref{fig:Projekt} stellt schematisch ein minimales Projektverzeichnis dar. 
Die Projektdateien, inklusive die generierten, werden auf Verzeichnisse aufgeteilt. 
Die IDE schlägt eine erste Verzeichnisstruktur vor. 
Üblicherweise gibt es Verzeichnisse für: 
\begin{itemize}
\item (settings) IDE-Projektkonfigurationsdateien
\item (src) Quellcode-Dateien
\item (res) \TextBegriff{Ressource}-Dateien wie Wörterbücher verschiedener Sprachen, Icons, Bilder, Audio, Video. 
\item (test) Testprogramme mit Testdaten
\item (build, out) temporäre Build-Dateien (*.class, *.o, *.obj)
\item (bin, target) Artefakte, Dateien wie *.jar, *.exe, *.dll, die deployed werden. 
\item (doc) Verzeichnis für die generierte API-Dokumentation
\item (config) Verzeichnis für die Konfigurationsdateien des Projekts
\end{itemize}
Wichtig ist, dass man die selbst erstellten und die generierten Dateien klar voneinander 
trennt. 
Die aus anderen Projekten genutzten Dateien, wie z.\,B. benötigte Bibliotheken 
oder Frameworks sollten, falls möglich außerhalb des Projektverzeichnisses liegen. 

Je nach Programmiersprache haben die Verzeichnisse auch andere Namen und sind anders strukturiert. 
In der Regel kommen dann noch versteckte Verzeichnisse 
für die Versionsverwaltung hinzu. \\

Projekteigenschaften sind z.\,B.:
\begin{itemize}
	\item Projektname
	\item Verzeichnisse für generierte und temporäre Dateien 
	\item Projekttyp / Zielartefakt (Bibliothek, Programm)
	\item Compiler-Version
	\item Verzeichnis für die Quellcode-Dokumentationsgenerierung
	\item Kommandozeilenargumente
	\item Liste von Source-Dateien oder nur die Liste der Source-Verzeichnisse
\end{itemize}
Hinzu kommen bei Java-Projekten folgende Eigenschaften:
\begin{itemize}
	\item Version des Java Runtime Environments (JRE)
	\item Version des Java Development Kits (JDK)
	\item classpath: Pfade zu abhängigen Bibliotoheken (jar-Dateien) 
 \end{itemize}
Die üblichen Artefakte sind für Java-Projekte jar oder runnable jar Dateien.\\

\textbf{Definition} \TextBegriff{Workspace}: 
\textit{Ein Workspace gruppiert innerhalb einer IDE zusammengehörige Projekte. \\
Das können z.\,B. ein Server-Programm und ein zugehöriges Client-Programm sein. 
Ein Projekt kann auch eine Bibliothek erstellen, die von einem anderen 
Projekt genutzt wird. Diese Abhängigkeiten definieren eine Build-Reihenfolge,
 die in der IDE festgelegt werden kann oder muss.\\ 
Die Projektliste und Workspace-Eigenschaften werden in einer häufig 
textbasierten Workspace-Datei gespeichert. Einen Workspace zu kompilieren heißt, 
alle Projekte in einer vordefinierten Reihenfolge zu kompilieren 
(siehe Abbildung \ref{fig:Workspace}). } 

\begin{figure}[htbp]
	\centering
	\begin{tikzpicture}
		\dir{0}{4}{3}{1.5}{Workspace }{W}
		\dir{4}{2}{4}{1}{Projektverzeichnis A}{A}
		\dir{4}{0}{4}{1}{Projektverzeichnis B}{B}
		\dir{4}{-2}{4}{1}{shared sources}{C}
		\file{5.7}{4.5}{ws}{Workspace-Datei}
		\draw[->,thick] (1.5,4) -- (1.5,2.5) -- (4,2.5);
		\draw[->,thick] (1.5,4) -- (1.5,0.5) -- (4,0.5);
		\draw[->,thick] (1.5,4) -- (1.5,-1.5) -- (4,-1.5);
		\draw[->,thick] (3,4.5) -- (node cs:name=ws);
	\end{tikzpicture}
	\caption{Schematische Struktur eines Workspace-Verzeichnisses}\label{fig:Workspace}
\end{figure}

Workspace-Eigenschaften, nicht nur bei Java-Projekten, sind z.\,B.: 
\begin{itemize}
	\item Workspace-Name
	\item Projektliste
	\item IDE Version
	\item Projektabhängigkeiten
	\item Einstellungen zum automatischen Speichern oder Kompilieren
\end{itemize}

Die Projektverzeichnisse sollten auch physikalisch in einem workspace-Verzeichnis sein. 
Es gibt aber auch das Konzept eines virtuellen 
Workspaces, das nur in der IDE die Projekte gruppiert. 
Hinzu kommen vielleicht noch Einstellungen von Plug-ins der IDE, die in 
Konfigurationsdateien abgelegt sind. 
Ferner werden die Einstellungen der Benutzerschnittstelle, wie Ansichten, Fensterpositionen, etc. gespeichert. 

\subsection*{Hinweise für den Dozenten}
Der Begriff \glqq Projekt\grqq{} ist wichtig. Es kommt immer wieder vor, dass Lernende 
in einer Entwicklungsumgebung eine Quellcodedatei erstellen, diese aber 
nicht kompilieren und ausführen können. Das liegt dann meistens daran, 
dass die Datei keinem Projekt zugeordnet ist oder falls doch, diese nicht 
als Quellcodedatei kenntlich gemacht wurde. Es kann auch sein, dass 
ein falscher Projekttyp bei der Erstellung ausgewählt wurde. 

Ebenso kommt es vor, dass die Lernenden in einem Projekt 
mehrere Programme verwalten. Die Strukturierung wird dann 
durch Pakete erreicht. Dennoch ist dies nicht optimal. 
Versuchen Sie zu erläutern, dass es strukturierter ist, 
für jedes ausführbare Programm ein Projekt anzulegen. 
Gemeinsame Sourcen können dann in einem gemeinsamen 
Source-Verzeichnis liegen oder in einem Projekt verwaltet werden, 
das eine Bibliothek als Artefakt generiert. 

Die Lernenden sollen auch wissen, dass nicht alle Dateien eines 
Projektverzeichnisses wichtig sind und dass nur wenige gesichert  
werden müssen. Dies reduziert die Datenmenge bei der Datensicherung 
und beim Austausch mit anderen Lernenden oder dem Dozenten. Dieses Verständnis 
ist notwendig für die korrekte Nutzung einer Versionsverwaltung. 


\end{document}