You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
3.6 KiB

  1. Lerntagebuch für Programmiermethoden und -werkzeuge von Philipp Hartmann
  2. # SU5 23.11.2022
  3. ## Lernziele (Was waren die wesentlichen Inhaltlichen Punkte der letzten Vorlesung - Stichpunktartig)
  4. # Buchempfehlung
  5. # Kooperation im Softwareentwicklungsprozess
  6. - Größe von Software-Projekten
  7. - Zusammenführen der Einzelleistungen
  8. - Vorteile von CI Systemen
  9. # Softwareentwicklungsprozess
  10. # Bestandteile
  11. - Code schreiben
  12. - Abhängigkeitenverwaltung
  13. - Code veröffentlichen
  14. - Integration
  15. - build-Prozess
  16. -- compile (Programm erstellen)
  17. -- test (das Programm testen)
  18. - Bereitstellung
  19. # Abhängigkeitenverwaltung
  20. - nicht selbst im Build-Lauf erzeugt
  21. - nicht im SCM eingecheckt
  22. - zentrale Bereitstellung
  23. - Zugriff auf einzelne Versionen
  24. # Semantische Versionierung
  25. - MAJOR ist nicht rückwärtskompatibel
  26. - MINOR ist rückwärtskompatibel
  27. - PATCH Fehlerbehebungen & rückwärtskompatibel
  28. - LABEL spezifische Kennzeichnung
  29. # Source Code Management System (SCM)
  30. - Sicherung der eigenen Arbeit
  31. - zentrale Verfügbarkeit
  32. - Zusammenführung parallel geändeter Dateien (merge)
  33. - parallele Entwicklung der featueres möglich
  34. - Zugriff auf dedizierte Stände ( releases)
  35. - Wechsel zwischen Entwicklungsständen (branches)
  36. # build - Prozess
  37. - Übersetzen
  38. - Abhängigkeiten organisieren
  39. - Tests ausführen (können auch automatisiert sein)
  40. - Liefer-Artefakte erzeugen
  41. - Deployment (Zentral bereitstellen)
  42. # Integration
  43. - SCM überwachen
  44. - build- Prozess starten
  45. -- Abhängigkeiten auflösen
  46. -- compilieren
  47. -- automatisierte Tests ausführen
  48. -- Lieferartefakt erstellen
  49. - Ergebnisse berichten
  50. # Rolle von automatisierten Tests
  51. # Problem des Continous Integration
  52. - kein menschlicher Eingriff
  53. - compilierbar != ausführbar
  54. - CI soll immer lieferbaren Stand bereit halten
  55. - Programm muss im CI Prozess ausgeführt werden
  56. #Vorteile automatisierter Tests
  57. - automatisierte Tests führen Programm aus
  58. - dokumentieren gewünschtes Verhalten
  59. - sind wiederholbar
  60. - erkennen Laufzeitfehler welche teifgründiger sind(außer UnitTests)
  61. - Ausführungszeit von Arbeitszeit entkoppeln
  62. - automatisierte Tests sind erheblich schneller als "menschliche" Tests
  63. # Grenzen automatisierte Tests
  64. - finden nur Abweichungen von gewünschten/bekannten Verhalten (findet nur das wonach der Entwicker sucht)
  65. - finden keine neuen fachlichen Fehler
  66. # Vorgehensmodelle
  67. # gemeinsames remote repository
  68. - alle Entwickler arbeiten ausschließlich gegen ein gemeinsames remote repository
  69. - jeder Entwickler hat (Schreib-) Zugriff
  70. - einfache Synchronisation
  71. - (gepushte) Zwischenstände für alle direkt sichtbar
  72. # privater fork
  73. - es gibt ein zentrales remote repository (=master)
  74. - jeder Entwickler hat ein seperates remote repository (= fork)
  75. - jedes locale repository hat 2 remote repositories
  76. -- origin --> master, nur lesend (dies nutzt man um syncrhon zu bleiben)
  77. -- upstream --> privater fork, Schreibrechte (dort kann ich meine Änderungen pushen)
  78. ## Erkenntnis (Was kann ich für das Gruppenprojekt anwenden -2-3 Sätze)
  79. Jetzt weiß ich, wie man ein Projekt versioniert.
  80. Auf diese Weise kann ich dem Gruppenprojekt eine Version zuweisen und weiß, welche Version ich gerade habe und ob es die neueste ist.
  81. ## Wiederholung (Einen Begriff/Ein Thema erklären -2-3 Sätze)
  82. Automatisierte Tests sind Tests, die im Voraus für das Projekt von den Entwicklern erstellt werden.
  83. Diese Tests laufen Automatisch und schauen auf die Fehler an die der Entwickler selbst gedacht hat.
  84. Dies hat Allerdings den Nachteil, dass sie nur die Fehler finden an die der Entwickler gedacht hat und finden keine neuen fachlichen Fehler.
  85. ## Kritik (Kritik oder Lob für den Dozenten - Optimal 2-3 Sätze
  86. - Nichts