2. 2022-09-30
2.5. Asciidoctor Präambel
= Lecture Notes 22-23 / 1ahitm / SEW Thomas W. Stütz 1.0.0, {docdate}: Softwareentwicklung //:toc-placement!: // prevents the generation of the doc at this position, so it can be printed afterwards :sourcedir: ../src/main/java :icons: font :sectnums: // Nummerierung der Überschriften / section numbering :toc: left :experimental: //Need this blank line after ifdef, don't know why... // print the toc here (not at the default position) //toc::[] == Lehrplan
4. 2022-10-10 - Git
-
Commands
-
git add
-
git commit
-
git push
-
git clone
-
…
-
-
Workflow
-
branches erstellen
-
mergen
-
auf frühere Version zurückgehen
5. 2022-10-14
5.1. Pflichtenheft
Phase | Beschreibung | Beispiel |
---|---|---|
Ausgangssituation |
Beschreibung des Umfeldes und / oder des Unternehmens |
Die HTL Leonding ist eine mittelgroße Schule im Zentralraum OÖ mit ca. 1200 Schülern |
Istzustand |
Beschreibung der Abteilung der Organisation bzw. des Geschäftsfalles |
Die Abteilungen Informatik und Medientechnik haben einen beträchtlichen Programmieranteil |
Problemstellung |
Das Problem wird beschrieben OHNE die Lösung zu erwähnen |
|
Sollzustand / Ergebnis / Leistung / Aufgabenstellung |
Welcher Zustand soll erreicht werden? Was soll zB erstellt werden? |
Ein Portal ist zu erstellen in dem Schüler mit einer Online-IDE Beispiele aus einem vorhandenen Pool lösen können. Das Ergebnis dieses Projekts ist das fertige Portal. |
Ziel |
Leistungswirkung |
Die SuS lernen einfacher eine Programmiersprache, … |
6. 2022-10-17 Projektanträge durchgesehen
Kapitel | Beschreibung | Beispiel |
---|---|---|
Aufgabenbeschreibung |
Was ist zu erstellen? Welche Funktionalität hat das zu erstellende Produkt? |
Eine mobile App ist zu erstellen mit folgender Funktionalität:
|
Nutzen |
Welche Leistungswirkung ergibt sich? |
Beim Einsatz im Schulunterricht:
|
Konsequenzen |
Was passiert oder passiert nicht beim Fehlen des Produkts / Nichterstellen des Projekts |
Die Noten von Schülern sind ev. schlechter |
Pers. und finanz. Rahmenbedingungen |
Was wird benötigt? Was ist ev. bereits vorhanden? |
Ein Schülerteam aus ca. 4 Personen arbeitet ein Schuljahr dran. |
7. 2022-11-04
7.3. UML
-
Was ist ein Modell?
-
Ein Modell ist ein vereinfachtes Abbild der Realität unter Berücksichtigung eines besonderen Aspektes
-
zB Datenmodell: Vereinfachte Darstellung einer Situation unter besonderer Berücksichtigung der Datenstrukturen
-
Ablaufdiagramm: Vereinfachte Darstellung einer Situation unter besonderer Berücksichtigung der Abläufe; zB Verschicken eines Pakets
-
9. 2022-11-11
9.1. Notation
-
Schreib- oder Zeichenweise, wie etwas dargestellt wird. Vereinbarung, wie etwas gezeichnet oder geschrieben wird.
9.3. Domain Object Model (DOM)
-
Nicht zu verwechseln mit einem Document Object Model (in einem HTML-Dokument)
-
Domain → Fachbereich (zB Autohandel, Immobilien, Medizin, …)
-
vergleichbar mit einem ERD
-
es werden nur die Fachbereichsobjete und deren Beziehungen dargestellt und keine technischen Klassen (oder auch Interfaces)
10. 2022-11-14
10.2. Repo-Strukturierung
-
README.adoc
-
asciidoc-Verzeichnis
-
backend
= Projekt XY
Projektmitglied A, ...
1.0.0, {docdate}
:icons: font
:sectnums: // Nummerierung der Überschriften / section numbering
//:toc:
//:toclevels: 4
:experimental:
//https://gist.github.com/dcode/0cfbf2699a1fe9b46ff04c41721dda74?permalink_comment_id=3948218
== XY
TIP: Das ist ein Tipp
.Programmablaufplan
[%collapsible]
====
image::https://www.plantuml.com/plantuml/png/ZPBDZjCm4CVlVefXJwq4PVb0GYsBjeYFtGj2eENkn9DajCuuiiTKubauyWnxufONmoIjoQgYuMZD__VxZpI-3AAznDQg1vtNTQiX1loANgZKzhe2nsf8gFMxDTIuexAHpVZm3aF0ZQ8A5aLBy0gUl5ozM88qoB0G7t6f0DPfz5aBSGqNS7R3WdwlETiej07_uazdu8_Ejzh-YtvsVfhkVnIv-Z5yylrFRQXpWKI7OzdCAjkCmk8zYbYaWkfR95d21wyDN1yfdv__jt8q71IZuFL5CYHg5XivDbGf5NOaPRF8m5AL-ezmUePXa-qQRhe0Z-0B8JIwG8PfPhNPW_a4KpBrIhI47XzE-1oz9pXrXOFlodMTjlhUDbCk3OmESDlVCGj2qTybCx91pZNpzpcKRPCmShql2yG6gWoiu6qoxCYRkPPHcgrNP2jCpZT8S9o2jlyL0l9GQJnndRomIm699-nPFt25rx5iaiHWHKn2to2uoda194Q6hVykoPNCuozGGLodBjCxjlOt[]
====
XY |
ACHTUNG |
12. 2022-11-21
12.1. Anforderungen an das Projekt-Repository
-
automatisches Generieren von gh-pages
-
neues Repo: https://github.com/htl-leonding-college/asciidoctor-convert-template
-
altes repo: https://github.com/htl-leonding-college/asciidoctor-docker-template
-
Templates für mom und sysspec, …
-
-
-
im repo-root ein README.adoc
-
kurze Beschreibubgf des Projekts
-
Die Links zu allen gh-pages
-
15. 2022-12-05
Mitschrift: Ruep Michael
Was
-
Pflichtenheft
-
ein Pflichtenheft zeigt nicht wie man was macht
-
Wie
-
Problemvereinfachung durch Problemzerkleinerung:
-
Man nimmt die Probleme, unterteilt sie immer weiter in kleinere Probleme bis diese schaffbar sind.
-
-
Grobentwurf
-
Schnittstellen zwischen Komponenten definieren
-
Komponentendiagramm (UML)
-
Verteilungsdiagramm (UML)
-
-
Wichtig für die Zusammenarbeit (collaboration der Programmierer)
-
Damit die verschiedenen Teile miteinander funktionieren.
-
Mocken (=vortäuschen)
-
beispielsweise eine Datenbank vortäuschen wobei diese nur 3 Einträge enthält.
-
-
-
Bsp:
-

-
Feinentwurf
-
Klassendiagramm (UML)
-
Zustandsdiagramm (UML)
-
Objektdiagramm (UML)
-
..
-
Bsp:
-

-
Implementierung
-
Durchführung (programmieren)
-
Das Ergebnis der Implementierung ist dann der Code
-
16. 2022-12-09
16.1. Anforderungsanalyse
Erhebung der Anforderungen für den Kunden
Mitschrift: Ruep Michael
-
Aufgabe: Kapitel Anforderungsanalyse lesen (S.235 ff)
16.1.1. Interview
Wird am häufigsten als Ist-Aufnahmetechnik eingesetzt
-
Standardisiert (fixe fragen)
-
Halbstandardisiert (teilweise fix)
-
Nicht-Standardisiert (benötigt gute Interviewer)
Offene Frage: Bsp: Wie geht es Ihnen?
Geschlossene Frage: antwort: ja nein Bsp: Hast du einen Führerschein?
Indirekte Frage: Hast du den Autoführerschein (um das ungefähre alter eingrenzen zu können).
Direkte Frage: Direkt das fragen, was man erfahren will.
-
Interviewvorbereitung (interview preparation)
-
Interviewdurchführung (interview session)
-
Interviewauswertung (interview follow up) Bsp: Das Erfahrene niederschreiben
Vorteile:
-
Möglichkeit zur vertiefung der Befragung durch Zusatzfragen und Verständnisfragen
-
Möglichkeit zur steigerung der Motivation des Befragten
Nachteile:
-
Zeitaufwand
-
Anforderung and die Fähigkeiten der Interviewer
-
Störung des Interviewten bei der Aufgaben erfüllung
16.1.2. Fragebogen
-
quantitativ: Zahlen
-
qualitativ: Meinungsbilder (wie geht es jemanden damit)
Es gibt Individual und Gruppenfragebögen
Vorteile:
-
schriftliche Ergebnisse
-
Anwendung der Wahrscheinlichkeitsrechnung
-
geringe Kosten
Nachteile:
-
geringe Antwortquote
-
Missverständnisse möglich
-
aufwendige Auswertung bei freien Fragen
16.1.3. Beobachtung
Direkte Erfassungsmethode, sinnliche Wahrnehmungen des Planers für zusätzliche Informationen.
-
Man fragt nicht nur
-
was gewollt ist, was das Problem ist was gemeint ist (was mann bekommt) man sagt auch
-
das und das eben nicht (was man nicht bekommt), somit fallen Missverständnisse auf.
-
-
Formen:*
-
offene oder verdeckte Beobachtung
-
strukturierte oder unstrukturierte Beobachtung
-
aktiv teilnehmende oder passive Beobachtung
-
Dauerbeobachtung oder unterbrochene Beobachtung
-
-
Multimomentaufnahme: Stichprobenartig (nicht nur genau an einem Zeitpunkt, immer wieder, um eine Übersicht über die vom Mitarbeiter durchgeführten Tätigkeiten zu bekommen)
17. 2022-12-16
Mitschrift: Adelwöhrer Leonie
17.1. Git-Flow
-
Branches
-
Main Branch
-
Lauffähige Version
-
releases V.1.0
-
commits
-
-
Development Branch
-
Development Umgebung
-
cherry-picking
-
-
Feature Branch
-
Neue Funktionen
-
Bugfixes
-
Hotfix …. muss schnell passieren
-
-

17.2. V-Modell
-
Validierung = Lösen wir das Problem?
-
Grobentwurf = Datenbank, Backend, Frontend
-
Feinentwurf = Bis zum Klassendiagramm
-
Unterschied Entwurf und Design = Gibt keinen!
-
V-Modell (Vorgehensmodell… Wie erstelle ich es?) = alles in einem,
-
Wasserfallmodel (Grundlegende Prozessmodelle)
-
Analyse, Anforderungsanalyse, Design, Realisierung, Test, Einsatz und Wartung
-
-
iterative Prozesse (iterative Prozessmodelle)
-
XP (Agile Prozessmodelle)
-
Scrum (Haufen ⇒ agil heißt flink, beweglich)
-
kleine Einheiten
-
umfangreiche Dokumentation (im Code bspw. AsciiDoc)
-
Verträge
-
Fokus, Leistung
-
Verlauf:
-
Product Backlog (User-story, Sachlich)
-
Sprint Backlog (Zeitlich)
-
Sprint (Bis wann?)
-
lauffähige inkrementell verbesserte Software
-
-
Warum Domainmodell und kein Klassendiagramm? Da wir keine technischen Daten Benötigen!
Git
-
Versionierungssoftware
-
Architektur… Local Repo, Remote Repo
18. 2022-12-19
Mitschrift: Nico Wakolbinger
18.1. Scrum

-
Scrum Aktivitäten:
-
Anforderungsanalyse
-
Sprint Planning
-
-
Product Backlog
-
User Stories
-
Was bekomme ich? (sachliche Komponente)
-
Eine User Story oder Anwendererzählung ist eine kurze Beschreibung (Story) dessen, was ein Benutzer (User) will. Eine User Story besteht aus ein paar Sätzen, in denen beschrieben wird, was der Benutzer des Produkts machen will bzw. muss. Sie ist im Regelfall wenig detailliert und sollte auf ein post-it passen. (source: https://scrumguide.de/user-story/)
-
-
Sprint Backlog
-
User Stories werden in Task zerlegt (verfeinert)
-
Wie bekomme ich etwas?
-
-
Sprint: wann bekomme ich etwas?
-
Sprintdauer: in real-world Projekten ca. 30 Tage; in Schule ca 14 Tage
Inkrementieren → um 1 erhöhen, um ein Stück erhöhen, …
Nach jedem Sprint ist das Produkt lauffähig → dieser Stand des Produkts wird "increment" genannt
18.1.1. Rollen im Scrum
-
Scrum Team)
-
Product Owner
-
vertritt die Interessen des Auftraggebers
-
-
Scrum Master
-
Kümmerer (sorgt für Softwarelizenzen, passende Hardware, …)
-
-
Developers
-
Programmierer
-
maximal 8 Personen pro Team
-
-
-
Users
-
Softwarenutzer
-
-
Stakeholder
-
Betroffene des Projekts, sind involviert, arbeiten aber nicht mit der erstellten Software
-

19. 2022-12-23 Docker
Mitschrift: Nico Wakolbinger
Derivat: Abkömmling
Bekanntestes Linux Derivat ⇒ Ubuntu
Betriebssystem, Kernel
Packetmanager: z.B. apt, …
22. 2023-02-17
-
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 |
23. 2023-02-27
23.1. Docker
-
Docker ist leichtgewichtige Virtualiserung.
23.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
-
Fragen:
-
Unterschiede Developer - Operator - DevOps
-
Aufgaben des DevOps
-
Was kommt zum Programmieren noch dazu?
-
-
Warum gibt es DevOps?
-
Aufgaben des Operators
-
…
24. 2023-03-10

24.1. Testen
-
jUnit

-
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
-
-
-
25. 2023-03-13
25.1. Forstsetzung Docker
25.1.3. Hausübung
-
Erstellen eines Container 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
-
26. 2023-03-24
26.1. Docker
-
Docker ist eine leichtgewichtige Virtualisierung
26.1.2. Image
-
Image ist immtable und kann daher von mehreren Containern benutzt werden.
-
Woher bekommt man ein Image?
-
Pullen von der Docker Registry
-
build mit einem Dockerfile (auch hier wird meist ein grundlegendes Image von einer Registry geholt)
-
-
Welche Registries gibt es?
-
Große öffentlich wie zB
-
hub.docker.com
-
quay.io
-
ghcr.io (Docker Registry von github)
-
…
-
-
Man kann eine eigene Registry hosten
-
-
Dockerfile
-
vglbar mit einem Kochrezept oder einem shell-script
-
Die Befehle werden sequentiell abgearbeitet
-
FROM debian:bullseye-slim LABEL maintainer="NGINX Docker Maintainers <docker-maint@nginx.com>" ENV NGINX_VERSION 1.23.3 ENV NJS_VERSION 0.7.9 ENV PKG_RELEASE 1~bullseye RUN set -x \ # create nginx user/group first, to be consistent throughout docker variants && addgroup --system --gid 101 nginx \ && adduser --system --disabled-login --ingroup nginx --no-create-home --home /nonexistent --gecos "nginx user" --shell /bin/false --uid 101 nginx \ && apt-get update \ && apt-get install --no-install-recommends --no-install-suggests -y gnupg1 ca-certificates \ && \ NGINX_GPGKEY=573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62; \ found=''; \ for server in \ hkp://keyserver.ubuntu.com:80 \ pgp.mit.edu \ ; do \ echo "Fetching GPG key $NGINX_GPGKEY from $server"; \ apt-key adv --keyserver "$server" --keyserver-options timeout=10 --recv-keys "$NGINX_GPGKEY" && found=yes && break; \ done; \ test -z "$found" && echo >&2 "error: failed to fetch GPG key $NGINX_GPGKEY" && exit 1; \ apt-get remove --purge --auto-remove -y gnupg1 && rm -rf /var/lib/apt/lists/* \ && dpkgArch="$(dpkg --print-architecture)" \ && nginxPackages=" \ nginx=${NGINX_VERSION}-${PKG_RELEASE} \ nginx-module-xslt=${NGINX_VERSION}-${PKG_RELEASE} \ nginx-module-geoip=${NGINX_VERSION}-${PKG_RELEASE} \ nginx-module-image-filter=${NGINX_VERSION}-${PKG_RELEASE} \ nginx-module-njs=${NGINX_VERSION}+${NJS_VERSION}-${PKG_RELEASE} \ " \ && case "$dpkgArch" in \ amd64|arm64) \
-
Die Statements (einzelnen Befehle) werden oft mit einem && verbunden, dh sie werden nacheinander ausgeführt
-
Dies ist wichtig, da Docker für jedes einzelne Kommando eine eigene Schicht erstellt.
-
Mit && können mehrere Befehle zu einer Schicht (Layer) zusammengefasst werden.
28. 2023-04-14
28.5. Testen
28.5.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
29. 2023-04-17
29.2. Übung Dockerfile
-
führen Sie die Dockerfile-Übungen aus den Technology Notes
29.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)
30. 2023-04-24
= Überschrift
vn nn
1.0.0, {docdate}
:icons: font
:sectnums: // Nummerierung der Überschriften / section numbering
// :toc:
// :toclevels: 1
:experimental:
//https://gist.github.com/dcode/0cfbf2699a1fe9b46ff04c41721dda74?permalink_comment_id=3948218
[discrete]
== Themenschwerpunkte
33. 2023-05-15
-
Wiederholung Docker
-
Wiederholung docker-compose
33.1. Übung docker-compose
-
erstellen Sie ein File
docker-compose.yaml
welches folgende Dienste beinhaltet-
Service backend
-
beinhaltet eine php-Anwendung
-
greift auf eine mariadb zu
-
wird mittels einem Webserver deployed
-
-
Service webserver
-
ein nginx Server oder Apache httpd Webserver
-
-
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. (vgl. Demo für Asciidoctor-Features)
-
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
-
Quellen:
34. 2023-05-22
34.1. Commits
-
Es wird vereinbart für die Commit-Messages folgende Formate zu verwenden:
-
im Besonderen: @commitlint/config-conventional
-
und auch Angular conventions