Softversko inženjerstvo

sistematska primjena inženjerskih pristupa razvoju softvera

Softversko inženjerstvo je sistematska primjena inženjerskih pristupa razvoju softvera.[1][2][3] Softverski inženjering je direktno potpolje inženjerstva i preklapa se s računarskom i upravljačkom naukom.[4] Također se smatra dijelom cjelokupnog sistemskog inženjeringa.

U IEEE rječniku terminologije softverskog inženjeringa stoji da je to "primjena sistematskog, disciplinskog, mjerljivog pristupa razvoju, upravljanju i održavanju softvera"[5]

Historija

uredi

Prvi digitalni računari 1940-tih godina su instrukcije za rad imali već unaprijed isprogramirane. To se pokazalo nepraktično i ubrzo je osmišljen dizajn "arhitekture pohranjenog programa" poznat kao von Neumannova arhitektura. Tu je nastala podjela između "hardvera" i "softvera" gdje se apstrakcijom rješavala složenost računanja.

Programski jezici počeli su se pojavljivati u ranim 1950-im[6] što je bio dodatni iskorak u apstrakciji. Glavni jezici kao što su Fortran, ALGOL i COBOL objavljeni su krajem 1950-ih kako bi se bavili naučnim, algoritmičkim i poslovnim problemima. David Parnas predstavio je ključni koncept modularnosti i skrivanja informacija 1972. godine[7] kako bi pomogao programerima u rješavanju sve veće složenosti softverskih sistema.

Godine 1984. osnovan je Institut za softverski inženjering (Software Engineering Institute – SEI) kao centar za istraživanje i razvoj. Watts Humphrey osnovao je SEI Software Process Program, usmjeren na razumijevanje i upravljanje procesom softverskog inženjeringa.

Savremene i općeprihvaćene najbolje prakse za softverski inženjering se objedinjuju u ISO/IEC JTC 1/SC 7 standardu, koje objavljuje SWEBOK.[8]

Kontroverze

uredi

Edsger Dijkstra, osnivač mnogih koncepata u razvoja softvera, odbacio je ideju "softverskog inženjeringa" sve do svoje smrti 2002. godine.[9]  

Polja

uredi

Proces inženjeringa softvera se obično sastoji iz više faza, definisanih na različite načine, ali u osnovi se sastoji od:

Softverski zahtjevi

uredi

Inženjering zahtjeva odnosi se na prikupljanje, analizu, specifikaciju i potvrdu zahtjeva za softver.

Dizajn softvera

uredi

Dizajn softvera odnosi se na proces definisanja arhitekture, komponenti, interfejsa i drugih karakteristika sistema ili komponente. To se naziva i softverska arhitektura.

Razvoj softvera

uredi

Razvoj softvera jest glavna aktivnost izgradnje softvera,[1][10] kombinacija programiranja, provjere, testiranja softvera i uklanjanje grešaka. Proces razvoja softvera jest definicija, implementacija, procjena, mjerenje, upravljanje, i poboljšanje samog procesa životnog ciklusa softvera. Oslanja se na upravljanje konfiguracijom softvera koje se odnosi na sistemsku kontrolu promjena u konfiguraciji i održavanje integriteta i praćenja konfiguracije i koda tokom životnog ciklusa sistema. Savremeni procesi koriste softversko verzioniranje.

Testiranje softvera

uredi

Testiranje softvera[1][10] jest empirijsko, tehničko istraživanje koje se provodi kako bi se pružile informacije o kvaliteti proizvoda ili usluge koja se testira. To je jedan aspekt kvalitete softvera.

Održavanje softvera

uredi

Održavanje softvera[1][10] odnosi se na aktivnosti potrebne za pružanje ekonomične podrške nakon izdavanja softverskog proizvoda.

Također pogledajte

uredi

Reference

uredi
  1. ^ a b c d Abran et al. 2004
  2. ^ ACM (2007). "Computing Degrees & Careers". ACM. Arhivirano s originala, 17. 6. 2011. Pristupljeno 23. 11. 2010.
  3. ^ Prazna referenca (pomoć)
  4. ^ https://www.dagstuhl.de/Reports/96/9635.pdf
  5. ^ IEEE Standard Glossary of Software Engineering Terminology, IEEE std 610.12-1990, 1990.
  6. ^ Campbell-Kelly, Martin (april 1982). "The Development of Computer Programming in Britain (1945 to 1955)". IEEE Annals of the History of Computing. 4 (2): 121–139. doi:10.1109/MAHC.1982.10016.
  7. ^ Parnas, David (decembar 1972). "On the Criteria To Be Used in Decomposing Systems into Modules". Communications of the ACM. 15 (12): 1053–1058. doi:10.1145/361598.361623. Arhivirano s originala, 20. 8. 2007. Pristupljeno 26. 12. 2008.
  8. ^ "ISO/IEC TR 19759:2005". Pristupljeno 1. 4. 2012.
  9. ^ Dijkstra, E. W. (1988). "On the cruelty of really teaching computing science". Pristupljeno 10. 1. 2014. CS1 održavanje: nepreporučeni parametar (link)
  10. ^ a b c "Software Engineering Body of Knowledge (SWEBOK Version 3), 2014" (pdf). www.swebok.org. IEEE Computer Society. Pristupljeno 24. 5. 2016.

Literatura

uredi

Vanjski linkovi

uredi