Software ingeniaritza

**Software-ingeniaritza** konputazio-zientzien adarretako bat da, eta software fidagarria eta kalitatezkoa sortzea aztertzen du, ingeniaritzako metodoetan eta tekniketan oinarrituta, eta eragiketa- eta mantentze-euskarriak  eskainiz. Software-ingeniaritzaren azterketa-eremuak konputazio-zientziak, zientzia aplikatuak eta ingeniaritzaren euskarri diren oinarrizko zientziak biltzen ditu.

#### Mugak 
Softwareek adimena emulatzeko gaitasuna dute, giza adimenaren ezaugarri jakin batzuen eredu bat sortuz. Dena den, aurrez definitutako funtzioak baino ez dituzte, eta eremu batzuetan irtenbide mugatuak eskaintzen dituzte.

#### Espezifikazioa 
Betekizunen zehaztapenak garatutakoan, softwarean espero den portaera deskribatzen du espezifikazioak. Software-proiektu baten arrakastaren zati handi bat negozioaren beharrak identifikatzean eta erabiltzaile funtzionalekiko elkarreraginean datza. Elkarreragin horren bidez, softwarearen eskakizunak bildu, sailkatu, identifikatu, lehenetsi eta zehaztuko dira.

#### Arkitektura 
Azpiegituren integrazioak, aplikazioen garapenak, datu-baseek eta gerentzia-tresnek gaitasuna eta lidergoa behar dute kontzeptualizatuak eta etorkizunerako proiektatuak izateko, gaur egungo arazoak konponduz. Jarduera horiek guztiak arkitektoaren esku uzten dira.

#### Programazioa 
Diseinu bat kodean inplementatzea software-ingeniaritzako lanaren zatirik nabariena izan daiteke, baina ez da nahitaez lan handiena eskatzen duena, ezta zailena ere. Etapa honen konplexutasunak eta iraupenak lotura estua dute erabilitako programazio-lengoaiekin eta aurretik egindako diseinuarekin.

#### Aplikazioaren garapena 
Aplikazioa garatzeko, bost fase hartu behar dira kontuan aplikazio edo programa eraginkor bat izateko:

* Azpiegituraren garapena
* Paketea egokitzea
* Interaktiboen diseinu-unitateak garatzea
* Batch diseinu-unitateak garatzea
* Eskuzko diseinu-unitateak garatzea

#### Software-probak 
Softwareak arazoaren zehaztapenean adierazitako atazak behar bezala egiten dituela egiaztatzean datza. Teknika bat softwarearen modulu bakoitza bereizita probatzea da (proba unitarioa), eta, ondoren, modu integralean probatzea (integrazio-probak), helburura iristeko.

#### Inplementazioa 
Software-diseinua inplementatzeko etapa sistemaren espezifikazio bat sistema exekutagarri bihurtzeko prozesua da. Softwarea diseinatzeko eta programatzeko prozesuak eskatzen ditu beti, baina garapen-ikuspegi ebolutiboa erabiliz gero, softwarearen espezifikazioa fintzea ere ekar dezake.

#### Dokumentazioa 
Softwarearen garapenaren eta proiektuaren kudeaketaren dokumentazioari dagokion guztia da, modelazioak (UML), erabilera-kasuen diagramak, probak, erabiltzaile-eskuliburuak, eskuliburu teknikoak eta abar barne hartuta; hori guztia balizko zuzenketak, erabilgarritasuna, etorkizuneko mantentze-lanak eta sistemari zabalkuntzak egiteko helburuarekin.

#### Mantentze-lanak 
Softwarea mantentzera eta hobetzera bideratutako fasea da, aurkitutako akatsak zuzentzeko eta betekizun berriak txertatzeko. Honek denbora gehiago behar izan dezake hasierako softwarearen garapenak baino.

### Abantailak 
#### Kudeaketaren ikuspegitik 
* Proiektuaren jarraipena egitea erraztea
* Baliabideen erabilera optimizatzea
* Erabiltzaileen eta garatzaileen arteko komunikazioa erraztea
* Emaitzen ebaluazioa eta helburuen betetze-maila erraztea

#### Software-ingeniarien ikuspegitik 
* Arazoa ulertzen laguntzea
* Berrerabiltzeko aukera ematea
* Azken produktuaren mantentze-lanak erraztea
* Garapen-prozesuaren multzoa eta fase bakoitza optimizatzea

#### Azken bezero edo erabiltzailearen ikuspegitik 
* Azken produktuaren kalitate-maila bermatzea
* Proiekturako bizi-ziklo egokia lortzea
* Proiektuaren definizioan erakutsitako denbora-epeetan konfiantza izatea

## Erreferentziak 
## Kanpo estekak