Изработка на програмска опрема

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

Софтверското инженерство е примена на системски, дисциплиниран и мерлив пристап кон развојот, распоредувањето и одржувањето на софтверот, и ова претставува примена на инженерство кај софтверот. Инженерска дисциплина затоа што се користат научни и математички принципи, компјутерска наука и други знаење од инженерството.

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

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

## Сертификати
Институтот за софтверско инженерство нуди сертификати за одредени теми како што се безбедноста, процесот на подобрување и софтверска архитектура.
Apple, IBM, Microsoft и други компании вложуваат во свои испити за сертификација. Многу ИТ програми за сертификација се ориентирани кон конкретни технологии и се управувани од страна на продавачите на овие технологии. Овие програми за сертификација се прилагодени на институции кои ќе вработуваат луѓе кои ги користат овие технологии.

Поширока сертификација на општите софтверското инженерски вештини се достапни преку разни професионални здруженија. Почнувајќи од 2006 година, IEEE има сертифицирано над 575 софтверски професионалци како Сертифициран професионален софтверски развивач (CSDP).
Во 2008 година тие додале основен модел на сертификација познат како сертифициран соработник  за развој на софтвер (CSDA).
Софтверските инженери може да се квалификуваат за членство на Институтот за Инженерство и Tехнологија (англиски: Institution of Engineering and Technology) и да се квалификуваат за овластен инженерски статус. Во Канада, канадското општество за обработка на информации има  правно призната професионална сертификација наречена Професионални Информациски Системи (англиски: Information Systems Professional).

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

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

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

## Поврзани дисциплини
Софтверското инженерство е директно поддисциплина на компјутерските науки и има некои врски со  операциски истражувања. Се смета дека е дел од целокупното системско инженерство.
## Системско инженерство
Системското инженерство е интердисциплинарен процес што не осигурува дека потребите на клиентот се задоволени во текот на целиот животен век на системот.

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

## Наводи

Инженерство

Категорија:Инженерство