Кіріспе

Бағдарламалық жасақтаманы әзірлеудегі қарапайымдау айтуға болатын термин. "Каубойлық кодтау" – бағдарламашылардың даму процесіне толық дербестікпен жақындасуы. Бұл жобаның жоспары, қолданылатын тілдер, алгоритмдер, құралдар, фреймворктер және кодтау стилін өздігінен анықтауды қамтиды. Көбінесе басқа бағдарламашылармен немесе жобаға қатысы бар тараптармен келісім немесе үйлесім болмайды. "Каубой-кодтаушы" – жеке бағдарламашы немесе минималды тәртіп немесе процестермен жұмыс істейтін бағдарламашылар тобының мүшесі болуы мүмкін. Мұндай жағдай көбінесе бизнес қолданушылардың қатысуы аз болғанда немесе басшылық жобаның даму процесіне қатыспай, тек жалпы мақсаттарын, мерзімдерін, көлемін және сыртқы түрін ғана бақылағанда (не істеу керектігін, бірақ қалай істеу керектігін емес) туындайды. "Каубойлық кодтау" әдетте құрылымдалған бағдарламалық жасақтаманы әзірлеу әдістемелерімен салыстырылғанда, оны сынға алатын термин ретінде қолданылады.

Кемшіліктер

Коубойлық кодтауда бағдарламалық жобаларды басқарудың қатаң әдістемелерінің жоқтығы жобаның кішкентай болуын немесе тәжірибелік сипатта болуын білдіруі мүмкін (бірақ міндетті емес). Мұндай қасиеттері бар бағдарламалық жобалар:

Ашылу құрылымының болмауы

Бағалаудың немесе іске асыру жоспарлаудың жетіспеуі жобаның кешігуіне себеп болуы мүмкін. Кенеттен берілген мерзімдер немесе бағдарламалық құралды жылдам шығаруға жасалған қысым, кейіннен түзетуді қажет ететін "шапшаң және сапасыз" тәсілдерді пайдалануға әкелуі мүмкін.

Тәжірибесіз әзірлеушілер

Ковбойлық кодтау хобби деңгейінде немесе студенттер арасында жиі кездеседі, онда әзірлеушілер бастапқыда тестілеу, нұсқаны басқару және/немесе құрастыру құралдары сияқты технологиялармен толыққанды таныс болмауы мүмкін, бұл бағдарламалық жоба үшін қажетті қарапайым кодтаудан асып түседі. Мұндай жағдайда оқуға қажетті уақыт дұрыс бағаланбауы мүмкін, соның салдарынан даму процесі кешігуі мүмкін. Тәжірибесіздік қабылданған стандарттарды ескермеуге алып келуі де мүмкін, бұл жобаның бастапқы кодын түсінуді қиындатады немесе тіл құрылымдарының мағынасы мен олардың нәтижесі арасында қайшылықтар тудыруы мүмкін.

Белгісіз жобалау талаптары

Арнайы бағдарламалық жасақтамалар, тіпті қанағаттандырылған даму циклын қолданған жағдайда да, клиенттердің талаптарына қатысты мәселелер туындауы мүмкін. "Ковбойлық кодтау" талаптарды нақты уақыт шегіне сәйкес келтірмеу арқылы бұл мәселені одан әрі күшейтеді, нәтижесінде жоба аяқталғанға дейін пайдаланылмаған немесе қолдануға жарамсыз компоненттер жасалуы мүмкін. Сонымен қатар, клиенттері анық емес жобалар (көбінесе тәжірибелік жобалар, мысалы, тәуелсіз ойын әзірлеу) кодтан басталып, дизайн талаптарын формалды түрде талдамайынша жүзеге асуы мүмкін. Дизайнтық талдаудың жоқтығы технологияны қате немесе жеткіліксіз таңдауға әкелуі мүмкін, бұл жағдайда әзірлеуші жобаны аяқтау үшін бағдарламалық жасақтаманы аударуға немесе қайта жазуға мәжбүр болуы мүмкін.

Толық емес

Көптеген бағдарламалық жасақтаманы әзірлеу үлгілері, мысалы, экстремалды бағдарламалау, инкременттік тәсілді қолданады, ол бағдарламалық жасақтаманың әр итерацияның соңында пайдалануға дайын болуын қатаң талап етеді. Басқарылмаған жобаларда бірлік тесттерінің немесе жұмыс істейтін итерациялардың саны аз болуы мүмкін, нәтижесінде толық еместігіне байланысты жобаны қолдану мүмкін болмайды. Сондықтан, икемді әдістемелер ковбойлық кодтаумен салыстырылып келді, бірақ икемді әдістемелерде ресми процестер, процедуралар, өлшемдер, жоба басқару және басқа да бақылау шаралары бар, ал ковбойлық кодтауда мұның ешқайсысы жоқ.

Артықшылықтар

Дамушылар эксперименттер жасауға, білім алуға және нәтижелерді еркін таратуға мүмкіндік беретін еркін жұмыс ортасын қолдайды. Бұл дамушыларға жобалау шектеулері мен кемшіліктерді жою үшін архитектуралық және/немесе деңгейлік шекараларды кесіп өтуге мүмкіндік береді. Архитектураны талқылау, техникалық талаптарды жазу және кодты тексеру көп уақыт алатындықтан, бір дамушы (жеткілікті білімі болса) жұмыс істейтін қолданбаны "каубойлық кодтау" арқылы жылдамырақ дамыта алады. Зерттеу жұмыстары немесе прототиптер жасау сияқты тапсырмалар, күрделі әдістер ұсынатын код сапасын қажет етпеуі мүмкін. Кодтау дамушының бос уақытында жасалатындықтан, әйтпесе іске аспайтын жоба да нәтижеге жете алады.