Codebasis

Im Software-Entwicklung, a Codebasis (oder Codebasis) ist eine Sammlung von Quellcode gewöhnt an bauen ein bestimmtes Software System, Anwendung, oder Softwarekomponente. Normalerweise enthält eine Codebasis nur von Menschen geschrieben Quellcode Dateien; Somit enthält eine Codebasis normalerweise keine Quellcodedateien, die von Tools (generierten Dateien) oder Binärbibliotheksdateien (Objektdateien) generiert werden, wie sie aus dem von Menschen geschriebenen Quellcode erstellt werden können. Es umfasst jedoch im Allgemeinen Konfigurations- und Eigenschaftsdateien, da sie die für den Build erforderlichen Daten sind.

Eine Codebasis wird normalerweise in a gespeichert Quellcodeverwaltung Repository in a Versionskontrolle System. Für kleinere Projekte kann es als einfache Dateien aufbewahrt werden (sogar als die Linux Kernel wurde viele Jahre als Dateien als Dateien gepflegt).[1] Ein Quellcode -Repository ist ein Ort, an dem große Mengen an Quellcode öffentlich oder privat aufbewahrt werden. Quellcode-Repositories werden am grundsätzlich für Backups und Versioning sowie für Multi-Entwickler-Projekte verwendet, um verschiedene Quellcodeversionen zu verarbeiten und um Hilfe bei der Lösung von Konflikten zu leisten, die sich aus Entwicklern ergeben, die überlappende Änderungen einreichen. Subversion, Git und Quecksilber sind Beispiele für beliebte Tools, die für diesen Workflow verwendet werden, die in Open -Source -Projekten üblich sind.

Verschiedene und monolithische Codebasen

Mehrere Projekte können separat haben, unterschiedliche Codebasen, oder kann eine einzelne haben, geteilt oder Monolithische Codebasis. Dies ist insbesondere bei verwandten Projekten der Fall, wie sie innerhalb desselben Unternehmens entwickelt wurden. Ausführlicher ist eine monolithische Codebasis in der Regel ein einzelnes Repository (den gesamten Code an einem Ort) und häufig ein gemeinsames Build -System oder ein gemeinsames Bibliotheken. Ob die Codebasis freigegeben oder geteilt wird, hängt nicht von der Systemarchitektur und der tatsächlichen Erstellungsergebnisse ab; Somit bedeutet eine monolithische Codebasis, die mit der tatsächlichen Entwicklung zusammenhängt monolithisches System, was mit Softwarearchitektur oder einer einzigen monolithischen Binärdatei zusammenhängt. Infolgedessen besteht eine monolithische Codebasis und (für große Codebasen) häufig aus getrennten Komponenten, anstatt nur ein einzelnes System oder ein einzelnes Binärer zu tragen. Eine verteilte Codebasis (mit mehreren Komponenten) kann verwendet werden, um ein einzelnes monolithisches System oder sogar ein einzelnes Binärer zu erstellen. Zum Beispiel ist der Linux -Kernel architektonisch eine einzige monolithischer Kernel, aber es besteht aus separaten Binärdateien (ladbare Komponenten) und wird in mehreren verteilten Repositories entwickelt.

Es gibt sowohl Vor- als auch Nachteile für eine monolithische Codebasis, wenn sie mit einer verteilten Codebasis verglichen wird.[2][3] Am einfachsten vereinfacht eine monolithische Codebasis die Integration‍-‌Cangen zu verschiedenen Komponenten oder die Wiederverarbeitung des Codes zwischen Komponenten kann einfach und atomisch durchgeführt werden-und ermöglicht den Vorgängen über die gesamte Codebasis, erfordert jedoch ein größeres Repository und erleichtert die Einführung einer breiten Einführung. Technische Schulden.[zweifelhaft ] Eine separate Codebasis oder eine verteilte Codebasis hält einzelne Repositorys kleiner und überschaubarer und setzt gleichzeitig zwischen den Komponenten durch, erfordert jedoch auch die Integration zwischen Codebasen (oder mit dem Hauptrepository) und verändert Änderungen, die mehrere Codebasen umfassen.[4]

In Bezug auf die Standards wird in Bezug auf mehrere Codebasen als "unterschiedlich" angeben, dass es unabhängige Implementierungen ohne gemeinsam genutzten Quellcode gibt und dass sich diese Implementierungen in der Vergangenheit nicht aus einem gemeinsamen Projekt entwickelt haben. Dies kann eine Möglichkeit sein, die Interoperabilität zu demonstrieren, indem zwei unabhängige Softwarestücke angezeigt werden, die einen bestimmten Standard implementieren.[zweifelhaft ]

Beispiele

Einige insbesondere große Codebasen sind:

  • Google: Monolithisch, 1 Milliarde Dateien, 9 Millionen Quellcode -Dateien, 2 Milliarden Quellcodezeilen, 35 Millionen Commits insgesamt, 86 TB Gesamtgröße (Januar 2015)[5]
  • Facebook: Monolithisch, 8 GB (Repo 54 GB einschließlich Geschichte, 2014),[6] Hunderttausende von Dateien (2014)[3]
  • Linux Kernel: verteilt,[7] über 15 Millionen Codezeilen (ab 2013 und Kernel Version 3.10)

Siehe auch

Verweise

  1. ^ "Eine kurze Geschichte von Git". git-scm.com. Abgerufen 21. Oktober, 2014.
  2. ^ J. David Morgenthaler; Misha Gridnev; Raluca Sauciuc & Sanjay Bhansali (2012). "Suche nach Schulden: Erlebnisse mit der Verwaltung technischer Schulden bei Google". Verfahren des dritten internationalen Workshops zur Verwaltung technischer Schulden. IEEE. S. 1–6, (PDF). {{}}: Externer Link in |postscript= (Hilfe)CS1 Wartung: PostScript (Link)
  3. ^ a b "Skalierung von Quecksilber bei Facebook". Facebook -Code. 2014-01-07. Abgerufen 29. April 2016.
  4. ^ "Git - verteilte Workflows". git-scm.com. Abgerufen 29. April 2016.
  5. ^ Potvin, Rachel; Levenberg, Josh (24. Juni 2016). "Warum Google Milliarden von Codezeilen in einem einzigen Repository speichert". Kommunikation der ACM. 59 (7): 78–87. doi:10.1145/2854146.
  6. ^ @feross (24. April 2014). "Facebooks Git Repo ist 54 GB" (Tweet). Abgerufen 29. April 2016 - via Twitter.
  7. ^ Sproull, Lee; Moon, Jae Yun (2000-11-05). "Essenz der verteilten Arbeit: Der Fall des Linux -Kernels - Moon - Erster Montag". Erster Montag. 5 (11). Abgerufen 29. April 2016.