Grundlagen der Anwendungsentwicklung

Aufgrund der umfassenden Einführung in die Applikationsentwicklung wird dieses Modul mittlerweile als Standardmodul im Pflichtfach Geo-Applikationsentwicklung eingesetzt. Studierende, die vor Herbst 2024 (UNIGIS professional) bzw. vor Februar 2024 (UNIGIS MSc) mit ihrem Studium begonnen haben und dieses Modul oder dessen englische Variante („Basics of Application Development“) noch nicht belegt haben, können dieses Modul jedoch auch als optionales Modul belegen und für das Wahlpflichtfach anrechnen.

Als GIS-Profis nutzen wir täglich Computer, um unsere Arbeit zu erledigen. Wir verwenden dabei leistungsstarke Softwareprodukte wie ArcGIS und QGIS. Aber diese Produkte haben auch ihre Grenzen oder sind manchmal zu umfangreich, um eine effiziente Lösung für eine Aufgabe zu bieten.

Genau dann sind Programmierkenntnisse und Kenntnisse der in der Anwendungsentwicklung eingesetzten Methoden und Werkzeuge äußerst nützlich. In vielen Bereichen der GIS-Industrie werden diese Fähigkeiten heutzutage als wesentliche Voraussetzungen angesehen.

Dieses Modul bietet eine Einführung in die wichtigsten Grundlagen aus dem Bereich der Anwendungsentwicklung, von den Grundkonzepten von Programmiersprachen, über das Erlernen einer speziellen Sprache (Python), weiter zu den wichtigsten Werkzeugen wie Entwicklungsumgebungen und Versionskontrollsysteme, bis schließlich hin zu Methoden der Softwaretechnik, die insbesondere für die Realisierung komplexerer Softwareprojekte entwickelt wurden.

Am Ende des Moduls werden Sie sowohl die Python-Programmierung zur Umsetzung eigener Projekte beherrschen als auch einen guten Überblick über die wichtigsten Methoden und Werkzeuge der Anwendungsentwicklung besitzen.

Es werden die folgenden Themen behandelt:

  • Einführung in Programmierung und Programmiersprachen
  • Erlernen der Programmiersprache Python
  • Integrierten Entwicklungsumgebungen (Visual Study Code) und Debugging-Techniken
  • Verwendung von Jupyter Notebooks und Markdown
  • Umgang mit Versionskontrollsystemen (insbesondere Git/GitHub)
  • Einsatz von Softwarebibliotheken und Paketverwaltung
  • Einführung in die Konzepte und Methoden der Softwaretechnik
  • Software-Architektur und Modellierung (inklusive UML und Design Patterns)
  • Testen und Evaluation von Software

Kernmodule UNIGIS 1-3 oder gleichwertiges Verständnis von GIS, Datenmodellierung, Datenstrukturen und Datenerfassung.

Abstraktes und logisches Denken sind für das Erlernen von Programmierung sehr wichtig. Eine Programmiersprache zu lernen, ist wie das Erlernen einer menschlichen Sprache: man braucht Geduld und Ausdauer.

Dies ist ein deutschsprachiges Modul, aber es gibt ergänzende Inhalte und zahlreiche Beispiele, die nur auf Englisch zur Verfügung stehen. Darüber hinaus wird erwartet, dass Elemente wie Variablen- und Funktionsnamen in den einzureichenden Aufgaben auf Englisch gehalten sind. Die Kommunikation mit Dozent und anderen Studierenden findet über ein Diskussionsforum auf Moodle statt, das regelmäßig vom Dozenten gecheckt wird, um Fragen zu beantworten oder Hinweise zur Lösung von Problemen zu geben. Das Modul wird in Form eines angeleiteten Selbststudiums durchgeführt, basierend auf einem explorativen Lernprozess. Theoretische Konzepte werden durch praxisorientierte Beispiele und Übungen ergänzt.

  • Moderner Webbrowser (Firefox, Chrome oder anderer Chromium-basierter Browser)
  • Visual Studio Code (https://code.visualstudio.com)
  • Anaconda (https://www.anaconda.com)
  • Git (https://git-scm.com)
  • Notepad++ (https://notepad-plus-plus.org) oder anderer Text-Editor mit Python-Unterstützung

Dieses Modul ist für Windows-Betriebssysteme entwickelt und getestet. Die im Skript gegebenen Anweisungen beziehen sich auf Windows. Unterstützung/Hilfe für andere Betriebssysteme kann nicht garantiert werden.

Administratorrechte können erforderlich sein, um die erforderliche Software zu installieren.

Systemanforderungen der eingesetzten Software:
– https://docs.anaconda.com/anaconda/install
– https://code.visualstudio.com/docs/supporting/requirements

Die Bewertung basiert auf einzureichenden Aufgaben. Diese müssen in schriftlicher Form innerhalb des vorgegebenen Zeitraums in den Dropbox-Ordner hochgeladen werden. Wenn Aufgaben zu spät eingereicht werden, ist der Dozent nicht verpflichtet, sie zu bewerten. Dies wird entsprechend im Zeugnis vermerkt.

Lektion 1 – Einführung

Diese Lektion erklärt das Thema des Kurses und gibt einen Überblick über den Aufbau und die Materialien. Des Weiteren beschreibt sie die benötigte Software und technischen Voraussetzungen, und gibt Tipps und Hinweise zum Zeitmanagement und zur erfolgreichen Absolvierung des Kurses.

Lektion 2 – Programmiersprachen

Die Lektion gibt eine Einführung in das Thema Programmiersprachen. Einige der wichtigsten Sprachen werden kurz vorgestellt. Die Lektion erklärt den Unterschied zwischen kompilierten und interpretierten Sprachen, sowie die wichtigsten Paradigmen inklusive prozeduraler und objektorientierter Programmierung. Markup-Sprachen werden ebenfalls diskutiert und gegenüber Programmiersprachen abgegrenzt.

Lektion 3 – Grundlagen der Programmierung

Die Lektion stellt die wichtigsten Konzepte prozeduraler Programmierung anhand von Beispielen vor (überwiegend in Python, aber auch in anderen Sprachen zum Vergleich). Die vorgestellten Konzepte umfassen Variablen, Operatoren, Ausdrücke, Kontrollstrukturen, Gültigkeitsbereiche, Funktionen und Output. Am Ende der Lektion wird auf die Formatierung und Kommentierung von Code eingegangen.

Lektion 4 – Erste Schritte in Python

Die Lektion gibt detaillierte Informationen zur Installation und Nutzung von Python. Sie beschreibt die Installation von Anaconda, das Schreiben von ersten Python-Code mit einem einfachen Text-Editor sowie das Ausführen von Python-Skripten von der Kommandozeile aus. Die Lektion beschreibt außerdem Alternativen und nützliche Ressourcen zur Python-Programmierung.

Lektion 5 – Grundkonzepte der Python-Programmierung

Die Lektion zeigt und vertieft den Einsatz der grundlegenden Konzepte aus Lektion 3 in Python. Sie gibt einen Überblick über die grundlegenden Datentypen, Kontrollstrukturen und Funktionen anhand kurzer Beispiele und Übungen zum selbst Ausprobieren. Darüber hinaus enthält die Lektion auch Beispiele in anderen Sprachen zum Vergleich. Des Weiteren wird die Kommentierung von Python-Code erörtert.

Lektion 6 – Weitere Themen der Python-Programmierung

Die Lektion behandelt leicht fortgeschrittene aber häufig begegnete Themen der Python-Programmierung, nämlich den Einsatz von try-except, das Importieren von Modulen und die Verwendung von Paketen der Python-Bibliothek sowie das Lesen und Schreiben von Dateien. Des Weiteren werden eine Einführung in die objektorientierte Programmierung geben und Funktionen mit optionalen Parametern diskutiert.

Lektion 7 – Integrierte Entwicklungsumgebungen und Debugging

Die Lektion beschreibt das Konzept einer Integrierten Entwicklungsumgebung und gibt detaillierte Instruktionen zur Installation und Verwendung von Visual Studio Code (VS Code) und der benötigten und empfohlenen Python-Erweiterungen. Darüber hinaus wird der Sinn und Einsatz des Debuggers erläutert.

Lektion 8 – Jupyter Notebooks und Markdown

Die Lektion führt in die Erstellung von Jupyter Notebooks ein und diskutiert Vor- und Nachteile gegenüber herkömmlicher Entwicklung in einer IDE. Sie enthält detaillierte Instruktionen zur Erstellung und Einsatz der benötigten Umgebung. Des Weiteren führt die Lektion in die Markup-Sprache Markdown und ihren Einsatz zur formatierten Dokumentation innerhalb eines Jupyter Notebooks ein.

Lektion 9 – Versionskontrollsysteme

Die Lektion gibt einen Überblick über Versionskontrollsysteme mit Fokus auf Git und GitHub. Studierende lernen den zentralisierten Git-Arbeitsablauf kennen und erhalten Instruktionen zum Anlegen eines GitHub-Kontos sowie zu verschiedenen Optionen des Zugriffs, inklusive der direkten Nutzung von VS Code aus. Des Weiteren werden das Mergen mit Auflösen von Konflikten und Branching erklärt.

Lektion 10 – Softwarebibliotheken und Paketverwaltung

Die Lektion führt in die Thematik der Softwarebibliotheken ein und gibt Beispiele für externe Python-Pakete, die für die Verarbeitung räumlicher Daten relevant sind (Pandas, GeoPandes, GeoPy, Shapely). Sie behandelt außerdem die Paketverwaltung mit pip und conda. Die Lektion enthält darüber hinaus auch Beispiele für Bibliotheken in anderen Sprachen.

Lektion 11 – Konzepte und Methoden der Softwaretechnik

Die Lektion gibt einen Überblick über die Grundlagen und Ansätze der Softwaretechnik zur Planung und Durchführung größerer Softwareprojekte. Es werden klassische Vorgehensmodelle und neuere Ansätze wie Prototyping und agile Methoden beschrieben sowie Qualitätskriterien und ethische Aspekte der Software-Entwicklung diskutiert.

Lektion 12 – Software-Architektur, UML und Design Patterns

Die Lektion beschreibt die Konzepte Software-Architektur, Architektur-Patterns, Design Patterns, UI Patterns und Anti-Patterns. Darüber hinaus bietet sie eine Einführung in die Unified Modeling Language (UML) anhand von Use-Case-, Klassen- und Sequenzdiagrammen.

Lektion 13 – Testen, Evaluation und Software Refactoring

Im ersten Teil der Lektion werden Ansätze zum systematischen Testen vorgestellt und diskutiert, einschließlich Unit-Tests. Im Weiteren werden die Evaluation von Usability und Performance einer Software behandelt. Schließlich geht es im letzten Teil um das Refactoring von Code.

Lektion 14 – Ausblick: Weiterführende Themen und Möglichkeiten

Zum Abschluss des Moduls werden aktuelle Trends wie der Einsatz von KI in der Software-Entwicklung angesprochen sowie Wege und Ressourcen aufgelistet, die Studierenden ermöglichen sollen, sich weiter in das Gebiet der Anwendungsentwicklung zu vertiefen.