Softversko inženjerstvo

**Softversko inženjerstvo** je sistematska primjena inženjerskih pristupa razvoju softvera. Softverski inženjering je direktno potpolje inženjerstva i preklapa se s računarskom i upravljačkom naukom. 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"

## Historija 
Prvi 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 š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 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.

### Kontroverze 
Edsger Dijkstra, osnivač mnogih koncepata u razvoja softvera, odbacio je ideju "softverskog inženjeringa" sve do svoje smrti 2002. godine.

## Polja 
Proces 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 
Inženjering zahtjeva odnosi se na prikupljanje, analizu, specifikaciju i potvrdu zahtjeva za softver.

### Dizajn softvera 
Dizajn softvera odnosi se na proces definisanja arhitekture, komponenti, interfejsa i drugih karakteristika sistema ili komponente. To se naziva i softverska arhitektura.

### Razvoj softvera 
Razvoj softvera jest glavna aktivnost izgradnje softvera, 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 
Testiranje softvera 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 
Održavanje softvera odnosi se na aktivnosti potrebne za pružanje ekonomične podrške nakon izdavanja softverskog proizvoda.

## Također pogledajte 
* Računarsko inženjerstvo
* Računarstvo
* Računarska nauka

## Reference 
## Literatura 
* 
* 
* 
* 
* 
* 

## Vanjski linkovi 
* Baza znanja softverskog inženjeringa 
* OpenSDLC.org   
* Software Engineering Institute Carnegie Mellon
* Uvod u softversko inženjerstvo 

Kategorija:Softver
Kategorija:Programiranje
Kategorija:Inženjerstvo