diff --git a/Lerntagebuch.md b/Lerntagebuch.md index 9798215..5d74866 100644 --- a/Lerntagebuch.md +++ b/Lerntagebuch.md @@ -728,6 +728,132 @@ vertraunswürdiger. Beim Test schreiben werden kleine Schritte "baby steps" gema dadurch weniger Fehler gemacht werden +## SU 09.Jan.2024 "Continous Integration" + +_Folie 8_ +Zusammenführung der Einzelleistungen +- mit kreativität ein Problem lösen, da es diese Lösung noch nicht gibt und erst "erfunden" werden muss +- technische Konflikte +- persönliche Konflikte --> jeder Mensch arbeitet anders +- Aufwand durch technische und persönliche Konflikte --> klären oder technik anschaffen = Aufwand und Zeitverlust + +_Folie 9_ +Vorteile von CI Systeme +- formale Prozesse verringern Konfliktpotential +- automatisierte Tests verringern aufwand --> verinfachen für den Entwickler das testen und ist nicht an einen Entwickler gebunden, da das unabhängig über Nacht etc. laufen kann. + +_Folie 10_ +Entwicklungsumgebung des Programmierers +- IDE + - Syntax hightlighting --> Besser lesbar + - Syntax vervollständigung --> angefangenes Wort wird erkannt und vorschläge gemacht + - automatisierte Refactorings + - Navigation --> führt mich automatisch zur z.B. Funkton, Variable. ... + - Compile-Parameter + - Code automatische Formatierung --> gibt Standard Formatierung an + - Fehler-Lokalisirung --> erkennt den Fehler und zeigt mir auch, wo der Fehler im Code ist. + +_Folie 12_ +SCM +- Sicherung der Arbeit einzelner Entwickler +- Zentrale Verfügbarkeit + - gut um Backups zu machen +- Zusammenführung parallel geänderter Dateien +- parallele Entwicklung an verschiedener Features möglich +- zugriff auf dedizirte Stände (release) +- wechsel zwichen Entwicklungsstände --> wenn verlaufen --> vorherigen Entwicklungsstand benutzen + +_Folie 13_ +Abhängigkeitenverwaltung +- nicht selbst im Build-Lauf erzeugt +- zentralle Bereitstellung (innerhalb der Organisation) +- Zugriff auf einzelne Versionen + +_Folie 14_ +build-Werkzeug +- Übersetzen +- Liefer-Artefakte erzeugen +- Abhängigkeiten organisieren +- automatische Tests ausfühern +- Deployment + +_Folie 15_ +Continous Integration Server +- SCM überwachen +- build-Prozess starten +- Ergebinisse berichten + +_Folie 16_ +Erweiterung für Continous Delivery +- Staging System --> application Tests werden hier ausgeführt; es soll so nah wie möglich an das realle Einsatzgebiet getestet werden +- Produktons Systen --> prouktive, aktive + +_Folie 19_ +Checkin Change +- veröffentlichen der Änderung +- eigener branch +- alle aktuell veröffentlichten Änderungen integriert +- vollständige Änderung --> wenn etwas beim übergeben vergessen wurde, z.B. eine Datei, die benötigt wird + - compiliert lokal + - automatisierte Tests sind "grün" + +_Folie 21_ +Build +- Änderungen mit aktuellen Stand integrieren (merge) +- f + +_Folie 22_ +Test +- nach erfolgreichen compile +- Testframework starten +- Ergebnisse sammen + +_Folie 23_ +Ergebnisauswertung +- Ermittelt Status von merge, compile und Test +- Erfolgsfall: Änderung als neuen aktuellen Stand übernehmen und veröffentlichen +- Ergebnisdarstellung als Website + +_Folie 24_ +Benachrichtigung +- zeitnach +- Fehlerfall: Committer wird benachrichtigt +- Erfolgsfall: alle Entwickler werden benachrichtigt --> Ermittler können jetzt den neuen und erfolgreichen Stand ziehen +- mögliche Wege der benachrichtigung + - Whatsapp + - Twitter + - Mail + - SMS + +_Folie 25_ +Problem des Continous Integration +- compilierbar != ausführbar +- CI soll immer lieferbaren Stand bereit halten +- Programm muss im CI Prozess ausgeführt werden + +_Folie 27_ +Vorteile automatisierter Tests +- automatisierte Tests führen Programm aus +- dokumentieren gewünschtes Verhalten +- sind wiederholbar +- erkennen Laufzeitfehler (außer UnitTests) +- Ausführzeiten von Arbeitszeiten entkoppelt + +_Folie 28_ +Grenzen automatisierter Tests +- finden nur Abweichungen von gewünschten/ bekannten Verhalten +- finden keine neuen fachlichen Fehler + + +### Erkentniss +Eine IDE ist ein mächtiges und hilfreiches tool für Entwichkler. IDEs sind speziel für eine oder mehrere Programmiersprachen gemacht. Die IDE unterstätzt den Entwichkler beim schreiben seines Codes mit Text highlighting, Fehlererkennung, Autovervollständigung, Navigation und Fehler-Lokalisierung. + +### Wiederholung +Der CI Prozess funktioniert grob, dass ein Entwicker eine Änderung veröffentlicht, diese wird gecheckt, ob diese vollständig ist. +Diese Änderung wird in den aktuellen Stand integriert und dann getestet. +Nachdem der Test ausgeführt wurde wird das Ergebniss veröffentlicht. Bei einem Erfolg, bekommen alle eine Benachrichtigung und sie können sich den neuen, Erfolgreichen Stand ziehen. Wenn der Test nicht Erfolgreich war, bekommt nur der Entwickter eine Nachricht und muss seinen Code überarbeiten. + +