Сабақтың тақырыбы: Алгоритмдерді және бағдарламалық қамтамасыз етуді әзірлеу
Бағдарламалық қамтамасыз ету саласындағы зерттеулер қазіргі уақытта екі жазықтықта дамиды: кейбір зерттеушілер практик деп аталатын, қосымшаларды құру әдістерін әзірлейді, ал басқалары, теоретиктер бағдарламалық қамтамасыз етуді құрудың мықты әдістемесін құруға болатын негізгі қағидаттар мен теорияларды іздестірумен айналысады.
Бағдарламалық қамтамасыз етуді жобалаудағы негізгі түсінік бағдарламаның өмірлік циклінің түсінігі болып табылады, ол бағдарламаны жасаудан басқа оны пайдалану мен модификациялауды қамтиды.
Бағдарламалық жасақтаманың модификациясына өтеді, себебі қателер анықталады, бағдарламаның қолданылу саласы өзгереді, бұл бағдарламаға тиісті өзгерістерді қажет етеді, немесе алдыңғы модификация кезінде енгізілген өзгерістер жұмыста қателіктерге әкеп соқты.
Бағдарламаның модификациясы неге басталғанына қарамастан, программист (бағдарламаның авторы жиі емес) оны түсінгенше бастапқы бағдарламаны және оған құжаттаманы зерттейді. Әйтпесе, бағдарламаны кез келген өзгерту оны шешуге арналған проблемалардан көбірек пайда болуы мүмкін. Бағдарламаны түсіну, тіпті егер ол жақсы ойластырылған және қажетті құжаттармен жабдықталған болса да, қиын міндет болып табылады. Шын мәнінде, бұл кезеңде бағдарлама қолданыстағы бағдарламалар пакетін өзгертуден гөрі жаңа жүйені нөлден жасау оңай деген сылтаумен таңдалады.
Бағдарламалық қамтамасыз етуді әзірлеу бағдарламаны талдауды, жобалауды, іске асыруды және тестілеуді қамтиды.
Талдаудың басты мақсаты-болашақ жүйенің қандай іс-әрекеттерді орындауы тиіс екендігін анықтау (мысалы, деректерге шектеулі қол жеткізу талабы)).
Жобалау кезеңінде бағдарламалық қамтамасыз ету жүйесінің құрылымы шығарылады. Үлкен жүйелер үшін ең жақсы құрылым модульдік болып табылатыны белгілі, яғни бағдарламаны неғұрлым ұсақ элементтерге бөлу, олардың әрқайсысы жалпы есептің бір бөлігін ғана орындайды. Мұндай құрылымсыз жүйені іске асыру кезінде ескеру қажет техникалық бөлшектердің саны адамның мүмкіндіктерінен асып түседі. Модульдік құрылым сондай-ақ жүйені келесі пайдалануды жеңілдетеді, өйткені ол модификация кезінде нақты модульдерге ғана өзгерістер енгізуге мүмкіндік береді. Модульдер процедуралардың түрі болуы және анағұрлым ірі жүйелерді құру үшін стандартты блоктар ретінде қолданылуы мүмкін. Объектілі-бағдарлы бағдарламалау кезінде модульдер басқа объектілердің құрылысына тәуелді емес өздерінің ішкі ұйымдары бар объектілер нысанын қабылдайды.
Процедуралардың көмегімен алынатын модульдік құрылымның дәстүрлі көрінісі құрылымдық схема болып табылады. Мұндай схемада әрбір модуль тікбұрыш түрінде, ал модульдердің арасындағы тәуелділік тікбұрыштарды қосатын бағыттамалар түрінде бейнеленеді. Объектілі-бағытталған жүйелердің құрылымын бейнелеу үшін класс диаграммалары қолданылады.
Модульдік жүйені жобалаудағы негізгі мақсат-модульдерді бір-бірінен барынша тәуелсіз ету. Сонда өзгерісті өзгерту кезінде тек нақты модульдерге енгізу қажет. Алайда, модульдер арасындағы байланысты және логикалық жүйені құру үшін модуль аралық байланыстар болуы тиіс. Демек, бір-бірінен барынша тәуелсіз модульдерді құру, яғни жүйе модульдерінің байланысын азайту.
Іске асыру кезеңі бағдарламаларды жазу, деректер файлдарын және деректер базасын құру.
Тестілеу кезеңі іске асыру сатысымен байланысты, өйткені жүйенің әрбір модулі әдетте оны іске асырғаннан кейін бірден тестіленеді. Логикалық және ойластырылған жүйеде әрбір модульді тексеру жүйенің басқа модульдеріне қарамастан жүзеге асырылуы тиіс. Жеке компоненттерді тестілеу модульдерін құру шамасына қарай барлық жүйені тестілеумен ауыстырылады.
Бағдарламалық қамтамасыз етуді әзірлеудің ерте тәсілдері барлық кезеңдерді қатаң дәйекті орындауды талап етті. Бұл әдіс қазіргі уақытта сарқырама моделі деп аталады, себебі даму процесі бір бағытта өтеді. Баламалы тәсілдің мысалы ретінде жобалаудың инкременттік моделі қызмет ете алады, оған сәйкес әзірленетін бағдарламалық қамтамасыз ету жүйесі дәйекті өсімдермен құрылады. Бірінші жүйе функционалдық мүмкіндіктері шектеулі түпкілікті өнімнің оңайлатылған нұсқасы болып табылады. Осы нұсқаны тестілеу және оны болашақ пайдаланушылар бағалағаннан кейін оған қосымша мүмкіндіктер қосылады және ол қайтадан тестіленеді.
Ең танымал жобалау әдісі-төмендеу жобалау. Оның мәні-бұл тапсырма шағын, оңай шешілетін тапсырыстарға бөлінеді. Төмендеу жобалауды қолдану нәтижесінде иерархиялық жүйе шығады, оны бағдарламалау императивті парадигмасына сәйкес модульдік құрылымға жиі түрлендіруге болады.
Жоғары жобалау кезінде жүйені құру жүйенің жекелеген міндеттерін анықтаудан және осы міндеттерді шешу неғұрлым күрделі міндеттерді шешу үшін абстрактілі құралдар ретінде қалай пайдаланылатынын талқылаудан басталады.
Ашық бағдарламалық өнімдерді әзірлеу. Бұл әдісті көптеген жылдар бойы компьютерші энтузиасттар пайдаланды, ал енді бағдарламалық жасақтаманы әзірлеудің заңды әдісі деп танылды. Шындығында, бұл әдістеме эволюциялық макеттеудің бір түрі болып табылады, бірақ дәстүрлі тәсілге қарағанда макеттеу ашық жүзеге асырылады. Бұл әдістеме ашық бастапқы мәтінді дамыту деп аталады.
Кейбір мағынада ашық бағдарламалық өнімдерді әзірлеу бета-тестілеудің кеңеюі болып табылады (ол төменде қаралған), бірақ бұл ретте бета-нұсқасының сынаушысы оны түрлендіре алады және қарапайым бета-тестілеуде сияқты пайда болған мәселелер туралы ғана емес, жасалған өзгерістер туралы хабарлай алады. Ашық бағдарламалық өнімдерді құру процесі келесі кезеңдерден тұрады: автор бағдарламаның бастапқы нұсқасын жазады (әдетте оған қажетті әрекеттерді орындайтын) және бастапқы кодты және құжаттаманы басқа бағдарламашылар көшіріп ала алатын Интернетте орналастырады. Пайдаланушылар өз иелігінде бастапқы коды мен құжаттамасы бар болғандықтан, олар өз қажеттіліктеріне сәйкес бағдарламаны өзгерте және толықтыра алады немесе олар анықтаған қателерді түзете алады. Содан кейін олар жасалған өзгерістер туралы авторға хабарлайды, ол оларды Интернеттегі өнім нұсқасына енгізеді. Осылайша, бұл жаңа кеңейтілген нұсқасы одан әрі түрлендіру үшін қол жетімді болады. Тәжірибе көрсеткендей, бір апта ішінде бағдарламалық жасақтама пакеті бірнеше рет өзгеруі мүмкін.