Procesi i zhvillimit të softuerit

**Procesi i zhvillimit softuerik** përshkruan një proces për zhvillimin e softuerëve. Ai zakonisht e ndan një përpjekje të përgjithshme në hapa ose nënprocese më të vogla, të cilat synojnë të sigurojnë rezultate me cilësi të lartë. Procesi mund të përshkruajë rezultate specifike – objekte që duhen krijuar ose përfunduar. 

Edhe pse nuk kufizohet vetëm në të, procesi i zhvillimit të softuerit shpesh i referohet procesit të nivelit të lartë që rregullon zhvillimin e një sistemi softuerik nga fillimi deri në fund të jetëgjatësisë së tij – i njohur si metodologji, model ose kornizë. Cikli jetësor i zhvillimit të sistemit (SDLC) përshkruan fazat tipike nëpër të cilat kalon një përpjekje zhvillimi nga fillimi deri në përfundim të jetëgjatësisë së një sistemi – përfshirë edhe sistemet softuerike. Një metodologji përshkruan se si inxhinierët kryejnë punën e tyre, në mënyrë që sistemi të kalojë nëpër fazat e ciklit të jetës. Metodologjia është një klasifikim i proceseve ose një plan procesi i hartuar për SDLC.

Për shembull, shumë procese mund të klasifikohen si model spirale.

Procesi i softuerit dhe cilësia e softuerit janë të ndërlidhura ngushtë; në praktikë janë vërejtur disa aspekte dhe efekte të papritura.

## Metodologjia 
SDLC nxit përkufizimin e një metodologjie, duke kërkuar që ajo të adresojë fazat e SDLC-së. Në përgjithësi, një metodologji është hartuar për të prodhuar një sistem me cilësi të lartë që përmbush ose tejkalon kërkesat, si dhe dorëzohet në kohë dhe brenda buxhetit, edhe pse sistemet kompjuterike mund të jenë komplekse dhe të përbëhen nga komponentë të ndryshëm. Janë zhvilluar metodologji të ndryshme, duke përfshirë waterfall, spiral, agile, prototipimin e shpejtë, zhvillimin inkremental, dhe sinkronizimin dhe stabilizimin. 

Një ndryshim i madh midis metodologjive është shkalla në të cilën fazat janë sekuenciale kundrejt atyre iterative. Metodologjitë agile, të tilla si XP dhe scrum, përqendrohen në procese të lehta që lejojnë ndryshime të shpejta.  Metodologjitë iterative, të tilla si Rational Unified Process dhe metoda e zhvillimit të sistemeve dinamike, përqendrohen në stabilizimin e fushëveprimit të projektit dhe zgjerimin ose përmirësimin iterativ të produkteve. Modelet sekuenciale ose të dizajnit të madh (BDUF), të tilla si waterfall, përqendrohen në planifikim të plotë dhe të saktë për të udhëhequr projekte më të mëdha dhe për të kufizuar rreziqet për rezultate të suksesshme dhe të parashikueshme.  Zhvillimi anamorfik udhëhiqet nga fushëveprimi i projektit dhe iteracionet adaptive. Në scrum,  për shembull, mund të thuhet se një histori e vetme përdoruesi kalon nëpër të gjitha fazat e SDLC brenda një sprinti dyjavor. Në të kundërt, metodologjia waterfall, ku çdo kërkesë biznesi përkthehet në përshkrime të veçorive/funksioneve të cilat më pas zbatohen të gjitha zakonisht gjatë një periudhe muajsh ose më të gjatë. 

Një projekt mund të përfshijë si një cikël jetësor projekti (PLC) ashtu edhe një SDLC, të cilat përshkruajnë aktivitete të ndryshme. Sipas Taylor (2004), "cikli jetësor i projektit përfshin të gjitha aktivitetet e projektit, ndërsa cikli jetësor i zhvillimit të sistemeve përqendrohet në realizimin e kërkesave të produktit". 

### Historia 
Termi *SDLC* përdoret shpesh si një version i shkurtuar i *metodologjisë SDLC* . Për më tepër, disa e përdorin *SDLC* dhe *SDLC tradicionale* për të nënkuptuar metodologjinë waterfall.

Sipas Elliott (2004), SDLC **origjinon në vitet 1960**, kur u përdor për të zhvilluar sisteme biznesi funksionale në shkallë të gjerë, në një periudhë kur bizneset operonin si konglomerate të mëdha. Aktivitetet e sistemeve të informacionit përqendroheshin kryesisht në përpunimin e sasive të mëdha të të dhënave dhe në rutina të analizimit të numrave.  Metoda e Analizës dhe Projektimit të Sistemeve të Strukturuara (SSADM) u zhvillua për Zyrën e Tregtisë së Qeverisë së Mbretërisë së Bashkuar në vitet 1980. Që atëherë, sipas Elliott (2004), *qasjet tradicionale të ciklit jetësor ndaj zhvillimit të sistemeve janë zëvendësuar gjithnjë e më shumë me qasje dhe korniza alternative, të cilat synojnë të kapërcejnë disa nga mangësitë e natyrshme të SDLC-së tradicionale*. Ideja kryesore e SDLC ka qenë "të ndjekë zhvillimin e sistemeve të informacionit në një mënyrë shumë të qëllimshme, të strukturuar dhe metodike, duke kërkuar që çdo fazë e ciklit jetësor - nga fillimi i idesë deri në dorëzimin e sistemit përfundimtar - të kryhet në mënyrë të ngurtë dhe sekuenciale"  brenda kontekstit të kornizës që po zbatohet.

Metodologji të tjera u shpikën më vonë:

; Vitet 1970

* Programimi i strukturuar që nga viti 1969
* Cap Gemini SDM, me origjinë nga PANDATA, përkthimi i parë në anglisht u botua në vitin 1974. SDM qëndron për Metodologjinë e Zhvillimit të Sistemit.

; Vitet 1980

* Metoda e analizës dhe projektimit të sistemeve të strukturuara (SSADM) nga viti 1980 e tutje
* Analiza e Kërkesave për Informacion/Metodologjia e sistemeve të buta

; Vitet 1990

* Programimi i orientuar nga objektet (OOP) u zhvillua në fillim të viteve 1960 dhe u bë një qasje dominuese e programimit gjatë mesit të viteve 1990.
* Zhvillimi i shpejtë i aplikacioneve (RAD), që nga viti 1991
* Metoda e zhvillimit të sistemeve dinamike (DSDM), që nga viti 1994
* Scrum, që nga viti 1995
* Procesi i softuerit të ekipit, që nga viti 1998
* Procesi i Unifikuar Racional (RUP), i mirëmbajtur nga IBM që nga viti 1998
* Programim ekstrem, që nga viti 1999

; Vitet 2000

* Procesi i Unifikuar Agile (AUP) mirëmbahet që nga viti 2005 nga Scott Ambler
* Ofrimi i shkathët i disiplinuar (DAD) zëvendëson AUP-në

; Vitet 2010

* Korniza e shkathet e Shkallëzuar (SAFe)
* Scrum në Shkallë të Madhe (LeSS)
* DevOps

Që nga DSDM në vitin 1994, të gjitha metodologjitë në listën e mësipërme përveç RUP kanë qenë metodologji te shkathet - megjithatë shumë organizata, veçanërisht qeveritë, ende përdorin procese para-agile (shpesh waterfall ose të ngjashme).

### Shembuj 
Më poshtë janë metodologjitë e shquara që janë të rënditura disi sipas popullaritetit.

; I shkathët

Zhvillimi i softuerëve të shkathët i referohet një grupi kornizash të bazuara në zhvillimin përsëritës, ku kërkesat dhe zgjidhjet evulojnë nëpërmjet bashkëpunimit midis ekipeve ndërfunksionale vetëorganizuese. Termi u shpik në vitin 2001 kur u formulua Manifesti I Shkathet .

; Ujëvara

Modeli i ujëvarës është një qasje zhvillimi sekuencial, në të cilën zhvillimi rrjedh në një drejtim (si ujëvarë) përmes fazave SDLC.

; Spirale

Në vitin 1988, Barry Boehm publikoi një model spiral të zhvillimit të sistemit softuerik, i cili kombinon aspekte kyçe të modelit të ujëvarës dhe prototipimit të shpejtë, në një përpjekje për të kombinuar avantazhet e koncepteve nga lart-poshtë dhe nga poshtë-lart . Ai thekson një fushë kyçe që shumë mendonin se ishte lënë pas dore nga metodologjitë e tjera si: analiza e qëllimshme iterative e riskut, veçanërisht e përshtatshme për sisteme komplekse në një shkallë të gjerë.

; Rritës

Metoda të ndryshme kombinojnë metodologjitë lineare dhe iterative(përsëritëse), me objektivin kryesor të zvogëlimit të rrezikut të natyrshëm të projektit duke e ndarë atë në segmente më të vogla dhe duke siguruar më shumë lehtësi ndryshimi gjatë procesit të zhvillimit.

; Prototipizim

Prototipizimi i softuerit ka të bëjë me krijimin e prototipeve, pra versioneve të pa plota të programit softuerik që po zhvillohet.

; I shpejtë (Rapid)

Zhvillimi i shpejtë i aplikacioneve (RAD) është një metodologji që favorizon zhvillimin iterativ (përsëritës) dhe ndërtimin e shpejtë të prototipeve në vend të sasive të mëdha të planifikimit paraprak. "Planifikimi" i softuerit të zhvilluar duke përdorur RAD është i ndërthurur me shkrimin e vetë softuerit. Mungesa e planifikimit paraprak të gjerë në përgjithësi lejon që softueri të shkruhet shumë më shpejt dhe e bën më të lehtë ndryshimin e kërkesave.

; Formësimi (Shape Up)

Shape Up është një qasje e zhvillimit të softuerëve e prezantuar nga Basecamp në vitin 2018. Është një sërë parimesh dhe teknikash që Basecamp i zhvilloi brenda kompanisë për të kapërcyer problemin e zvarritjes së projekteve pa një fund të qartë. Audienca e saj kryesore e synuar janë ekipet në distancë. Shape Up nuk ka vlerësim dhe ndjekje të shpejtësisë, prapambetje ose sprinte, ndryshe nga waterfall, agile ose scrum . Në vend të kësaj, këto koncepte janë zëvendësuar me appetite, bast dhe cikle. Që nga viti 2022, përveç Basecamp, organizata të shquara që janë adaptuar me Shape Up përfshijnë UserVoice dhe Block.  

; Kaos

Modeli i kaosit ka një rregull kryesor: gjithmonë zgjedh çështjen më të rëndësishme së pari.

; Financim shtesë

Metodologjia e financimit rritës - një qasje iterative.

; I lehtë

Metodologji e lehtë - një term i përgjithshëm për metodat që kanë disa rregulla dhe praktika.

; Analiza dhe dizajni i sistemeve të strukturuara

Metoda e analizës dhe projektimit të sistemeve të strukturuara - një version më specifik i waterfall.

; Programimi i ngadaltë

Si pjesë e lëvizjes më të madhe të ngadaltë, thekson punën e kujdesshme dhe graduale pa presione (minimale) kohore. Programimi i ngadaltë synon të shmangë gabimet dhe oraret tepër të shpejta të lëshimit.

; Modeli V

Modeli-V (zhvillim softuerësh) - një zgjerim i modelit waterfall.

; Procesi i Unifikuar

Procesi i Unifikuar (UP) është një kuadër metodologjik iterativ i zhvillimit të softuerëve, bazuar në Gjuhën e Modelimit të Unifikuar (UML). UP organizon zhvillimin e softuerëve në katër faza, secila prej të cilave përbëhet nga një ose më shumë përsëritje të ekzekutueshme të softuerit në atë fazë të zhvillimit: fillimit, përpunimit, ndërtimi dhe udhëzimit.

### Krahasimi 
Modeli waterfall përshkruan fazat SDLC në mënyrë të tillë që secila të ndërtohet mbi rezultatin e atij të mëparshëm.     Jo çdo projekt kërkon që fazat të jenë të njëpasnjëshme. Për projekte relativisht të thjeshta, fazat mund të kombinohen ose të mbivendosen. Metodologjitë alternative ndaj waterfall përshkruhen dhe krahasohen më poshtë. 

## Proceset e meta-modelit 
Disa modele procesesh janë përshkrime abstrakte për vlerësimin, krahasimin dhe përmirësimin e një procesi specifik të miratuar nga një organizatë.

; ISO/IEC 12207

ISO/IEC 12207 është standardi ndërkombëtar që përshkruan metodën për të zgjedhur, zbatuar dhe monitoruar ciklin jetësor për softuerit.

; Integrimi i Modelit të Pjekurisë së Aftësive

Integrimi i Modelit të Pjekurisë së Aftësive (CMMI) është një nga modelet kryesore dhe bazohet në praktikat më të mira. Vlerësimet e pavarura i vlerësojnë organizatat në bazë të asaj se sa mirë i ndjekin proceset e tyre të përcaktuara, jo në bazë të cilësisë së këtyre proceseve ose softuerit të prodhuar. CMMI ka zëvendësuar CMM-në keto ditë.

; ISO 9000

ISO 9000 përshkruan standardet për një proces të organizuar formalisht për prodhimin e një produkti dhe metodat e menaxhimit dhe monitorimit të progresit. Edhe pse standardi u krijua fillimisht për sektorin e prodhimit, standardet ISO 9000 janë aplikuar edhe në zhvillimin e softuerëve gjithashtu. Ashtu si CMMI, certifikimi me ISO 9000 nuk garanton cilësinë e rezultatit përfundimtar, vetëm se janë ndjekur proceset e formalizuara të biznesit.

; ISO/IEC 15504

ISO/IEC 15504 *Teknologjia e informacionit - Vlerësimi i procesit*, i njohur edhe si Përcaktimi i Aftësisë së Përmirësimit të Procesit të Softuerit (SPICE), është një kornizë për vlerësimin e proceseve të softuerit. Ky standard synon të përcaktojë një model të qartë për krahasimin e proceseve. SPICE përdoret shumë ngjashëm me CMMI. Ai modelon proceset për të menaxhuar, kontrolluar, udhëzuar ose monitoruar zhvillimin e softuerit. Ky model përdoret më pas për të matur atë që një organizatë zhvillimi ose ekip projekti bën në të vërtetë gjatë zhvillimit të softuerit. Ky informacion mund të analizohet për të identifikuar dobësitë dhe për të nxitur përmirësimin. Ai gjithashtu identifikon pikat e forta që mund të vazhdojnë ose të integrohen në praktikën e zakonshme për atë organizatë ose ekip.

; ISO/IEC 24744

ISO/IEC 24744 *Inxhinieria e Softuerëve - Metamodel për Metodologjitë e Zhvillimit*, është një metamodel i bazuar në llojin e modelit për metodologjitë e zhvillimit të softuerëve.

; Metodologjia e sistemeve të buta

Metodologjia e sistemeve të buta është një metodë e përgjithshme për përmirësimin e shumë proceseve të menaxhimit.

; Inxhinieri metodike

Inxhinieria e metodave është një metodë e përgjithshme, që bën përmirësimin e proceseve të sistemit të informacionit.

## Shih edhe 
 
## Referime