Код негізі - Codebase

Жылы бағдарламалық жасақтама жасау, а код негізі (немесе код базасы) жиынтығы бастапқы код болған салу нақты бағдарламалық қамтамасыз ету жүйесі, қолдану, немесе бағдарламалық жасақтама компоненті. Әдетте, код базасына тек адам жазуы ғана кіреді бастапқы код файлдар; осылайша, код негізіне құралдар (генерацияланған файлдар) немесе екілік кітапхана файлдары (объектілік файлдар) жасаған бастапқы кодтық файлдар кірмейді, өйткені оларды адам жазған бастапқы кодтан құрастыруға болады. Алайда, бұл, әдетте, конфигурация мен сипат файлдарын қамтиды, өйткені олар құрастыруға қажетті деректер болып табылады.

Код базасы әдетте a-да сақталады көзді басқару репозитарий а нұсқаны басқару жүйе. Шағын жобалар үшін оны файлдардың қарапайым жиынтығы ретінде сақтауға болады (тіпті Linux ядросы көптеген жылдар бойы файлдар жиынтығы ретінде сақталды).[1] Бастапқы кодтар репозиторийі - бұл көп мөлшерде бастапқы немесе жеке кодтар сақталатын орын. Бастапқы код репозитарийлері көбінесе сақтық көшірмелер жасау және нұсқаларды жасау үшін қолданылады, және көптеген әзірлеушілер жобаларында әр түрлі бастапқы код нұсқаларын өңдеуге және қайталанатын модификацияларды ұсынған әзірлеушілерден туындайтын қайшылықтарды шешуге көмектеседі. Субверсия, Гит және Меркурий ашық жұмыс жобаларында жиі кездесетін осы жұмыс үрдісін басқару үшін қолданылатын танымал құралдардың мысалдары.

Айқын және монолитті код негіздері

Бірнеше жобаның жеке, нақты кодтар, немесе жалғыз болуы мүмкін, бөлісті немесе монолитті код негізі. Бұл, әсіресе, бір компанияда жасалған жобалар сияқты қатысты жобаларға қатысты. Толығырақ, монолитті код базасы, әдетте, бір репозиторийді (барлық кодтарды бір жерде), көбіне жалпы құрастыру жүйесін немесе жалпы кітапханаларды қажет етеді. Код негізін бөлу немесе бөлу жүйенің архитектурасына және нақты құрастыру нәтижелеріне байланысты емес; осылайша, нақты дамумен байланысты монолитті кодтық база а әкелмейді монолитті жүйе, бұл бағдарламалық жасақтамаға немесе жалғыз монолитті екілікке байланысты. Нәтижесінде, монолитті код негізі және (үлкен код базалары үшін) көбіне жалғыз жүйені немесе екілік екілік жүйені емес, бөлек компоненттерден тұруы мүмкін; таратылған код негізін (бірнеше компоненттері бар) бір монолитті жүйені немесе тіпті екілік екілік құруға пайдалануға болады. Мысалы, Linux ядросы архитектуралық жағынан біртұтас монолитті ядро, бірақ ол бөлек екілік файлдардан (жүктелетін компоненттерден) тұрады және бірнеше таратылған репозитарийлерде әзірленген.

Монолитті кодтық базаның артықшылықтары да, кемшіліктері де бар, оны таратылған кодтық базамен салыстырған кезде.[2][3] Ең қарапайымы, монолитті код негізі интеграцияны жеңілдетеді - әр түрлі компоненттерге ауысу немесе компоненттер арасындағы кодты қайта өңдеу оңай және атомдық түрде жасалуы мүмкін - ‌ бүкіл код базасында операцияларға мүмкіндік береді, бірақ үлкен репозиторийді қажет етеді және кең ауқымды енгізуді жеңілдетеді техникалық қарыз.[күмәнді ] Бөлек код базасы немесе таратылған код базасы жеке репозитарийлерді кішірек және басқарылатын етіп ұстайды, сонымен бірге компоненттер арасында бөлуді жүзеге асырады, бірақ ол код базалары (немесе негізгі репозиториймен) арасындағы интеграцияны қажет етеді және бірнеше код базаларын қамтитын өзгерістерді қиындатады.[4]

Стандарттар тұрғысынан бірнеше код базаларын «ерекше» деп атай отырып, ортақ бастапқы кодсыз тәуелсіз іске асырулар бар екенін және тарихи тұрғыдан алғанда, бұл жобалар жалпы жобадан дамымағанын мәлімдейді. Бұл берілген стандартты іске асыратын екі тәуелсіз бағдарламалық жасақтаманы көрсету арқылы өзара әрекеттесуді көрсету тәсілі болуы мүмкін.[күмәнді ]

Мысалдар

Кейбір елеулі код базаларына мыналар кіреді:

  • Google: монолитті, 1 миллиард файл, 9 миллион бастапқы кодтық файл, 2 миллиард жолдық код, барлығы 35 миллион міндеттеме, 86 ТБ жалпы көлемі (қаңтар 2015 ж.)[5]
  • Facebook: монолитті, 8 ГБ (репо 54 ГБ тарихты қосқанда, 2014 ж.),[6] жүз мың файл (2014)[3]
  • Linux ядросы: таратылған,[7] 15 миллионнан астам код жолдары (2013 жылғы жағдай бойынша) және ядро ​​нұсқасы 3.10)

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ «Гиттің қысқаша тарихы». git-scm.com. Алынған 21 қазан, 2014.
  2. ^ Дж. Дэвид Моргенталер; Миша Гриднев; Raluca Sauciuc & Sanjay Bhansali (2012). «Қарызды іздеу: Google-да техникалық қарызды басқару тәжірибесі». Техникалық қарызды басқару бойынша үшінші халықаралық семинар материалдары. IEEE. 1-6 бет, (PDF ).
  3. ^ а б «Mercurial-ді Facebook-те масштабтау». Facebook коды. 2014-01-07. Алынған 29 сәуір 2016.
  4. ^ «Git - таратылған жұмыс процестері». git-scm.com. Алынған 29 сәуір 2016.
  5. ^ Потвин, Рейчел; Левенберг, Джош (24 маусым 2016). «Неліктен Google бір репозитарийге миллиардтаған жолдар кодын сақтайды». ACM байланысы. 59 (7): 78–87. дои:10.1145/2854146.
  6. ^ @feross (2014 жылғы 24 сәуір). «Facebook-тегі репо - 54 ГБ» (Твит). Алынған 29 сәуір 2016 - арқылы Twitter.
  7. ^ Спроул, Ли; Мун, Джэ Юн (2000-11-05). «Таратылған жұмыстың мәні: Linux ядросының жағдайы - Ай - Бірінші дүйсенбі». Бірінші дүйсенбі. 5 (11). Алынған 29 сәуір 2016.