Softversko inženjerstvo
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
urediPrvi 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
urediEdsger Dijkstra, osnivač mnogih koncepata u razvoja softvera, odbacio je ideju "softverskog inženjeringa" sve do svoje smrti 2002. godine.[9]
Polja
urediProces 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
urediInženjering zahtjeva odnosi se na prikupljanje, analizu, specifikaciju i potvrdu zahtjeva za softver.
Dizajn softvera
urediDizajn softvera odnosi se na proces definisanja arhitekture, komponenti, interfejsa i drugih karakteristika sistema ili komponente. To se naziva i softverska arhitektura.
Razvoj softvera
urediRazvoj 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
urediTestiranje 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
urediOdržavanje softvera[1][10] odnosi se na aktivnosti potrebne za pružanje ekonomične podrške nakon izdavanja softverskog proizvoda.
Također pogledajte
urediReference
uredi- ^ a b c d Abran et al. 2004
- ^ ACM (2007). "Computing Degrees & Careers". ACM. Arhivirano s originala, 17. 6. 2011. Pristupljeno 23. 11. 2010.
- ^ Prazna referenca (pomoć)
- ^ https://www.dagstuhl.de/Reports/96/9635.pdf
- ^ IEEE Standard Glossary of Software Engineering Terminology, IEEE std 610.12-1990, 1990.
- ^ 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.
- ^ 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.
- ^ "ISO/IEC TR 19759:2005". Pristupljeno 1. 4. 2012.
- ^ Dijkstra, E. W. (1988). "On the cruelty of really teaching computing science". Pristupljeno 10. 1. 2014. CS1 održavanje: nepreporučeni parametar (link)
- ^ 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- Abran, Alain; Moore, James W.; Bourque, Pierre; Dupuis, Robert; Tripp, Leonard L. (2004). Guide to the Software Engineering Body of Knowledge. IEEE. ISBN 978-0-7695-2330-9.CS1 održavanje: ref=harv (link)
- Sommerville, Ian (2008). Software Engineering (7 izd.). Pearson Education. ISBN 978-81-7758-530-8. Pristupljeno 10. 1. 2013.CS1 održavanje: ref=harv (link)
- Ghezzi, Carlo; Mehdi Jazayeri, Dino Mandrioli (2003) [1991]. Fundamentals of Software Engineering (2nd (International) izd.). Pearson Education @ Prentice-Hall. CS1 održavanje: nepreporučeni parametar (link) CS1 održavanje: ref=harv (link)
- Jalote, Pankaj (2005) [1991]. An Integrated Approach to Software Engineering (3rd izd.). Springer. ISBN 978-0-387-20881-7. CS1 održavanje: nepreporučeni parametar (link) CS1 održavanje: ref=harv (link)[mrtav link]
- Pressman, Roger S (2005). Software Engineering: A Practitioner's Approach (6th izd.). Boston, Mass: McGraw-Hill. ISBN 978-0-07-285318-6. CS1 održavanje: nepreporučeni parametar (link) CS1 održavanje: ref=harv (link)
- Sommerville, Ian (2007) [1982]. Software Engineering (8th izd.). Harlow, England: Pearson Education. ISBN 978-0-321-31379-9. CS1 održavanje: nepreporučeni parametar (link) CS1 održavanje: ref=harv (link)
Vanjski linkovi
uredi- Baza znanja softverskog inženjeringa
- OpenSDLC.org Arhivirano 18. 7. 2010. na Wayback Machine
- Software Engineering Institute Carnegie Mellon
- Uvod u softversko inženjerstvo Arhivirano 3. 3. 2020. na Wayback Machine