LF05 - Software zur Verwaltung von Daten anpassen

1 Strukturierte Programmierung

Nach Bearbeitung dieses Kapitels können Sie ...

  • ... Prozesse und Zusammenhänge in Handlungsschritte zerlegen und strukturieren und ...
  • ... in einer DIN-gerechten Notation darstellen.

Zur Planung und Visualisierung eignen sich

Arbeitsauftrag: Erstellen Sie für die folgenden Sachverhalte jeweils einen Programmablaufplan, ein Struktorgramm und eine Entscheidungstabelle:

  1. Für die Berechnung der richtigen Rabattstufe soll ein Programm entwickelt werden. Bei einem Bestellwert unter 100,00 € wird ein Rabatt von 2 % gewährt. Wird für mehr als 500,00 € bestellt, beträgt der Rabatt 5 % sonst 3 %. Nach der Ausgabe der Rabattstufe, des berechneten Rabatts in Euro und des neuen Preises soll der Benutzer gefragt werden, ob eine weitere Berechnung gewünscht ist.
  2. Visualisieren Sie den genauen Ablauf bei der Subtraktion Binärer Zahlen. Berücksichtigen Sie auch, dass das Ergebnis negativ sein kann.
  3. Bei der Erfassung des Wareneingangs in einem Handelsbetrieb wird wie folgt vorgegangen:
    • Beschädigte Artikel werden von vornherein ausgesondert.
    • Von jedem einwandfreien Artikel, der in der Lieferung enthalten ist, wird der Zugang (über eine Tastatur) eingegeben. Der Rechner (bzw. das Programm) schreibt den Bestand fort und zeigt den aktuellen Bestand am Bildschirm an.
    • Handelt es sich um einen neuen Artikel, muss vorher ein Artikelstammsatz angelegt werden.

Programme:

2 Versionsverwaltung mit Git

Nach Bearbeitung dieses Kapitels können Sie ...

  • ... sich in GitLab-Repositories zurechtfinden
  • ... Quellcode-Dateien erstellen und mit mehreren Gruppenmitgliedern gemeinsam bearbeiten
  • ... einen Workflow in Git abbilden

Präsentation aus dem Unterricht.

GitLab ist eine von vielen Möglichkeiten, um Projekte mit Git online zu verwalten und mit anderen Entwicklern ortsunabhängig zusammen zu arbeiten. Alternativen sind z.B. GitHub, Bitbucket, ... Ein Vorteil von GitLab ist u.a. das Lizenzmodell.

Initialisieren

  • Auf https://gitlab.com/users/sign_in ein Konto erstellen.
  • Mit 'Create Project' ein neues Projekt anlegen und dieses 'Private' markieren. Aktivieren Sie 'Initialize repository with a README'.
  • Folgen Sie den Anweisungen unter Command line instructions auf dieser Seite, um Ihre lokale Git-Installation mit GitLab zu verbinden.

lokale Projekte bei GitLab veröffentlichen

  • Jede weitere Änderung kann jetzt, nachdem sie wieder mit git add DaNa.ddd und git commit lokal gespeichert wurde, mit git push in GitLab veröffentlicht werden.

Mitarbeit in einem Projekt

2.1 Git lokal verwenden

  • Git von https://git-scm.com/download runterladen und installieren. Bei der Installation kann der Editor ausgewählt werden, der von Git verwendet werden soll. Ansonsten sollten die Standardeinstellungen übernommen werden.
  • Neuen Ordner anlegen.
  • Eingabeaufforderung öffnen und in den angelegten Ordner navigieren.
  • Mit git init für diesen Ordner das Repository anlegen.
  • In dem Ordner eine Datei anlegen.
  • Diese Datei mit git add DaNa.ddd für die Versionsverwaltung vorbereiten. Es erfolgt keine Ausgabe, der Status kann mit git status überprüft werden.
  • Diese Dateiversion mit git commit lokal speichern. Es öffnet sich der Editor und man sollte einen Kommentar schreiben, um die Änderung zu dokumentieren. Nach dem Schließen des Editors wird der Stand gesichert.
  • Eine Änderung in der Datei machen und spreichern.
  • Diesen Stand auch wieder mit git add DaNa.ddd und git commit festhalten.

Neben den Befehlen in der Eingabeaufforderung gibt es zahlreiche Git-Clients, z.B. https://www.sourcetreeapp.com

2.2 Literatur und Links

3 Vorgehensmodelle [3]

Nach Bearbeitung dieses Kapitels können Sie ...

  • ... die Schritte bei der Durchführung von (Software-)Projekten nennen und erläutern.
  • ... verschiedene Softwareentwicklungsmodelle gegeneinander abgrenzen und Vor- und Nachteile nennen.

Gute Planung bei der Entwicklung von Software ist unabdingbar.

Erstellen Sie in Gruppen Präsentationen (jeweils ca. 15min) inklusive Hand-Out (jeweils ca. 1-2 Seiten) zu den Themen

Arbeitsauftrag:

  • Erstellen Sie die Präsentation in Markdown, z.B mit Marp [4]. (Weitere Links [5], [6])
  • Erstellen Sie das Handout für Ihre Gruppe im Wiki von GitLab
  • Nutzen Sie zur Bearbeitung in Ihrer Gruppe GitLab

Termin für die Präsentation: 20.10.2020 ab 5. Stunde

4 Einstieg in die Programmierung mit C++

Nach Bearbeitung dieses Kapitels können Sie ...

  • ... Abläufe in Einzelschritte zerlegen und strukturieren.
  • ... Konsolenprogramme erstellen, die nach erfolgter Eingabe Berechnungen durchführen. Hierbei werden u.a. Kontrollstrukturen und Schleifen verwendet. Anschließend erfolgt eine Ausgabe.

Zunächst wird auf die Grundlagen der Programmierung eingegangen und die erforderlichen Programmschritte in einem Programmablaufplan mit Hilfe des PAP-Designers dargestellt. Anschließend werden die Programme für die Konsole in der Sprache C++ erstellt.

Links und Videos:

Arbeitsauftrag:

  1. Melden Sie sich am Virtuellen Desktop (https://edu-vdi.gs-ldk.de) mit Ihrem Benutzer S00xxxx und dem Passwort an.
    Der Client funktioniert am besten mit Chrome, hierzu ‘HTML-Access‘ auswählen.
    1. Wählen Sie den 'IT-Desktop' aus
    2. Starten Sie Visual Studio und melden Sie sich mit 'S00xxxx@student.gs-ldk.de' an
    3. Wählen Sie 'Neues Projekt erstellen' - 'C++ Konsolen-App'
    4. Vergeben Sie einen Namen für das Projekt
  2. Bearbeiten Sie die Übungsaufgaben aus den Kapiteln 1 und 2. Bearbeiten Sie zu jedem Thema mindestens drei Aufgaben und kommentieren Sie den Quelltext nachvollziehbar.
    • Speichern Sie den erstellten Programmcode unter der zugehörigen Nummer ab.
    • Schreiben Sie zu jedem Thema eine ausführliche Erklärung.


5 Unified Modelling Language

Nach Bearbeitung dieses Kapitels können Sie ...

  • ... ein Projekt mit Hilfe verschiedener UML-Diagramme planen.
  • ... die gebräuchlichsten UML-Diagramme erstellen.
  • ... den Unterschied zwischen prozeduraler und objektorientierter Programmierung erläutern.

"UML ist eine standardisierte grafische Darstellungsform zur Visualisierung, Spezifikation, Konstruktion und Dokumentation von (Software-)Systemen. Sie bietet ein Set an standardisierten Diagrammtypen, mit denen komplexe Sachverhalte, Abläufe und Systeme einfach, übersichtlich und verständlich dargestellt werden können.
UML ist keine Vorgangsweise und auch kein Prozess, sie stellt lediglich ein Wörterbuch an Symbolen zur Verfügung, von denen jedes eine definierte Bedeutung hat. Sie bietet Diagrammtypen für die objektorientierte Analyse, Design und Programmierung und gewärleistet somit einen nahtlosen Übergang von den Anforderungen an ein System bis zur fertigen Implementierung. Dabei werden die Struktur und das Verhalten des Systems dargestellt und somit Angriffspunkte für eine Optimierung der Lösung geboten." (Quelle: [8])

Bei der Model Driven Development-Methode stehen UML-Diagramme im Mittelpunkt.

Siehe Ringhand Kapitel 4.2-4.3, Seiten 142-161


Ausgangssituation: Das Taxi-Unternehmen Schneider & Schneider möchte seinen Schichtplan online zur Verfügung stellen und hat dazu das WebTaxi Lastenheft erstellt. Führen Sie zunächst die Entwurfsphase an Hand der folgenden UML-Diagramme durch.

Dokumentieren Sie alle Schritte sorgfältig und strukturiert, da dieses Projekt im Laufe Ihrer Ausbildung immer wieder unter verschiedenen Aspekten thematisiert wird.


Material:

Software:

5.1 Anwendungsfalldiagramm[9]

Das Anwendungsfalldiagramm ist oft der Ausgangspunkt für die Entwicklung eines komplexen Systems. Die Anzahl der zu erstellenden Anwendungsfalldiagramme hängt von der Größe und Komplexität des System ab. In ihm oder ihnen wird auf einer hohen Abstraktionsebene dargestellt, welche Funktionen (Anwendungsfälle) das System dem Anwender (Akteur) zur Verfügung stellt. Anwendungsfalldiagramme modellieren keine Abläufe.

Diese Anwendungsfälle sind mögliche Überschriften in einem späteren Handbuch für den oder die Anwender.
(Das Thema wird in der Oberstufe in Lernfeld 10 behandelt: LF10 - Betreuung von IT-Systemen.)

Material:

Arbeitsauftrag:

  1. Es soll ein Softwaresystem für eine Bibliothek entwickelt werden. Analysieren Sie die typischen Anwendungsfälle zur Ausleihe sowie Verwaltung von Lesern und Büchern.
  2. Erstellen Sie ein Anwendungsfalldiagramm für das WebTaxi Lastenheft.
  3. Erstellen Sie ein Anwendungsfalldiagramm, dass die Interaktion mit einem EC-Geldautomaten darstellt. Der Fokus liegt dabei auf der Authentifikation mit der Geheimzahl. Die Beantwortung der folgende Fragen hilft bei der Erstellung des Diagramms:
    1. Welche Akteure gibt es?
    2. Welche Anwendungsfälle ("Situationen", "Funktionen") gibt es?
    3. Welche Beziehungen zwischen den Akteuren und Anwendungsfällen gibt es?

5.2 Aktivitätsdiagramm[10]

Das Aktivitätsdiagramm stellt den genauen Ablauf innerhalb der Anwendungsfälle dar. Das bedeutet, dass zu jedem Anwendungsfall aus dem Anwendungsfalldiagramm ein Aktivitätsdiagramm erstellt werden sollte.

Die Aktionen, die hierin dargestellt werden, sind später Inhalt der Dokumentation.

Material:

Arbeitsauftrag:

  1. Entwickeln Sie ein Aktivitätsdiagramm zu der folgenden Ausgangssituation:
    Die Kunden einer Kfz-Versicherungsgesellschaft können ihre Schäden online über eine entsprechende Maske eintragen. Die Daten werden anschließend von einem Sachbearbeiter geprüft.
    In einem ersten Schritt muss die Schuldfrage geklärt werden. Hat der Versicherte Schuld (oder Teilschuld) an dem Schadensfall, so fordert der Sachbearbeiter ein Gutachten an, in dem die Schadenssumme genau berechnet wird.
    Liegt diese Schadenssumme unter 12.500,- €, so muss der Sachbearbeiter die Vertragsdaten des Versicherten anpassen (Anpassung des Schadensfreiheitsrabatts).
    Danach kann eine Reparaturfreigabe erfolgen, allerdings unter einschränkenden Bedingungen, die dem Versicherten mitgeteilt werden.
    Liegt die Schadenssumme über 12.500,- €, so muss der Sachbearbeiter neben der Anpassung des Vertrags auch den Abteilungsleiter informieren. Erst danach kann dann die Reparaturfreigabe unter Einschränkung erfolgen.
    Falls der Versicherte keine (Teil-) Schuld trägt, so kann eine uneingeschränkte Reparaturfreigabe erfolgen.
  2. Zeichnen Sie das Aktivitätsdiagramm für die Organisation einer Klausur.
    Beachten Sie, dass Aktivitäten auch parallel oder alternativ ablaufen können. Jeder der Punkte kann dabei mehrere Aktionen umfassen, wenn es Ihnen angebracht erscheint.
    Enthalten sein sollten mindestens:
    • Die Teilnahme an den Übungen (erfolgreich/nicht erfolgreich)
    • Die erfolgreiche Teilnahme führt zur Klausuranmeldung, dem Erfragen des Termins und sorgfältiger Vorbereitung in beliebiger Reihenfolge.
    • Die Klausur selbst mit anschließender Abfrage der Ergebnisse im Internet.
    • Eine einmalige Zulassung zur Nachklausur, wenn die Klausur im ersten Versuch nicht bestanden wurde.
    • Die Nachholklausur erfordert eine erneute Terminabfrage und Vorbereitung.
    • Ein Krankheitsfall kann ebenfalls eintreten. Mit einem Attest und einer anschließenden Genesung ist eine Wiederholung der jeweiligen Klausur möglich.
  3. Entwickeln Sie für jeden Anwendungsfall für das WebTaxi Lastenheft das entsprechende Aktivitätsdiagramm.

5.3 Klassendiagramm[11]

Das Klassendiagramm stellt die statische Strukturs eines Systems dar. Die Klassen beinhalten Attribute und Methoden und sind untereinander verbunden, um kommunizieren zu können.

Die Herangehensweisen bei der Erstellung sind vielfältig. Eine Möglichkeit einen ersten Einstieg in die Erstellung des Klassendiagramms zu machen ist die grammatikalische Untersuchung des Lasten- oder Pflichtenheftes. Hierbei sind Substative mögliche Kandidaten für Klassen, Adjektive könnten Attribute sein und Verben geben Hinweise auf Methoden. Darauf aufbauend können CRC-Karten erstellt werden (CRC-Karten gab bereits vor der UML).

Verbindungen zwischen den Klassen, bei denen auch verschiedene Multiplizitäten möglich sind:

  • Generalisierung - 'ist ein'-Beziehung. Eigenschaften und Methoden, die in mehreren Klassen auftreten werden in einer Basis-Klasse zusammengefasst, von der die anderen Klassen erben.
  • Assoziation - wenn zwei Klassen untereinander kommunizieren, müssen sie verbunden sein.
  • Aggregation - 'ist Teil von'-Beziehung, bei der das Teil auch ohne das Ganze existieren kann.
  • Komposition - 'ist Teil von'-Beziehung, bei der das Teil nicht ohne das Ganze existieren kann.

Wie Klassendiagramme in C# implementiert werden: [12]

Material:

Arbeitsauftrag:

  1. Erstellen Sie ein Klassendiagramm zu der folgenden Problemstellung. Achten Sie auf die entsprechenden Beziehungen zwischen den Klassen. Berücksichtigen Sie auch die Implikationen, die durch bestimmte Multiplizitäten entstehen.
    Es soll eine Individualsoftware entwickelt werden, mit der Schulungskurse, Mitarbeiter, Dozenten und Teilnehmer verwaltet werden können. Die Software soll benutzerfreundlich sein und über automatische Datensicherungsmechanismen verfügen (speichern der Daten in einer Datei oder in einer Datenbank).
    Nutzen Sie als Vorlage die Folien 45-56, in denen die Entwicklung eines Klassendiagramms schrittweise gezeigt wird.
    Wichtige Funktionalitäten:
    • Anlegen von Mitarbeitern und verwalten bestehender Mitarbeiter
    • Anlegen von neuen Kursen und verwalten bestehender Kurse
    • Anlegen von neuen Dozenten und verwalten bestehender Dozenten
    • Anlegen von neuen Teilnehmern und verwalten bestehender Teilnehmer
    • Teilnehmer und Dozenten den Kursen hinzufügen
    • Ausgabe einer Liste der Kurse (incl. Dozenten und Teilnehmer)
    • Ausgabe einer Liste der Dozenten (incl. der Kurse)
    • Ausgabe einer Liste der Mitarbeiter
    • Ausgabe einer Liste der Teilnehmer (incl. deren Kurse)
  2. Erstellen Sie ein Klassendiagramm für das WebTaxi Lastenheft.
  3. Ergänzen Sie die Verbindungen mit Multiplizitäten und überprüfen Sie, welche Verbindungen zwischen den Klassen Assoziationen, Aggregationen oder Kompostionen sind.

5.4 Sequenzdiagramm[13]

Im Sequenzdiagramm wird der zeitliche Verlauf von Nachrichten zwischen Objekten/Klassen für ein Szenario von oben nach unten dargestellt. Wenn im Sequenzdiagramm eine Nachricht an eine Klasse geschickt wird, muss im Klassendiagramm diese Klasse eine gleichnamige Methode haben.

Material:

Arbeitsauftrag:

  1. Erstellen Sie zu dem Sequenzdiagramm auf Folie 27 das passende Klassendiagramm.
  2. Für eine Bank soll ein Softwaresystem entwickelt werden. Folgende Akteure und Objekte wurden zunächst bestimmt:
    Kunde, Kundenberater, Konto, Datenbank
    Entwickeln Sie ein Sequenzdiagramm zu folgendem Szenario:
    • Ein Kunde möchte ein Konto (bzw. bis zu drei Konten) eröffnen.
    • Der Kundenberater erfragt die gewünschte Anzahl der Konten.
    • Der Kundenberater startet eine Datenbankabfrage, um die Bonität des Kunden zu ermitteln (kritische Abfrage, da die Datenbankverbindung nicht immer vorhanden ist).
      • Ist die Bonität vorhanden, so legt der Kundenberater ein Konto nach dem anderen an.
      • Ist die Bonität nicht vorhanden, so informiert der Kundenberater den Kunden und legt kein Konto an.
  3. Erstellen Sie für diese Aufgabe das entsprechende Klassendiagramm mit allen benötigten Methoden und Assoziationen.
  4. Erstellen Sie für verschiedene Szenarien Sequenzdiagramme für das WebTaxi Lastenheft.

5.5 Zustandsdiagramm[14]

Material:

5.6 Objektdiagramm[15]

Material:

6 Relationale Datenbanken

In der Praxis sind Relationale Datenbankmanagementsysteme immer noch von großer Bedeutung[16].

6.1 Datenbank-Entwurf

Nach Bearbeitung dieses Kapitels können Sie ...

  • ... ein konzeptionelles ER-Modell entwerfen
  • ... ein ER-Modell in ein Relationales Datenmodell überführen
  • ... ein Relationales Datenmodell optimieren
  • ... eine Tabellenstruktur in einer Datenbank anlegen

(Präsentation aus dem Unterricht)

6.1.1 Entwurfs-Phasen

Beim Entwurf von Datenbanken durchläuft man die folgenden Phasen:

Externe Phase
Meist ausgehend von den Attributen des Klassendiagramms werden in der Anforderungsanalyse die zu speichernden Informationen bezogen auf die Anwendung ermittelt.
Konzeptionelle Phase
Der Sachverhalt wird in einem sematischen Modell formalisiert beschrieben. Am Schluss dieser Phase steht ein Entity Relationship Modell[17]. Dieses ER-Modell stellt hauptsächlich die Entitätstypen und deren Beziehungen untereinander mit den entsprechenden Kardinalitäten übersichtlich dar.
Logische Phase
Das semantische Datenmodell wird in ein relationales Datenmodell überführt. Dabei werden die Beziehungen zwischen den Tabellen konkret über Schlüsselfelder bzw. Verknüpfungstabellen realisiert. Anschließend wird das relationale Schema durch Normalisierung optimiert. Außerdem dürfen keine Prozessdaten gespeichert werden.
Physische Phase
Nach Festlegung der Datentypen wird das relationale Schema in einer Datenbank (z.B. mit SQL-Befehlen) angelegt.

6.1.2 Normalformen[18]

Zur Vermeidung von Redundanzen, die zu Anomalien führen können, sollten Datenbanken normalisiert werden.

1. Normalform
Atomare Werte.
2. Normalform
Jedes Nicht-Schlüsselattribut ist vom gesamten Schlüssel abhängig.
3. Normalform
Nicht-Schlüsselattribute sind voneinander unabhängig.

Links zum Nachschlagen

Arbeitsauftrag:

  • Datenbank für Rechnungserstellung:
  1. Erstellen Sie ein Datenbank-Modell in der Chen-Notation, die alle Informationen enthält, um eine Rechnung zu erstellen.
  2. Vergleichen Sie Ihr ER-Modell mit dem Modell an der Tafel, listen Sie die Unterschiede auf und beschreiben Sie die Auswirkungen in der Praxis.
  3. Überführen Sie das ER-Modell zur Rechnungserstellung in ein relationales Datenmodell.
  4. Überprüfen Sie das Datenmodell auf die drei Normalformen.
  • Betriebsabrechnungs-Datenbank:
  • Jeder Kunde hat die Attribute Name und Adresse.
  • Jeder Mechaniker hat die Attribute Name und Ausbildungsstand.
  • Jede Auftragsposition hat die Attribute Beschreibung und AnzahlArbeitseinheiten.
  • Kunden vergeben Aufträge; dabei erfolgt die Vergabe an bestimmtem Tag.
  • Mechaniker bearbeiten Aufträge; manche Aufträge werden von mehreren Mechanikern bearbeitet.
  • Jeder Auftrag besteht aus mindestens einer und maximal beliebig vielen Auftragspositionen.
    Auftragspositionen können zu mehreren Aufträgen gehören.
  • Mechaniker vergeben keine Aufträge.
  1. Definieren Sie ein entsprechendes, konzeptionelles Entity-Relationship Modell.
  2. Überführen Sie das ER-Modell in ein relationales Datenbankmodell. Vergessen Sie nicht alle Primär- und Fremdschlüssel sowie Attribute anzugeben.
  3. Überführen Sie das Modell in die dritte Normalform.
  • Datenbank für die Einkaufsabteilung:
  • ein Einkäufer führt mehrere Bestellungen aus
  • mit jeder Bestellung werden eine oder mehrere Waren zu unterschiedlichen Stückzahlen bestellt
  • eine Ware kann jeweils nur bei einem Hersteller bezogen werden
  • jede Ware wird einer Warengruppe zugeordnet
  • an einem Lagerort können mehrere Waren gelagert werden
  1. Erstellen Sie hierzu das entsprechende ER-Modell in der Chen-Notation.
  2. Überführen Sie das ER-Modell in ein relationales Datenbankmodell in der Dritten Normalform.
  • Datenbank für Online-Schichtplan:
  1. Entwickeln Sie aus dem Klassendiagramm, dem das WebTaxi Lastenheft zu Grunde liegt, für den Online-Schichtplan ein ER-Modell.
  2. Überführen Sie das ER-Modell für den Online-Schichtplan in ein relationales Datenmodell.
  3. Überprüfen Sie das Datenmodell auf die drei Normalformen.

6.2 Vererbungen realisieren

Relationale Datenbanken können keine Vererbungsstrukturen darstellen. Es gibt verschiedene Wege, Vererbungshierarchien objektorientierter Modelle auf Datenbanktabellen abzubilden[19].

6.3 SQL

SQL am Beispiel der verbreiteten MySQL-Datenbank (Präsentation aus dem Unterricht).

Nordwind.png

Für Übungszwecke eignet sich die Nordwind-Datenbank.

Arbeitsauftrag:

  1. Vorbereitung:
    1. Installieren Sie xampp im Hauptverzeichnis auf Ihrem PC.
    2. Rufen Sie C:\xampp\xampp-control.exe auf und starten den Apache-Webserver und die MySQL-Datenbank. Falls der Apache nicht startet, kontrollieren Sie mit netstat -an ob der Port 80 belegt ist. In diesem Fall können Sie in der c:\xampp\apache\conf\httpd.conf über den Eintrag 'Listen' den Port umstellen, z.B. auf 8080.
    3. Speichern Sie das SQL-Skript lokal auf Ihrem PC.
    4. Importieren Sie das Skript mit dem phpMyAdmin, alle erforderlichen Datenbanken und Tabellen mit Daten werden angelegt.
  2. Legen Sie eine leere Datenbank an und überführen Sie das folgende ER-Modell
    er-modell.png
    mit Hilfe von SQL-Befehlen in Tabellen. Legen Sie die entsprechenden Primär- und Fremdschlüssel und alle Verknüpfungen an.
    Dokumentieren Sie alle hierfür notwendigen SQL-Befehle.
  3. Ermitteln Sie die SQL-Befehle für diese Abfragen[1].
    Dokumentieren Sie Ihre Lösungen, hierfür können Sie diese Vorlage verwenden.

Links zum Nachschlagen

Tutorials und Lernplattformen


  1. Die Seite wird mit folgenden php-Skript erzeugt: SQL_Aufgaben-Funktion