Програмско инженерство

Од Википедија — слободната енциклопедија
(Пренасочено од Софтверско инженерство)
Прејди на: содржини, барај

За софтверско инженерство (англиски: software engineering) постојат повеќе дефиниции. Еве некои од нив:
Софтверското инженерство е инженерска дисциплина што е посветена на сите аспекти на производство на софтвер, почнувајќи од неговата спецификација, па се до негово одржување по пуштање во употреба.[1]
Софтверското инженерство е примена на системски, дисциплиниран и мерлив пристап кон развојот, распоредувањето и одржувањето на софтверот, и ова претставува примена на инженерство кај софтверот. Инженерска дисциплина затоа што се користат научни и математички принципи, компјутерска наука и други знаење од инженерството.[2]


Историја на софтверско инженерство[уреди]

Софтверска криза[уреди]

Во средината на шеесеттите години се појави таканаречената софтверска криза, која што резултираше со многу проблеми во развојот на софтверот. Многу софтверски проекти го надминувале нивниот предвиден буџет, никогаш не биле завршувани на време, не биле ефикасни, софтверот имал многу слаб квалитет, изворниот код бил преголем и било тешко за одржување.[3][4] Испорачаниот софтверот често пати предизвикувал штети, па дури имало и човечки жртви. Таков е примерот со Therac-25, машина за радиотерапија која била компјутерски контролирана, во која имало софтверски недостаток и како резултат на тоа дошло да загуба на човечки живот.[5] На почетокот софтверската криза се однесуваше за продуктивноста, но подоцно се стави акцент на квалитетот на развојот. Некои го користеа терминот софтверска криза да дадат до знаење дека не можат да вработат доволно квалификувани програмери. Софтверските трошоци биле значајно поголеми од хардверските трошоци. Во такви услови морало да се бара некаков излез. Во 1968 година, во Германија, се одржува НАТО конференција на која се поставуваат почетоците на софтверското инженерство.[6]

Работење како софтверски инженер[уреди]

Во 2004 година, во САД околу 800 илјади софтверски инженери биле вработени . Во истиот период 1,4 милиони луѓе работеа во сите останати инженерски дисциплини. [7] Софтверското инженерство, во формалното образование, често се изучува како дел од програмите за компјутерски науки и многу софтверски инженери имаат дипломи за компјутерски науки. [8] Во текот на развојниот процес, некои фирми имаат специјалисти да ги извршуваат задачите посебно, додека кај други фирми софтверските инженери ги извршуваат повеќето или сите задачи. Кај големи проекти секој си има посебна улога, кај малите пак луѓето извршуваат повеќе улоги. Такви улоги се: аналитичар, софтверски архитект, програмер, тест - инженер, менаџер, логистика. Повеќето софтверски инженери и програмери работат 40 часа неделно, но околу 15 проценти на софтверски инженери и 11 % од програмерите работеле повеќе од 50 часа неделно во 2008 година. Повреди во овие професии се ретки. Сепак, како и другите работници кои поминуваат долги периоди пред компјутер пишувајќи на тастатура, инженерите и програмерите се подложени на напрегање на очите, непријатност и проблеми на раката и зглобовите, па поради ова кај некои од нив може да се појави синдромот на Карпален тунел.[9]

Сертификати[уреди]

Институтот за софтверско инженерство нуди сертификати за одредени теми како што се безбедноста, процесот на подобрување и софтверска архитектура. [10] Apple, IBM, Microsoft и други компании вложуваат во свои испити за сертификација. Многу ИТ програми за сертификација се ориентирани кон конкретни технологии и се управувани од страна на продавачите на овие технологии.[11]Овие програми за сертификација се прилагодени на институции кои ќе вработуваат луѓе кои ги користат овие технологии.
Поширока сертификација на општите софтверското инженерски вештини се достапни преку разни професионални здруженија. Почнувајќи од 2006 година, IEEE има сертифицирано над 575 софтверски професионалци како Сертифициран професионален софтверски развивач (CSDP).[12] Во 2008 година тие додале основен модел на сертификација познат како сертифициран соработник за развој на софтвер (CSDA). [13] Софтверските инженери може да се квалификуваат за членство на Институтот за Инженерство и Tехнологија (англиски: Institution of Engineering and Technology) и да се квалификуваат за овластен инженерски статус. Во Канада, канадското општество за обработка на информации има правно призната професионална сертификација наречена Професионални Информациони Системи (англиски: Information Systems Professional). [14]

Едукација[уреди]

Познавањето на програмирање е предуслов да се стане софтверски инженер. Во 2004 IEEE ја создава SWEBOK , во која е опишано потребното знаење што треба да се го стекнат дипломираните студенти со четиригодишно искуство.[15] Многу софтверски инженери влегуваат во професијата со завршено високо образование или стручно училиште. Во прилог на високото образование, многу компании вложуваат во студентски пракси, на оние студенти кои сакаат да ја продолжат кариерата во информатичката технологија. Овие пракси може да го воведат студентот до интересни реални задачи кои типични софтверски инженери ги среќаваат секој ден.[16]

Компарација со другите дисциплини[уреди]

Главната разлика помеѓу софтверското инженерство и другите инженерски дисциплини според некои истражувачи е резултат од трошоците во производството.[17]

Поддисциплини[уреди]

Софтверското инженерство е поделено на следните поддисциплини: [2]

  • Софтверски барања – Извлекување на барањата, анализа, спецификација и валидација на побарувањата за софтвер.
  • Софтверски дизајн – Процес на дефинирање на архитектурата, компонентите, интерфејс и други карактеристики на системот или компонентите.
  • Конструкција на софтвер – Подетален преглед на работата, значењето на софтверот преку кодирање, верификација, тестирање на системот, интеграциско тестирање и дебагирање.
  • Тестирање на софтвер – Динамичка верификација на однесувањето на програмата за конечно множество на тестови, соодветно избрани од вообичаено бесконечно множество на извршување, наспроти очекуваното однесување.
  • Одржување на софтвер – потребни модификација на софтверскиот продукт по неговата испорака со цел да се отстранат грешките, да се подобрат карактеристиките на софтверот.
  • Управување со софтверска конфигурација – следење и контролирање на промените кај софтверот.
  • Управување со софтверски проекти – примена на менаџерски активности како: планирање, координација, мерење, надгледување, контрола и известување – да се осигуриме дека развојот и одржувањето на софтверот е како што треба, планско и мерливо. [18]
  • Софтверски процеси – Дефиниција, имплементација, проценување, мерење, управување, промена и подобрување кај животниот век на софтверот.
  • Алатки и методи кај софтверското инженерство – компјутерско базирани алатки кои се наменети да помогнат кај животниот век на софтверот, како на пример CASE aлатките и методи кои се наметнуваат кај структурата кај активноста на софтверското инженерство со цел да ја направат активноста планска и колку што може повеќе успешна.
  • Квалитет на софтвер – Степенот до кој множеството од потребни карактеристики ги задоволува побарувањата.

Поврзани дисциплини[уреди]

Софтверското инженерство е директно поддисциплина на компјутерските науки и има некои врски со операциски истражувања. Се смета дека е дел од целокупното системско инженерство.

Системско инженерство[уреди]

Системското инженерство е интердисциплинарен процес што не осигурува дека потребите на клиентот се задоволени во текот на целиот животен век на системот. [19]

Софтверски инженери[уреди]

Софтверски инженер се обично дипломирани инженери од областа на софтверското инженерство и информациските системи. Во овој назив спаѓаат и дипломираните инженери од компјутерските науки кои имаат неколку години работно искуство поврзано со софтверското инженерство.

Наводи[уреди]

  1. Sommerville, Ian (2007) [1982]. „Software Engineering“ (8th издание). Harlow, England: Pearson Education. ISBN 0-321-31379-8. http://www.pearsoned.co.uk/HigherEducation/Booksby/Sommerville/. 
  2. 2,0 2,1 SWEBOKexecutive editors, Alain Abran, James W. Moore ; editors, Pierre Bourque, Robert Dupuis. (2004). Pierre Bourque and Robert Dupuis. уред. „Guide to the Software Engineering Body of Knowledge - 2004 Version“. IEEE Computer Society. стр. 1–1. ISBN 0-7695-2330-7. http://www.swebok.org. 
  3. The Software Crisis проверено на 25.03.2012
  4. E. W. Dijkstra Archive
  5. An Investigation of the Therac-25 Accidents проверено на 15.02.2012
  6. The 1968/69 NATO Software Engineering Reports проверено на 25.03.2012
  7. Bureau of Labor Statistics, U.S. Department of Labor, USDL 05-2145: Occupational Employment and Wages, November 2004, Table 1.
  8. „Software Engineering“. http://computingcareers.acm.org/?page_id=12. конс. 1 февруари 2008. 
  9. „Computer Software Engineers and Computer Programmers“. http://www.bls.gov/oco/ocos303.htm#training. конс. 17 декември 2009. 
  10. SEI certification page
  11. Wyrostek, Warren (14 март 2008). „The Top 10 Problems with IT Certification in 2008“. „InformIT“. http://www.informit.com/articles/article.aspx?p=1180991. конс. 3 март 2009. 
  12. IEEE Computer Society. „2006 IEEE computer society report to the IFIP General Assembly“ (PDF). http://www.ifip.org/minutes/GA2006/Tab18b-US-IEEE.pdf. конс. 10 април 2007. 
  13. IEEE. „CSDA“. http://www.computer.org/portal/web/certification/csda. конс. 20 април 2010. 
  14. Professionl Engineers Ontario. „Professional Engineers Ontario“. http://www.peo.on.ca. конс. 13 март 2012. 
  15. Abran, Alain, уред (2005). „Chapter 1: Introduction to the Guide“. „Guide to the Software Engineering Body of Knowledge“. Los Alamitos: IEEE Computer Society. ISBN 0769523307. http://www.computer.org/portal/web/swebok/html/ch1. конс. 13 септември 2010. „The total volume of cited literature is intended to be suitable for mastery through the completion of an undergraduate education plus four years of experience.“ 
  16. SE2004 Software Engineering Curriculum
  17. Young, Michal; Faulk, Stuart (2010). „Sharing What We Know About Software Engineering“ (pdf). „Proceedings of the FSE/SDP workshop on Future of software engineering research (FoSER '10)“. ACM. стр. 439–442. doi:10.1145/1882362.1882451. ISBN 978-1-4503-0427-6. „The essential distinction between software and other engineered artifacts has always been the absence of fabrication cost. In conventional engineering of physical artifacts, the cost of materials and fabrication has dominated the cost of design and placed a check on the complexity of artifacts that can be designed. When one bottleneck is removed, others appear, and software engineering has therefore faced the essential challenges of complexity and the cost of design to an extent that conventional engineering has not. Software engineering has focused on issues in managing complexity, from process to modular design to cost-effective verification, because that is the primary leverage point when the costs of materials and fabrication are nil.“ 
  18. Software engineering management проверено на 25.03.2012
  19. What Is Systems Engineering? проверено на 25.03.2012