diff --git a/Lerntagebuch.md b/Lerntagebuch.md index a6610c2..a16bbad 100644 --- a/Lerntagebuch.md +++ b/Lerntagebuch.md @@ -137,3 +137,73 @@ Ein Rebase wird erst bevorzugt, wenn das arbeiten an einem unvollendeten Feature Merge wird verwendet, wenn der aktuelle Zweig ein Develop oder ein Master ist. Die Historie sollte mit der Zeitachse synchron bleiben und wenn der aktuelle Zweig zusammengeführt ist. +#Woche 5 +##Kooperation im Softwareentwicklungsprozess +## Lernziele/Takeaway + +#Größe von Software-Projekten +Je Größer ein Projekt ist desto Komplexer wird diese. +Demnach werden mehr Entwickler benötigt, jeder von dene Übernimmt eine Aufgabe und diese werden Anschließend zusammen geführt. + +#Zusammenführen von Einzelleistungen +Wie gewohnt kann es bei einer Gruppenarbeit zu persönlichen Konflikten kommen. Jeder Entwickler entwickelt ein Software unterschiedlich, diese kann dazu führen, dass bei der Zusammenführung mehr Aufwand eintritt. + +#Vorteile von CI Systemen +Die automatisierte und formale Prozzesse können den Aufwand, sowie das Konfliktpotential verringern. +Diese ist die Vorstufe von Continous Delivery. + +##Softwareentwicklungsprozess. +#Bestandteile +Bei den Bestandteilen vom Softwareentwicklungsprozessen gehört natürlich das schreiben eines Codes. Abhängigkeitsverwaltung, Code veröffintlichung Integration und Bereitstellung gehören ebenfalls zu den Bestandteilen. + +#Abhängigkeitsverwaltung +Diese wir nicht selbst während dem Build-Lauf erzeugt. Unteranderem wir diese nicht im SCM eingecheckt. Bereitstellung der Leistungen innerhalb der Organisation und das Zugreifen auf einzelne versionen ist wichtig. + +#Smantische Versionierung. +MAJOR: inkompatible Änderung +MINOR: zusätzliche Features, Programmteil bleibt abwärtskompatible +PATCH: Fehlerbehebung. +LABEL: spezifische Kennzeichnungen + +1. Ziffern und Punkte +2. MINOR und Patch werden unabhängig von einander inkrementiert +3. wenn MAJOR erhöhr wird, werden MINOR und PATCH auf 0 zurückgesetzt +4. Wenn MINOR erhöht wird, wird PATCH auf 0 gesetzt. +5. Version mit LABEL ist kleiner als selbe Version ohne Label + +##SCM +Sicherung der Arbeit von den Entwicklern ist zu tätigen und eine zentrale Verfügbarmachung ist relevant. Zusammenführen von Parallel geänderten Dateien, verschiedene Features sollten parallel entwickelbar sein. +Zugriff auf Releases sollten möglich sein. + +# Build-Prozess +Bei den Prozessen sollte möglichst alles Übersetzt werden. Automatische Test ausführen. Hierbei sind belibte Tools: Bei C und gnu wird C/C++ bevorzugt, da keine Anhängigkeitsverwaltung nötig. +für maven/gradle vorwiegend Java. +Für npm JavaScript oder TypeScript. + +##Integration: +SCM muss überwacht werden. Anschließend beginnt das Buidl-Prozess(Abhängigkeit auflösem > compilieren > automatisierte Tests ausführen > Lieferartefakt erstellen > Lieferartefakt ausliefern) und Ergebnisse berichten. + +##Problem des Continous Integration +Hier erfolgt keine menschlicher Eingriff. +Daher ist ein Programm was Compilierbar ist, nicht gleich ausführbar. +CI soll immer im Lieferbereiten Stand sein. +Programm muss im CI-Prozess ausgeführt werden. + +##VOrteile automatisierter Tests +Diese finden nur Abweichungen von gewünschten oder bekannten Verhalten. +Jedoch werden keine neuen fachlichen Fehler entdeckt. + +##Vorgehensmodelle +#Gemeinsames remote repository +-alle Entwickler arbeiten ausschließlich gegen ein -gemeinsamen remote repository. +-Jeder hat Schreibzugriff +-einfache Synchronisation +-Zwischenstände für alle direkt sichtbar + +#privater fork +-es gibt ein zentrales remote repository (=master) +-jeder entwickkler hat sein eigenes remote repository +-jedes locale repository hat 2 remote repositories. + > origin -> master, nur lesend + >upstream -> privater fork, Schreibrechte +