Codebasis - Codebase

In der Software - Entwicklung , eine Code - Basis (oder Code - Basis ) ist eine Sammlung von Quellcode verwendet zu bauen einem bestimmtes Software - System , Anwendung oder Softwarekomponente . Normalerweise enthält eine Codebasis nur von Menschen geschriebene Quellcodedateien ; Daher enthält eine Codebasis normalerweise keine von Tools generierten Quellcodedateien (generierte Dateien) oder binäre Bibliotheksdateien (Objektdateien), da sie aus dem von Menschen geschriebenen Quellcode erstellt werden können. Es enthält jedoch im Allgemeinen Konfigurations- und Eigenschaftsdateien, da dies die für den Build erforderlichen Daten sind.

Eine Codebasis wird typischerweise in einem Quellcodeverwaltungs- Repository in einem Versionskontrollsystem gespeichert . Für kleinere Projekte kann es als einfacher Satz von Dateien aufbewahrt werden (sogar der Linux-Kernel wurde viele Jahre lang als Satz von Dateien gepflegt). Ein Quellcode-Repository ist ein Ort, an dem große Mengen an Quellcode entweder öffentlich oder privat aufbewahrt werden. Quellcode-Repositorys werden hauptsächlich für Backups und Versionierung verwendet und in Projekten mit mehreren Entwicklern, um verschiedene Quellcode-Versionen zu handhaben und um Hilfe bei der Lösung von Konflikten zu bieten, die dadurch entstehen, dass Entwickler überlappende Änderungen einreichen. Subversion , Git und Mercurial sind Beispiele für beliebte Tools, die verwendet werden, um diesen Workflow zu handhaben, die in Open-Source-Projekten üblich sind.

Eindeutige und monolithische Codebasen

Mehrere Projekte können separate, unterschiedliche Codebasen haben oder eine einzelne, gemeinsam genutzte oder monolithische Codebasis . Dies gilt insbesondere für verwandte Projekte, wie sie beispielsweise im selben Unternehmen entwickelt wurden. Genauer gesagt umfasst eine monolithische Codebasis typischerweise ein einzelnes Repository (der gesamte Code an einem Ort) und oft ein gemeinsames Build-System oder gemeinsame Bibliotheken. Ob die Codebasis geteilt oder geteilt wird, hängt nicht von der Systemarchitektur und den tatsächlichen Build-Ergebnissen ab; Somit beinhaltet eine monolithische Codebasis, die sich auf die tatsächliche Entwicklung bezieht, keinmonolithisches System, das sich auf die Softwarearchitektur oder eine einzelne monolithische Binärdatei bezieht. Als Ergebnis kann und wird eine monolithische Codebasis (bei großen Codebasen) oft aus getrennten Komponenten bestehen, anstatt nur ein einzelnes System oder eine einzelne Binärdatei zu tragen; eine verteilte Codebasis (mit mehreren Komponenten) kann verwendet werden, um ein einzelnes monolithisches System oder sogar eine einzelne Binärdatei aufzubauen. Der Linux-Kernel ist beispielsweise architektonisch ein einzelnermonolithischer Kernel, besteht jedoch aus separaten Binärdateien (ladbaren Komponenten) und wird in mehreren verteilten Repositorys entwickelt.

Eine monolithische Codebasis hat im Vergleich zu einer verteilten Codebasis sowohl Vor- als auch Nachteile. Am einfachsten vereinfacht eine monolithische Codebasis die Integration‍ – ‌Änderungen an verschiedenen Komponenten oder das Refactoring von Code zwischen Komponenten können einfach und atomar durchgeführt werden‍ – ‌und ermöglicht Operationen über die gesamte Codebasis, erfordert jedoch ein größeres Repository und erleichtert die Einführung weitreichender technischer Schulden . Eine separate Codebasis oder eine verteilte Codebasis hält einzelne Repositorys kleiner und überschaubarer und erzwingt gleichzeitig die Trennung zwischen den Komponenten, erfordert aber auch eine Integration zwischen Codebasen (oder mit dem Haupt-Repository) und erschwert Änderungen, die mehrere Codebasen umfassen.

In Bezug auf Standards erklärt die Bezugnahme auf mehrere Codebasen als "verschieden", dass es unabhängige Implementierungen ohne gemeinsamen Quellcode gibt und dass diese Implementierungen historisch gesehen nicht aus einem gemeinsamen Projekt hervorgegangen sind. Dies kann eine Möglichkeit sein, die Interoperabilität zu demonstrieren, indem zwei unabhängige Softwareteile gezeigt werden, die einen bestimmten Standard implementieren.

Beispiele

Einige bemerkenswert große Codebasen umfassen:

  • Google : monolithisch, 1 Milliarde Dateien, 9 Millionen Quellcodedateien, 2 Milliarden Zeilen Quellcode, 35 Millionen Commits insgesamt, 86 TB Gesamtgröße (Januar 2015)
  • Facebook : monolithisch, 8 GB (Repo 54 GB inklusive Verlauf, 2014), Hunderttausende Dateien (2014)
  • Linux-Kernel : verteilt, über 15 Millionen Codezeilen (ab 2013 und Kernel-Version 3.10)

Siehe auch

Verweise