@ -75,3 +75,41 @@ Distributed SCM sagt aus, dass jeder Entwickler seinen eigenen Änderungsbaum ha
Der Vorteil ist, dass man keinen zentralen Server benötigt und im Vergleich zu dem centralized SCM mehrere Nutzer gleichzeitig Zugriff zu haben.
Der Vorteil ist, dass man keinen zentralen Server benötigt und im Vergleich zu dem centralized SCM mehrere Nutzer gleichzeitig Zugriff zu haben.
Distributed SCM funktioniert auch ohne dauerhaften Zugriff auf das Internet.
Distributed SCM funktioniert auch ohne dauerhaften Zugriff auf das Internet.
Außerdem hat man die Möglichkeit Tests zu machen ohne, dass andere Entwickler direkt die Einträge sehen, welche man bei dem centralized SCM sehen würde. Distributed SCM hat jedoch keinen Schutz gegen gleichzeitige Bearbeitung eines Abschnittes.
Außerdem hat man die Möglichkeit Tests zu machen ohne, dass andere Entwickler direkt die Einträge sehen, welche man bei dem centralized SCM sehen würde. Distributed SCM hat jedoch keinen Schutz gegen gleichzeitige Bearbeitung eines Abschnittes.
## SU 02 (28.11.2023)
### Lernziel
* Projekte werden immer größer und komplexer
* Vorteile von Continuous Integration (CI) Systemen
* mit CI Systemen wird der Code von mehreren Entwicklern automatisch zusammen geführt
* Verständnis für die Zusammenarbeit im Softwareentwicklungsprozess
* 6 Bestandteile einen Softwareentwicklungsprozess
* Code schreiben
* Abhängigkeitsverwaltung
* Code veröffentlichen
* Integration
* Build-Prozess
* Bereitstellung
* Bedeutung von CI-Systemen
* Abhängigkeitenverwaltung von Bibliotheken im CI Prozess
* Automatisierte Tests werden vom CI-System (Continous Integration) durchgeführt
* kein menschlicher Eingriff
* hält lieferbaren Stand bereit
* dokumentiert Verhalten
* erkennt Laufzeitfehler
* findet nur Abweichungen von gewünschten Verhalten, keine neuen Fehler
* Grenzen und Probleme von Continuous Integration Systemen
* Gemeinsames remote repository
* alle Entwicklern schreiben in ein repository
* jeder hat Schrieb-/Lesezugriff
* einfache Synchronisation
* Einfacher fork
* zentrales repository
* jeder Entwickler remote repository (fork)
* Lokale Repositories effektiv zu verwalten
### Erkenntnis
Eine "remote repository" werden wir im Projekt einsetzen, damit jeder Entwickler Zugriff auf die Software hat. Das "remote repository" ermöglicht eine einfache Synchronisation zwischen den Entwicklern. Zudem sind alle Zwischenstände sofort sichtbar.
Für das Gruppenprojekt habe ich auch den Continuous Integration Prozess kennengelernt. Continous Integration negiert mehr oder weniger den menschlichen Aufwand, indem es automatisierte Tests durchführt. Ebenfalls führt es die Ergebnisse mehrere Entwickler zusammen, überwacht SCM, führt die Änderungen zusammen und startet das Programm.
### Wiederholung
Bei der "Continuous Integration" gibt es keinen menschlichen Eingriff. Zudem ist hierbei zu beachten, dass Compilierbarkeit nicht gleich Ausführbarkeit heißt. Das Programm muss immer im Continuous Integration Prozess aufgeführt werden. Die vom CI-System durchgeführten Test dienen dazu das Verhalten des Programms zu dokumentieren und Laufzeitfehler zu erkennen. Es hält außerdem immer einen auslieferbaren Stand der Software bereit und erkennt allerdings keine neuen Fehler, sondern nur Abweichungen zum gewünschten Verhalten.