Кіріспе

Даму әдістемесі
Итеративтік және инкременттік даму – бұл итеративтік жобалау немесе итеративтік әдіс пен даму үшін инкременттік құрастыру моделінің кез келген комбинациясы. Бұл терминнің қолданылуы бағдарламалық жасақтаманы әзірлеуде басталды, ал итеративтік және инкременттік екі терминді ұзақ жылдар бойы біріктіру ірі жобаларды жүзеге асыру үшін кеңінен ұсынылып келді. Мысалы, 1985 жылғы DOD STD 2167 стандартының (4.1.2-бөлімінде) мынадай сөздер келтірілген: «Бағдарламалық қамтамасыз етуді әзірлеу кезінде бағдарламалық қамтамасыз етуді әзірлеу циклінің бірнеше итерациясы бір уақытта жүргізілуі мүмкін». Сондай-ақ, «Бұл процесті «эволюциялық даму» немесе «инкременттік құрастыру» тәсілі деп сипаттауға болады». Бағдарламалық жасақтамада итерациялар мен инкременттер арасындағы байланыс жалпы бағдарламалық жасақтаманы әзірлеу процесімен анықталады.

Шолу

Бұл әдістің негізгі идеясы – жүйелерді қайталанатын циклдар (итеративті) арқылы және бір уақытта кішігірім бөліктерде (инкрементті) дамыту, бұл бағдарламалық қамтамасыз етушілерге жүйенің бұрынғы бөліктерін немесе нұсқаларын дамыту барысында алған тәжірибесін пайдалануға мүмкіндік береді. Оқу жүйенің дамытылуы мен қолданылуынан туындайды, мүмкіндігінше процестің маңызды қадамдары бағдарламалық қамтамасыз ету талаптарының қарапайым іске асырылған кіші жиынтығынан басталып, толық жүйе дайын болғанға дейін дамып жатқан нұсқаларды қайталап жетілдіру арқылы жүзеге асырылады. Әрбір итерацияда дизайнға өзгерістер енгізіліп, жаңа функционалдық мүмкіндіктер қосылады. Процедураның өзі инициализация кезеңінен, итерация кезеңінен және Жобаны бақылау тізімінен тұрады. Инициализация кезеңі жүйенің бастапқы нұсқасын құрайды. Бұл бастапқы іске асырудың мақсаты – пайдаланушы реакция білдіре алатын өнімді жасау. Ол мәселенің негізгі аспектілерін көрсетіп, түсінуге және оңай іске асыруға болатын қарапайым шешім ұсынуы керек. Итерация процесін басқару үшін жобаны бақылау тізімі жасалады, онда орындалуы тиіс барлық тапсырмалар тіркеледі. Ол жаңа мүмкіндіктерді іске асыру және қолданыстағы шешімді қайта құру қажеттіліктерін қамтиды. Бақылау тізімі талдау кезеңінің нәтижелеріне сәйкес үнемі жаңартылып отырады. Итерация қайта жобалауды және іске асыруды қамтиды, ол қарапайым, түсінікті және модульді болуы керек, бұл сол кезеңде қайта жобалауға немесе жобаны бақылау тізіміне қосылатын болашақ тапсырма ретінде мүмкіндік береді. Дизайнның егжей-тегжейлі деңгейі итеративті тәсілмен шектелмейді. Жеңіл итеративті жобада код жүйенің негізгі құжаттама көзі болуы мүмкін, бірақ маңызды итеративті жобада ресми Бағдарламалық Қамтамасыз ету Дизайн Документі қолданылуы мүмкін. Итерацияның талдауы пайдаланушы пікірлеріне және қол жетімді бағдарлама талдау құралдарына негізделеді. Ол құрылымды, модульділікті, қолдануға ыңғайлылығын, сенімділігін, тиімділігін және мақсаттарға жетуді талдауды қамтиды. Жобаны бақылау тізімі талдау нәтижелеріне сәйкес өзгертіледі.

Фазалары

Кезеңдік даму жүйелік мүмкіндіктерді кезеңдерге (бөлімдерге) бөледі. Әрбір кезеңде мүмкіндіктердің бір бөлігі талаптардан бастап енгізілуге дейінгі салалық жұмыс арқылы жеткізіледі. Бірыңғай процесте кезеңдер/итерациялар мынадай фазаларға топтастырылады: бастама, нақтылау, құрылыс және ауысу. Бастама жобаның көлемін, талаптарды (функционалды және функционалды емес) және тәуекелдерді жоғары деңгейде, бірақ жұмыс көлемін бағалауға жеткілікті егжей-тегжейлі түрде анықтайды. Нақтылау жоғары тәуекелдерді азайтатын және функционалды емес талаптарды орындайтын жұмыс архитектурасын ұсынады. Құрылыс функционалды талаптарды талдау, жобалау, іске асыру және тестілеу арқылы өндіріске дайын кодпен архитектураны кезең-кезеңімен толықтырады. Ауысу жүйені өндірістік ортаға енгізеді. Әрбір фаза 1 немесе одан көп итерацияларға бөлінуі мүмкін, олар әдетте уақыт бойынша шектеледі, мүмкіндіктер бойынша емес. Архитекторлар мен талдаушылар әзірлеушілер мен тестілеушілерден бір итерацияға озып жұмыс істейді, осылайша өздерінің жұмыс өнімдерінің толық болуын қамтамасыз етеді.

Пайдалануы/Тұрағы

Крейг Ларман мен Виктор Базилидің "Итеративті және үдемелі даму: қысқаша тарих" мақаласында ерте қолданылудың көптеген мысалдары келтірілген, олардың ең алғашқысы – NASA-ның 1960 жылдардағы «Меркурий» жобасы. Кейіннен «Меркурий» инженерлерінің бір бөлігі IBM-де жаңа бөлім құрды, онда «ІІД-нің маңызды жетістігінің тағы бір ерте және айқын мысалы – NASA-ның ғарыш кемесі бағдарламалық қамтамасының ядросы – 1977 жылдан 1980 жылға дейін салынған негізгі авиациялық бағдарламалық жүйе. Команда 31 айдың ішінде 17 итерацияда IID-ні қолданды, әр итерацияның орташа ұзақтығы шамамен сегіз аптаны құрады. Олардың «суарнау» өмірлік циклінен қашу себебі – бағдарламалық қамтама жасау процесінде ғарыш кемесі бағдарламасының талаптары өзгергендігі еді». Сонымен қатар, АҚШ-тың Халықаралық даму агенттігі (USAID) халықаралық даму жобаларын жобалау, бақылау, бағалау, үйрену және бейімдеу үшін өзінің бағдарламалау циклінде итеративті және үдемелі даму тәсілін қолданады. Бұл тәсіл ынтымақтастық, оқыту және бейімделу стратегияларын интеграциялауға бағытталған жобалық басқару арқылы бағдарламалауды итерациялау және бейімдеуді қамтиды.

Су тасқыны дамуының қарама-қарсылығы

Бағдарламалық жасақтаманы әзірлеу жобаларының сәтсіздікке ұшырауының басты себебі модельді таңдау болып табылады, сондықтан оны өте мұқият таңдау керек. Мысалы, Waterfall әзірлеу парадигмасы келесі кезеңге өтуден бұрын, әрбір саланың жобалық жұмыс өнімдерін бір қадамда аяқтайды. Бизнес құндылығы бірден, тек жобаның соңында ғана ұсынылады, ал итеративтік тәсілде кері қайту мүмкіндігі бар. Екі тәсілді салыстыра отырып, кейбір үлгілер көріне бастайды:

Пайдаланушының қатысуы: Waterfall моделінде пайдаланушы модельдің екі кезеңіне, яғни талаптарды анықтауға және қабылдау сынағына, сондай-ақ мүмкін пайдаланушыға оқу материалдарын жасауға қатысады. Ал инкременттік модельде клиент әрбір кезеңде қатысады. Өзгергіштік: Бағдарлама пайдаланушыға тек өмірлік циклдің құрастыру кезеңі аяқталғаннан кейін ғана тапсырылады, пайдаланушы қабылдауы үшін. Ал инкременттік модельде әрбір жаңару пайдаланушыға ұсынылады және пайдаланушы мақұлдағаннан кейін әзірлеуші келесі модульға көшуге рұқсат алады. Адам ресурстары: Инкременттік модельде Waterfall моделімен салыстырғанда аз қызметкерлер қажет болуы мүмкін. Уақыт шектеуі: Іске қосылған өнім бірнеше айдан кейін ұсынылады, ал инкременттік модельде өнім бірнеше апта ішінде пайдаланушыға беріледі. Жобаның көлемі: Waterfall моделі шағын жобаларға қолайсыз, ал инкременттік модель шағын да, ірі жобаларға да қолайлы.

Жабдықтар мен кіріктірілген жүйелерде қолдану

Итеративтік және инкременталды даму термині бағдарламалық жасақтама индустриясында пайда болғанмен, көптеген аппараттық және кіріктірілген бағдарламалық жасақтаманы әзірлеу жұмыстары итеративтік және инкременталды әдістерді қолданады. Мұның мысалдары көптеген салаларда кездеседі. Соңғы уақытта осы ойлау жолының өзгеруіне едәуір әсер еткен салалардың бірі – ғарышқа ұшыру индустриясы. Бұл индустрияда жедел және ауқымды технологиялық инновациялардың нәтижесінде жаңа бәсекелестік күштер пайда болды, осы өзгеріске жеке компаниялардың ғарышқа ұшыруды жүзеге асыруы себеп болды. SpaceX және Rocket Lab сияқты компаниялар соңғы он жылда коммерциялық орбиталық ұшыру қызметтерін ұсынып келеді, бұл мүмкіндік он жыл бұрын тек алты мемлекетке ғана қолжетімді болған. Технологияны дамытудың жаңа тәсілдері, баға белгілеу және қызметтер ұсынысы – соның ішінде 2016 жылдан бері қолжетімді болған, бұрын қолданылған (қайта пайдалануға болатын) күшейткіш сатысында ғарышқа ұшу мүмкіндігі – ғарышқа қол жеткізу бағасын одан әрі төмендетуде. Индустрия өзгеріске түскендіктен, басқа ұшыру конкурстары да мемлекеттік органдармен бірлесіп, ұзақ мерзімді даму тәжірибесін өзгерте бастады. Мысалы, АҚШ-тың ірі ұшыру қызметін ұсынатын United Launch Alliance (ULA) компаниясы 2015 жылы өзінің ұшыру бизнесін қайта құруға бағытталған он жылдық жобаны бастады – екі ұшыру құралын біреуге дейін азайтып, келесі он жылда жартылай қайта пайдалануға болатын және әлдеқайда төмен құнмен ұшыру жүйесіне итеративтік және инкременталды тәсіл арқылы қол жеткізуді көздеді.