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[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
aldatuSoftwarea-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 % 75ak hain akats larriak zituztenez, ez ziren batere erabiltzen edo, besterik gabe, ez zituzten 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
aldatuSoftware-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
aldatuEkonomikoki
aldatuEstatu Batuetan, softwareak BPGren hazkunde osoaren zortziren bat lagundu zuen 1990eko hamarkadan. Software ingeniaritzak hazkunde ekonomikoan eta produktibitatean lagundu zuen hamarkada horretan (1 $ bilioiko irabaziekin).
Sozialki
aldatuSoftware ingeniaritzak munduko kultura aldatzen du ordenagailuaren erabilera zabaltzeagatik. Posta elektronikoak (e-maila), WWWk eta berehalako mezularitzak modu berrietan elkarreragiteko aukera ematen dio 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
aldatuProzesuaren etapak
aldatuSoftware-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
aldatuZeri 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
aldatuBetekizunen 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].
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
aldatuBetekizunen 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
aldatuAzpiegituren 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
aldatuDiseinu 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
aldatuAplikazioa 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
aldatuSoftwareak 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
aldatuSoftware-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
aldatuSoftwarearen 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
aldatuSoftwarea mantentzera eta hobetzera bideratutako fasea da, aurkitutako akatsak zuzentzeko eta betekizun berriak txertatzeko. Honek denbora gehiago behar izan dezake hasierako softwarearen garapenak baino[3].
Kudeaketaren ikuspegitik
aldatu- Proiektuaren jarraipena egitea erraztea
- Baliabideen erabilera optimizatzea
- Erabiltzaileen eta garatzaileen arteko komunikazioa erraztea
- Emaitzen ebaluazioa eta helburuen betetze-maila erraztea
Software-ingeniarien ikuspegitik
aldatu- Arazoa ulertzen laguntzea
- Berrerabiltzeko aukera ematea
- Azken produktuaren mantentze-lanak erraztea
- Garapen-prozesuaren multzoa eta fase bakoitza optimizatzea
Azken bezero edo erabiltzailearen ikuspegitik
aldatu- Azken produktuaren kalitate-maila bermatzea
- Proiekturako bizi-ziklo egokia lortzea
- Proiektuaren definizioan erakutsitako denbora-epeetan konfiantza izatea
Erreferentziak
aldatu- ↑ a b (Ingelesez) Software Engineering Course (SWEBOK)| IEEE Computer Society. (Noiz kontsultatua: 2022-11-03).
- ↑ (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).
- ↑ Pressman, Roger S.. (2003). Ingeniería del software, un enfoque práctico. Mexico: Mc Graw Hill.
- ↑ Daniel Sócola Escobar. (2008-06-19). MetodologíAs Y Ciclos De Vida. (Noiz kontsultatua: 2022-11-03).
Kanpo estekak
aldatu