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.
 

11 KiB

Mein Lerntagebuch für Programmiermethoden und -werkzeuge

Julia Kunze

SU 06 (30-11-2022)

Lernziele

  • Grundlagen und Begriffe des Projektmanagements
  • Rollen im Projektmanagement
  • Modelle des Projektmanagements
  • Aufwandsschätzung und Beispiele

Erkenntnisse

Bei einem Projekt geht es um die Zusammenarbeit von Menschen, in der jeder seine Aufgabe hat. Es gibt einen Auftraggeber, der die Prioritäten, Rahmenbedingungen und Inhalt vorgibt, desweiteren gibt es Projektmitarbeiter, die Teilaufgaben umsetzen und den Projektleiter, der das Projekt koordiniert.

  • Projekte müssen geplant und organisiert sein.
  • Nein sagen ist legitim.
  • Dokumentation der einzelnen Fortschritte des Projektes ist sehr hilfreich für eine bessere Übersicht der bisher umgesetzten Aufgaben und um den weiteren Aufwand des Projektes einzuschätzen

Wiederholung

Bezüglich des Projektmanagements gibt es verschiedene Modelle:

  • Wasserfall Modell: lineare Abarbeitung der Prozessschritte, die einmal durchlaufen werden
  • V-Modell als Erweiterung des Wasserfallmodells, es gibt parallel zu den Entwicklungsschritten Testebenen
  • Agile Modell: Fokus liegt auf funktionierender Software, weniger auf der Dokumentation und des Festhalten an einem Plan. Hierbei kann man flexibel auf Veränderungen und die Kunden eingehen.

Dabei gibt es zusätzlich zu den Modellen verschiedene Techniken der Organisation des Projektes:

  • Kanban: Mithilfe einer Workflow-Darstellung werden die Teilaufgaben definiert und vergeben
  • Burn-Down-Chart: Fokus liegt auf Aufwands- und Zeiteinschätzung bereits bekannter, fixer Arbeitspakete, Projektfortschritt über Zeit einsichtbar
  • Scrum: Absprache und Austausch durch regelmäßige Meetings und tracking der story points

Kritik

SU 05 (23-11-2022)

Lernziele

  • Softwareentwicklung im Team: Prozess und Organisation
  • automatisierte Tests
  • Vorgehensmodelle

Erkenntnisse

Eine Kooperation im Softwareprozess kann von Vorteil sein, wenn die Komplexität und der Aufwand des Projektes steigt. Dabei können jedoch, da jeder eigenständig an seinen Ideen arbeitet, Codekonflikte entstehen. Daher ist ein Source Code Management System (SCM) von Vorteil, da zwischen Entwicklungsständen gewechselt werden kann, parallele Arbeit möglich ist und Codekonflikte automatisiert oder per Hand behoben werden können.

Wiederholung

Ein Softwareentwicklungsprozess ist abgebaut aus den Bestandteilen: Code schreiben, Abhängigkeitsverwaltung, Code veröffentlichen, Integration, build-Prozess mit Kompilieren und Testen und die Bereitstellung. Modelle der Kooperation liegen einerseits dem "gemeinsamen remote repository" zugrunde, dabei arbeiten alle Entwickler gegen ein remote repository, wo jeder Schreibzugriff hat und gepushte Zwischenstände leicht sichtbar sind. Anderseits beschreibt das zweite Modell "privater fork" das es ein zentrales remote repository (master) gibt, und jeder Entwickler hat sein separates (fork), dabei unterscheiden sich die Zugriffsrechte: bei master nur lesend und beim fork schreibend.

Kritik

SU 04 (16-11-2022)

Lernziele

  • Was ist Git?
  • Vorteile von Git
  • Kennenlernen von Branching, Merging

Erkenntnisse

Git ist sehr vorteilhaft für Gruppenprojekte und erleichtert die Zusammenarbeit für Entwickler. Als Versionsverwaltungssystem vereinfacht Git das gesamte Management von einem Projekt, indem Entwickler dezentral mit der Kopie des Hauptrepositorys bzw. dem eigenen Branch entwickeln können. Der Projektverantwortliche kann über "merge" oder "cherry-pick" (Nutzen einzelner Commits) Commits in den Hauptzweig übernehmen. Dabei werden Commits, also Änderungen, die an dem Projekt durchgeführt werden, kommentiert, was die Zuordnung und die Übersicht erleicht, vor allem bei Fehlern, wo auf alte Commits zurücknavigiert werden kann, um Fehler zu beheben. Daher sollten Commits kleinschrittig gemacht werden, um Konflikte durch Git oder manuell einfacher zu lösen.

Wiederholung

Was ist Git? Git ist eine Software für die Versionsverwaltung von Projekten. Versionsverwaltunssystem bedeutet, das man jederzeit auf alte Versionen des Projektes zugreifen und Commits einfach zurücksetzen und zu einem früheren Stand des Projektes navigieren kann. Jedes Projekt hat einen Hauptentwicklungszweig, den sog. master Branch, dabei können weitere Nebenzweige erstellt werden, um parallel zum Hauptzweig zu entwickeln, ohne den Hauptentwicklungszweig zu beeinflussen. Dabei können die Zweige wieder zusammengeführt werden, das nennt sich "mergen".

Nützliche Git Befehle

  • Lokales Repository anlegen: git init
  • Status des Repositorys: git status
  • Datei zur Stage hinzufügen: git add "Dateiname" oder git add .
  • Änderungen commiten: git commit -m "Nachricht"
  • Historie der Commits anzeigen: git log
  • Historie der Commits in allen Branch anzeigen (mit Graph): git log --oneline --all --graph
  • Nicht committete Veränderungen anzeigen: git diff
  • Auf einen früheren Commit zurücksetzen: git reset --hard "hash"
  • Neunen Branch erstellen: git branch name
  • Branch wechseln: git switch name
  • Alle Branches anzeigen lassen: git branch
  • In aktuellen Branch mergen: git merge "name"
  • Den Merge abbrechen: git merge --abort
  • Markierung setzen: git tag "name"
  • Ins Remote Repository pushen: git push

Kritik

SU 03 (09-11-2022)

Lernziele

  • Entwurfsmuster
  • IDE

Erkenntnisse

Es ist sehr sinnvoll, Quellcode mithilfe einer integrierte Entwicklungsumgebung (IDE) zu schreiben, denn IDEs haben viele nützliche Vorteile, die das Programmieren vereinfachen. Sie verfügen über einen Editor, mit dessen Hilfe man den Programmcode schreiben kann. Überdies ist ein Compiler integriert, der den Code in Maschinensprache übersetzt und ihn zu einem ausführbarem Programm zusammensetzt und haben zusätzlich auch Debugger, der bei der Fehlersuche hilft. Ein weiterer Vorteil, um die Arbeit zu erleichtern, ist die Syntax-Highlighting, das die Elemente farblich hervorhebt.

Wiederholung

Was sind Entwurfsmuster? Entwurfsmuster sind Lösungsvorlagen für wiederkehrende Entwurfsprobleme in der Softwarearchitektur und -entwicklung. Es beschreibt eine Lösung für eine bestimmte Klasse von Entwurfsproblemen, die in einem bestimmten Zusammenhang wiederverwendet werden kann. Es gibt unterschiedliche Arten: Erzeugungsmuster, Strukturmuster, Verhaltensmuster, Muster für objektrelationale Abbildung und Nachrichtenübermittlungsmuster. Dabei sind die Anforderungen an jedes Muster gleich, es soll:

  • ein oder mehrere Probleme lösen
  • ein erprobtes Konzept basierend auf realen Designs bieten
  • den Benutzer in den Entwurfsprozess einbinden
  • tiefergehende Strukturen und Mechanismen eines Systems umfassen
  • Referenzen zu anderen Mustern beinhalten

Kritik

SU 02 (03-11-2022)

Lernziele

Inhalte: unterschiedliche Programmierparadigmen

  1. Imperative Programmierung: ein Programm bestehend aus einer Folge von Anweisungen, die sequenziell von der Maschine ausgeführt werden
  2. Prozedurale Programmierung: Erweiterung der Imperativen Programmierung mit dem Unterschied, Algorithmen werden in übersichtliche Teile (Unterprogramm/Routine/Prozedur/Funktion) zerlegt
  3. Declarative Programmierung: grundlegend ist die Beschreibung eines Problems/Funktion eines Programms, nicht die Umsetzung
  4. Funktionale Programmierung: Erweiterung der declarativen Programmierung, Deklarierung von Funktionen und Verknüpfung von Daten, Computerprogamme = Funktionen, die zu einer Eingabe eine Ausgabe liefern
  5. Objektorientierte Programmierung: Struktur einer Software ist an realtitätsnahe Anwendung angelehnt, unterstützt Klassen, Objekte und Vererbung
  6. typisierte Programmiersprachen: für Variablen/Parameter/Rückgabewerte ist der Datentyp implizit/explizit definiert, Vervollständigungsvorschläge durch IDE
  7. typenlose Programmiersprachen: Datentyp für Variablen/Parameter/Rückgabewerte ist nicht deklariert
  8. Prinzipien der Programmierung: STUPID vs. SOLID

Erkenntnisse

Programmieren liegt bestimmten Prinzipien zugrunde, dabei sollte die Software so komplex wie nötig, aber so einfach wie möglich sein. Das bedeutet, das jede Klasse nur eine einizige Verantwortung zugeordnet werden soll, um Fehler zu vermeiden. Ein Code sollte zudem offen für Erweiterungen (z.B. Vererbungen), aber geschlossen für Änderungen sein. Zudem sollten große Schnittstellen (Interfaces) vermieden werden und diese in kleinere aufgeteilt, um die Anforderungen besser zu erfüllen. Das Solid Prinzip an sich ist somit ein Prinzip, um einen sauberen, guten Code zu programmieren und das im Gruppenprojekt evtl. von Vorteil sein kann.

Wiederholung

Programmierparadigmen beschreiben grundlegend den Stil, in dem ein Programm entworfen wird. Es gibt verschiedene, unterschiedliche Programmierparadigmen, die sich darin unterscheiden, dass sie unterschiedlichen Prinzipien und Herangehensweisen zugrundeliegen. Ein Beispiel ist die Imperative Programmierung, hierbei besteht das Programm aus einer bestimmten Reihenfolge von Anweisungen, die Schritt für Schritt von der Maschine ausgeführt wird. Es ist analog wie ein Kochrezept zu verstehen und sehr hardwarenahe.

Kritik

Für mich persönlich wäre es angenehmer gewesen, da ich noch sehr wenig Programmiererfahrung habe und das ganze Thema für mich sehr komplex war, die Programmierparadigmen anhand von konkreten bildlichen Beispielen erklärt zu bekommen. Beispielsweise direkt an einem Code in dem jeweiligen Programm, sodass man diese gegenüberstellen und verlgeichen kann.

SU 01 (26-10-2022)

Lernziele

  • Organisatiorisches
  • Eigenschaften eines Softwareentwicklers - sowohl Künstler als auch Handwerker
  • Abgrenzung des Laien vom Profi mithilfe Fachwissen, Werkzeuge und Prinzipien
  • Folgen von Unprofessionalität
  • Anlegen eines Vorlesung-Repository
  • Kennenlernen von GOGS/GitLab, Git Befehle und markdown

Erkenntnisse

Ich habe gelernt, wie ich auf GOGS ein Repository anlege, als auch wie man dort einen Eintrag hochladen kann. Über das Terminal kann man mithilfe von Git Befehlen eine Datei pushen und so wird ein Commit hochgeladen. Die Erkenntnis kann ich später beim Gruppenprojekt nutzen, das wir durch Commits erstellen und weiterentwickeln können. Außerdem habe ich gelernt, das Softwarefehler teuer werden können :).

Wiederholung

Was sind Git Befehle und wie kann ich einen Commit machen? Git Befehle nutzt man, um mit Git interagieren zu können. Um dort Änderungen hochzuladen, nutzt man die Befehle:

  • git status
  • git add file (die markdown Datei zum tracken hinzufügen)
  • git commit (um die Änderung beschreiben)
  • git push -u origin master (somit wird der Commit hochgeladen)
  • git init (Ordner wird im Git erkannt)
  • git log (Sehen des Commits)

Kritik

Bisher noch nichts.