Baza kodu - Codebase

W rozwoju oprogramowania , wykorzystując codebase (lub baza kodu ) jest zbiorem kodu źródłowego używany do budowy konkretnego systemu oprogramowania , aplikacji lub składnika oprogramowania . Zazwyczaj baza kodu zawiera tylko pliki kodu źródłowego napisane przez człowieka ; w związku z tym baza kodu zwykle nie zawiera plików kodu źródłowego generowanych przez narzędzia (pliki generowane) lub plików bibliotek binarnych (pliki obiektowe), ponieważ można je zbudować z kodu źródłowego napisanego przez człowieka. Jednak zazwyczaj zawiera pliki konfiguracyjne i właściwości, ponieważ są to dane niezbędne do kompilacji.

Baza kodu jest zwykle przechowywana w repozytorium kontroli źródła w systemie kontroli wersji . W przypadku mniejszych projektów może być przechowywany jako prosty zestaw plików (nawet jądro Linuksa było utrzymywane jako zestaw plików przez wiele lat). Repozytorium kodu źródłowego to miejsce, w którym przechowywane są duże ilości kodu źródłowego, zarówno publicznie, jak i prywatnie. Repozytoria kodu źródłowego są używane głównie do tworzenia kopii zapasowych i wersjonowania, a także w projektach wielu programistów do obsługi różnych wersji kodu źródłowego i udzielania pomocy w rozwiązywaniu konfliktów, które powstają w wyniku zgłaszania przez programistów nakładających się modyfikacji. Subversion , Git i Mercurial to przykłady popularnych narzędzi używanych do obsługi tego przepływu pracy, które są powszechne w projektach open source.

Wyraźne i monolityczne bazy kodów

Wiele projektów może mieć oddzielne, odrębne bazy kodu lub może mieć jedną, wspólną lub monolityczna baza kodu . Dotyczy to w szczególności projektów powiązanych, takich jak te opracowane w ramach tej samej firmy. Bardziej szczegółowo, monolityczna baza kodu zazwyczaj obejmuje pojedyncze repozytorium (cały kod w jednym miejscu) i często wspólny system kompilacji lub wspólne biblioteki. To, czy baza kodu jest współużytkowana, czy dzielona, ​​nie zależy od architektury systemu i rzeczywistych wyników kompilacji; zatem monolityczna baza kodu, która jest związana z rzeczywistym rozwojem, nie obejmujemonolitycznego systemu, który jest powiązany z architekturą oprogramowania lub pojedynczym monolitycznym plikiem binarnym. W rezultacie monolityczna baza kodu może i (w przypadku dużych baz kodu) często będzie składać się z oddzielnych komponentów, zamiast zawierać tylko jeden system lub pojedynczy plik binarny; rozproszona baza kodu (z wieloma komponentami) może być wykorzystana do zbudowania pojedynczego systemu monolitycznego lub nawet pojedynczego pliku binarnego. Na przykład jądro Linux jest architektonicznie pojedynczymjądrem monolitycznym, ale składa się z oddzielnych plików binarnych (ładowalnych komponentów) i jest rozwijane w wielu rozproszonych repozytoriach.

Istnieją zarówno zalety, jak i wady monolitycznej bazy kodu w porównaniu z rozproszoną bazą kodu. Mówiąc najprościej, monolityczna baza kodu upraszcza integrację‍ — „zmiany w różnych komponentach lub refaktoryzację kodu między komponentami można wykonać w sposób prosty i atomowy” — i umożliwia operacje na całej bazie kodu, ale wymaga większego repozytorium i ułatwia wprowadzenie długu technicznego o szerokim zasięgu . Oddzielna baza kodu lub rozproszona baza kodu sprawia, że ​​poszczególne repozytoria są mniejsze i łatwiejsze w zarządzaniu, wymuszając jednocześnie separację między komponentami, ale wymaga również integracji między bazami kodu (lub z głównym repozytorium) i komplikuje zmiany obejmujące wiele baz kodu.

Jeśli chodzi o standardy, odniesienie się do wielu baz kodu jako „odrębnych” oznacza, że ​​istnieją niezależne implementacje bez współdzielonego kodu źródłowego i że historycznie implementacje te nie wyewoluowały ze wspólnego projektu. Może to być sposób na zademonstrowanie współdziałania poprzez pokazanie dwóch niezależnych części oprogramowania, które implementują dany standard.

Przykłady

Niektóre szczególnie duże bazy kodów obejmują:

  • Google : monolityczne, 1 miliard plików, 9 milionów plików kodu źródłowego, 2 miliardy linii kodu źródłowego, łącznie 35 milionów zatwierdzeń, całkowity rozmiar 86 TB (styczeń 2015)
  • Facebook : monolityczny, 8 GB (repo 54 GB z historią, 2014), setki tysięcy plików (2014)
  • Jądro Linux : rozproszone, ponad 15 milionów linii kodu (stan na 2013 r. i wersję jądra 3.10)

Zobacz też

Bibliografia