From Wikipedia, the free encyclopedia
У софтверском инжењерству, методологија за развој софтвера (позната и као методологија за развој система, развој софтверског животног циклуса, процес развоја софтвера, софтверски процес) је развој софтверског рада у различитим фазама (или фазе) који садржи активности са намерама за боље планирање и управљање. Често се сматра подскупом система развоја животног циклуса. Методологија може укључити пре-дефинисање конкретних резултата и артефаката који су створени и завршени од стране пројектног тима за развој или одржавање апликације.[1]
Уобичајене методологије укључују водопад модел, израду прототипова, итеративни и постепен развој, спирални развој, брз развој апликација, екстремно програмирање и разне врсте агилане методологије. Неки људи сматрају да животни циклус "модела" је општији термин за категорију методологије и "процеса" развоја софтвера а конкретнији назив се односи на конкретан процес по избору одређене организације. На пример, постоје многи специфични процеси развоја софтвера који се уклапају у спирални животни век модела.
Мноштво тих оквира је еволуирало током година, сваки са својим признатим предностима и слабостима. Развојни оквири методологије софтвера није нужно погодан за употребу од стране свих пројеката. Сваки од расположивих методологија оквира су најбољи одговари за специфичне врсте пројеката, на основу различитих техника, организација, пројеката и тимова разматрања.[1]
Организације за развој софтвера спроведе процес методологије да олакша процес развоја. Понекад, извођачи радова могу да захтевају методологију запослених, пример је америчка одбрамбена индустрија, која захтева оцену на основу процеса модела за добијање уговора. Међународни стандард за описивање начина одабира, спровођење и праћење животног циклуса за софтвер је ISO/IEC 12207.
Вишедеценијски циљ је био да пронађу понављање, предвидљиви процеси који побољшавају продуктивност и квалитет. Неки покушавају да систематизују или формализују наизглед весели задатак за дизајнирање софтвера. Други примењују технике управљања пројектима у дизајнирању софтвера. Без ефикасног управљања пројектима, софтверски пројекти могли би лако бити касно испоручени или преко буџета. Уз велики број софтверских пројеката не испуњавају њихова очекивања по питању функционалности, трошкова, или о роковима испоруке,јер ефикасно управљање пројектом изгледа да недостаје.
Организације могу створити групу софтверског инжењерства, што је кључна тачка за побољшање процеса. Састоји се од ресорних практичара који имају различите вештине, група је центар заједничког напора свих у организацији, која се бави побољшањем софтверског инжењерства.
Посебно развојни тим може да пристане на програмско окружење детаља, као што је интегрисано развојно окружење које се користи, и један или више доминантних парадигми програмирања, правила програмирања стила или избор специфичних софтверских библиотека или софтверских оквира. Ови детаљи углавном нису диктирани избором модела или општом методологијом.
Развој методологије софтвера (такође познат као СДМ) није настао до 1960. године. Према Elliott (2004) развој животног циклуса система (СДЛЦ) може се сматрати да је најстарија формализована методологија оквира за изградњу информационих система. Основна идеја СДЛЦ је била "да настави развој информационих система на организован и методичан начин, захтевајући сваку фазу животног циклуса - од настанка идеје до испоруке финалног система - да буде обављан строго и редом[2] примењујући контекст оквира. Главни циљ ове методологије оквира у 1960. био је "да се развије велики обим функционалних пословних система у ери великих пословних конгломерата. Информациони системи активности врти се око тешке обраде података и бројне рутине".[2]
Методологије, процеси, и оквири у распону од специфичних рестриктивних корака који се могу директно користити од стране организације у дан у дан рада, до флексибилних оквирима које организација користи да генерише прилагођени скуп корака прилагођених потребама конкретног пројекта или групе. У неким случајевима "спонзор" или "Одржавање" организација дистрибуира званични скуп докумената који описују процес. Специфични примери укључују:
Неколико развојних софтверских приступа се користи од настанка информационе технологије, у две главне категорије. Типичан приступ или комбинација приступа је изабрано од стране менаџмента или развојног тима.
"Традиционалне" методологије, као што је водопад који имају различите фазе се понекад називају развојем животног циклуса софтвера (СДЛЦ), мада овај термин такође може да се користи уопштено и да се односи на било коју методологију. А "животни циклус" приступ са одвојеним фазама је у супротности са Агиле приступима који дефинишу процес понављања, али где пројектовање, изградња и распоређивање различитих делова може доћи истовремено.
Водопад модел је секвенцијални приступ развоју, у којем се види како развој тече надоле (као водопад) кроз неколико фаза, типично:
Први формални опис метода се често наводи као чланка објављеном од стране Winston W. Royce[3] 1970. године иако Royce није користио термин "Водопад" у овом чланку. Основни принципи су:[1]
Водопад модел је традиционални инжењерски приступ примењен на софтверско инжењерство. Строг приступ водопаду обесхрабрује преглед и проверу било какве фазе након што је завршена. Ова "нефлексибилност" у чистом водопад моделу је био извор критика од стране присталица других "флексибилних" модела. То је велики блам за владине пројекте неколико великих радова преко буџета, током времена и понекад не да испуни захтеве услед великог Дизајн напред приступа. Осим када је уговором потребно, водопад модел је углавном замењен флексибилнијом и развијенијом методологијом за развој софтвера. Погледајте критике водопад модела.
Водопад модел се такође често учи са мнемоником Плес у мраку сваког понедељка, представља анализу, дизајн, имплементацију, тестирање, документацију и извођење и одржавање.
Софтвер прототипа, је развојни приступ активности током развоја софтвера, креирање прототипа, односно непотпуне верзије софтвера се развијају.
Основни принципи су:[1]
Различите методе су прихватљиве за комбиновање линеарних и итеративних методологија развоја система, са примарним циљем сваког да се смањи потенцијални ризик пројекта разбијањем пројекат на мање сегменте и пружање више једноставности током процеса развоја.
Основни принципи су[1]
Итератни развој[4] прописује изградњу која је у почетку мала, али увек веће порције софтверског пројекта да се помогне свима онима који су укључени да открију важне теме рано пред проблемима или неисправне претпоставке које могу довести до катастрофе.
Године 1988, Barry Boehm је објавио развој система софвера као "спирални модел", који комбинује неке кључне аспекет водопад модела и брзу израду прототипова методологије, у настојању да се комбинују предности од врха ка дну и одоздо према горе концепата. Она је дала нагласак у кључној области које су запостављене од стране других методологија: намерно итеративном ризичном анализом, посебно погодном за велики број комплексних система.
Основни принципи су:[1]
Брз развој апликација (РАД) је методологија развоја софтвера, која фаворизује итеративни развој и брзу изградњу прототипова уместо велике количине уп-фронт планирања."Планирање" развоја софтвера користећи РАД је прошарано писање самог софтвера. Недостатак унапред планирања генерално омогућава софтверу да буде написан много брже, и олакшава да се промени захтеве.
Брз развој процеса почиње са развојем прелиминарних модела података и пословних процеса модела који користе структуриране технике. У наредној фази, захтеви се верификују помоћу прототипа, на крају да побољшају моделе података и процеса. Ове фазе се итеративно понављају; даљи развој резултата у "комбинованим пословним захтевима и техничкој дизајн изјави се користи за изградњу нових система".[8]
Термин је први пут употребљен да опише процес за развој софтвера који је увео James Martin 1991. Према писању (2003), то је спајање различитих структурних техника, нарочито подаци Информатичког инжењеринга, са техникама за израду прототипова да убрзају развој софтверских система.[8]
Основни принципи брзог развоја апликација су:[1]
"Агилни развој софтвера" се односи на групу софтверских методологија развоја заснованог на итеративном развоју, где захтеви и решења еволуирају преко сарадње самоорганизујућих крос-функционалних тимова. Термин је настао у 2001. години када је формулисан агилни развој софтвера.
Агилни развој софтвера користи итеративни развој као основу, али се залаже за упаљач и више људи имају оријентисано мишљење традиционалних приступа. Агилни процеси у основи укључе итерацију и континуирану повратну информацију да пружа сукцесивну прераду и да достави софтверски систем.
Постоје многе агилне методологије, укључујући:
"Код и поправка" развој није толико намерно стратегија, као резултат притиска на распореду програмера.[9] Без много дизајна, програмери почињу одмах производњом кода. У једном тренутку, испитивање почиње (често касно у развојном циклусу), а незаобилазни багови онда морају бити поправљени пре него што производ буде испоручен. Програмирање без планираног дизајна је такође познато као каубој кодирање.
Лагана методологија има мали број правила. Неке од ових метода се такође сматрају "агилном".
Остале методологије софтверско пројекта на високом нивоу су:
Неки "процес модели" су апстрактни описи за вредновање, упоређивање и побољшање специфичног процеса усвојеног од стране организације.
Формалне методе су математички приступи решавању софтверских (и хардвера) проблема у захтевима, ниво спецификација и дизајна. Формалне методе се највероватније примењују за безбедност критичног софтвера и система, као што је авионика софтвера. Стандардна безбедност софтвера , као што је DO-178B, DO-178C, и опште критеријумима захтевају формалне методе у највишим нивоима категоризације.
За секвенцијални софтвер, примери формалних метода укључују B-метод, језике који се користе у спецификацијама аутоматизованог доказивања теорема, RAISE, и Z запис.
Формализација развоја софтвера је ситна, на другим местима, уз примену Object Constraint Language (и специјализације, као што је Java Modeling Language), а посебно са модела погон архитектуре дозвољава извршење пројеката, ако не и спецификације.
За истовремено софтвер и систем, Петри мреже, процес алгебре и коначне државне машине (које су засноване на теорији аутомата - види виртуелни коначни аутомат) дозвољавају извршавање софтвера спецификације и може да се користи да изгради и потврди апликацију понашања.
Други настојани тренд у развоју софтвера је да напише спецификацију у неком логичцном облику обично варијација првог реда логике(FOL) -и онда да директно изврши логику као да је програм. Језик OWL , на основу Описне логике (DL), је пример. То је рад на мапирању неке верзије енглеског (или неки други природни језик) аутоматски да и из логике, и извршавање логике буде директно. Примери су Attempto Controlled English и Интернет пословна логика, која не тражи да контролише вокабулар или синтаксу. Карактеристика система који подржавају двосмерно мапирање Енглеске-логике и директно извршење логике је да могу да објасне своје резултате, на енглеском језику, на послу или научном нивоу.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.