Philipp Hartmann
2 years ago
1 changed files with 97 additions and 0 deletions
@ -0,0 +1,97 @@ |
|||
Lerntagebuch für Programmiermethoden und -werkzeuge von Philipp Hartmann |
|||
|
|||
# SU5 23.11.2022 |
|||
|
|||
## Lernziele (Was waren die wesentlichen Inhaltlichen Punkte der letzten Vorlesung - Stichpunktartig) |
|||
# Kooperation im Softwareentwicklungsprozess |
|||
- Größe von Software-Projekten |
|||
- Zusammenführen der Einzelleistungen |
|||
- Vorteile von CI Systemen |
|||
|
|||
# Softwareentwicklungsprozess |
|||
|
|||
# Bestandteile |
|||
- Code schreiben |
|||
- Abhängigkeitenverwaltung |
|||
- Code veröffentlichen |
|||
- Integration |
|||
- build-Prozess |
|||
-- compile (Programm erstellen) |
|||
-- test (das Programm testen) |
|||
- Bereitstellung |
|||
# Abhängigkeitenverwaltung |
|||
- nicht selbst im Build-Lauf erzeugt |
|||
- nicht im SCM eingecheckt |
|||
- zentrale Bereitstellung |
|||
- Zugriff auf einzelne Versionen |
|||
# Semantische Versionierung |
|||
- MAJOR ist nicht rückwärtskompatibel |
|||
- MINOR ist rückwärtskompatibel |
|||
- PATCH Fehlerbehebungen & rückwärtskompatibel |
|||
- LABEL spezifische Kennzeichnung |
|||
# Source Code Management System (SCM) |
|||
- Sicherung der eigenen Arbeit |
|||
- zentrale Verfügbarkeit |
|||
- Zusammenführung parallel geändeter Dateien (merge) |
|||
- parallele Entwicklung der featueres möglich |
|||
- Zugriff auf dedizierte Stände ( releases) |
|||
- Wechsel zwischen Entwicklungsständen (branches) |
|||
# build - Prozess |
|||
- Übersetzen |
|||
- Abhängigkeiten organisieren |
|||
- Tests ausführen (können auch automatisiert sein) |
|||
- Liefer-Artefakte erzeugen |
|||
- Deployment (Zentral bereitstellen) |
|||
# beliebte build-tools: |
|||
- make vorwiegend C/C++ keine Abhängigkeitsverwaltung |
|||
- maven / gradle vorwiegend Java |
|||
- npm vorwiegend Javascript / TypeScript |
|||
# Integration |
|||
- SCM überwachen |
|||
- build- Prozess starten |
|||
-- Abhängigkeiten auflösen |
|||
-- compilieren |
|||
-- automatisierte Tests ausführen |
|||
-- Lieferartefakt erstellen |
|||
- Ergebnisse berichten |
|||
# Rolle von automatisierten Tests |
|||
|
|||
# Problem des Continous Integration |
|||
- kein menschlicher Eingriff |
|||
- compilierbar != ausführbar |
|||
- CI soll immer lieferbaren Stand bereit halten |
|||
- Programm muss im CI Prozess ausgeführt werden |
|||
#Vorteile automatisierter Tests |
|||
- automatisierte Tests führen Programm aus |
|||
- dokumentieren gewünschtes Verhalten |
|||
- sind wiederholbar |
|||
- erkennen Laufzeitfehler welche teifgründiger sind(außer UnitTests) |
|||
- Ausführungszeit von Arbeitszeit entkoppeln |
|||
- automatisierte Tests sind erheblich schneller als "menschliche" Tests |
|||
# Grenzen automatisierte Tests |
|||
- finden nur Abweichungen von gewünschten/bekannten Verhalten (findet nur das wonach der Entwicker sucht) |
|||
- finden keine neuen fachlichen Fehler |
|||
# Vorgehensmodelle |
|||
|
|||
# gemeinsames remote repository |
|||
- alle Entwickler arbeiten ausschließlich gegen ein gemeinsames remote repository |
|||
- jeder Entwickler hat (Schreib-) Zugriff |
|||
- einfache Synchronisation |
|||
- (gepushte) Zwischenstände für alle direkt sichtbar |
|||
# privater fork |
|||
- es gibt ein zentrales remote repository (=master) |
|||
- jeder Entwickler hat ein seperates remote repository (= fork) |
|||
- jedes locale repository hat 2 remote repositories |
|||
-- origin --> master, nur lesend (dies nutzt man um syncrhon zu bleiben) |
|||
-- upstream --> privater fork, Schreibrechte (dort kann ich meine Änderungen pushen) |
|||
|
|||
|
|||
|
|||
## Erkenntnis (Was kann ich für das Gruppenprojekt anwenden -2-3 Sätze) |
|||
build tools nutzen und automatisierte Tests einfügen |
|||
|
|||
## Wiederholung (Einen Begriff/Ein Thema erklären -2-3 Sätze) |
|||
|
|||
|
|||
## Kritik (Kritik oder Lob für den Dozenten - Optimal 2-3 Sätze |
|||
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue