Analiza primene agilnih metodologija u softverskim organizacijama vojvodjansk...Positive
Rad objavljen na Infotehu 2014,
Primena ovih metodologija smatra se neophodnim za očuvanje konkurentske prednosti IT kompanija koje se bave softverom i stoga je veoma važno proveriti da li se ove metodologije koriste, u kojoj meri i na koji način, na domaćem tržištu.
Analiza primene agilnih metodologija u softverskim organizacijama vojvodjansk...Positive
Rad objavljen na Infotehu 2014,
Primena ovih metodologija smatra se neophodnim za očuvanje konkurentske prednosti IT kompanija koje se bave softverom i stoga je veoma važno proveriti da li se ove metodologije koriste, u kojoj meri i na koji način, na domaćem tržištu.
1. 6.3. Концепти развоја рачунарског софтвера
Развој софтвера је процес који се користи за осмишљавање,
спецификацију, пројектовање, програмирање, документовање,
тестирање и исправку грешака у циљу креирања и одржавања
апликација или других софтверских компоненти.
Развој софтвера укључује и истраживање, нови развој, израду
прототипа, модификовање, поновну употребу, реинжењеринг,
одржавање или било које друге активности које резултирају
софтверским производима.
Како је софтвер одређена врста производа, то има и свој
животни циклус којим се описује његов живот од почетка
израде до његовог крајњег коришћења и одржавања.
2. 6.3. Концепти развоја рачунарског софтвера
Са појавом првих рачунара, софтвер је био врло једноставан и
програмери су могли да га стварају директно само писањем
програмског кôда.
Повећавањем сложености софтвера, додавање нових
функционалности је постајало све теже, као и проналажење и
отклањање грешака.
Како би се тај проблем превазишао увоедене су методологије
развоја. Под методологијом се подразумева дисциплина у
процесу развоја која има за циљ бољу предвидљивост и већу
ефикасност развоја софтвера.
3. 6.3. Концепти развоја рачунарског софтвера
Пре него што се почне са израдом софтвера, посебно уколико
се ради о сложеном проблему, неопходно је спровести анализу
система.
Под анализом система се подразумева сагледавање проблема
и његово разлагање на потпроблеме који су разумљиви и
решиви. Посебна пажња у анализи се мора посветити везама
између потпроблема, јер оне могу бити кључни фактор у
налажењу комплетног решења.
Након што се проблем разложи на потпроблеме који могу да се
реше (са јасно дефинисаним међусобним везама), приступа се
синтези решења.
Сваки потпроблем се најпре самостално решава, а затим се од
добијених парцијалних решења формира комплетно решење
проблема.
4. 6.3. Концепти развоја рачунарског софтвера
Сваки проблем који се решава, може се решити на више начина.
Начини се међусобно разликују по ефикасности, прецизности,
разумљивости, корисности, могућности модификовања и другим
особинама. Стога, израда софтвера захтева поседовање знања
и вештина. Основни циљ у изради софтвера јесте да софтвер
буде свеобухватан, стабилан, разумљив, да се лако одржава и
ради ефиксано оно због чега је направљен.
Развој софтвера је подељен у више фаза:
У фази анализе и дефинисања захтева развојни тим, заједно
са корисницима, утврђује захтеве које систем треба да
задовољи. Разултат ове фазе је листа корисничких захтева.
Фаза пројектовања система генерише пројекат система који
даје план решења. План укључује компоненте и алгоритме који
ће бити коришћени, као и архитектуру система.
5. 6.3. Концепти развоја рачунарског софтвера
У фази пројектовања програма се дефинишу подпројекти погодни за
програмску реализацију. Сваки подпројекат представља један модул са
датом функционалношћу.
Израда програма је фаза директне израде софтвера у којој програмери
пишу програмски кôд према урађеном пројекту.
Приликом тестирања програма развојни тим се бави налажењем и
исправљањем грешака у систему. Након писања програма, најпре се
тестирају индивидуални делови кôда, тј. појединачни модули, што се
назива јединичним тестирањем. Затим се врши интеграционо тестирање
током кога се модули повезују у једну целину. На крају следи завршно
тестирање у коме се проверава да ли систем испуњава постављене
захтеве корисника.
У фази испоруке система систем се испоручује наручиоцу, софтвер се
инсталира у радном окружењу и обавља се обука непосредних
корисника.
Одржавање је дуготрајна фаза у којој се исправљају грешке у систему
које се јављају након његове испоруке. Такође се ради и на даљем
унапређењу појединих делова система у складу са захтевима корисника
или променама у окружењу.
6. 6.3. Концепти развоја рачунарског софтвера
Процес развоја софтвера представља сваки опис развоја
софтвера који садржи неке од набројаних фаза, организованих
тако да производе одговарајући исправан и проверен програмски
кôд.
Увођење планирања у процес развоја софтвера према задатим
фазама довело је до настанка традиционалних метода
моделовања.
Најпознатије су следеће традиционалне методе моделовања:
• Каскадни модел
• Вe (V) модел
• Фазни развој (који може бити инкрементални и итеративни)
• Прототипски модел
• Трансформациони модел
• Спирални модел и
• RUP (Rational Unified Process)
7. 6.3. Концепти развоја рачунарског софтвера
Поред традиционалних постоје и савременије, тзв. агилне
методе развоја софтвера, од којих су најпознатије
• XP (Extreme Programming - екстремно програмирање),
• Scrum,
• Crystal и
• ASD (Adatptive Software Development – адаптивнои развој
софтвера).
8. 6.3. Концепти развоја рачунарског софтвера
Софтверска архитектура програма или рачунарског система
представља системску структуру која обухвата софтверске
компоненте, њихова спољашња видљива својства и релације
између тих компонената.
Нема прецизне дефиниције самог појма софтверске
архитектуре. Сама дисциплина је заснована на идеји
смањења сложености коришћењем механизама апстракције
и раздвајања основног проблема који се решава на логичком
нивоу, од детаља његовог извршавања на рачунару.
Софтверска архитектура је уобичајено организована у тзв.
погледе (views).
9. 6.3. Концепти развоја рачунарског софтвера
Погледи су аналогни различитим типовима планова који се
користе у класичној архитектури и градитељству и
представљају начин да се смањи сложеност анализе саме
архитектуре. Тако, могу се разликовати функционални и
логички поглед на софтверску архитектуру, поглед на код и
модуле, структурни и развојни поглед, поглед на
конкурентност, процесе и нити, поглед на физичке компоненте
и распоређивање оперативног окружења, поглед на
корисничке акције, поглед на податке и слично.
Постоји већи број стандарда и језика за опис софтверских
архитектура. Један од најпознатијих је језик за обједињено
моделовање (Unified Modeling Language, UML) који је
дефинисан као стандард за моделовање различитих система,
не само софтверских.