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.

Entradas relacionadas: