2. 2022-10-03
2.2. Projekte (Buch)
2.2.1. Projektmerkmale
-
Routineaufgaben vs. Projekte

-
Reporting (Berichtswesen)
-
Standard-Reports (wöchentlich, monatlich, ….)
-
adhoc-Reports (aufgrund eines Ereignisses)
-
-
Stakeholder → Betroffenen
-
nicht die Projektdurchführenden (Programmierer und User) und Eigentümer, sondern Personen, die die Auswirkungen des Projekts verspüren
-
Stakeholder-Analyse identifiziert die Betroffenen, versucht die Auswirkungen für diese Betroffenen zu erfassen und ggf. deren Maßnahmen
-
-
Meilenstein beinhaltet
-
Termin (Zeitpunkt)
-
und eine inhaltliche Komponente (Was wurde gemacht)
-
5. 2022-11-07
6. 2022-11-14
6.2. DOM - Domain Object Model
-
nicht zu verwechseln mit Document Object Model (Baum-Repräsentation der HTML-Seite im Browser)
-
Domain entspricht Fachbereich
-
zB Medizin, Einzelhandel, Kfz-Handel, Warenwirtschaft,…
-
-
DOM ist vergleichbar mit einem ERD
-
ein Klassendiagramm ohne technische Klasse nut mit Fachbereichsklassen
-
6.3. Beziehungen
-
Assoziation - benutzt-Beziehung
-
Aggregation - "besteht aus" → zerstörungsfreie Zerlegung
-
zB Auto besteht aus Autoreifen
-
-
Komposition - "besteht aus" → zerstörende Zerlegung
-
zB Haus besteht aus Etagen
-
-
Vererbung
-
Realisierung (Implementierung)
-
Beziehungen
-
unidirektional
-
bidirektional
-
-
Multiplizität
-
1:*
-
1:1
-
*:*
-
7. 2022-11-21 Erstellen von gh-pages mit Asciidoctor
-
altes Repo mit asciidoctor - Beispielen
-
https://github.com/htl-leonding-college/asciidoctor-docker-template
-
html-pages werden lokal erstellt
-
-
neues Repo
-
https://github.com/htl-leonding-college/asciidoctor-convert-template
-
html wird in einem gh-runner generiert
-
7.2. Anforderungen an Projekt-Repositories
-
Im repo-root gibt es ein README.adoc, in dem
-
ganz kurz erklärt wird, was die Aufgabenstellung (und ev. das Problem) des Projekts ist
-
sämtliche (adoc)-Dokumente aufgelistet sind
-
das .idea-Verzeichnis wird nicht committed
-
REGEL: Sämtliche Artefakte, die generiert werden, dürfen nicht im Repo gespeichert werden
-
8. 2022-11-28

-
kein technischer Overkill - besser mit Bleistift gezeichnetes Wireframe als Clickable Mockup
8.2. Git - Branches
-
main-branch nur für releases
-
develop-branch immer lauffähig
-
feature- und bugfix-branches für entwickeln
13. 2023-01-16
13.1. Regeln für die Projektarbeit
13.1.2. Arbeitszuordnung
-
Jedes Projektmitglied hat einen eigenständigen Aufgabenbereich zB einen Task.
-
Dieser Task wir in einem eigenem Branch erstellt / durchgeführt
13.1.3. Sprint Reviews / Präsentationen
-
Es darf nicht auf dem eigenen Rechner (kein grüner Pfeil in der IDE) präsentiert werden. Ein essentielles Deployment ist erforderlich.
-
Folgende Möglichkeiten
-
oravm
-
leocloud in eigenem Namespace
-
minikube
-
In einem laufenden Sprint wird nichts verändert. Weder Aufgaben des Sprint Backlog noch die gewählte Vorgangsweise (zB Branching) |
13.2. Projekthandbuch für Scrum
-
Team mit Rollen
-
Wie werden die Branches durchgeführt (siehe #git-branching)
-
Die URL für
-
github-Repo
-
Doku
-
Scrum-Board
-
13.3. Dokumentation
-
Es muss eine (grobe) Systemarchitektur geben
-
Gewisse Entwurfsentscheidungen müssen dokumentiert werden
-
Eine RevealJS-Präsentation muss immer verfügbar sein
-
Problemstellung
-
Aufgabenstellung
-
derzeitiger Stand
-
13.4. Testen
-
Die Akzeptanzkriterien sind als Unit-Tests implementieren (wenn möglich)
-
und ist zu präsentieren
15. 2023-02-13
-
Bis nach den Semesterferien
-
Cld fertigstellen
-
in Java programmieren
-
Entities
-
Repositories
-
-
Use-Cases mit assertj-db testen
-
Konfigurieren einer gh-page im Repo laut Angabe
-
Für die einzelnen Aktivitäten im youtrack User Stories und tasks anlegen und bei den Commits deren Id in der Commit-Message eintragen |
16. 2023-02-27
16.1. Docker
-
Docker ist leichtgewichtige Virtualisierung.
16.1.1. Warum Docker?

-
Man braucht eine Laufzeitumgebung, die genau definiert ist
-
Java hatte früher den Slogan "Write once, runs anywhere" (WORA)
-
Heutzutage eher "Write once, run predictable" (WORP)
-
-
Unterschied Developer - Operator
-
Developer: programmiert Applikationen
-
Operator: ist im Rechenzentrum; kümmert sich um das Hosting der Anwendungen, Sicherungen, etc.
-
Es gab immer Konflikte zwischen Devs und Operators
-
→ jetzt gibt es DevOps
-
18. 2023-03-13
-
Leistungsfeststellung
18.1. Docker

18.1.1. Hausübung
-
Erstellen eines Containers mit MariaDb
-
In einem bind mount sollen die Datenbank-Files gespeichert werden (
db
-Verzeichnis) -
Das
docker run
- Kommando soll in einem shell-scriptcreate-db-container.sh
gespeichert werden. -
Nach Ausführen des Scripts soll der Container erstellt werden.
-
Erstellung eines Script
stop-db-container.sh
(der Container muss automatisch gelöscht werden) -
Nach einem neuerlichen Start müssen die Daten wieder vorhanden sein
-
Erstellen Sie in IntelliJ eine Datenbank-Connection zu Ihrer Maria-Db
-
19. 2023-03-20
19.1. Package Manager (maven, gradle, …)
-
gibt die Struktur (Verzeichnisse, Files, …) in einem Softwareprojekt vor
-
https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
-
hat den Vorteil, dass Softwareprojekte in jeder IDE geöffnet werden kann (zB intellij, vsc, eclipse, …)
-
-
man trägt in einer zentralen Datei (bie maven pom.xml) die Library ein
-
diese Libraries werden automatisch beim Start des Programms heruntergeladen und
-
in einem zentralen Verzeichnis gespeichert (bei maven .m2 im User-Home)
-
Dies hat den Vorteil, dass bei Verwendung einer Library in mehreren Projekten, die Library nur einmal heruntergeladen wird.
-
19.2. Testen von Softwareprodukten
-
jUnit
-
stellt die Funktionalität zur Verfügung, um ein Programm testen zu können
-
beim Testen werden die Ergebnisse von Methoden mit erwarteten Werten verglichen (matching)
-
falls nicht das erwartete Ergebnis geliefert wird, gibt es einen Fehler
-
als matcher kann man die Methoden von jUnit verwenden, allerdings gibt es bessere (zB hamcrest, assertj, karate ,…)
-
wir verwenden assertj-core und assertj-db
-

-
Test-Matcher
-
ein aktueller Wert wird mit einem vorgegebenen Wert verglichen.
-
in jUnit sind solche Matcher bereits eingebaut
-
assertEquals
-
assertTrue
-
assertXXX
-
-
Es gibt aber auch alternative Matcher
-
Vorteile von alternativen Matcher
-
Übersichtlichkeit des Codes
-
Schreibweise (fluent)
-
Anzahl der Matcher
-
zB speziell für Collection-Vergleiche
-
zB für Datenbanken
-
-
-
21. 2023-04-17
21.2. Übung Dockerfile
-
führen Sie die Dockerfile-Übungen aus den Technology Notes
21.3. Übung Youtrack für das eigene Projekt
-
Erstellen Sie im Product-Backlog mehrere UserStories und Tasks für eine, max. 2 User Stories
-
Verschieben Sie diese 2 User Stories mit ihren Tasks in das Sprint-Backlog
-
Führen Sie nun die in den Tasks angeführten Aufgaben durch und "verbinden" sie die Commits mit den jeweiligen Tasks (Issues)
21.4. Testen
21.4.1. Was testet man?
Teststrategien
-
bei Datenbanken
-
CRUD-Funktionalität
-
CREATE - Erstellen eines Datensatzen einer Entity Klasse in der Entity-Table
-
READ - Lesen eines Datensatzes und erstellen des zugehörigen Java - Objekts
-
UPDATE - Ändern eines Java - Objekts und diese Änderungen werden in der zugehörigen DB-Tabelle gespeichert
-
DELETE - Löschen eines Java - Objekts mit dazugehörogem Löschen in der Datenbank
Man beginnt mit den Stammdaten (ohne Abhängigkeiten zu anderen Tabelle) -
Bsp:
-
Nicht Zimmer, sondern Hotel als erste Klasse testen
-
-
-
Transaktionen nicht vergessen
-
-
User Stories (Use-Cases, Anwendungsfälle) testen
-
zB Reise buchen
-
zB Reise stornieren
-
-
Grenzwertanalyse - Grenzwerte werden getestet
-
zB Alter von 450 Jahen bei Personen - wie reagiert das System
-
Alter von -10 Jahren
-
-
Äquivalenzklassenanalyse → Äquivalenzklassen identifizieren und aus jeder Klasse einen Wert testen und die Grenzen dieser Klasse
-
Bsp: Eintrittspeise: Kinder frei, Jugendliche 5 €, Erwachsene 50 €, Pensionisten 20€
-
Sind drei Äquivalenzklassen (alle Eingabewerte innerhalb einer solchen Klasse ergebn des selben Ausgabewert)
-
Bsp: Kind mit 3J → gratis
-
Kind mit 5 J → gratis
-
-
-
Exceptions testen
24. 2023-05-15
24.1. docker-compose
24.1.1. Übung docker-compose
-
erstellen Sie ein File
docker-compose.yaml
welches folgende Dienste beinhaltet-
Service backend
-
beinhalted eine nodejs-express-Anwendung
-
greift auf eine mariadb zu
-
-
Service db
-
wird vom Service backend benutzt
-
-
Service phpmyadmin
-
Netzwerk my-network mit ip 10.0.2.0/24
-
-
erstellen Sie ein asciidoc-File, dass direkt die source-Files (docker-compose.yaml) in das sciidoc-File included.
-
Es darf nicht das gesamte File auf einmal inkludiert werden, sondern nur die einzelnen Teile hintereinander
-
verwenden Sie keyb-Macros
-
Achten Sie auf eine saubere Präambel und allgemein ein sauberes Asciidoc-File
-
-
Abgabe: siehe moodle
25. 2023-05-22
25.1. Commits
-
Es wird vereinbart für die Commit-Messages folgende Formate zu verwenden:
-
im Besonderen: @commitlint/config-conventional
-
und auch Angular conventions