Du bist nicht angemeldet.

Werbeanzeige

1

04.04.2021, 17:21

Komplexe Projekte - Meine beobachtungen

Es ist mir in letzter Zeit öfters aufgefallen, das immer wieder ähnliche Probleme bei Projekten auftreten.

Ich werde einfach mal auflisten, was ich so von einem Projekt erwarten würde.

Hier einmal ein paar Wörter umherwerfen.
- Pakete (packages)
- Versionierung (version control system) [Git, SVN]
- Abhängigkeiten (depenedencies)
- Automatisierung (continous integration) [Actions, Pipelines]
- Bereitstellung (deployment) [Staging]

Denke, werde mal zu allem etwas schreiben und dann mal schauen.

2

04.04.2021, 18:18

Pakete

Pakete betrachte ich als fertige Archive. Pakete können alles mögliche enthalten. Sei es Bilder, Videos, Texte, Konfigurationsdateien oder auch ausführbare Dateien. Je nach Plattform, Sprache, Engine oder Framework gibt es unterschiedliche Formate.

Windows nutzt MSI.
In Android sind es APK.
Debian basierende Distributionen verwenden DEB.
Dann gibt es noch ZIP, TAR, EXE und weitere zur manuellen Installation.

Zudem gibt es dann noch DEV-Pakete, welche zur Entwicklung genutzt werden.
Diese enthalten zusätzliche Informationen, Dateien und Werkzeuge, welche zur Entwicklung genutzt werden.

Distributionen (Betriebssysteme und deren Varianten) stellen meist Paketverwaltungsprogramme zur Verfügung.
Diese sind meist über eine grafische Oberfläche zu bedienen.

Viele Paketverwaltungsprogramme sind jedoch recht einfach gehalten und können jeweils nur eine Version des Pakets verwalten.
Auch können viele keine Abhängigkeiten oder Varianten wie etwa Entwicklungsversionen Verwalten.

3

06.04.2021, 20:32

Versionierung

Versionskontrolle erlaubt es einem Projekt mehrere Versionen einer oder mehrere Dateien zu haben.
Es gibt Zweige, in welchen Änderungen gespeichert werden. Ein Zweig kann jeweils aktiv sein. Änderungen können in einem Zweig gespeichert werden. Gespeicherte Änderungen können mit anderen geteilt werden. Solange keine ungesichert Änderungen vorhanden sind, kann zwischen Zeigen gewechselt werden. Dies ist möglich ohne die Dateien kopieren zu müssen.

Die meisten Werkzeuge sind jedoch recht kompliziert und kommen nur mit einfacheren Änderungen klar. So wirken sich größere Dateien negativ auf auf Geschwindigkeit aus. Wenn zwei Personen die gleiche Datei bearbeiten, müssen die Änderungen von Hand zusammengeführt werden. Was bei Bildern, Videos oder anderen Komplexen Formaten nicht möglich ist.

4

11.04.2021, 13:01

Abhängigkeiten

Abhängigkeiten sind externe Projekte, welche benötigt werden um das eigene Projekt fertig zu stellen.

Abhängigkeiten kommen meist als Pakete. Jedoch in manchen Sprachen, wo dies nicht immer möglich ist, muss die Abhängigkeit als Projekt hinzugefügt werden. Eine als Projekt hinzugefügte Abhängigkeit muss erst von Hand erstellt werden.

Je nach Programmiersprache haben Abhängigkeiten verschiedene Formate.
  • C: Header: *.h
  • C++: Header: *.hh, *.hpp, *.h, *.h++
  • C/C++: Library:
    - Linux: *.so
    - Windows: *.dll
  • Java: *.jar
  • c#: *.dll

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Hex3Dnone« (11.04.2021, 13:19)


5

04.05.2021, 02:15

Automatisierung

Bei der Automatisierung von Projekten, werden meist einfache Skripte oder Daten basierende Konfigurationen verwendet.
Es gibt Dienstleister, welche es erlauben automatisch Projekte zu erstellen.

Wenn eine Änderung eingetragen wird, dann kann die Versionsverwaltung eine Aktion antreten.
Aktionsdienstleister haben meist eine URL, welche aufgerufen wird.

Nach dem Aufruf wird ein Ordner eingerichtet in dem alle benötigten Abhängigkeiten und Programme vorliegen.
In diesem Ordner wird dann anhand des Skriptes oder der vorgelegten Daten das Projekt erstellt.

Wenn die Erstellung fehl schlägt kann der Nutzer direkt benachrichtigt werden.

Nach einer erfolgreichen Erstellung wird das erstellte Paket bei einem Dateidienstleister zur Verfügung gestellt.

Werbeanzeige