Inženjering softvera

примена систематских приступа развоју софтвера

Inženjering softvera je poddisciplina računarstva, nastala kao potreba za pronalaženje rješenja sve više složenijih, obimnijih i strukturno komplikovanijih inženjerskih zadataka, prilikom dizajna, implementacije i održavanja softvera (računarskih programa), koja često zahtijevaju timove programera različitih profila i specijalizacije, kao i vrijeme koje se sve češće mjeri godinama.[1][2][3] Razvoj složenih softverskih rješenja, kao što je na primjer, operativni sistem, se tretira kao inženjerski poduhvat sa sličnim poteškoćama kao što je izgradnja nekog arhitektonskog objekta, ali i sa sličnim pažljivim planiranjem izrade, ali i planiranjem održavanja krajnjeg softverskog proizvoda.

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

  1. identifikovanje i analiza potreba i zahtjeva korisnika,
  2. analiza, dizajn i razvoj specifikacija sistema (hardvera i softvera),
  3. dizajn softvera (koji se obično sastoji od više međusobno povezanih zadataka, kao što je na primjer, dizajn odgovarajućih algoritama, korisničkog interfejsa, itd.),
  4. implementacija (pisanje koda i neophodne dokumentacije za softver),
  5. testiranje softverskog rješenja u realnom okruženje, i na kraju
  6. održavanje softvera.

Istorija uredi

Počevši od 1960-ih, softverski inženjering se smatrao sopstvenim tipom inženjeringa. Pored toga, razvoj softverskog inženjeringa je viđen kao mukotrpna delatnost. Bilo je teško držati korak sa hardverom što je stvaralo mnoge probleme softverskim inženjerima. Problemi su uključivali softver čija izrada je često prekoračivala budžet i rokove, taj softver je zahtevao opsežno otklanjanje grešaka i održavanje i bio je neuspešan u zadovoljavanju potreba potrošača, ili nikada nije bio završen. Godine 1968, NATO je održao prvu konferenciju o softverskom inženjerstvu na kojoj su obrađena pitanja vezana za softver: uspostavljene su smernice i najbolje prakse za razvoj softvera.[4]

Poreklo pojma „softverski inženjering“ pripisuje se različitim izvorima. Termin „softverski inženjering“ pojavio se na listi usluga koje su kompanije nudile u izdanju časopisa „Kompjuteri i automamacija“ u junu 1965. godine,[5] a formalnije je korišćen u izdanju časopisa Communications of the ACM iz avgusta 1966. (tom 9, broj 8) „pismo upućeno ACM članstvu” ACM predsednika Entonija A. Autingera,[6][7] takođe se povezuje sa naslovom NATO konferencije 1968. profesora Fridriha L. Bauera, prve konferencije o softverskom inženjerstvu.[8] Nezavisno, Margaret Hamilton je nazvala disciplinu „softverski inženjering“ tokom Apolo misija da bi se onom što su radili dao legitimitet.[9] U to vreme se smatralo da postoji „kriza softvera“.[10][11][12] Četrdeseta Međunarodna konferencija o softverskom inženjerstvu (ICSE 2018) slavi 50 godina „softverskog inženjeringa“ sa glavnim izlaganjima na plenarnim sesijama Frederika Bruksa[13] i Margaret Hamilton.[13]

Godine 1984. osnovan je Institut za softversko inženjerstvo (SEI) kao federalno finansiran centar za istraživanje i razvoj sa sedištem u kampusu Univerziteta Karnegi Melon u Pitsburgu, Pensilvanija, Sjedinjene Američke Države. Vats Hamfri je osnovao SEI Softverski procesni program, čiji je cilj razumevanje i upravljanje procesom softverskog inženjeringa. Uvedeni nivoi zrelosti procesa postali bi Integracija modela zrelosti za razvoj (CMMI-DEV), koji je definisao prema proceni američke vlade sposobnosti tima za razvoj softvera.

Podkomitet ISO/IEC JTC 1/SC 7 sakupio je moderne, opšte prihvaćene najbolje prakse za softversko inženjerstvo i objavio ih kao Zbirku znanja za softversko inženjerstvo (SWEBOK).[14] Softverski inženjering se smatra jednom od glavnih računarskih disciplina.[15]

Reference uredi

  1. ^ Abran et al. 2004, str. 1–1
  2. ^ ACM (2007). „Computing Degrees & Careers”. ACM. Arhivirano iz originala 17. 06. 2011. g. Pristupljeno 2010-11-23. 
  3. ^ Laplante, Phillip (2007). What Every Engineer Should Know about Software Engineering. Boca Raton: CRC. ISBN 978-0-8493-7228-5. Pristupljeno 2011-01-21. 
  4. ^ „The history of coding and software engineering”. www.hackreactor.com (na jeziku: engleski). Pristupljeno 2021-05-06. 
  5. ^ COMPUTERS and AUTOMATION
  6. ^ Oettinger, A. G. (1966). „President's Letter to the ACM Membership”. Commun. ACM. Association for Computing Machinery. 9 (8): 545—546. ISSN 0001-0782. S2CID 53432801. doi:10.1145/365758.3291288 . 
  7. ^ „The origin of "software engineering". Pristupljeno 17. 11. 2017. 
  8. ^ Randall, Brian. „The 1968/69 NATO Software Engineering Reports”. Pristupljeno 17. 11. 2017. 
  9. ^ Software Magazine. „What to Know About the Scientist who Invented the Term "Software Engineering". Arhivirano iz originala 24. 11. 2018. g. Pristupljeno 12. 2. 2019. 
  10. ^ Sommerville 2008, str. 26
  11. ^ Peter, Naur; Randell, Brian (7—11. 10. 1968). Software Engineering: Report of a conference sponsored by the NATO Science Committee (PDF). Garmisch, Germany: Scientific Affairs Division, NATO. Pristupljeno 2008-12-26. 
  12. ^ Randell, Brian (10. 8. 2001). „The 1968/69 NATO Software Engineering Reports”. Brian Randell's University Homepage. The School of the Computer Sciences, Newcastle University. Pristupljeno 2008-10-11. „The idea for the first NATO Software Engineering Conference, and in particular that of adopting the then practically unknown term "software engineering" as its (deliberately provocative) title, I believe came originally from Professor Fritz Bauer. 
  13. ^ a b 2018 International Conference on Software Engineering celebrating its 40th anniversary, and 50 years of Software engineering. „ICSE 2018 – Plenary Sessions – Fred Brooks”. Pristupljeno 9. 8. 2018. 
  14. ^ „ISO/IEC TR 19759:2005”. Pristupljeno 2012-04-01. 
  15. ^ „The Joint Task Force for Computing Curricula 2005” (PDF). 2014-10-21. Arhivirano (PDF) iz originala 2014-10-21. g. Pristupljeno 2020-04-16. 

Literatura uredi

Spoljašnje veze uredi