Sei sulla pagina 1di 12

4/7/2016 Entornosdeprogramacin

Asignatura:Entornosdeprogramacin

Entornosdeprogramacin
Concepto,funcionesytipos

Contenido

1.Actividadesdedesarrollodesoftware
2.EntornosdedesarrollodeSoftware
3.ProductosCASEengeneral
4.Entornodeprogramacin
5.FuncionesdeunEntornodeProgramacin
6.TiposdeEntornosdeProgramacin
1.Entornoscentradosenunlenguaje
2.Entornosorientadosaestructura
3.Entornosbasadosencombinacindeherramientas
4.Entornosmultilenguaje
5.Entornosparaingenieradesoftware
7.Entornosorientadosaestructura
1.Editoresdeestructura
2.Lenguajesyentornosvisuales
3.Discusin
8.Evolucindelosentornosdeprogramacin
1.Lecturaynavegacindelcdigo
2.Generacindedocumentacin
3.Anlisisesttico
4.Tcnicasavanzadasdeconstruccindecdigo
5.Discusin
9.Referencias

1.Actividadesdedesarrollodesoftware
En Ingeniera de Software se denomina "ciclo de vida" a una determinada organizacin en el tiempo de las
actividadesdedesarrollodesoftware.Lasprincipalesactividadessonlassiguientes:

Lafigurarepresentaeldenominado"ciclodevidaencascada",dondelasflechasindicanelordenenquese
vanrealizandolasactividades.Estemodeloestendesuso,perosiguesiendoadecuadoparaidentificarlas
actividadesprincipalesyelordennaturalentreellas.

Anlisisderequisitos
Seestudianlasnecesidadesdelosusuarios,sedecidequdebehacerlaaplicacininformticapara
satisfacerlasentodooenparte,ysegeneraunDocumentodeRequisitos.

Diseodelaarquitectura
http://lml.ls.fi.upm.es/ep/entornos.html 1/12
4/7/2016 Entornosdeprogramacin

SeestudiaelDocumentodeRequisitosyseestablecelaestructuraglobaldelaaplicacin,
descomponindolaenpartes(mdulos,subsistemas)relativamenteindependientes.Segeneraun
DocumentodeDiseo.

Diseodetallado
Enestasegundapartedelaactividaddediseosefijanlasfuncionesdecadamdulo,coneldetallede
suinterfaz.Segeneraelcdigodedeclaracin(oespecificacin)decadamdulo.

Codificacin
Sedesarrollaelcdigodecadamdulo.

Pruebasdeunidades
Comocomplementodelacodificacin,cadamduloogrupodemdulossepruebaporseparado.Enlas
pruebassecompruebasicadamdulocumpleconsuespecificacindediseodetallado.

Pruebasdeintegracin
Sehacefuncionarlaaplicacincompleta,combinandotodossusmdulos.Serealizanensayospara
comprobarqueelfuncionamientodeconjuntocumpleloestablecidoeneldocumentodediseo.

Pruebasdevalidacin
Comopasofinaldelaintegracinserealizannuevaspruebasdelaaplicacinensuconjunto.Eneste
casoelobjetivoescomprobarqueelproductodesarrolladocumpleconloestablecidoeneldocumento
derequisitos,ysatisfaceportantolasnecesidadesdelosusuariosenlamedidaprevista.

Fasedemantenimiento
Nohayactividadesdiferenciadasdelasanteriores.Elmantenimientodelproductoexigerehacerparte
deltrabajoinicial,quepuedecorresponderacualquieradelasactividadesdelasetapasanteriores.

2.EntornosdedesarrollodeSoftware
Un entorno de desarrollo de software es una combinacin de herramientas que automatiza o soporta al
menos una gran parte de la tareas (o fases) del desarrollo: anlisis de requisitos, diseo de arquitectura,
diseo detallado, codificacin, pruebas de unidades, pruebas de integracin y validacin, gestin de
configuracin,mantenimiento, etc. Las herramientas deben estar bien integradas, pudendointeroperarunas
conotras.

Estn formados por el conjunto de instrumentos (hardware, software, procedimientos, ...) que facilitan o
automatizanlasactividadesdedesarrollo.Enelcontextodeestaasignaturaseconsideranbsicamentelos
instrumentossoftware.

CASE:ComputerAidedSoftwareEngineering
Conestetrminogenricosedenominanlosproductossoftwarequedansoporteinformticoal
desarrollo
Seradeseableautomatizartodoeldesarrollo,peronormalmenteseautomatizasloenparte
ProductosCASE:soncadaunodelosinstrumentosoherramientassoftwaredeapoyoal
desarrollo
LatecnologaCASEdasoporteparaactividadesverticales
Sonactividadesverticaleslasespecficasdeunafasedelciclodevida:anlisisderequisitos,
diseodelaarquitectura,edicinycompilacindelcdigo,etc.
Tambinsenecesitasoporteparaactividadeshorizontales
Sonactividadeshorizontaleslasactividadesgenerales:documentacin,planificacin,gestinde
configuracin,etc.

En[2]seexponeunavisinprcticadelosqueesunentornodedesarrollo.

3.ProductosCASEengeneral
Los productos CASE facilitan el desarrollo organizado del software aplicando tcnicas de Ingeniera de
Software. En sentido amplio podemos englobar en la tecnologa CASE toda la variedad de herramientas
aplicables en el desarrollo de software: herramientas de anlisis y diseo editores de cdigo, documentos,
diagramas, etc. compiladores y montadores de cdigo ejecutable (linkers) depuradores analizadores de
consistenciaherramientasparaobtencindemtricasgeneradoresdecdigoodedocumentacinetc.,etc.

Debidoaesaenormevariedaddeproductos,sehanrealizadodiversosintentosparaclasificarlos.Unpunto
devistaparasuclasificacineselniveldelasfuncionesquerealizaunproductodeterminado.En[3](TableI)
sesugierelasiguienteterminologaparalosnivelesfuncionales:
http://lml.ls.fi.upm.es/ep/entornos.html 2/12
4/7/2016 Entornosdeprogramacin

Servicio(service):realizaautomticamenteunadeterminadaoperacin(atmicaounitaria).
Ejemplo:compilacindeunprograma
Herramienta(tool):ofrecelosserviciosnecesariosparadarsoporteaunatareadeterminada(loque
haceunmiembrodelequipodedesarrolloenunmomentodado).
Ejemplo:edicindecdigofuente.
Bancodetrabajo(workbench):dasoporteatodaslasactividadescorrespondientesaunroloperfil
profesionalpropiodeunodelosmiembrosdelequipodedesarrollo.
Avecesselellamatambin"herramienta"(tool)
Ejemplo:"herramienta"CASEdeanlisisydiseo(OO,UML,...)
Entornoofactora(environment,factory):dasoporteatodoelprocesodedesarrollo.Avecessele
llamatambin"bancodetrabajo"(workbench)

4.Entornodeprogramacin
Lasactividadesmejorsoportadasporherramientasdedesarrollosonnormalmentelacentrales:codificaciny
pruebasdeunidades.Elconjuntodeherramientasquesoportanestasactividadesconstituyenloquesellama
unentornodeprogramacin.AvecesseutilizanlassiglasIDE(IntegratedDevelopmentEnvironment)para
designarestosentornos,aunquenosonunentornodedesarrollocompleto,sinoslounapartedel.

Siguiendolaterminologaanterior,denivelesfuncionales,eselbancodetrabajodelprogramador
Dasoportealasactividadesdelafasedecodificacin(preparacindelcdigoypruebadeunidades)
Losmismosproductossirventambinparaeldiseodetalladoyparalaspruebasdeintegracin.
Sesita,portanto,enlapartecentraldelciclodedesarrollo

5.FuncionesdeunEntornodeProgramacin
Comosehadicho,lamisindeunEntornodeProgramacinesdarsoportealapreparacindeprogramas,
esdecir,alasactividadesdecodificacinypruebas.

Lastareasesencialesdelafasedecodificacinson:
Edicin(creacinymodificacin)delcdigofuente
Proceso/ejecucindelprograma
Interpretacindirecta(cdigofuente)
Compilacin(cdigomquina)montajeejecucin
Compilacin(cdigointermedio)interpretacin
Otrasfunciones:
Examinar(hojear)elcdigofuente
Analizarconsistencia,calidad,etc.
Ejecutarenmododepuracin
Ejecucinautomticadepruebas
Controldeversiones
Generardocumentacin,reformarcdigo
...yotrasmuchasms...

6.TiposdeEntornosdeProgramacin
Unentornodeprogramacinpuedeestarconcebidoyorganizadodemanerasmuydiferentes.Acontinuacin
http://lml.ls.fi.upm.es/ep/entornos.html 3/12
4/7/2016 Entornosdeprogramacin

semencionanalgunasdeellas.

Enlasprimerasetapasdelainformticalapreparacindeprogramasserealizabamedianteunacadena
deoperacionestalescomolaquesemuestraenlafiguraparaunlenguajeprocesadomediante
compilador.Cadaunadelasherramientasdebainvocarsemanualmenteporseparado.Enestas
condicionesnopuedehablarsepropiamentedeunentornodeprogramacin

Eleditoresuneditordetextosimple
Elcompiladortraducecadaficherodecdigofuenteacdigoobjeto
Elmontador(linker/builder/loader)combinavariosficherosobjetoparagenerarunfichero
ejecutable
Eldepuradormanejainformacinentrminosdelenguajedemquina
Unentornodeprogramacinpropiamentedichocombinaherramientascomostas,mejoradasymejor
integradas.AvecessenombraconlassiglasIDE(IntegratedDevelopmentEnvironment).

Loscomponentescuyaevolucinhasidomsaparentesonlosquerealizanlainteraccinconel
usuario:
Eleditoryanoesunsimpleeditordetexto,sinoquetieneunaclaraorientacinallenguajede
programacinusado(reconoceymanejadeterminadoselementossintcticos)
Eldepuradornopresentainformacinentrminosdellenguajedemquina,sinodellenguaje
fuente
Eleditorestbienintegradoconlasdemsherramientas(seposicionadirectamenteenlospuntos
delcdigofuenteenlosquehayerroresdecompilacin,oqueseestnejecutandoconel
depuradorenunmomentodado.
Noesfcilestablecerunaclasificacindentrodelavariedaddeentornosdeprogramacinexistentes.
Enalgnmomento[1]sedescribieronlassiguientesclasesdeentornos,noexcluyentes,usandoun
criterioesencialmentepragmtico:
Entornoscentradosenunlenguaje
Entornosorientadosaestructura
Entornoscoleccindeherramientas
En[4]y[5]seexponenotrasclasificacionesbasadasencriteriosmsomenosformales.

6.1Entornoscentradosenunlenguaje

Presentanlassiguientescaractersticasgenerales:

Sonespecficosparaunlenguajedeprogramacinenparticular
Estnfuertementeintegrados.Aparecencomountodohomogneo
Sepresentancomounaherramientanica
Eleditortieneunafuerteorientacinallenguaje
http://lml.ls.fi.upm.es/ep/entornos.html 4/12
4/7/2016 Entornosdeprogramacin

Sonrelativamentecmodosofcilesdeusar
Avecessonpocoflexiblesenloreferentealainteroperacinconotrosproductosoalaampliacinde
susfunciones
Sebasanenrepresentarelcdigofuentecomotexto

Podemosencontrarejemplosdeestosentornosparatodotipodelenguajes

Lenguajesfuncionalesconinterpretacindirecta
(Inter)Lisp,Haskell,etc.
Lenguajescompiladosacdigodemquinanativo
Delphi,VisualC++,AdaGide/GNAT,GPS,etc.
Lenguajeejecutadossobremquinavirtual
Java(VisualAge,Eclipse),C#(VisualStudio.NET)
Ejemplosespeciales:
EntornosAda(Stoneman,Cais,Asis)
EntornosSmalltalk
EntornosOberon,ComponentPascal

6.2Entornosorientadosaestructura

Podran considerarse incluidos en la clase anterior, ya que suelen ser especficos para un lenguaje de
programacin,peroestnconcebidosdemaneradiferente:

Eleditordecdigofuentenoesuneditordetexto,sinouneditordeestructura(editorsintctico)
Sebasanenrepresentarinternamenteelcdigofuentecomounaestructura:
rboldesintaxisabstracta:AST
Lapresentacinexternadelcdigoesenformadetexto
Plantillas(elementossintcticosnoterminales)
Textosimple(elementosterminalesaveces"frases"paraexpresiones)
Compilacinincremental(enalgunoscasos)
Paradesarrollopersonal,noenequipo
Ejemplos:
TheCornellProgramSynthesizer(subconjuntodePL/I)
Mentor(Pascal)
AlicePascal
Gandalf(intentaserunentornodedesarrollocompleto,paratodoelciclodevida)

Estosentornosestuvierondemodaenlosaos80.Losdesarrollosfueronfundamentalmenteacadmicos,y
quedaron en desuso. En la actualidad los lenguajes de marcado (XML) pueden ser una buena forma de
representarlaestructuradelcdigofuenteconvistasasumanipulacin.ExisteneditoresyprocesadoresXML
quepodranserlabasedenuevosentornosdeprogramacinorientadosaestructura.

6.3Entornosbasadosencombinacindeherramientas

Consisten en una combinacin de diversas herramientas capaces de interoperar entre ellas de alguna
manera.Sedenominanentornostoolkit.Presentanlassiguientescaractersticas:

Presentanintegracindbil
Sonunconjuntodeelementosrelativamenteheterogneos
Sonfcilesdeampliaroadaptarmediantenuevasherramientas
Puedenserconstruidosenparteporelpropiousuario(programador):steesmsomenoselestilo
UNIXoriginal
Ofrecenpococontroldeusodecadaherramienta
Elelementofrontal(frontend)parainteraccinconelusuariosueleseruneditorconfigurable,con
llamadasaherramientasexternas.Avecesestoseditoresconfigurablessedesignantambinconlas
siglasIDE(quedeberareservarseparaelentornocompleto)
Ejemplosdeeditoresconfigurables
Emacs,Vim,Gvim
Med,SciTE,jEdit
Eclipse(algomsqueuneditor)

6.4Entornosmultilenguaje

Hay aplicaciones que combinan piezas de cdigo fuente escritas en diferentes lenguajes de programacin.
Algunasposibilidadesdecombinacinsonlassiguientes:

http://lml.ls.fi.upm.es/ep/entornos.html 5/12
4/7/2016 Entornosdeprogramacin

Entornosgenricos
Nosecombinanlenguajesenunmismoprograma.Hayvariosprogramas,cadaunoensupropio
lenguaje
Bastaracombinarlasherramientascorrespondientesacadalenguaje(compiladores,etc.)
Sepodrausarunfrontalcomn:editorpersonalizablequesoporteloslenguajesconcretos
Ejemplos:
Emacs(condiferentes"modos")
Eclipse(condiferentes"plugins")
Entornosespecficos
Paraunacombinacinconcretadelenguajes
Vienenasercomolosentornoscentradosenunlenguaje,sloqueadmitenmsdeuno
Usanunformatobinariocompatiblequepermitecombinarenunmismoprogramapartesescritas
enlosdiferenteslenguajes
Ejemplo:GPSpermitecombinarmdulosenAdayC++
Lenguajesejecutadossobremquinavirtual
Lamquinavirtualestableceelformatodelcdigobinario
Puedencombinarsemdulosescritosendiferenteslenguajesparalosqueexistaelcompilador
apropiado
Cadalenguajepuedetenersuentornodeprogramacinseparado,obienexistirunentornode
programacinnico
Ejemplos:
JVM(JavaVirtualMachine).EllenguajeoriginalesJava.ElintrpreteeselJRE(Java
RuntimeEnvironment).HaycompiladoresaJVMparaotroslenguajesademsdeJava:Ada,
Fortran,ComponentPascal(Oberon),etc.(inclusoC#)
.Net(Microsoft).EllenguajeoriginalesC#.ElintrpreteeselCLR(CommonLanguage
Runtime).Haycompiladoresa.NetparaotroslenguajesademsdeC#:Ada,Fortran,
ComponentPascal(Oberon),etc.(inclusoJava)

6.5Entornosparaingenieradesoftware

Unentornodeprogramacin,talcomosehadefinidoanteriormente,serviraparadarsoportealastareasde
desarrollo de software realizadas por una persona. Para desarrollar proyectos de software no triviales se
necesitatrabajarenequipousandolasrecomendacionesdelaingenieradesoftware.

Cada miembro del equipo de desarrollo puede disponer de una estacin de trabajo con un entorno de
programacinadecuadopararealizarsutrabajoindividual,ysenecesitaademsalgnmediodecombinarlos
trabajosindividualesenunalabordeconjunto,debidamenteorganizada.

Una manera intuitiva de organizar el entorno general de desarrollo es basarlo en un repositorio central de
informacin,dotadodeunsistemadegestindeconfiguracin,yaadirlesistemasdemensajera,degestin
deincidencias,herramientasdemodeladoparaanlisisydiseo,degestindelproyecto,etc.

Por ejemplo, hay plataformas generales que ofrecen este soporte como servicios web, incluso de manera
gratuitaparaeldesarrollodesoftwarelibre:SourceForge,GoogleCode,etc.

7.Entornosorientadosaestructura
La idea de que un programa no es equivalente al texto de su cdigo fuente, sino que lo esencial es la
estructura lgica del cmputo que describe, ha llevado a la creacin de los llamados entornos de
programacinorientadosaestructura[1],enlosquesemanipuladirectamentelaestructuralgicadelcdigoy
nosurepresentacin como texto. Incluso hay casos en que el cdigo del programa no se representa como

http://lml.ls.fi.upm.es/ep/entornos.html 6/12
4/7/2016 Entornosdeprogramacin

textosinoenformagrfica.

7.1Editoresdeestructura

Los editores de estructura de cdigo, llamados tambin editores sintcticos o ms frecuentemente editores
dirigidosporsintaxis(sintaxdirectededitors),permiteneditarelcdigofuentemanipulandodirectamenteuna
representacin interna de su estructura. A diferencia de la edicin del cdigo como texto, la edicin de la
estructura se hace sobre elementos sintcticos tales como expresiones, sentencias o funciones y no sobre
elementostextualestalescomocaracteres,palabrasolneas.

Larepresentacinhabitualdelaestructuradelcdigoesladesurboldesintaxisabstracta(AST).Ejemplo:

Los entornos de programacin basados en un editor de estructura se denominan entornos orientados a


estructura.Suelentenerlassiguientescaractersticas:

Soportanunnicolenguajedeprogramacin.
Garantizanqueelcdigoessintcticamentecorrecto.
Lacompilacinserealizademaneraincremental,amedidaqueseeditaelcdigo.
Permitelaejecucininmediatadelcdigoeditado,inclusoaunqueestincompleto.
Soportaneldesarrollodesoftwareanivelindividual,peronoeldesarrolloenequipoagranescala.

La mayora de estos entornos se desarrollaron a finales del aos 70 y a lo largo de los 80. Se emplearon
habitualmenteenambientesacadmicos.Algunosejemplosdeentornosorientadosaestructurason:

ElCornellProgramSynthesizer(CPS).Esquizelejemplomsconocidoyelmsreferenciadoenla
literatura[4].Haservidodeejemploparadesarrollarotros.Permiteprogramarenunsubconjuntodel
lenguajePL/IdenominadoPL/CS.
Mentor[7]esunentornodeprogramacinenPascal.
Gandalf[8]esunconjuntodevariossubproyectos.Suobjetivoprincipalfuecrearunentornocompleto
dedesarrollodesoftware,ynoslounentornodeprogramacin.
AlicePascal[9]esotroentornodeprogramacinenlenguajePascalcompatibleconTurboPascal.
SiguelasideasdelCPS.
SDSesunentornodeprogramacinenModula2.EsunproductocomercialdesarrolladoporInterface
Technologies.Hadesaparecido.

Como complemento se han llegado a desarrollar tambin generadores de entornos similares a los
generadoresdecompiladores.EnparticularexisteelSynthesizerGenerator[10],capazdegenerar entornos
similares al sintetizador de Cornell para otros lenguajes de programacin a partir de una descripcin de la
sintaxisysemnticadellenguajemedianteunagramticadeatributos.

7.2Lenguajesyentornosvisuales

Esteesuncasoespecialdeentornosorientadosaestructura.Larepresentacinexternadelcdigofuenteno
esenformadetexto,sinogrfica.Eleditorpermiteirconstruyendoelgrafoquerepresentalaestructuradel
cdigo. El programa construido de esta manera se ejecuta directamente mediante un intrprete, o bien se
exportacomotextoenunlenguajeformalparasercompiladoointerpretadoexternamente.Algunosejemplos
deestetipodeentornosson:

http://lml.ls.fi.upm.es/ep/entornos.html 7/12
4/7/2016 Entornosdeprogramacin

Prograph
Projector(partedelmetaCASEDOME)
VFPE

Tanto Prograph como Projector son lenguajes de flujo de datos. Un programa basado en flujo de datos se
representacomoungrafoenelquelosnodossonoperadoresylosarcossonflujosdedatosqueconectanla
salidadeciertosoperadoresconlasentradasdeotros.Unaoperacinseejecutacuandohaydatospresentes
entodaslasentradasrequeridas.Enesemomentoseproducenresultadosquesetransmitenporlosarcosde
salida,pudiendoentoncesejecutarseotrasoperaciones.

VFPE es un editor grfico de la estructura (rbol sintctico) de un programa funcional. El programa editado
puedeejecutarsedirectamenteoexportarsecomocdigoHaskell.

7.3Discusin

Los entornos orientados a estructura presentan innegables ventajas respecto a los entornos basados en la
edicindeltextofuente.Entreellas:

Evitanloserroressintcticos
Evitantenerqueescribirloselementosfijosdelcdigo:Palabrasclave,puntuacin,etc.
Presentanelcdigoconunestilouniforme,bienencolumnado.
Guanalprogramadorindicandoquelementospuedeninsertarseencadapuntoyrecordndolela
sintaxisdecadasentenciaestructurada.
Facilitanlareorganizacindelcdigoalpermitirlaseleccindirectadeseccionesdecdigo:funciones,
bucles,etc.
Facilitantrabajarconestructuraslgicasnocontempladasdirectamenteenellenguajedeprogramacin.

Si embargo estos entornos, tal como se concibieron inicialmente, no han llegado a utilizarse en la prctica
habitualdedesarrollodesoftware,yaquepresentabanclarosinconvenientes:

Nopermitaneltrabajoenequipo.Enmuchoscasosslotrabajabanconprogramasmonolticos.
Eradifcilrealizaralgunasoperacionesdeedicinqueresultantrivialessobreeltexto.
Exigenuncambioenlamentalidaddelprogramador[11].
Esdifcileditarlaestructuraaniveldegranofino(expresiones:operadores,operandos,...)

Muchosdelosproductoscitadoscomoejemplohandesaparecido.Suintersesfundamentalmentehistrico.
No obstante, la idea de trabajar directamente sobre la estructura del cdigo sigue resultando atractiva, y
parece posible aplicarla de nuevo siendo conscientes de sus dificultades y aprovechando los avances
tecnolgicosactuales.

8.Evolucindelosentornosdeprogramacin
Otracircunstanciaquequizhacolaboradoaimpedirladifusindelosentornosorientadosaestructuraesel
hecho de que los entornos de programacin convencionales basados en la manipulacin del cdigo fuente
como texto han ido mejorando a lo largo de los aos, ofreciendo algunas funciones similares a las que se
pretendanconseguirconlosentornosorientadosaestructura.Acontinuacinseanalizanalgunasdeestas
funciones.

8.1Lecturaynavegacindelcdigo

Losentornosbasadosentextofuentehanidoincrementandosuorientacinallenguaje,ofreciendofacilidades
talescomolassiguientes:

Resaltadodesintaxis.Sedestacanloselementoslxicoscondiferentescoloresotipodeletra.
Tambinsepuedendestacarlosparntesisollavesqueseemparejansimplementeponiendoelcursor
sobreunodeellos.Elreconocimientodeestoselementossebasaenunsencilloanlisisdecadalnea
detexto,queserealizasobrelamarcha.Enlamayoradeloscasoselresultadoestotalmente
satisfactorio,peroavecesseproducenconfusionessiseempleanconstruccionessintcticascomplejas.
Unanlisissintcticomscompletoparagarantizarelcorrectofuncionamientoentodosloscasossera
demasiadocostoso.
Plegado/desplegado.Sepuedecontrolarelniveldedetalleconelquesepresentaeltextofuente.
Determinadasseccionesdecdigopuedenpresentarsedemaneraabreviada,parafacilitarlavisinde
conjunto.Porejemplo,unsubprogramapuedereducirsealalneadecabecerajuntoconunaindicacin
visualdequepartedelcontenidoestoculto.Ocasionalmentepuedetenerlosinconvenientesindicados
enelpuntoanterior.
Accesodirectoentreelementosrelacionados.Sonfacilidadesequivalentesahipertextoparasaltar
http://lml.ls.fi.upm.es/ep/entornos.html 8/12
4/7/2016 Entornosdeprogramacin

rpidamenteentreladeclaracin,definicin,implementacinyusodeundeterminadoidentificador.
Puedeextenderseinclusoafuncionesdelibrera,ytambinalrecorridodetodoslospuntosenqueusa
unidentificador.Enocasionessedisponedeunaventanaemergentequemuestralacabecerade
declaracindeunafuncinalponerelcursorsobreunpuntoenqueseusadichafuncin.Estas
facilidadesresultanextraordinariamentetilesparalalecturaycomprensindelcdigo.
Vistasmltiples.Seusanvariasventanasparapresentarsimultneamentediferentesvistasdelcdigo
fuente.Eshabitualtenerunpanellateralconlaestructuraenrboldelcdigo,biendelficheroenedicin
odetodoelproyecto.Tambinsepuedenteneralavezlosficherosfuentedeinterfazyde
implementacindelmismomdulo.Yventanasadicionesconlosresultadosdeaplicardeterminadas
herramientas:listadeerroresdecompilacin,listadepuntosenqueusaunidentificador,mensajesde
diagnsticodeunaherramientadeanlisis,representacionesgrficas,etc.

Lasltimasfacilidadesdelalistapuedenteneruncosteelevado.Enbastantescasoshayqueconstruirunas
tablasinternas,bastantevoluminosas,quedescribenlaestructuradelcdigoypermitenindexarla aparicin
decadaidentificadoreneltextofuente.

8.2Generacindedocumentacin

Siseincluyenenelcdigofuentecomentariosdedescripcindecadaelementoimportanteesposiblegenerar
automticamentedocumentacindereferenciaabasedeextraerlasdeclaracionesdedichoselementosjunto
con el texto de descripcin. Por ejemplo, se pueden generar las pginas del manual de referencia de una
librera,incluyendondicesalfabticosotemticos,oinclusoincluirtodoelcdigofuenteenformadepginas
webenlazadasparaconsultarlasdemaneramuycmoda.

Algunosejemplosdeestatecnologason:

Doxygen:GeneradocumentacindecdigoC/C++enformadepginasweb,incluyendodiversos
ndices,elcdigofuentecoloreadoeindexado,einclusodiagramasdedependenciaentremdulos.
Javadoc:ParalenguajeJava.Usaunformatoprefijadodecomentarioparalasdescripciones,
incluyendomarcasHTMLembebidasypalabrasclaveintroducidasconelsmbolo@.Segeneran
documentosenformadepginasweb.
AdaBrowse/AdaDoc/Ada2html:Sonherramientassimilaresalasanterioresparacdigoenlenguaje
Ada.Igualmentegeneranpginasweb.

A continuacin se reproduce un ejemplo tomado de la documentacin disponible en el sitio web de Sun


Microsystems,Inc[12].Elfragmentodecdigofuentees:

/**
*ReturnsanImageobjectthatcanthenbepaintedonthescreen.
*Theurlargumentmustspecifyanabsolute{@linkURL}.Thename
*argumentisaspecifierthatisrelativetotheurlargument.
*<p>
*Thismethodalwaysreturnsimmediately,whetherornotthe
*imageexists.Whenthisappletattemptstodrawtheimageon
*thescreen,thedatawillbeloaded.Thegraphicsprimitives
*thatdrawtheimagewillincrementallypaintonthescreen.
*
*@paramurlanabsoluteURLgivingthebaselocationoftheimage
*@paramnamethelocationoftheimage,relativetotheurlargument
*@returntheimageatthespecifiedURL
*@seeImage
*/
publicImagegetImage(URLurl,Stringname){
try{
returngetImage(newURL(url,name))
}catch(MalformedURLExceptione){
returnnull
}
}

Apartirdelsegeneraelsiguientefragmentodedocumentacin(convertidoaXHTML):

http://lml.ls.fi.upm.es/ep/entornos.html 9/12
4/7/2016 Entornosdeprogramacin

getImage

publicImagegetImage(URLurl,
Stringname)

ReturnsanImageobjectthatcanthenbepaintedonthescreen.Theurlargumentmustspecifyan
absoluteURL.Thenameargumentisaspecifierthatisrelativetotheurlargument.

Thismethodalwaysreturnsimmediately,whetherornottheimageexists.Whenthisappletattemptsto
drawtheimageonthescreen,thedatawillbeloaded.Thegraphicsprimitivesthatdrawtheimagewill
incrementallypaintonthescreen.

Parameters:
urlanabsoluteURLgivingthebaselocationoftheimage
namethelocationoftheimage,relativetotheurlargument
Returns:
theimageatthespecifiedURL

SeeAlso:
Image

8.3Anlisisesttico

En estas tcnicas se analiza la estructura sintctica y/o semntica del programa para realizar
comprobaciones,extraerinformacinygenerarinformes.Algunosejemplosinteresantesson:

Anlisisdeconsistencia:Serealizancomprobacionesadicionalesalasquehabitualmentehaceun
compilador.Deestamanerasecompruebaqueelcdigonocontieneirregularidades,ambigedades,
cdigoinalcanzable,construccionesdesaconsejadas,etc.EjemploenlenguajeC:usodeunaasignacin
comocondicin,sentenciasimpleenun'if',etc:

if(x=3)
printf("ejemplo")
printf("\n")

Comprobacindeestilo:Secompruebasielcdigocumpledeterminadasreglasdepresentacino
codificacin.Puederealizarseconjuntamenteconelanlisisdelpuntoanterior.
Clculodemtricas:Existenmedidasbienestablecidasdelacomplejidadotamaodelcdigo.
Puedenutilizarsecomoindicadoresdecalidadodeproductividadeneldesarrollodelproyecto.
Consistenhabitualmenteenrecuentosdedeterminadoselementos(nmerodelneasdecdigo,de
sentencias,defunciones,etc.)yobtencindeparmetrosestadsticos(nmerodelneasporfuncin,
porcentajedecomentarios,nmerodemtodosporclase,etc.).
Seccionamiento(slicing)deprogramas:Consisteelextraerlapartedelcdigoqueintervieneenel
clculodeunadeterminadavariable.Estoayudaacomprenderelfuncionamientodelprograma,
diagnosticarfallos,detectardependenciasentrepartesdelcdigoodeterminarelimpactodeunposible
cambio.
Otrasayudasalacomprensindelcdigo:Enmuchoscasossetraducenendiagramasque
muestrandemaneraclaradeterminadascaractersticasdelcdigo.Porejemplo,elgrafodeflujode
llamadas,undiagramadeestructuramodular,etc.

Las operaciones de anlisis mencionadas tienen partes en comn, por lo que muchas veces una misma
herramientapuederealizarsimultneaoalternativamentevariasdeellas.

8.4Tcnicasavanzadasdeconstruccindecdigo

Eldesarrollodemetodologasdeprogramacinhadadocomoresultadodiversastcnicasyherramientasde
ayuda a la construccin de nuevo cdigo. Algunas de ellas se han incorporado a los entornos de
programacinintegradosyotrasestnsoportadasmedianteherramientasindependientes.Acontinuacinse
mencionanalgunasdeellas.

Asistentes(Assistants,Wizzards):Ayudanalprogramador,bienguiandolasoperacionesde
construccin,obiengenerandoautomticamentepartedelcdigo.Porejemplo,losentornosde
programacinorientadaaobjetospuedendisponerdeunClassWizzardquepresentaunndicedelas
http://lml.ls.fi.upm.es/ep/entornos.html 10/12
4/7/2016 Entornosdeprogramacin

clasesexistentesconsusmiembros,yfacilitalacreacindenuevoselementosgenerandounesqueleto
decdigoparalanuevaclaseomiembro.
Ingenierainversa:Noesunatcnicadegeneracindenuevocdigo,sinodereconstruccinde
informacindediseoapartirdecdigoheredadonodocumentado.
Reingeniera:Complementalaanterior,facilitandolareorganizacindelcdigoantiguoparafacilitarsu
mantenimiento.
Refactorizacin:Vieneaserunaformadereingenieracontinuadelcdigoendesarrollo,recomendada
porlametodologadeProgramacinExtrema(ExtremeProgrammingXP).Eldesarrollosehace
mediantecambiosprogresivos,yencadaunodeellossereorganizaelcdigo,siesconveniente.Es
decir,semodificaeldiseoynosloelcdigofuente.
Desarrollobasadoencomponentes:Esunaformaintensivadereutilizacin.Seconstruyeuna
aplicacincombinandocomponentesyaexistentesenlugardedesarrollarnuevoselementospartiendo
decero.Porsupuesto,slopuedeaplicarsedelaformaindicadasiexistepreviamenteunabasede
componentesparaeldominiodelaaplicacin.Engeneralexigedesarrollaralgodecdigopara
configurarlaaplicacinyavecesparaactuarcomointermediarioentrecomponentes(wrapper,
middleware),siestosnopuedenconectarsedirectamente.
Composicininvasiva:Aveceslasimplecombinacindecomponentesnoesposible,sinoqueel
cdigointernodeloscomponentesdebesermodificadoparcialmenteparaobtenerlanuevaaplicacin.
Enestecasodeberahaberunaherramientaquerealiceloscambiosdeacuerdoconunacierta
especificacin,enlugarderealizarloscambiosmanualmente.Laaccindecomposicindebeser
repetible,parafacilitarelmantenimiento.
Programacinorientadaaaspectos(AOP):Esunaformadecomposicininvasivaenqueelcdigo
baseseamplaparaincluirnuevos"aspectos"inicialmentenotenidosencuenta.Existenlenguajespara
definirlosnuevosfragmentosdecdigoeindicarenqupuntosdebeninsertarse.Laherramientade
soportesedenomina"tejedor"(weaver)ygeneraelcdigomodificadoapartirdelcdigooriginalyla
descripcindelosnuevos"aspectos".
Lenguajesespecficosdeundominio(DSL):Enlugardecrearlibrerasdefuncionespara
implementarlasoperacionesfrecuentesenundominiodeaplicacineinvocarlasdesdeunlenguajede
programacindeusogeneral,loquesepuedehacerescrearunlenguajedeprogramacin
especializadoqueincorporedirectamentedichasfuncionescomopredefinidas.Estelenguaje
especializadopuedefacilitarlaproductividaddelosprogramadoresaltrabajaraunniveldeabstraccin
superioryusarunanotacinmscompactaoespecfica,quefacilitelaclaridaddelcdigo.Esfrecuente
queestoslenguajeespecializadosnoseprocesenconuncompiladorespecfico,sinomedianteun
traductorogeneradordecdigoqueproducecdigofuenteenunlenguajedeprogramacindeuso
general,queposteriormentesecompiladelaformahabitual.Estofacilitaademscombinarenunmismo
proyectopartescodificadasconellenguajedeldominioyconellenguajedeusogeneral.
Programacinletrada(LiterateProgrammingLP):Seusapocoenlaprctica,aunquepuede
resultarmuyeficientedecaraalmantenimientodelsoftware.Laideaesredactarelcdigocomosifuera
undocumentotcnico,explicandocadaparte.Losfragmentosdecdigoaparecenentremezcladoscon
lasexplicaciones,enelordenadecuadoparaentenderelconjunto.Nohayqueseguirelordendel
cdigofinal,sinoquecadaparteseintroduceenelmomentoapropiadoparafacilitarlalecturay
comprensindeldocumento.Seutilizaunlenguajedeautorespecializado(denominadogenricamente
web),ydosherramientas:unaquegeneraeldocumentoenformatolegibleconunabuenapresentacin
(weave),yotraquegeneraelcdigodelaaplicacinlistoparasercompilado(tangle).

8.5Discusin

Lastcnicasyfacilidadesincorporadasenlosentornosdeprogramacinydesarrolloalolargodeestosaos
resultanextraordinariamentetilesparaabordarlaconstruccindegrandessistemasdesoftware,concientos
de miles o millones de lneas de cdigo. Pero su aplicacin sobre la base convencional de representar y
manipularelcdigofuentecomotextotieneuncosteenormeenesfuerzoparalacreacindelasherramientas
y en recursos para su aplicacin. Cada herramienta o funcin necesita analizar el texto de cdigo para
reconocersuestructuralgica.Parafacilitarlostratamientosesfrecuentequeenelentornosetenganalavez
unarepresentacindecdigocomotextoyunastablasondicesconsuestructuralgica,quesiesdetallada
ocupa un espacio muy superior al del mismo cdigo. Adems a medida que se modifica el cdigo hay que
mantenersincronizadasambasrepresentaciones,loqueexigeunagranpotenciadeclculo.

Losantiguosentornosorientadosaestructuranollegaronadesarrollarlasfacilidadesahoradisponibles,pero
tenan un enfoque mucho ms simple, con una sola representacin del cdigo, ms eficiente y sencilla de
manipular.Recientementehansurgidodesarrollosenlosqueserecuperanenpartealgunasideasotcnicas
deorientacinaestructura.

9.Referencias
1.S.A.Dart,R.J.Ellison,P.H.Feiler,A.N.Habermann:SoftwareDevelopmentEnvironments.IEEE
http://lml.ls.fi.upm.es/ep/entornos.html 11/12
4/7/2016 Entornosdeprogramacin

Computer,Vol.20No.11pp.1828,Nov.1987.
2.M.B.Doar:PracticalDevelopmentEnvironments(elCap.2:Projectbasics,estdisponiblecomo
muestra,ascomounavistaparcialdellibro).O'ReillyMedia,2005.
3.C.Fernstrm,KHNrfelt,L.Ohlsson:SoftwareFactoryPrinciples,Architecture,andExperiments.IEEE
Software,Vol.9No.2pp.3644,Mar.1992.
4.A.Fuggetta:AClassificationofCASETechnology.IEEEComputer,Vol.26No.12pp.2538,Dic.1993.
5.D.E.Perry,G.E.Kaiser:ModelsofSoftwareDevelopmentEnvironments.IEEETrans.Softw.Eng.,Vol.17
No.3,pp.283295,Mar.1991.
6.T.Teitelbaum,T.Repps:TheCornellProgramSynthesizer:ASyntaxDirectedProgramming
Environment.Comm.ACM,V.24N.9pp.563673,Sep.1981.
7.V.DonzeauGouge,G.Huet,G.Kahn,B.Lang:Programmingenvironmentsbasedonstructurededitors:
theMENTORexperience.
InInteractiveProgrammingEnvironments,McGrawHill,1984.
8.A.Habermann,D.Notkin:Gandalf:Softwaredevelopmentenvironments.IEEETransactionsonSoftware
EngineeringSE12,pp11171127,1986.
9.B.Templeton:AlicePascalwebsite(http://www.templetons.com/brad/alice.html)
10.T.Reps,T.Teitelbaum:TheSynthesizerGenerator.ACMSoftw.Engin.Notes,May1984.
11.L.R.Neal:CognitionSensitiveDesignandUserModelingforSyntaxDirectedEditors.
InProceedingsCHI+GI1987(Toronto,April59,1987)ACM,NewYork,pp2732.
12.SunMicrosystems:Javadocwebsite(http://java.sun.com/j2se/javadoc/writingdoccomments/index.html).

http://lml.ls.fi.upm.es/ep/entornos.html 12/12

Potrebbero piacerti anche