Osnove inženjerstva programskih sustava i metodologije razvoja
Enviado por Anónimo y clasificado en Otras materias
Escrito el en
serbocroata con un tamaño de 4,16 KB
Definicija softvera i faza definiranja potreba
Softver predstavlja skup računalnih programa i pripadne dokumentacije koji čine funkcionalnu cjelinu namijenjenu rješavanju problema. On uključuje korisničke upute, tehničku dokumentaciju, specifikaciju zahtjeva, testove i sve ostale elemente potrebne za razvijanje, korištenje, održavanje i nadograđivanje sustava.
Faza definiranja potreba provodi se kroz intervjue i analizu navika korisnika, a nastupa nakon etape specifikacije i priče. Kroz razgovor se definiraju ključni zahtjevi i projektni zahtjevi.
Faze razvoja programskog sustava
Glavne faze razvoja uključuju:
- Specifikacija: Definiranje usluga i ograničenja sustava.
- Dizajn i izgradnja: Modeliranje podataka, izrada korisničkog sučelja te arhitektura web i mobilnih aplikacija.
- Validacija: Provedba unit, end-user i acceptance testova.
- Evolucija: Kontinuirano dodavanje novih funkcionalnosti.
Legacy sustavi: Izazovi i rizici
Legacy sustavi su socio-tehnički sustavi razvijeni starim tehnologijama. Iako su ključni za poslovanje, njihovo gašenje ili mijenjanje predstavlja velik rizik. Karakterizira ih stari hardver, zastarjeli programski jezici i alati koje poznaje mali broj ljudi, dok su poslovna pravila u kodu nakupljana tijekom godina.
Mane legacy sustava:
- Ograničeno uvođenje novih poslovnih procesa.
- Visoka potrošnja budžeta.
- Ovisnost o zastarjeloj tehnologiji.
- Povećan rizik od kvarova i problemi sa sigurnošću.
- Znanje o sustavu često se nalazi isključivo u glavama starih zaposlenika.
Metodologije razvoja: Waterfall i Agilni pristup
Waterfall model
Slijedi strogi redoslijed: definiranje potreba, dizajn sustava, implementacija i testiranje elemenata, integracija i testiranje sustava te konačno korištenje i održavanje.
Agilni pristup
Temelji se na agilnom planiranju, radu razvojnih timova unutar zadanih vremenskih okvira i korištenju korisničkih priča. Ključni elementi su:
- Iterativni i inkrementalni razvoj.
- Prototipiranje i kontinuirana integracija.
- Kontinuirana povratna informacija.
- TDD (Test Driven Development) i refaktoriranje.
SCRUM okvir
Uključuje specifične ceremonije kao što su: sprint, planiranje sprinta, dnevni scrum, pregled sprinta i retrospektiva sprinta.
STLC i strategije testiranja
STLC (Software Testing Life Cycle) obuhvaća faze planiranja, dizajniranja testova, izvršavanja testova, analize rezultata i zatvaranja testiranja.
Unit testiranje
- Prednosti: Otkrivanje grešaka bliže mjestu nastanka, lakše održavanje koda, veće povjerenje pri refaktoriranju i bolja dokumentiranost.
- Nedostaci: Troši vrijeme ako se logika često mijenja, ne jamči da cijeli sustav radi ispravno (potrebna integracijska i sustavna testiranja) te postoji opasnost od testiranja samo "sretnih puteva" (happy paths).
Black-box i White-box testiranje
- Black-box: Softver se promatra izvana, analiziraju se ulazi i izlazi bez poznavanja unutarnje implementacije. Tester na temelju specifikacije zahtjeva osmišlja testne slučajeve, provjerava funkcionalnost, granične vrijednosti i reakciju na pogrešne izlaze.
- White-box: Fokus je na unutarnjoj strukturi i kodu. Testovi se izrađuju kako bi pokrili puteve i grane u programu, logičke uvjete i petlje, s ciljem postizanja što veće pokrivenosti koda.
Testiranje performansi
Provjerava se brzina, odaziv, propusnost i iskorištenje resursa sustava:
- Testiranje opterećenja (Load testing): Provjera rada pod očekivanim i postepeno povećanim opterećenjem.
- Stres testiranje: Namjerno prekoračenje opterećenja i resursa ili kombiniranje nepovoljnih uvjeta kako bi se ispitala stabilnost.