Garapen-ingurune integratu

thumb|Visual Studio Code IDEa
**Garapen-ingurune integratua** edo garapen-ingurune interaktiboa (ingelesez, *Integrated Development Environment*, IDE), programatzean kodea idazteko, zuzentzeko eta exekutatzeko tresnak eskaintzen dituen aplikazio informatikoa da. Helburua programatzaileari softwarearen garapenean lagungarri izango zaizkion tresnak eskura jartzea da.

Normalean, garapen-ingurune integratua kode-editore batez, eraikuntza-tresna automatikoez eta araztaile batez osatuta dago. Gehienek kodearen idazketa modu automatikoan osatzen laguntzeko tresnak ere badituzte (*IntelliSense,* esaterako). Batzuek konpiladore bat, interpretatzaile bat, edo biak dituzte (hala nola, NetBeans eta Eclipse), baina beste batzuek ez (*SharpDevelop* eta *Lazarus*, adibidez). Ohikoak izaten dira, baita ere, kodea garbitzeko, bertsioen kontrola egiteko, kodearen errendimenduaren analisia egiteko eta programaren exekuzioa zuzena dela testeatzeko tresnak integratuta izatea. 

IDE baten eta softwarea garatzeko ingurune baten artean dagoen desberdintasuna ez dago argi definituta. Askotan, IDE-ek programaren bertsioen kontrolerako sistema bat eta erabiltzaile-interfaze grafikoaren (GUI) eraikuntza errazteko tresnak integratuta izaten dituzte. Gainera, objektuei bideratutako programazioan laguntzeko, IDE berrienek klase-nabigatzailea, objektu-nabigatzailea eta klaseen hierarkia-diagrama bat ere eskaintzen dituzte.  

Asko erabiltzen diren IDE batzuk Visual Studio, Visual Studio Code, Eclipse eta PyCharm dira.

## Sarrera 
Garapen-ingurune integratuak (IDE) programatzailearen produktibitatea maximizatzeko diseinatuta daude, programazio-lana arintzen laguntzen duten tresna ugari eskainiz. Softwarearen garapen osoa ingurune berean egiteko aukera eskaintzen dute, softwarea sortzeko, aldatzeko, konpilatzeko eta arazteko. Garapenerako ingurune integratu bat ez erabiltzekotan, softwarea garatzeko hainbat tresna desberdin erabili beharko lirateke bakoitza bere aldetik, esaterako: Vi, GNU Compiler Collection (GCC) edo Make.

IDEen helburuetako bat, txertatzen diren tresna guztien konfigurazioa sinplifikatzea da. Tresnen gaitasun guztiak ingurune bakar batean txertatuz, tresna horietako bakoitza konfiguratzeak eta erabiltzen ikasteak programatzaileari eskatzen dion denbora murriztea, eta ondorioz, garapenaren produktibitatea handitzea lortzen da, lana erraztuz. Gainera, tresna guztiak integratuta izateak programatzaileari erroreak kudeatzen lagundu diezaioke, horretarako ez baitu beste tresnaren bat erabili beharko programa idatzi ondoren; ingurune integratu hauek analizatzaile sintaktikoa uneoro martxan egoteko aukera eman ohi dute, programatzailea kodea idazten ari den bitartean. Horri esker, kodea idatzi ahala sintaxi erroren berri ematen zaio garatzaileari.   

IDE batzuk programazio-lengoaia jakin baterako diseinatuta daude, eta lengoaia horretarako espezifikoak diren programazio paradigmak, tresnak eta ezaugarriak eskaintzen dituzte. Xcode, Xojo eta Delphi lengoaia itxi baterako edo programazio-lengoaia espezifiko batzuen konfiguraziorako garatuak izan ziren. Bestalde, programazio-lengoaia desberdinekin lan egin ahal izateko ingurune integratu asko daude, hala nola, Eclipse, IntelliJ IDEA, NetBeans eta Microsoft Visual Studio. 

Garapenerako ingurune integratu moderno gehienen interfazea grafikoa den arren, Microsoft Windows eta X Window System (X11) leiho-sistemak agertu aurretik, oso ohikoa zen testu-editoreak erabiltzea (adibidez, Turbo Pascal). Editore horietan, programatzaileek laster-teklak erabiliz, sarri erabiltzen diren funtzioak, komandoak eta makroak azkar abiaraztea lortzen zuten.

## Historia 
[thumb|255x255px|[GNU Emacs, UNIX sistemetan IDE moduan erabili ohi den editore hedagarria]]IDEak sortu aurretik, programatzaileek kodea idazteko oinarrizko testu-editoreak erabiltzen zituzten. Programa testu-editore batean idatzi eta aparteko konpiladore bat erabiliz programa exekutatzea lortzen zen. Erroreak egonez gero, garatzaileek errore-mezuak berrikusi, testu-editorera itzuli eta beharrezko zuzenketak egin behar izaten zituzten, behin eta berriz.

IDE bat erabiliz sortu zen lehen programazio-lengoaia Dartmouth BASIC (BASIC-en aurrekaria) izan zen. Bere IDEa *Dartmouth Time-Sharing System* izeneko sistema eragilearen parte zen. Komandoetan oinarritua zegoenez, ez zuen gaur egungo IDE grafikoen antza handirik, gaur egungoak erabiltzaile interfaze grafikoetan (GUI) eta menuen erabileran oinarritzen baitira. Hala ere, edizioa, fitxategien kudeaketa, konpilazioa, arazketa eta exekuzioa integratuta zituen, gaur egungo IDEek bezala.

Lehen garapen-ingurune integratua *Softlab Munich* enpresak garatutako *Maestro I* izan zen. Mundu osoan zehar 22.000 programatzailek instalatu zuten ingurunea, 1989ra arte, 6.000 Alemaniako Errepublika Federalean. Liderra izan zen mundu mailan 1970eko eta 1980ko hamarkadetan. Geratzen diren *Maestro I* bakarretako bat Texaseko Arlington hiriko *Museum of Information Technology* museoan ikus daiteke.
thumb|117x117px|Visual Studio 2022 editorea
Plugin-aren kontzeptuan oinarritu zen lehen IDEetako bat *Softbench* izenekoa izan zen. 1990. urtean merkaturatu zen. 1995ean *Computerwoche* aldizkari alemaniarrean esandakoaren arabera, garapen-ingurune integratuen erabilerak ez zuen garatzaileen artean harrera onik izan, haien ustez halako inguruneak erabiltzeak programatzaileen sormena mugatuko zuelako.

2025eko urtarrilean, Google-en gehien bilatutako IDEak Visual Studio, Visual Studio Code eta PyCharm dira. Eclipse ere asko erabiltzen da.

## Tresnak 
### Sintaxia nabarmentzea 
IDEetan integratu ohi diren editoreek sintaxia nabarmentzeko tresnak izaten dituzte, hau da, egiturak, gako-hitzak eta sintaxi-erroreak kolore eta letra-efektu desberdinekin bistaratzen dituzten tresnak. Horrek garatzaileei kodea azkar eta erraz irakurtzen eta ulertzen laguntzen die, erroreak aurkitzeko eta egiturak hobetzeko. Nabarmendutako elementuak (funtzioak, aldagaien izenak, gako-hitzak eta komandoak) kolore desberdinetan agertzen dira, kodearen egitura eta logika begirada batean errazago atzemateko. Sintaxia nabarmentzeko modua programazio-lengoaiaren arabera alda daiteke, programazio-lengoaia desberdinekin lan egiten duten garatzaileentzat lagungarria izan dadin.

### Kodea osatzea 
Kodea modu automatikoan osatzeko gaitasuna duten tresnei esker, kodetze-prozesua azkarragoa da eta akats arruntak saihesten dira. Normalean, programatzailea idazten ari den bitartean, kode-osaketarako tresnak laster-menuen (*popup*) bidez kodearen amaiera erakusten du edo kode berria gomendatzen du. Kode-osaketarako tresnak eta antzekoak lagungarriak dira programatzaileentzat, funtzioen parametroei buruzko informazioa jasotzeko, metodoen eta aldagaien desanbiguazioan laguntzeko edo sintaxi-erroreei buruzko laguntza jasotzeko balio dutelako. Gaur egun, IDE askok adimen artifizial sortzailea erabiltzen dute hurrengo kode-lerroa zein izango den aurreikusteko eta programatzailea idazten ari den kodera egokitzeko.
[thumb|320x320px|[GitHub enpresak duen AAko tresna]]
Kode-osaketarako funtzionaltasuna IDE askotan aurki daiteke. Horien adibide dira, besteak beste, Visual Studio Code editorearen *IntelliSense* eta GitHub enpresaren *GitHub Copilot*, adimen artifizialean oinarritzen den kode-osaketarako tresna. Kode-osaketaren terminoa sortu aurretik, funtzionaltasun honi "*picklist*" esaten zitzaion.

### Birfaktorizatzea (garbitzea) 
Softwarearen ingeniaritzan, kodea birfaktorizatzea kodea aldatzea da, haren portaera aldatu gabe. Modu informalean, kodea garbitzea esaten zaio. Helburua, kodearen ulergarritasuna hobetzea edo bere egitura eta diseinua aldatzea izan ohi da, kode hila ezabatzeko edo etorkizunean kodearen mantenua errazteko.

IDE aurreratuenek kodea modu automatizatuan birfaktorizatzeko laguntza eskaintzen dute. Esaterako, funtzioen izenak aldatu ditzakete haien agerpen guztiak automatikoki eguneratuz. Gainera, errepikatuta agertzen diren kode-zatiekin funtzio edo klase berriak definitzeko tresnak eskaintzen dituzte, berrerabilpena errazteko eta mantentze-lanak sinplifikatzeko. IDE batzuetan, gainera, kodearen kalitatea eta errendimendua hobetzeko proposamenak egiten dira, adimen artifiziala erabiliz .

### Bertsioen kontrola 
thumb|Bertsioen kontrolerako Git softwarea
Software-ingeniaritzan, bertsioen kontrola egitea fitxategietan egiten diren aldaketen kudeaketa egitea da, bertsio desberdinak kontrolatzeko, antolatzeko eta arakatzeko. Bertsio-kontrolak fitxategien bertsio zaharrak ikusteko eta aurreko bertsio batera itzultzeko aukera ematen du.

IDE batzuk bertsioen kontrolerako funtzionaltasuna eskaintzen dute. Garrantzitsua da IDEa bertsio-kontrolerako Git softwarearekin edo antzekoren batekin bateragarri izatea, programatzaileek fitxategietan egindako aldaketak gordetzeko, lan-fluxuak kudeatzeko eta aurreko bertsioren batera itzuli ahal izateko. Horrek talde-lana errazten du, kodearen historiaren jarraipena egiten laguntzen du eta aldaketekin sor daitezkeen gatazkak konpontzen laguntzen du. IDE askok Git-ekin integrazio estua dute. Horri esker, bertsioen kontrolean erabili ohi diren Git-eko *commit*, *branch* eta *merge* aginduak zuzenean interfazetik exekuta daitezke.

### Araztea 
Software-ingeniaritzan, araztaileak (zorri-kentzaileak) (ingelesez, *debugger*) kodean erroreak (zorriak) (ingelesez, *bug*) aurkitzeko eta zuzentzeko erabiltzen diren programak dira. IDEek araztaileren bat erabiltzeko aukera eskaini ohi dute. Zorri-kentzaile horiek erabiliz, programaren exekuzioa kontrola daiteke eta pausoz pauso jarraitu, aldagaiek une jakin batean duten balioa ikusteko, pilaren edo memoriaren erabilera aztertzeko, eta abar. Horrela, exekuzioan zehar jasotako informazio horretaz baliatuz, programaren funtzionamendua proba daiteke, esperotako balioak lortzen diren egiaztatzeko. Erroreak aurkituz gero, programatzaileak zuzentzeko aukera izango du. 

Bestalde, IDEek software-erroreen eta salbuespenen jarraipena egiteko aukera eskaintzen dute, hau da, programaren funtzionamenduari buruzko informazioa ematen dute eta errore eta salbuespen mezuak biltzen dituzte. Gainera, ohikoak diren erroreak zuzentzeko gomendioak ematen dituzte modu automatikoan, arazketa-prozesua azkarragoa eta eraginkorragoa izan dadin.

### Analisi estatikoa egitea 
Kodearen analisi estatikoa egitea (ingelesez, *linting*) errore estilistikoak eta programazio-erroreak detektatzea da. Estilismo-kontuei buruzko gidalerroak ematen dituzte, aldagaien izendapenari buruzkoak, adibidez. Kodea gizakientzat irakurgarria izan dadin iruzkinak egiten dituzte, eta sintaxi-erroreak ere detektatzen dituzte. Tresna hauek kodearen kalitatea mantentzen laguntzen dute, garapen prozesuan arazo posibleak identifikatuz. Araztaileek ez bezala, linting-a egiten duten analizatzaileek modu estatikoan egiten dute lan, ez exekuzio-denboran. 

IDE asko ematen dute analisi estatikoa egiteko aukera. ESLint, adibidez, JavaScript lengoaian idatzitako kodea analizatzeko tresna da eta Pylint Pythonen idatzitakoetarako. 

### Testeatzea 
Software-ingeniaritzan, proba unitarioa edo test unitarioa (ingelesez, *unit testing*) programa informatikoen banakako unitate txikienen funtzionamendu egokia egiaztatzea da. Programazio funtzionalean funtzio baten edo prozedura baten funtzionamendua egiaztatuko litzateke eta objektuetara bideratutako programazioan klase batena. Unitate bakoitzak bere aldetik ondo eta eraginkortasunez funtzionatzen duela ziurtatzeko egiten da.

Proba edo test horiek IDEan bertan egin ahal izateko, garapen-ingurune batzuk JUnit, PyTest eta TestNG bezalako tresnak dituzte. Integrazio horrek proba-prozesua arintzen du, erroreak azkarrago aurkitzeko eta kodearen fidagarritasuna hobetzeko.

### Profilatzea (errendimendua aztertzea) 
Kodea profilatzea (ingelesez, *code profiling*) programaren errendimendua aztertzea da. Kodearen profil hori sortzeko erabiltzen diren software-tresnek hainbat neurketa egiten dituzte. Kodearen exekuzio-denbora neurtzen dute eta exekuzioa non trabatzen den identifikatzen laguntzen dute (zati geldoak), errendimendua optimizatzen laguntzeko. Baliabideen erabilera intentsiboa (memoria, adibidez) egiten duten kode-zatiak identifikatzen ere laguntzen dute.

Zenbait IDEk kodearen errendimenduaren profila egiteko tresnak eskaintzen dituzte. *YourKit, adibidez,* Java aplikazioen errendimendua aztertzeko erabiltzen da, eta cProfile Python-en idatzitako programak profilatzeko.

## Erreferentziak 
## Ikus, gainera 
* Visual Studio Code
* Git
* Araztaile
* Konpiladore
* Interpretatzaile (informatika)

## Kanpo estekak