Инжењеринг софтвера
Развојни циклус софтвера |
---|
Делатност |
Парадигме и модели |
Методологије и оквири |
Подршка дисциплине |
Алати |
Стандарди и књиге |
Инжењеринг софтвера је поддисциплина рачунарства, настала као потреба за проналажење рјешења све више сложенијих, обимнијих и структурно компликованијих инжењерских задатака, приликом дизајна, имплементације и одржавања софтвера (рачунарских програма), која често захтијевају тимове програмера различитих профила и специјализације, као и вријеме које се све чешће мјери годинама.[1][2][3] Развој сложених софтверских рјешења, као што је на примјер, оперативни систем, се третира као инжењерски подухват са сличним потешкоћама као што је изградња неког архитектонског објекта, али и са сличним пажљивим планирањем израде, али и планирањем одржавања крајњег софтверског производа.
Процес инжењеринга софтвера се обично састоји из више фаза, дефинисаних на различите начине, али у основи уопштено сљедећих:
- идентификовање и анализа потреба и захтјева корисника,
- анализа, дизајн и развој спецификација система (хардвера и софтвера),
- дизајн софтвера (који се обично састоји од више међусобно повезаних задатака, као што је на примјер, дизајн одговарајућих алгоритама, корисничког интерфејса, итд.),
- имплементација (писање кода и неопходне документације за софтвер),
- тестирање софтверског рјешења у реалном окружење, и на крају
- одржавање софтвера.
Историја
[уреди | уреди извор]Почевши од 1960-их, софтверски инжењеринг се сматрао сопственим типом инжењеринга. Поред тога, развој софтверског инжењеринга је виђен као мукотрпна делатност. Било је тешко држати корак са хардвером што је стварало многе проблеме софтверским инжењерима. Проблеми су укључивали софтвер чија израда је често прекорачивала буџет и рокове, тај софтвер је захтевао опсежно отклањање грешака и одржавање и био је неуспешан у задовољавању потреба потрошача, или никада није био завршен. Године 1968, NATO је одржао прву конференцију о софтверском инжењерству на којој су обрађена питања везана за софтвер: успостављене су смернице и најбоље праксе за развој софтвера.[4]
Порекло појма „софтверски инжењеринг“ приписује се различитим изворима. Термин „софтверски инжењеринг“ појавио се на листи услуга које су компаније нудиле у издању часописа „Компјутери и аутомамација“ у јуну 1965. године,[5] а формалније је коришћен у издању часописа Communications of the ACM из августа 1966. (том 9, број 8) „писмо упућено ACM чланству” ACM председника Ентонија А. Аутингера,[6][7] такође се повезује са насловом NATO конференције 1968. професора Фридриха Л. Бауера, прве конференције о софтверском инжењерству.[8] Независно, Маргарет Хамилтон је назвала дисциплину „софтверски инжењеринг“ током Аполо мисија да би се оном што су радили дао легитимитет.[9] У то време се сматрало да постоји „криза софтвера“.[10][11][12] Четрдесета Међународна конференција о софтверском инжењерству (ICSE 2018) слави 50 година „софтверског инжењеринга“ са главним излагањима на пленарним сесијама Фредерика Брукса[13] и Маргарет Хамилтон.[13]
Године 1984. основан је Институт за софтверско инжењерство (SEI) као федерално финансиран центар за истраживање и развој са седиштем у кампусу Универзитета Карнеги Мелон у Питсбургу, Пенсилванија, Сједињене Америчке Државе. Ватс Хамфри је основао SEI Софтверски процесни програм, чији је циљ разумевање и управљање процесом софтверског инжењеринга. Уведени нивои зрелости процеса постали би Интеграција модела зрелости за развој (CMMI-DEV), који је дефинисао према процени америчке владе способности тима за развој софтвера.
Подкомитет ISO/IEC JTC 1/SC 7 сакупио је модерне, опште прихваћене најбоље праксе за софтверско инжењерство и објавио их као Збирку знања за софтверско инжењерство (SWEBOK).[14] Софтверски инжењеринг се сматра једном од главних рачунарских дисциплина.[15]
Референце
[уреди | уреди извор]- ^ Abran et al. 2004, стр. 1–1
- ^ ACM (2007). „Computing Degrees & Careers”. ACM. Архивирано из оригинала 17. 06. 2011. г. Приступљено 2010-11-23.
- ^ Laplante, Phillip (2007). What Every Engineer Should Know about Software Engineering. Boca Raton: CRC. ISBN 978-0-8493-7228-5. Приступљено 2011-01-21.
- ^ „The history of coding and software engineering”. www.hackreactor.com (на језику: енглески). Архивирано из оригинала 24. 03. 2022. г. Приступљено 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"”. Приступљено 17. 11. 2017.
- ^ Randall, Brian. „The 1968/69 NATO Software Engineering Reports”. Приступљено 17. 11. 2017.
- ^ Software Magazine. „What to Know About the Scientist who Invented the Term "Software Engineering"”. Архивирано из оригинала 24. 11. 2018. г. Приступљено 12. 2. 2019.
- ^ Sommerville 2008, стр. 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. Приступљено 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. Приступљено 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.”
- ^ а б 2018 International Conference on Software Engineering celebrating its 40th anniversary, and 50 years of Software engineering. „ICSE 2018 – Plenary Sessions – Fred Brooks”. Приступљено 9. 8. 2018.
- ^ „ISO/IEC TR 19759:2005”. Приступљено 2012-04-01.
- ^ „The Joint Task Force for Computing Curricula 2005” (PDF). 2014-10-21. Архивирано (PDF) из оригинала 2014-10-21. г. Приступљено 2020-04-16.
Литература
[уреди | уреди извор]- 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 изд.). Pearson Education. ISBN 978-81-7758-530-8. Приступљено 10. 1. 2013.
- Ghezzi, Carlo; Mehdi Jazayeri, Dino Mandrioli (2003) [1991]. Fundamentals of Software Engineering (2nd (International) изд.). Pearson Education @ Prentice-Hall.
- Jalote, Pankaj (2005) [1991]. An Integrated Approach to Software Engineering (3rd изд.). Springer. ISBN 978-0-387-20881-7.
- Pressman, Roger S (2005). Software Engineering: A Practitioner's Approach (6th изд.). Boston, Mass: McGraw-Hill. ISBN 978-0-07-285318-6.
- Sommerville, Ian (2007) [1982]. Software Engineering (8th изд.). 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 изд.). Prentice Hall. ISBN 978-0-13-606125-0.
- Oshana, Robert (2019-06-21). Software engineering for embedded systems : methods, practical techniques, and applications (Second изд.). 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 Архивирано на сајту 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, ур. (1996). Great papers in computer science. New York: IEEE Press. ISBN 978-0-314-06365-6.
- Randell, Brian, ур. (1982). The Origins of Digital Computers: Selected Papers. (3rd изд.). 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
- — (април 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.
Спољашње везе
[уреди | уреди извор]- 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 Архивирано на сајту Wayback Machine (18. јул 2010) OpenSDLC.org the integrated Creative Commons SDLC
- Software Engineering Institute Carnegie Mellon