Software ingeniaritza

Wikipedia, Entziklopedia askea

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[1].

Softwarea sortzeko prozesua berez sortzailea da, eta softwarearen ingeniaritza prozesu hori sistematizatzen saiatzen da. Helburua lortzeko porrot-arriskua mugatzeko, aurreko esperientzian oinarrituta, egokiak direla frogatu diren hainbat teknika erabiltzen dira.

Software-ingeniaritza softwareari aplikatutako ingeniaritzatzat har daiteke, hau da, bitarteko sistematizatuen bidez eta aurrez ezarritako tresnen bidez, horiek ahalik eta modu eraginkorrenean aplikatzea emaitza optimoak lortzeko; ingeniaritzak beti bilatzen ditu helburu horiek. Helburua ez da problemak ebaztea bakarrik, baizik eta soluzio desberdinak kontuan hartuta, egokiena aukeratzea.

Historia[aldatu | aldatu iturburu kodea]

Softwarea-ingeniaritza terminoa 1950eko hamarkadaren amaieran agertu zen lehen aldiz. Softwarearen ingeniaritza 1960tik 1980ra bitarteko hamarkadetako softwarearen krisiak bultzatu zuen. Softwarearen ingeniaritzak software-sistemen garapen- eta mantentze-prozesuak printzipio eta metodologien bidez identifikatzen eta zuzentzen laguntzen du.

1980ko hamarkadarako, softwarearen jabetza eta mantentze kostua softwarearen garapena bera baino bi aldiz garestiagoa izan zen, eta 1990eko hamarkadan, jabetza eta mantentze kostuak % 30 egin zuen gora aurreko hamarkadarekin alderatuta. 1995ean, garapen-proiektu asko operazionalak ziren, baina ez ziren arrakastatsutzat hartzen. Software-proiektu ertainak % 50ean gainditzen zuen aldez aurretik egindako denbora-estimazioa; gainera, bezeroari ematen zitzaizkion software-produktu handi guztien % 75ek hain akats larriak zituzten, non ez baitziren batere erabiltzen edo, besterik gabe, ez baitzituzten bezeroaren eskakizunak betetzen.

Interneten erabileraren gorakadak World Wide Web-ean informazioa hedatzeko nazioarteko sistemen eskaria izugarri haztea ekarri zuen.

Software ingeniaritzak 90.000 milioi dolar inguru eman zituen urtean, Internet jokoan sartu baitzen. Horren ondorioz, garatzaileek irudiak, mapak eta animazioak erabili beharra sortu zen irudien bistaratzea/biltegiratzea optimizatzeko (adibidez, miniaturazko irudien erabilera). Nabigatzaileak erabiltzeak eta HTML lengoaia erabiltzeak izugarri aldatu zuen informazioa ikustea eta jasotzea.

Helburua[aldatu | aldatu iturburu kodea]

Software-ingeniaritzak hainbat arau eta metodo aplikatzen ditu emaitza hobeak lortzeko, softwarearen garapenari eta erabilerari dagokienez. Prozedura horiek behar bezala aplikatuz, software-ingeniaritzaren funtsezko helburuak egoki bete daitezke.

Software-ingeniaritzaren helburuen artean daude:

  • Aplikazioen edo softwarearen diseinua hobetzea, sortu ziren erakundeen beharretara edo helburuetara hobeto egokitzeko.
  • Aplikazio konplexuen bidez kalitate handiagoa sustatzea.
  • Zehaztasun handiagoa ematea proiektuen kostuetan eta horiek garatzeko denboran.
  • Sistemen eraginkortasuna handitzea, ahalik eta kalitaterik onena bilatuz sortu nahi diren beharrei eta emaitzei dagokienez. Horretarako, prozesuak sartuko dira, arau espezifikoen bidez garatutako softwarearen kalitatea neurtzeko.
  • Lantaldeak hobeto antolatzea, softwarea garatzeko eta mantentzeko arloan.
  • Proben bidez, garatutako softwareak hobeto funtziona dezan egin daitezkeen hobekuntzak antzematea.

Inplikazio sozioekonomikoak[aldatu | aldatu iturburu kodea]

Ekonomikoki[aldatu | aldatu iturburu kodea]

Estatu Batuetan, softwareak BPGren hazkunde osoaren zortziren bat lagundu zuen 1990eko hamarkadan. Software ingeniaritzak US $1 bilioi hazkunde ekonomiko eta produktibitatean lagundu zuen hamarkada horretan.

Sozialki[aldatu | aldatu iturburu kodea]

Software ingeniaritzak munduko kultura aldatzen du ordenagailuaren erabilera zabaltzeagatik. Posta elektronikoak (e-maila), WWWk eta berehalako mezularitzak modu berrietan elkarreragiteko aukera ematen diote jendeari. Softwareak kostua jaisten du eta osasun-zerbitzuen, suhiltzaileen departamentuen, gobernu-bulegoen eta beste gizarte-zerbitzu batzuen kalitatea hobetzen du. Software-ingeniaritzako metodoak erabili diren proiektu arrakastatsuen artean daude GNU/Linux, espazio-transbordadorearen softwarea, kutxazain automatikoak eta beste asko.

Metodologia[aldatu | aldatu iturburu kodea]

Prozesuaren etapak[aldatu | aldatu iturburu kodea]

Software-ingeniaritzak etapaka taldekatutako zeregin ugari egitea eskatzen du; etapa horiei guztiei bizi-zikloa esaten zaie. Bizi-zikloaren ia eredu guztien etapa komunak honako hauek dira:

Betekizunak lortzea[aldatu | aldatu iturburu kodea]

Zeri buruz lan egiten ari den identifikatu behar da, hau da, azterlanaren hasiera eta software berriaren sorrera edo lehendik dagoen software baten aldaketa eragiten duen gai nagusia.

Betekizunen azterketa[aldatu | aldatu iturburu kodea]

Betekizunen azterketa lan erraza izan daiteke, baina ez, askotan bezeroek softwareak ondo funtzionatzeko behar duen guztia dakitela pentsatzen dutelako; hala ere, espezialistaren baten trebetasuna eta esperientzia behar da eskakizun osatugabeak, anbiguoak edo kontraesankorrak aitortzeko. Eskakizun horiek zehazteko, azken erabiltzailearen beharrak hartzen dira kontuan, eta lantzen diren sistemen kalitatea hobetzeko aukera emango diguten teknikak sartzen dira[1].

Mugak[2][aldatu | aldatu iturburu kodea]

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[aldatu | aldatu iturburu kodea]

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[aldatu | aldatu iturburu kodea]

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[aldatu | aldatu iturburu kodea]

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[aldatu | aldatu iturburu kodea]

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[aldatu | aldatu iturburu kodea]

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[aldatu | aldatu iturburu kodea]

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[aldatu | aldatu iturburu kodea]

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[aldatu | aldatu iturburu kodea]

Softwarea mantentzera eta hobetzera bideratutako fasea da, aurkitutako akatsak zuzentzeko eta betekizun berriak txertatzeko. Honek denbora gehiago behar izan dezake hasierako softwarearen garapenak baino[3].

Abantailak[4][aldatu | aldatu iturburu kodea]

Kudeaketaren ikuspegitik[aldatu | aldatu iturburu kodea]

  • Proiektuaren jarraipena egitea erraztea
  • Baliabideen erabilera optimizatzea
  • Erabiltzaileen eta garatzaileen arteko komunikazioa erraztea
  • Emaitzen ebaluazioa eta helburuen betetze-maila erraztea

Software-ingeniarien ikuspegitik[aldatu | aldatu iturburu kodea]

  • Arazoa ulertzen laguntzea
  • Berrerabiltzeko aukera ematea
  • Azken produktuaren mantentze-lanak erraztea
  • Garapen-prozesuaren multzoa eta fase bakoitza optimizatzea

Azken bezero edo erabiltzailearen ikuspegitik[aldatu | aldatu iturburu kodea]

  • Azken produktuaren kalitate-maila bermatzea
  • Proiekturako bizi-ziklo egokia lortzea
  • Proiektuaren definizioan erakutsitako denbora-epeetan konfiantza izatea

Erreferentziak[aldatu | aldatu iturburu kodea]

  1. a b (Ingelesez) Software Engineering Course (SWEBOK)| IEEE Computer Society. (Noiz kontsultatua: 2022-11-03).
  2. (Gaztelaniaz) dice, MODELO DE ANÁLISIS « Mundo Kramer's Blog. (2011-05-19). «Especificaciones de requerimiento, características y limitaciones del software» Mundo Kramer's Blog (Noiz kontsultatua: 2022-11-03).
  3. Pressman, Roger S.. (2003). Ingeniería del software, un enfoque práctico. Mexico: Mc Graw Hill.
  4. Daniel Sócola Escobar. (2008-06-19). MetodologíAs Y Ciclos De Vida. (Noiz kontsultatua: 2022-11-03).

Kanpo estekak[aldatu | aldatu iturburu kodea]