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:
- identifikovanje i analiza potreba i zahtjeva korisnika,
- analiza, dizajn i razvoj specifikacija sistema (hardvera i softvera),
- 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.),
- implementacija (pisanje koda i neophodne dokumentacije za softver),
- testiranje softverskog rješenja u realnom okruženje, i na kraju
- održavanje softvera.
Istorija
urediPoč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- ^ Abran et al. 2004, str. 1–1
- ^ ACM (2007). „Computing Degrees & Careers”. ACM. Arhivirano iz originala 17. 06. 2011. g. Pristupljeno 2010-11-23.
- ^ Laplante, Phillip (2007). What Every Engineer Should Know about Software Engineering. Boca Raton: CRC. ISBN 978-0-8493-7228-5. Pristupljeno 2011-01-21.
- ^ „The history of coding and software engineering”. www.hackreactor.com (na jeziku: engleski). Arhivirano iz originala 24. 03. 2022. g. Pristupljeno 2021-05-06.
- ^ COMPUTERS and AUTOMATION
- ^ 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 .
- ^ „The origin of "software engineering"”. Pristupljeno 17. 11. 2017.
- ^ Randall, Brian. „The 1968/69 NATO Software Engineering Reports”. Pristupljeno 17. 11. 2017.
- ^ 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.
- ^ Sommerville 2008, str. 26
- ^ 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.
- ^ 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.”
- ^ 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.
- ^ „ISO/IEC TR 19759:2005”. Pristupljeno 2012-04-01.
- ^ „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- 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.
- Sommerville, Ian (2008). Software Engineering (7 izd.). Pearson Education. ISBN 978-81-7758-530-8. Pristupljeno 10. 1. 2013.
- Ghezzi, Carlo; Mehdi Jazayeri, Dino Mandrioli (2003) [1991]. Fundamentals of Software Engineering (2nd (International) izd.). Pearson Education @ Prentice-Hall.
- Jalote, Pankaj (2005) [1991]. An Integrated Approach to Software Engineering (3rd izd.). Springer. ISBN 978-0-387-20881-7.
- Pressman, Roger S (2005). Software Engineering: A Practitioner's Approach (6th izd.). Boston, Mass: McGraw-Hill. ISBN 978-0-07-285318-6.
- Sommerville, Ian (2007) [1982]. Software Engineering (8th izd.). Harlow, England: Pearson Education. ISBN 978-0-321-31379-9.
- Bruegge, Bernd; Dutoit, Allen (2009). Object-oriented software engineering : using UML, patterns, and Java (3rd izd.). Prentice Hall. ISBN 978-0-13-606125-0.
- Oshana, Robert (2019-06-21). Software engineering for embedded systems : methods, practical techniques, and applications (Second izd.). Kidlington, Oxford, United Kingdom. ISBN 978-0-12-809433-4.
- About Face: The Essentials of User Interface Design by Alan Cooper, about user interface design. ISBN 0-7645-2641-3
- The Capability Maturity Model by Watts Humphrey. Written for the Software Engineering Institute, emphasizing management and process. (See Managing the Software Process ISBN 0-201-18095-2)
- The Cathedral and the Bazaar by Eric Raymond about open source development.
- The Decline and Fall of the American Programmer by Ed Yourdon predicts the end of software development in the U.S. ISBN 0-13-191958-X
- Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. ISBN 0-201-63361-2
- Extreme Programming Explained by Kent Beck ISBN 0-321-27865-8
- "Go To Statement Considered Harmful" by Edsger Dijkstra.
- "Internet, Innovation and Open Source:Actors in the Network" — First Monday article by Ilkka Tuomi (2000) source Arhivirano na sajtu Wayback Machine (10. април 2013)
- The Mythical Man-Month by Fred Brooks, about project management. ISBN 0-201-83595-9
- Object-oriented Analysis and Design by Grady Booch. ISBN 0-8053-5340-2
- Peopleware by Tom DeMarco and Tim Lister. ISBN 0-932633-43-9
- The pragmatic engineer versus the scientific designer by E. W. Dijkstra [1]
- Principles of Software Engineering Management by Tom Gilb about evolutionary processes. ISBN 0-201-19246-2
- The Psychology of Computer Programming by Gerald Weinberg. Written as an independent consultant, partly about his years at IBM. ISBN 0-932633-42-0
- Refactoring: Improving the Design of Existing Code by Martin Fowler, Kent Beck, John Brant, William Opdyke, and Don Roberts. ISBN 0-201-48567-2
- The Pragmatic Programmer: from journeyman to master by Andrew Hunt, and David Thomas. ISBN 0-201-61622-X
- Software Engineering Body of Knowledge (SWEBOK) ISO/IEC TR 19759
- Laplante, Phillip, ur. (1996). Great papers in computer science. New York: IEEE Press. ISBN 978-0-314-06365-6.
- Randell, Brian, ur. (1982). The Origins of Digital Computers: Selected Papers. (3rd izd.). ISBN 0-387-11319-3.. Berlin: Springer-Verlag. .
- Turning Points in Computing: 1962–1999, Special Issue, IBM Systems Journal, 38 (2/3),1999.
- Yourdon, Edward (ed.) (1979) Classics in Software Engineering. New York: Yourdon Press. ISBN 0-917072-14-6
- — (april 1987). „No Silver Bullet — Essence and Accidents of Software Engineering”. IEEE Computer. 20 (4): 10—19. CiteSeerX 10.1.1.117.315 . S2CID 372277. doi:10.1109/MC.1987.1663532.
- Wilkinson, J. H.; Reinsch, C. (1971). Linear algebra, volume II of Handbook for Automatic Computation. Springer. ISBN 978-0-387-05414-8.
- Golub, Gene H.; van Loan, Charles F. (1996) [1983], Matrix Computations, 3rd edition, Johns Hopkins University Press, ISBN 978-0-8018-5414-9
- Rabiner, Lawrence R. (1989). „A tutorial on hidden Markov models and selected applications in speech recognition”. Proceedings of the IEEE. 77 (2): 257—286. CiteSeerX 10.1.1.381.3454 . doi:10.1109/5.18626.
- Brill, Eric (1995). „Transformation-based error-driven learning and natural language processing: A case study in part-of-speech tagging”. Computational Linguistics. 21 (4): 543—566.
Spoljašnje veze
uredi- Guide to the Software Engineering Body of Knowledge
- Computer Software Engineers Архивирано на сајту Wayback Machine (27. март 2010) - Definition and statistics from the U.S. Bureau of Labor Statistics
- A Student's Guide to Software Engineering Projects - a free online guide for students taking SE project courses
- The Open Systems Engineering and Software Development Life Cycle Framework Arhivirano na sajtu Wayback Machine (18. jul 2010) OpenSDLC.org the integrated Creative Commons SDLC
- Software Engineering Institute Carnegie Mellon