Бағдарламалық жобаларды басқарудың эволюциялық тәсілдері.
Дәріс №1.
Бағдарламалық инженерияға кіріспе.
Тарихы және негізгі ұғымдар.
Бағдарламалық инженерия бағдарламалық жабдықты өңдеу жүргізу және қолдау кезінде анықталған жүйелі өлшенетін әдістерді қолдану.
Software (бағдарламалық жабдық БЖ) терминін 1958 жылы әлемдегі әйгілі статистик Джон Тьюкей енгізген. Software engineering (бағдарламалық инженерия)термині алғаш рет НАТО конференциясында пайда болды, ол бағдарламалық жабдықтың тоқырау кезеңіне арналған 1968 жылы Германияда өтті. 1990 жылдан 1995 жылдар арасында бағдарламалық жабдықтарды өңдеу үрдістері туралы біріңғай козқарастағы халықаралық стандарт өңдеу жұмысы жүргізілді. Нәтижесінде ISO/IEC 12207 стандарты жасалды.
Бағдарламалау- анықталған мақсаттар жиынын машиналық команда және деректер түрінде бейнелеу үрдісі, және ол компьютерде немесе есептеу кешенінде қойылған мақсаттарға жетуді қамтамасыз етеді.
Мақсаттар әр түрлі болады; ДК динамикасының дыбысын шығару,космостық аппараттың Марстағы ұшу траекториясын есептеу жылдық баланстың есеп беру т.б.
Ең маңыздысы олар анықтылуы тиіс. Осы сұрақты қанша қадап айтқанымен әлі күнге дейін белгілі мақсаты жоқ бағдарламалық жобалар табылады.
Бұл өте қарапайым, мысалы машина командалары мен деректерді перфоктарға перфорациялау. Ал кей кезде өте күрделі және көпсалалы болуы мүмкін, алдымен жүйеге талаптар қойылады, талаптар жоғары деңгейлі архитектура және компоненттер дизайнына,дизайн бастапқы кодқа. Ары қарай бастапқы код компилятор және жинаушы көмегімен ашылу кодына,ашылу коды- БЖ шеңберінде функцияны шақыру(ОЖ, аралық БЖ, деректер базасы), ол көптеген компьютерде орналасады, желіге біріктіріледі, содан соң ғана машина командасы мен деректерге.
Кәсіптік бағдарламалау (бағдарламалау өндірісінің синоеимі)- бағдарламалау көмегімен табыс алуға бағытталған қызмет. Оның жай бағдарламаудан ерекшелігі кейбір тұтынушылар бағдарламалық өнімді қолданғаны үшін толеуге дайын.
Бұдан шығатын маңызды қорытынды кәсіптік бағдарламалау өндірісі ұжымдық қызмет, онда кем дегенде екі адам қатысады; бағдарламашы және тұтынушы.
Кәсіби бағдарламашы- кәсіби бағдарламалаумен айналысатын адам. Кәсіби бағдарламашыны профессионалдан айыру қажет. Бағдарламалаудағы профессионалдың шеберлік өте кең және бағдарлама жазып ақша табушының барлығы шеберлер емес.
Бағдарламалық өнім- бағдарламаны қолдану, жетілдіру, баптау және орнату бойынша құжаттары бар жиынтық [2] стандартқа сәйкес бағдарламаның өмірлік қимылына өңдеу, ашу, қолдау және жүргізу енеді. Егер бағдарламалық өнім жеткілікті күрделі болса, онда оны клиентте ашу жеке жобаны ендіру арқылы жүргізіледі. Жүргізу кезінде жүйедегі криуистік қателер жөнделеді. Қолдау арқылы жаңа функционалдық, талаптар өзгеруіне байланысты бар функционалдылықты қайта өңдеу, өнімді жетілдіру, сондай-ақ БЖ ескертулеріне түзетулер жасалады 1сурет. Бағдарламалық өнімнің өмірлік циклы өнімді жұмыс істеуден және оны қолдау мен жүргізуден алып тастаумен аяқталады.
1Сурет. Бағдарламалық өнімнің өмірлік циклы.
Бағдарламалық жабдықты өңдеу үрдісі- бағдрламалық жабдықтың құрылуы мен дамуын қамтамасыз ететін үрдістер жиынтығы. БЖ өңдеу үрдісінің кеңінен тарағанын “қалай алынады”деп атауға болады. Бұл дегеніміз мұндай үрдіс жоқ деген соң емес. Ол бар және ереже бойынша мүмкін шығындар және сапа деңгейінде БЖ өңдеуді қамтамасыз етеді, бірақ бұл үрдіс құжатталмайды, “білім ойнғы”болып табылады және адамдар арқылы бір ұрпақтан екінші ұрпаққа беріледі. Бұл үрдістің тиімділігін бағалау және жақсарту бойынша мақсатқа бағытталған жұмыс жүргізілмейді.
БЖ өңдеу үрдісінің моделі – БЖ өңдеу үрдісін формула түрінде көрсету. Үрдістерді сипаттаған кезде модель сөзі орнына өте жиі әдістеме термині қолданылады, ол бұл ұғымының ақталмаған кеңейтілуіне жетелейді.
Бағдарламалық жобаларды басқарудың эволюциялық тәсілдері.
Бағдарламалық инженерияның 50 жылдық дамуында БЖ өңдеудің көптеген молделдері жиналды.Ұшу аппараттарын автоматты басқару әдістерінің эволюциясында қолданылатын әдістердің даму тарихын талдау өте қызықты “Қалай болады”. Басқарудың жабық жүйесі. Техникалық кошбасшыларға толық сенімділік. Жобаға бизнес өлілдері қатыспайды. Жоспарлау бар болса, ол тен сөз ғана. Уақытпен бюджет бақыланбайды Аналогия:балистикалық ұшу кері байланыссыз. Бұл ұзақ емес.
“Сарқырама” немесе каскадты модель. Кері байланысты қатаң басқарады. Ті рек траекторисы жоба жоспары ауытқуды өлшеу, түзету және тірек траекториясына қайту есептері.Жақсырақ бірақ тиімсіз.
“Икемді басқару” Тірек траекторисы, ауытқулары есептеу, жаңа траекторияға түсуді, түзетуді және одан шығуды есептеу.”Жоспар тук емес, жоспарлау барлығы”(Эйзенхауэр, Дуайт Дэвид)
“Жиі жабдық әдісі” Өзінжүргізу. Тірек траекториясын, ауытқуды өлшеу, мақсатты нақтылау, жаңа траекторияны есептеу және оған шығу үшін түзетулер енгізу.
Басқарудың классикалық әдістері жұмысын тоқтатады, егер басқарылатын объект қасиеті белгісіз немесе уақыт өтуі барысында өзгеретін болса. Бұл әдістер көмектесе алмайды,егер объектінің ағымдағы қасиеті талап етілген сипаттамалармен қозғалуға мүмкіндік бермесе.
Мысалы, ұшатын аппарат қажетті тиімділікті қамтамасыз етпесе және өнімділікті арттырмаса, онда білікті мамандар жобадан кетіп қалады.
Басқарылатын объектінің қасиетімен құрылымы белгісіз болса, онда басқарылатын объектінің өзгеру қасиеттерін зерттеуге бағытталған адактивті басқаруды қолданған дұрыс. Ұшу аппараттарын басқарумен салыстыру- бұл тірек траекториясын, ауытқулар өзгерісін есептеу, мақстты нақтылау, объектті басқаруды нақтылау, адаптациясы т.б. Объект құрылымы мен қасиетін түсіну және қалаған жағдайға келтіру мақсатында әсер ету үшін, жобада кері байланыстың қосымша контуры болуы тиіс адаптация контуры.
Әртүлі бағдарламалардың өнімділігі де әртүрлі болатындығы белгілі. Және олар он есеге дейін айырмасы болатындығы даусыз. Әлемдегі ең жүйрік адамды мүшекке орап жүгіртсеңіз ол он есе нашар нәтиже көрсетеді. Ең жақсы бағдарламашыны ''сизиф еңбегімен'' жұмыс істеңіз. Методология бұрышына құжаттарды көбейту онда оның өнімділігі 10 есе төмендейді.
Сондықтан жетекші басқару есептерінен басқа жұмысшы тобының өнімділігін арттыру үшін тұрақты түрде басқару объектісінің өзгерістерін білуге күш салуы тиіс: адамдар және олардың өзара әсерлесуі.