From b8837fc5cb41d6bc72266ba1d48d5c59a65a64a5 Mon Sep 17 00:00:00 2001 From: fdai7720 Date: Sun, 3 Dec 2023 12:00:42 +0000 Subject: [PATCH] Update Lerntagebuch.md --- Lerntagebuch.md | 126 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) diff --git a/Lerntagebuch.md b/Lerntagebuch.md index 46155bf..bf9308e 100644 --- a/Lerntagebuch.md +++ b/Lerntagebuch.md @@ -371,7 +371,133 @@ Zentralle SCM bieten einen Zentralen Speicherort, wo jeder Entwickler zugrif dar Lokale SCM hat den Vorteil, das jeder seine eigenen Entwicklungsumgebung unabhängig von andern Enticklen erstellen kann, da jeder sein eigenes lokales Verzeichnis hat. Jeder kann sein eigenes Repository aktualisieren und sich die Daten von den anderen Ziehen, was diese Hochgeladen haben. Man kann seine Programme Offline bearbeiten aber hat auch vieder den Nachteil, dass andere Zeitgleilch einen Code ändern können, was zu Problemen führen kann. +## SU 03 28.11.2023 "Kooperation SCM" +_Folie 4_ +Lektüre +- Continuous Integration +- Continuous Delivery + +Vermerk auf Clean Code + +_Folie 7_ +Warum mit anderen Softwareentwicklern zusammenarbeiten? +- Große und komplexe Programme können nicht mehr nur von einer Person geschrieben werden +- Im Team kommt mehr Erfahrung, Spezialisierung und Skills +- Alle einzelnen Entwicklungen müssen zusammengeführt werden + +_Folie 8_ +Zusammenführen von Einzelleistungen +- Aufwand +- Unterschiedliche Personen haben unteschiedlich Herangehenweisen +- Unterschiedliche Formatierungen führen zu Konflikten +- persönliche Konflikte unter den Entwicklern + +_Folie 9_ +- automatisierter Prozess prüft, ob der Code richtig formatiert ist, was den Aufwand veringert +- formale Prozesse verringern Konfliktpotential +- Vorstufe zu _Continous Delivery_ + +**_Softwareentwicklungsprozess_** +_Folie 11_ +**Bestandteile** +- Code schreiben/entwickeln +- Bibliotheken von anderen benutzen, um Zeit und Aufwand zu sparen --> Abhänigkeit von andern Entwicklern, da diese die Bibliotheken oder Frameworks ändern können --> könnte zu Problemen mit geschriebenen Code führen +- Integration +- build-Prozess + - compile --> um zu überprüfen, ob alles funtioniert + - test --> testes auf Funktonalität für Codes, die wir entwickelt haben +- Bereitstellung für andere Entwickler und User + +_Folie 12_ +**Abhängigkeitenverwaltungene** +- nicht selbst im Build-Lauf erzeugt +- nicht im SCM eingescheckt +- zentralle Bereitstellung (innerhalb der Organisation) +- Zugriff auf einzelne Versionen + +_Folie 13_ +1.0.0-beta1 +| | | | +Major Label + | | +Minor + | + Patch +- MAJOR +- MINOR +- PATCH +- LABEL + +_Folie 14_ +https://semver.org/ +1. ausschlieslich Ziffern und Punkte +2. MINOR und MATCH werden unabhängig von einander +3. fg +4. f +5. f +6. f + +_Folie 14_ +- Sicherung der arbeit einzelner Entwickler +- zentrale verfüglbarkeit +- Zusammenführung parallel geänderter dateien + +_Folie 16_ +- Übersetzen (compilieren) +- Abhängigkeit organisiern +- automatische Test ausführen +- liefer-Artefakte erzeugen +- Deployment (verfügbar machen z.B. hochladen, speicher syncronisieren) + +_Folie 17_ +beliebte build-Tools: +- **make** (c-, gnu-) vorwiegend **C/C++**, keine Abhänigkeitsverwaltung +- **maven/ gradle** vorwiegend **Java** +- **npm** vorwiegend **JavaScript/TypeScript** + +_Folie 18_ +- SCM überwachen +- build-Prozess starten + - Abhängigkeiten auflösen + - compiliren + - automatisierte Tests ausführen + - Lieferartefakte erstellen + - Lieferartefakte ausfühen +- Ergebnisse + +_Folie 19_ +- kein Menschlicher Eingriff +- compilierbar bedeutet nicht gleich ausführbar!!! + +_Folie 21_ +- automatisierte Tests fühen Programme aus +- dokumentieren gewünschtes Verhalten +- sind wiederholbarer +- erkennen Laufzeitfehler (außer UnitTests) +- Ausführungszeit von Arbeitszeiten entkoppelt + +_Folie 22_ +- finden nur Abweichungen von gewünschten/ bekanntem Verhalten +- finden keine neuen fachlichen Fehler + +_Folie 24_ +alle Entwickler arbeiten ausschlieslich gegen ein gemeinsammes + +_Folie 25_ +**privater fork** +- es gibt ein zentrales remote repository (=master) +- jeder hat ein seperates remote repository (=fork) +- jedes locale repository hat 2 remote + +### Erkentniss +Im Team gut zusammenarbeiten und auf Konflikte unterinader achten, das diese nicht zu einem großen Problem wir. Mehrere Entwickler --> mehr Erfahrung, Skills und Spezialisierungen +Build-Tools und automatisierte Tests verwenden/ anwenden. + +### Wiederholung +Eine gute Zusammenarbeit im Team ist wichtig, da es notwendig ist mit mehreren an einem Projekt zu arbeiten und viel Vorteile, wie Erfahrungen und Skills dazukommen. +Source Code Management System, ist ein System, indem jeder Entwickler auf einen Zentralen Server/Speicher zugreifen kann und Code beziehen kann. Alle Programme/Teilaufgaben der Entwickler werden da gesammelt und zusammengeführt. Desweiteren können so Entwickler größtenteils unabhängig voneineader Teilprogramme schreiben. +Automartisierte Tests, entlasen die Entwickler, da diese automatisiert sind und zu jeder beliebigen Zeit ausgeführt werden können. Tests können beliebig häufig ausgeführt werden und dokumentieren gewünschte Verhalten. Der Nachteil dabei ist, das nur bekannte Fehler erkannt werden können.