Metodologije razvoja softvera: koncepti, načela, metode i faze razvoja

Kako stvoriti softver? Koji su stručnjaci vođeni u svojim aktivnostima? Važne metodologije za razvoj softvera važne su u ovom području. Neke ćemo ih raspraviti u ovom članku, detaljno se usredotočujući na zadatke, faze, važna načela i razlike tih metodologija.

Što je to?

Počnimo s člankom o definiciji. Metodologija razvoja softvera je skup načela, sustava ideja, koncepata, metoda, metoda i alata koji u konačnici određuju stil razvoja softvera. Drugim riječima, ovdje je metodologija provedba određenog standarda. Ono što je važno napomenuti, ovdje se preporučuju standardi, a ne naručeni, kao što bi i trebali biti. Dakle, pred tvorcem je očuvana sloboda izbora, adaptacija teorije. Specifični proizvodi se implementiraju kroz metodologiju razvoja softvera. Ona će odrediti kako će stručnjak obavljati svoj posao. Danas postoji mnogo takvih metodologija - glavnih koje ćemo razmotriti tijekom gradiva. Kakav utjecaj na njihov izbor ima samo jedan? Razlikuju se veličina tima, složenost i specifičnost pojedinog projekta, zrelost i stabilnost procesa u poduzeću-poslodavcu, osobne preferencije kreatora.


Dakle, metodologija je srž teorije upravljanja razvojem bilo kojeg softvera. U prošlosti su primijenili klasifikaciju koja je metodologije podijelila na dvije vrste: iterativni i vodopad (na temeljuprimjenjeni modeli životnog ciklusa). Danas se koristi moderna opća klasifikacija, koja je također podijeljena u dvije skupine: predvidljiva i prilagodljiva. Upoznajte se s njima detaljnije.

Metodologija predviđanja

Koji su podaci metodologija razvoja softvera? To su sorte koje su usmjerene na detaljno planiranje budućnosti. Zadaci i resursi poznati su tijekom cijelog trajanja projekta. Stoga će radnom timu biti teško odgovoriti na neočekivane promjene.


Plan se sastoji od sastava potrebnog rada, zahtjeva prema njima. Stoga promjena zahtjeva dovodi do promjene cijelog plana, dizajna dizajna. Za predviđene metodologije obično se radi o posebnom odboru koji upravlja promjenama tako da projekt uzima u obzir samo najvažnije zahtjeve.

Prilagodljive metodologije

Koja je posebnost tih metodologija za razvoj računalnog softvera? One su već usmjerene prema prevladavanju očekivane nesavršenosti, nepotpunosti zahtjeva i stalnoj promjeni posljednjeg. Sukladno tome, promjena zahtjeva bit će zamijenjena timom programera. Točan plan metodologije prilagodbe razvija se samo u bliskoj budućnosti. Planovi koji su udaljeniji od stvarnosti događaja postoje u obliku deklaracija o svrsi rada, njegovim rezultatima i očekivanim troškovima.

Fleksibilne metodologije

Fleksibilne metodologije za razvoj softvera - engleski. Razvoj agilnog softvera. Odatle drugo ime: agilne metode. Fleksibilne metodologije razvoja softvera sukompleks pristupa razvoju softvera, usredotočen na korištenje iterativnog razvoja, dinamičko oblikovanje zahtjeva za projekt, osiguravanje provedbe kraja kontinuirane interakcije unutar radnih samoorganiziranih skupina, sastavljenih od stručnjaka različitih profila.
Prije svega, to je djelotvorna praksa rada malih timova koji se bave istom vrstom kreativnog rada. U kombinaciji s kombiniranom (demokratskom i liberalnom) metodom upravljanja. Fleksibilne metodologije za razvoj softvera usmjerene su na minimiziranje rizika dovodeći zajednički projekt u kompleks kratkih ciklusa (tzv. Iteracija), od kojih svaki traje 2-3 tjedna. Iteracija je mali programski projekt koji uključuje sve zadatke za pružanje funkcionalnog mini-rasta. Kao takav: planiranje, analiza zahtjeva, projektiranje, programiranje, razvojno testiranje, dokumentacija. Naravno, odvojena iteracija ovdje nije dovoljna za oslobađanje konačnog proizvoda. Ovo je drugo značenje. Do kraja svake iteracije, fleksibilni softverski proizvod je spreman. Također, na kraju razdoblja, tim mora izvršiti ponovnu procjenu razvojnih prioriteta. Tijekom svake iteracije (faze razvoja softvera) naglasak se stavlja na izravnu komunikaciju stručnjaka "licem u lice". Većina timova nalazi se u jednom uredu. Budite sigurni da imate "kupca" - opunomoćenika koji postavlja zahtjeve za razvoj. Ovom ulogom upravlja upraviteljprojekt, klijent-klijent, poslovni analitičar. Ured također može uključivati ​​testere, tehničke pisce, dizajnere sučelja itd.
Ovdje je glavni pokazatelj krajnji proizvod. Osim toga, izravna komunikacija stručnjaka je da postoji relativno mala količina prateće pisane dokumentacije.

Agilni manifest

Pogledajmo osnovne standarde razvoja softvera. Prvi je skup razvojnih procesa nazvan Agile. On je definiran Agilnim manifestom. Važno je napomenuti da Agile ne uključuje neke praktične savjete, ali sadrži vrijednosti i načela koja bi trebao biti vođen timom developera u svom radu. Agilni manifest razvijen je i usvojen od 1. do 13. veljače 2001. na skijalištu u planinama Utah. Sadrži 4 glavne ideje i 12 načela timskog rada bez jednog praktičnog odbora. Zamislite osnovne ideje moderne metodologije razvoja softvera:
  • Interakcija i ljudi su najvažniji alati i procesi.
  • Radni proizvod je iznad sveobuhvatne dokumentacije.
  • Suradnja s klijentom najvažnija je usklađenost pojedinačnih ugovornih uvjeta.
  • Spremnost tima za promjenu važnija je od donošenja početnih planova.
  • Također u Agilnom manifestu, naznačena su sljedeća načela aktivnosti razvojnog inženjera:
  • Zadovoljavanje zahtjeva klijenata zbog neprekidne rane dostave vrijednih.
  • Čestitamo na promijenjenim zahtjevima i nakon završetka projekta. Uostalom, to može povećati njegovu konkurentnost.
  • Česte isporukeradni softver - svaki tjedan.
  • Projekt zapošljava motivirane pojedince, koji imaju udobne radne uvjete, povjerenje i podršku.
  • Dnevna tijesna interakcija između korisnika i razvojnog tima.
  • Softver će biti najbolja mjera napretka.
  • Korisnici, sponzori i programeri moraju održavati odabrani tempo na neodređeno vrijeme.
  • Kontinuirana pozornost na poboljšanje dizajna proizvoda, tehničkih zahtjeva.
  • Jednostavnost je umijeće neučestvovanja u suvišnom radu.
  • Stalna prilagodba promjenjivim uvjetima djelovanja. Programeri bi trebali stalno pronaći načine kako poboljšati svoju izvedbu, slijedite ih kasnije.
  • Model vodopada

    Iz fleksibilne manifestacije metodologije razvoja softvera prelazimo na novi tip. Model vodopada - "vodopad" ili kaskadni model. Jedna od najstarijih metodologija. To uključuje sekvencijalno prolaženje faza razvoja softvera, od kojih bi svaka trebala završiti prije početka sljedećeg.

    Zbog takve rigidnosti lako je upravljati projektom u skladu s ovom metodologijom. Cijena i vrijeme razvoja su unaprijed određeni, zašto je posao brz. No važno je zapamtiti i ovaj aspekt: ​​kaskadni model daje odličan rezultat samo u projektima s unaprijed definiranim jasno definiranim zahtjevima, metodama njihove implementacije. Ovdje stručnjaci nemaju priliku "vratiti", jer testiranje počinje tek nakon završetka faze. Ako izbor takvog modela nije dobro utemeljenza proizvod, tada se izlaz može vidjeti sa značajnim nedostacima. Uostalom, njihova prisutnost bit će poznata nakon završetka posla zbog strogog slijeda aktivnosti. Popravljanje pogrešaka ovdje je prilično skupo. Za pokretanje zakrpe morate pričekati kraj razvoja.
    Stručnjaci savjetuju korištenje metodologije "vodopad" u sljedećim slučajevima:
  • Zahtjevi projekta su poznati, shvaćeni i fiksirani. Među njima nema proturječja.
  • Nema problema u traženju kvalifikacija programera.
  • Projekt je relativno mali.
  • V-model

    Faze razvoja softvera također su konzistentne. Ova značajka V-Model "naslijeđena" od "vodopada". Osobito dobar za one sustave gdje je potreban glatki rad. Dobar primjer je izrada aplikativnog softvera za klinike za kontinuirani nadzor pacijenata. Ili softver koji kontrolira zračne jastuke u vozilima. Ili aplikaciju za mobilnog operatera, namijenjenu uštedi troškova korisnika za roaming u inozemstvu. Projekt se provodi u isto vrijeme na jasnim točkama kreativnog zadatka. Međutim, značajnu ulogu ima i pravovremeno testiranje: funkcionalno, integracijsko, učitavajuće, user-friendly sučelje. Kada je potrebno koristiti ovu metodologiju za razvoj:
  • U slučajevima kada je potrebno pažljivo testiranje proizvoda.
  • Za male i srednje projekte s dobro definiranim zahtjevima.
  • Vuvjeti kada su dostupni inženjeri, ispitivači određene kvalifikacije.
  • Inkrementalni model

    U ovoj tehnologiji razvoja softvera, složeni zahtjevi sustava podijeljeni su na kompilaciju. Drugim riječima, to je opis stupnjevane gradnje. Nekoliko ciklusa razvoja projekta nalazi se u kompleksu koji se naziva "multi-vodopad". Ciklus je, zauzvrat, podijeljen u zasebne module koji se lako kreiraju. Svaki od njih prolazi kroz faze zahtjeva definiranja, dizajna, implementacije, testiranja, kodiranja. Posebnost je u tome što se na prvom velikom stupnju izdaje osnovni model razvoja. Zatim se dodaju koraci - nove funkcije. Takav se proces nastavlja sve dok se ne stvori cijeli kompleks. Dodatni model je dobar tamo gdje su pojedinačni zahtjevi za promjenama jasni, mogu se jednostavno formalizirati i provesti. Opišite slučajeve u kojima je uporaba inkrementalnog modela opravdana:
  • Jasno definirani i razumljivi zahtjevi za konačni proizvod.
  • Dopušteno je precizirati neke pojedinosti tijekom vremena.
  • Postoji nekoliko rizičnih ciljeva.
  • Potreban je rani zaključak na tržištu.
  • RAD model

    Odmah zapazite da je RAD model jedna od varijanti inkrementalnog modela. Komponente ili funkcije programa razvijaju istovremeno nekoliko timova profesionalaca. Rezultat je nekoliko mini-projekata. Vrijeme za stvaranje svakog od njih je strogo ograničeno. Svi moduli su u općem radnom prototipu. Sustav je dobar jer pomaže brzo predstaviti kupcaPregledajte radni proizvod, koji zatim možete napraviti niz promjena. Proces razvoja softvera ovdje uključuje nekoliko koraka:
  • Poslovna simulacija. To je definicija tokova informacija između spektra jedinica.
  • Simulacija informacija. Podaci prikupljeni u prvoj fazi koriste se za identifikaciju subjekata potrebnih za cirkulaciju informacija.
  • Modeliranje procesa. Tijekom ove faze, informacijski tokovi povezuju određene objekte kako bi postigli cilj razvoja.
  • Izrada programa. Ovdje koristimo automobilske sklopove za pretvaranje dizajnerskih uzoraka u kod.
  • Testiranje. Provjera novih komponenti i sučelja.
  • Koristite ovu metodu razvoja softvera samo kada u timu postoje visokoobrazovani i "uski" stručnjaci. Proračun projekta svakako je velik: potrebno je platiti rad stručnjaka, trošak gotovih alata automatske montaže. Model je odabran s pouzdanim poznavanjem ciljnog poslovanja u slučajevima kada je potrebno kratke rokove gotovog proizvoda predstaviti u roku od 2-3 mjeseca.

    Iterativni model

    Sljedeći primjer organizacije za razvoj softvera je iterativni (ili iterativni model). Osobitost projekta je da ne zahtijeva potpunu specifikaciju zahtjeva za početak njegove implementacije. Kreiranje započinje dizajnom baze podataka, koja bi trebala biti osnova za određivanje daljnjih zahtjeva. Verzija u ovom slučaju može biti posve neprikladna. Glavni je uvjet da radi.Programer razumije i vidi krajnji cilj posla. On mora nastojati osigurati da svaki korak njegove aktivnosti bude produktivan, a svaka stvorena verzija je djelotvorna. Iz nekog razloga, stvaranje ovdje podsjeća na stvaranje slike: crtež se prvo iscrtava, zatim se puni cvijećem, dodaju se detalji, zasićenost, nijanse prijelaza, posljednji dodiri - i proces je završen. Nešto nalikuje inkrementalnom modelu? Pogledajmo razliku. Prema inkrementalnoj metodologiji, proizvod se sastoji od dijelova, a funkcionalni softver je sastavljen, što se naziva, u bitovima. Ali u isto vrijeme svaki je dio već sastavni element. A "komadići" u iterativnom modelu nemaju autonomiju. Još jedan od živih primjera razvoja softvera iz ove metodologije je uređaj za prepoznavanje glasa. Sve je počelo s pripremom znanstvene baze. Tada je prikupljena potrebna dokumentacija. S svakim novim razvojem povećala se kvaliteta opreme. Ali još nije dostigla idealnu razinu. Dakle, projekt još nije dovršen. Korištenje iterativnog modela opravdano je u sljedećim slučajevima:
  • Zahtjevi za konačnu verziju razvoja jasni su i jasno definirani.
  • Projekt je vrlo velik.
  • Glavni zadatak je unaprijed određen. Ali poboljšajmo njezine detalje, promijenimo proces rada.
  • Spiralni model

    Spiralni model u velikoj mjeri podsjeća na prethodni. Međutim, fokus je na još jednom zadatku razvoja softvera - procjeni rizika. Većina ove metodologije može se koristiti za rješavanje kritičnih pitanjaposlovne zadatke, kada neuspjeh projekta može ozbiljno oštetiti poslovanje tvrtke. Spiralni model široko se koristi u izdavanju novih linija softvera, ako je potrebno, za provođenje znanstveno-istraživačkih projekata, praktično testiranje. Svaki od "zavoja spirale" prolazi kroz četiri faze:
  • Planiranje.
  • Analiza rizika.
  • Konstrukcija.
  • Procjena rezultata. Ako je pozitivan, onda se programer seli u novu "nit" projekta.
  • Spiralni model ne bi se trebao koristiti za male proračunske projekte. Naprotiv, pogodnije je za velike i skuplje. Dobar primjer korištenja metodologije za razvoj sustava za bankarsku cirkulaciju dokumenata. Ovdje se mnogo pozornosti posvećuje ne samo samom programiranju, nego i analizi svakog već proizvedenog "okreta".

    LD

    Takozvani sofisticirani razvoj softvera. To je jedna od grana fleksibilne metodologije, koju smo prethodno rastavili. Glavna prednost LD-a: održavanje visokog moralnog i funkcionalnog stanja stručnjaka. To je osobito sljedeće:
  • Poticanje svakog zaposlenika na posebno uspješnu aktivnost.
  • Sadašnji ciljevi projekta mijenjaju se samo u slučaju krajnje nužde ili na zahtjev kupca.
  • Stroga provedba plana. Super-rad se smatra znakom gubitka vremena i resursa.
  • Provedba općeg koncepta aktivnosti: "Široko razmišljanje, brza pogreška, malo posla, brzo učenje".

    XP

    Vrlo zanimljiv primjer je metodologija tzv. Ekstremaprogramiranje. Što je ovdje skriveno? To je razvoj u uvjetima stalno mijenjajućih zahtjeva za proizvod. Smjer metodologije ima sljedeće karakteristične značajke:
  • "Planiranje igre". Na početku rada predstavljen je samo okvirni plan. Sa svakim zaokretom razvoja povećava se njegova oštrina.
  • Velika učestalost ispuštanja. To znači da će nova verzija imati samo malu razliku u odnosu na prethodnu verziju, ali će njezino izdanje trajati minimalno.
  • Kontakt s klijentom. Za sljedeću metodologiju važno je brzo ispuniti sve zahtjeve kupca - odmah odgovoriti na sve njegove komentare i želje.
  • Refactoring. Kvaliteta koda se poboljšava bez smanjenja njegove funkcionalnosti.
  • Standardno izvršavanje koda. Na licu mjesta ili slijedeći opća pravila ili nedostatak odstupanja u procesu razvoja.
  • Kolektivna odgovornost. Dakle, svaki član tima je zauzet određenim područjem rada. Ali za cjelokupni rezultat cijeli tim je već odgovoran.
  • FDD

    I posljednja metodologija u našem članku. Ona pruža skalabilnost i ponovljivost. No, u isto vrijeme ohrabrio je kreativni pristup, primjenu u radu inovacija. Glavna načela metodologije su sljedeća:
  • Razvoj svakog većeg projekta sustavna je aktivnost.
  • Svi procesi trebaju biti jednostavni i dobro osmišljeni.
  • Logika i vrijednost svakog procesa trebaju razumjeti svi članovi tima.
  • Prednosti su kratki ciklusi razvoja softvera. To vam omogućuje da smanjite iznospogrešaka, a istovremeno povećava funkcionalnost.
  • Vrijednost metodologije i činjenica da ona jasno regulira duljinu procesa. U tom slučaju, organizacijska pitanja u svakom ciklusu ne bi trebala biti potrošena više od 25% vremena. Preostalih 75% služi isključivo za razvoj, kompilaciju i testiranje funkcionalnosti. Završit ćemo s osnovnim razvojem softvera. Kao što ste vidjeli, značajke svake od njih omogućuju vam da odaberete odgovarajuću metodologiju za uspješnu provedbu najrazličitijih projekata.

    Povezane publikacije