diff --git a/Lerntagebuch.md b/Lerntagebuch.md index 445aae0..760b9a7 100644 --- a/Lerntagebuch.md +++ b/Lerntagebuch.md @@ -3,7 +3,10 @@ ## SU 01 (26.10.2022) ### Lernziel - Organisatorisches - Versionskontrollsysteme allgemein - git - Vorteile - wie lege ich ein Repository an - vim (ein paar alltägliche Befehle) - Klausur und Pruefungsinformationen -### Erkenntnis - Versionskontrolle werden wir im Projekt einsetzen, um zu jeder Zeit den Entwicklungsstand einzusehen und paralleles Arbeiten an Dateien zu ermöglichen. Sollten Probleme an der Software auftreten, können wir zu einem funktionierenden Stand wechseln und durch das Commit-Log die Ursache ausfindig machen. Außerdem kann ich als Developer mit den gelernten vim-Befehlen vor den anderen flexen. +### Erkenntnis - + +- **Versionskontrolle** werden wir im Projekt einsetzen, um zu jeder Zeit den Entwicklungsstand einzusehen und paralleles Arbeiten an Dateien zu ermöglichen. +- Sollten Probleme an der Software auftreten, können wir zu einem funktionierenden Stand wechseln und durch das Commit-Log die Ursache ausfindig machen. Außerdem kann ich als Developer mit den gelernten vim-Befehlen vor den anderen flexen. ### Kritik - `git status` zeigt mir einen groben Zustand meines Git-Repositorys an. Manchmal werden Dateien oder Verzeichnisse dort rot oder grün angezeigt. Die grünen Dateien verschwinden von der Ausgabe, wenn ich `git commit` ausführe. Rote Dateien werden mit `git add` grün. @@ -22,7 +25,9 @@ ## SU 02 (02.11.2022) ### Lernziel - Programmierparadigmen, verschiedene Formen und Typen von Programmiersprachen. -### Erkenntnis - Wie verschiedene Programmiersprachen eigentlich gut funktionieren. Sehr hilfsreich, weil jeder Programmiersprache ihre eigene Vorteile, Funktionen und Methoden fuer jeweiligen Anwendung haben. +### Erkenntnis - + +- Wie verschiedene Programmiersprachen eigentlich gut funktionieren. Sehr hilfsreich, weil jeder Programmiersprache ihre eigene Vorteile, Funktionen und Methoden fuer jeweiligen Anwendung haben. ### Wiederholung - @@ -43,7 +48,12 @@ ## SU 03 (09.11.2022) ### Lernziel - **Entwurfsmuster/Design Patterns** , aus der Architektur. **Geschichte der Programmierwerkzeugen - IDEs** -### Erkenntnis - **Vorteile**(bessere Kommunikation, eignen zur die Dokumentation) und **Nachteile**(mehrere Einstiegshuerde, schwer identifizierbar). Makro und Mikro Design Anwendungen sind wesentlich. **Erzeugungsmuster** dient uns der Erzeugung von Objekten, die wichtig fuer Softwareentwicklung sind. Singleton und Multiton Erzeugungsprozess. **Verhaltensmuster** hilft uns, um komplexe Verhalten der Software zu modullieren. Es _erhoeht_ die Flexibilitaet der Software. Geschichte der Programmierwerkzeugen - Die erste Maschinen (Bohrer). Dann haben wir ueber **IDEs** diskutiert. IDEs sind sehr nuetzlich und zeigt uns auch, falls es einen Fehler gibt. Die formatiert oder schlaegt automatisch Code. +### Erkenntnis - + +- **Vorteile**(bessere Kommunikation, eignen zur die Dokumentation) und **Nachteile**(mehrere Einstiegshuerde, schwer identifizierbar). Makro und Mikro Design Anwendungen sind wesentlich. +- **Erzeugungsmuster** dient uns der Erzeugung von Objekten, die wichtig fuer Softwareentwicklung sind. Singleton und Multiton Erzeugungsprozess. +- **Verhaltensmuster** hilft uns, um komplexe Verhalten der Software zu modullieren. Es _erhoeht_ die Flexibilitaet der Software. +- **Geschichte der Programmierwerkzeugen** - Die erste Maschinen (Bohrer). Dann haben wir ueber **IDEs** diskutiert. IDEs sind sehr nuetzlich und zeigt uns auch, falls es einen Fehler gibt. Die formatiert oder schlaegt automatisch Code. ### Wiederholung - @@ -129,7 +139,12 @@ after step over ## SU 04 (16.11.2022) ### Lernziel - **Source Code Management** -### Erkenntnis - SCM sind fuer minimal Festplattennutzung optimisiert. Wir haben die Vorteilen und Unterschiede zwischen **Centralised** und **Distributed** SCM gesehen. Mit _Centralised_ SCM kann man einfacher Backups machen. Eine wichtige Nachteil mit _Centralised_ SCM ist, dass wir damit offline nicht arbeiten koennen. Vorteile fuer _Distributed_ SCM sind: keine Zentralserver noetig und kann auch zuhause (ohne Internetverbindung) weiterarbeiten. Nachteile sind, dass die Lokalrepositories nicht immer miteinander synchonisiert sind. Wann sollte man Merge verwenden (wenn es sich um ein unfertiges Feature handelt) und wann sollte man Rebase verwenden (wenn der aktuelle Branch Develop oder Master ist). Wir haben das auch gesehen und diskutiert, warum `git` wirklich wichtig ist. +### Erkenntnis - + +- SCM sind fuer minimal Festplattennutzung optimisiert. Wir haben die Vorteilen und Unterschiede zwischen **Centralised** und **Distributed** SCM gesehen. +- Mit _Centralised_ SCM kann man einfacher Backups machen. Eine wichtige Nachteil mit _Centralised_ SCM ist, dass wir damit offline nicht arbeiten koennen. +- Vorteile fuer _Distributed_ SCM sind: keine Zentralserver noetig und kann auch zuhause (ohne Internetverbindung) weiterarbeiten. Nachteile sind, dass die Lokalrepositories nicht immer miteinander synchonisiert sind. +- Wann sollte man Merge verwenden (wenn es sich um ein unfertiges Feature handelt) und wann sollte man Rebase verwenden (wenn der aktuelle Branch Develop oder Master ist). Wir haben das auch gesehen und diskutiert, warum `git` wirklich wichtig ist. ### Wiederholung - @@ -159,7 +174,12 @@ after step over ## SU 05 (23.11.2022) ### Lernziel - **Kooperation im Softwareentwicklungsprozess** - **Integrationprozessen** - **Vorgehensmodelle der SCM** -### Erkenntnis - Wir sehen in der Vorlesung, warum bei der Softwareentwicklung mehrere Personen am Werk sein müssen und wie der Softwareentwicklungsprozess aufgebaut ist. Semantische Versionierung ist wichtig, um den Status und die Version Ihrer aktuellen Software zu kennen. Beispiel: **(1.0.0-beta1 / MAJOR.MINOR.PATCH-LABEL)**. Wenn MAJOR erhöht wird, werden MINOR und PATCH auf 0 zurückgesetzt. Ausschließlich können alle Entwickler mit einem gemeinsamen Remote-Repository arbeiten. Bei einer **privaten fork** gibt es ein separates Remote Repository für jeden Entwickler und ein zentrales Master-Repository. Jedes lokale Repository hat zwei entfernte Repositories: **Origin und Upstream** +### Erkenntnis - + +- Wir sehen in der Vorlesung, warum bei der Softwareentwicklung mehrere Personen am Werk sein müssen und wie der Softwareentwicklungsprozess aufgebaut ist. +- Semantische Versionierung ist wichtig, um den Status und die Version Ihrer aktuellen Software zu kennen. Beispiel: **(1.0.0-beta1 / MAJOR.MINOR.PATCH-LABEL)**. +- Wenn MAJOR erhöht wird, werden MINOR und PATCH auf 0 zurückgesetzt. Ausschließlich können alle Entwickler mit einem gemeinsamen Remote-Repository arbeiten. +- Bei einer **privaten fork** gibt es ein separates Remote Repository für jeden Entwickler und ein zentrales Master-Repository. Jedes lokale Repository hat zwei entfernte Repositories: **Origin und Upstream** ### Wiederholung - Warum SCM ideal für die Softwareentwicklung ist. Was sind remote und lokale Repositories und wie können sie auf unterschiedliche Weise vorteilhaft genutzt werden. @@ -243,3 +263,27 @@ after step over ### Kritik - ### Mitteilung an die Dozierenden - + + ## Uebung 06 (02.12.2022) + + **Kooperation Projekt Management** + +- **Was ist Projektmanagement?** _Projektmanagement ist die Prozess zur Formulierung und Erreichung von Zielen._ +- **Welche Schritte gehören zum Projektmanagement?** _Projektmanagement umfasst eine Vielzahl von Schritten. Nämlich Planung, Organisation, Durchführung, Kontrolle, Information sammeln, Die Idee zu erkennen und Aufgaben verteilen._ +- **Was ist das Kennzeichen des Wasserfall-Modells? ** _Das Wasserfall-Modell ist linear. Alle Prozessschritte werden hier einmal durchlaufen._ +- **Was ist das Kennzeichen agiler Management-Modelle?** _Das Agile-Modell fixiert Aufwand und Zeit, statt Umfang._ +- **Warum ist es vorteilhaft, Projektdokumentation im selben SCM-Repository wie den Code zu speichern?** _Es ist vorteilhaft, weil die anderen Teammitglieder dann die Änderungen, die man im Projekt vorgenommen hat, durch die Historien sehen können und ähnlich als Team weiter zusammenarbeiten können._ + +- **Warum ist es vorteilhaft, Projektdokumentation im selben SCM-Repository wie den Code zu speichern?** + + **1. Meilensteine:** Ein Meilenstein ist ein Ereignis mit großer Bedeutung innerhalb eines Projekts. Dabei handelt es sich meistens um den Anfang oder das Ende einer Projektphase oder einer Etappe innerhalb eines Vorhabens. Dabei steht nicht nur der Termin beziehungsweise die Deadline im Vordergrund, sondern die Erreichung eines Ziels. _Meilensteine werden im Projektmanagement vorwiegend als **Wasserfallmodell  als auch V-Modell** verwendet. Sie erscheinen als Markierungen in Ihrem Gesamt-Projektplan. In der Regel kennzeichnen sie den Übergang von einer Projektphase in die nächste._ + + **2. Minimum Variable Increment:** - Eine Variable zu inkrementieren bedeutet, sie bei jeder Änderung um denselben Betrag zu erhöhen. Zum Beispiel kann Ihr Programmierer eine Torvariable jedes Mal, wenn ein Fußballtor erzielt wird, um +1 inkrementieren. _**Das minimale Variableninkrement** ist der kleinstmögliche Wert, der inkrementiert werden kann. Es ist die erste Version, die man von einer Software liefern kann. Sie hat die minimalen Funktionen, mit denen ein Kunde anfangen kann zu arbeiten._ + + **3. Arc42-Template:** _Arc42 ist eine Vorlage für die Dokumentation der Softwarearchitektur.Sie beantwortet die folgenden zwei Fragen auf pragmatische Weise, kann aber auf Ihre spezifischen Bedürfnisse zugeschnitten werden: Was sollten wir über die Systemarchitektur unserer Software dokumentieren/kommunizieren? Wie sollten wir es dokumentieren/kommunizieren? Arc42 ist im Vergleich zu anderen Vorlagen eine ziemlich minimalistische Dokumentationsvorlage. Egal wie groß Ihr Projekt ist, es hält die Dokumentation relativ schlank und wartbar. **Arc42 ist in viele Formaten verfügbar: docx, asciidoc, markdown, markdownMP, githubMarkdownMP, latex, rst, textile, html, Confluence.** Für die Verwaltung in SCMs sind asciidoc, markdown (verschiedene dialekte) und html nutzbar._ + + + + + +