Softversko inženjerstvo

S Wikipedije, slobodne enciklopedije
Idi na navigaciju Idi na pretragu

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 | uredi izvor]

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 | uredi izvor]

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

Polja[uredi | uredi izvor]

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 | uredi izvor]

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

Dizajn softvera[uredi | uredi izvor]

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 | uredi izvor]

Razvoj softvera jest glavna aktivnost izgradnje softvera,[10][11] 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 | uredi izvor]

Testiranje softvera[10][11] 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 | uredi izvor]

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

Također pogledajte[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ Abran et al. 2004
  2. ^ ACM (2007). "Computing Degrees & Careers". ACM. Pristupljeno 2010-11-23.
  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 (December 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. Pristupljeno 2008-12-26.
  8. ^ "ISO/IEC TR 19759:2005". Pristupljeno 2012-04-01.
  9. ^ Dijkstra, E. W. (1988). "On the cruelty of really teaching computing science". Pristupljeno 2014-01-10.
  10. ^ a b c Abran et al. 2004
  11. ^ a b c "Software Engineering Body of Knowledge (SWEBOK Version 3), 2014" (pdf). www.swebok.org. IEEE Computer Society. Pristupljeno 24 May 2016.

Literatura[uredi | uredi izvor]

Vanjski linkovi[uredi | uredi izvor]