Está en la página 1de 13

Reproduccinprohibida

CopyrightCdricSimon,2008

Profesor:CdricSimon

SolucionJava.com

Manual del alumno

Ing.CedricSimonTel:2680974Cel:8882387Email: c e d r i c @ s o l u c i o n j a v a . c o m Web:www.solucionjava.com

Curso de
tcnicas de desarrollo

Cursodetcnicasdedesarrollo

Pagina2/13

1 ndice
ndice....................................................................................................................................................................................2
1 Introduccin al curso.........................................................................................................................................................3
1.1 Objetivo de este curso......................................................................................................................................................3
1.2 Manual del alumno...........................................................................................................................................................3
1.3 Requisitos para atender a este curso.............................................................................................................................3
1.4 Soporte despus del curso................................................................................................................................................3
2 Ciclo de vida del desarrollo de una aplicacin.................................................................................................................4
2.1 Objetivo..............................................................................................................................................................................4
2.2 Establecimiento de los requisitos...................................................................................................................................4
2.3 Estimacin de alta nivel...................................................................................................................................................4
2.4 Diseo funcional................................................................................................................................................................4
2.5 Diseo tcnico....................................................................................................................................................................5
2.6 Desarrollo...........................................................................................................................................................................5
2.7 Pruebas unitarias..............................................................................................................................................................5
2.8 Plan de prueba .................................................................................................................................................................6
2.9 Integracin.........................................................................................................................................................................6
2.10 Pruebas de usuarios.......................................................................................................................................................6
2.11 Produccin.......................................................................................................................................................................6
2.12 Parches.............................................................................................................................................................................6
3 Manejo de versiones...........................................................................................................................................................7
3.1 Uso de programa de manejo de versiones.....................................................................................................................7
3.1.1 Sistema de bloqueo................................................................................................................................................7
3.1.2 Sistema de fusin..................................................................................................................................................8
3.1.3 CVS.......................................................................................................................................................................9
3.1.4 Subversion.............................................................................................................................................................9
3.2 Ramas de desarrollo.........................................................................................................................................................9
3.3 Integracin de CVS con herramientas de desarrollo : Eclipse y CVS...................................................................10
4 Documentacin del cdigo..............................................................................................................................................11
4.1 Uso.....................................................................................................................................................................................11
4.2 Objetivo............................................................................................................................................................................11
4.3 Estandartes......................................................................................................................................................................11
5 Reglas de nombramiento.................................................................................................................................................12
5.1 Objetivo............................................................................................................................................................................12
5.2 Ejemplos de reglas de nombramiento.........................................................................................................................12
5.3 Nombramiento de cdigos.............................................................................................................................................12
5.4 Nombramientos de variables........................................................................................................................................12

CopyrightCdricSimon,2007

Versin1.0

Reproduccinprohibida

Cursodetcnicasdedesarrollo

Pagina3/13

1 Introduccinalcurso
1.1 Objetivodeestecurso
Estecursointentadaralalumnobuenascostumbresdedesarrolloyclavesparadesarrollaraplicaciones
estables,sostenible,ylistasparacrecer.

1.2 Manualdelalumno
Estemanualdelalumnoesunaayudaparaelalumno,paratengaunrecuerdodelcurso.Estemanual
contieneunresumendelasmateriasquesevanaestudiarduranteelcurso,peroelalumnodeberade
tomarnotaspersonalesparacompletasestemanual.

1.3 Requisitosparaatenderaestecurso
Nohayrequisitosparaseguirestecurso,perounaexperienciapreviaendesarrollodeaplicacioneses
deseableparaentendermejorelfindelcurso.

1.4 Soportedespusdelcurso
Sitienespreguntassobrelamateriadelcursoentusejerciciosprcticos,puedesescribirtus
preguntasacedric@solucionjava.com.
Parainformacionessobreotroscursos,visitaelsitiowebwww.solucionjava.com.

CopyrightCdricSimon,2007

Versin1.0

Reproduccinprohibida

Cursodetcnicasdedesarrollo

Pagina4/13

2 Ciclodevidadeldesarrollodeuna
aplicacin
2.1 Objetivo
Paralograrundesarrollosostenibleesimportanteconoceryrespetarelciclodevidadeunaaplicacin.
Elcicloexplicadoenseguidasirvetantoparaeldesarrollodenuevaaplicacionescomoparamodificaruna
aplicacinexistente.
Cuandosedeseacambiarunavariaspartesdeunaaplicacinseagrupanenunproyecto,yelproyecto
sigueelciclodevidaexplicadoabajo.
Dependiendodeltamaodelaaplicacinydelaempresa,lasetapastomarnmsomenosimportancia.
Entremsgrandeeslaaplicacin,msimportanteesdepegarseacadapaso.
Paraaplicacionesgrandey/oimportantes,seutilizanvariosambientes.Esdecirquelaaplicacinexiste
envariosejemplares.Deberadetenersiempreunmnimodedosambientes:produccinydesarrollo.
Otrosambientespuedenserelambientedeintegracin,eldepruebadeusuario,eldecapacitacin,yel
dereferencia.

2.2 Establecimientodelosrequisitos
Esaveceslomsdifcildeconseguir,peroeslomsimportante.Losusuariooelclientedebeexplicar
claramentequeesloqueelquiere.
Paraesoeldebelistartodossusrequisitosdemaneradetallada.'Hagacomoentalotromodulo...'nose
puedeaceptarcomounrequisitovlido,peroleconcedoqueaveceshayqueaceptarlo(elclientees
rey...).
Cuandolosrequisitosnoestnmuydetallados,esmuyimportantedetallarlosenlaanlisisfuncional,
paraestarseguroqueloquesevaadesarrollareslodeseado.

2.3 Estimacindealtanivel
Estepasoesopcional.Esunaestimacin'aprimeravista'delesfuerzo(trabajo)necesariopara
implementarloscambiosodesarrollarlaaplicacinrequerida.
Esosirveparaestimarelcostoyplanificarlosrecursosnecesarios.

2.4 Diseofuncional
Eslatraduccindelosrequisitos(punto2.2)enundiseo'informtico'.Porejemplo,sedescribircomo
parecernlaspantallasdelGUI,losflujosdepantallasylosflujosdenegociosqueseimplementarn.

CopyrightCdricSimon,2007

Versin1.0

Reproduccinprohibida

Cursodetcnicasdedesarrollo

Pagina5/13

Lapersonaqueredactaeldiseofuncionaldebetenerunaideageneralquecomoseimplementara
niveltcnico,paraevitardeproponereneldiseoalgoquenosepuedeimplementar,oquepediraun
esfuerzodemasiadograndeparaimplementar.
Esbuenaideaqueunprogramadorrevisaestediseoantequeselepresentaalcliente,paratenerun
acuerdotcitodeque,aprimeravista,sepuedeimplementaralniveltcnicodentrodelcosto(tiempo)
estimado.
Encasoquesehizounaestimacindealtanivel,elesfuerzo/costosepuedeconfirmar,afinar,omodificar
aqu.
Elobjetivoesqueelcliente'firma'eldiseofuncionalcomoacuerdodelosquesevaadesarrollar.Este
documentoservirdebaseparalaevaluacin(prueba)delaaplicacin.
Sialfinalalgonofuncionacomoesperado,hayqueregresaraldiseofuncionalparaaveriguarsiel
puntoquedaproblemaestabapresenteeneldiseoono.Sinoestabanieneldiseonienlos
requisitos,setratadeunnuevorequisito(acargodelcliente).Siestpresenteyfuncionacomodescrito,
essetratadeuncambioderequisito(acargodelcliente).Siestpresenteperonofuncionacomo
descrito,esunerrordeprogramacinquehayquecorregir(acargodeldesarollador).
UnejemplodediseofuncionalestdisponibleenelCD(AFSiminsaenlinea.pdf).

2.5 Diseotcnico
Eslatraduccindeldiseofuncionalenunasolucintcnica.Sedescribelaarquitecturatcnicaquese
vaautilizarparaprogramarlorequerido.
Eldiseotcniconodeberadecontenercdigofuente,sinolaestructuradelcdigoquesevaautilizar
ydeloscambiosnecesarios.Queseancambiosdelabasededatos,nuevosobjetosJava,servlet,...
Unavezfinalizado,estediseodeberaserrevisadoyaprobadoporelanalistafuncionalantedeiniciar
eldesarrollo.

2.6 Desarrollo
Eslaaplicacindeldiseotcnicoyelpropiodesarrollodelaaplicacin.
Encasoquesehizounaestimacindealtanivel,elesfuerzo/costosepuedeconfirmar,afinar,omodificar
aqu.
Encasoqueseencuentraalgnproblema(lasolucinimaginadanofuncionaodaproblemas),hayque
revisarlasituacinconelanalistafuncional,yeventualmenteelclientesielimpactoesgrande.

2.7 Pruebasunitarias
Despusdehaberhechosudesarrollo,elprogramadordebeprobarsucdigodemaneraunitaria.Es
decir,cadacdigoapartesintenerencuentalatotalidaddelaaplicacin.Laspruebassedeberande
hacerencondicionessimilaralaproduccin.Esdecirquesilaaplicacinfuncionaen3tiers,hayque
probarlaen3tierstambin.

CopyrightCdricSimon,2007

Versin1.0

Reproduccinprohibida

Cursodetcnicasdedesarrollo

Pagina6/13

Laspruebashechassedebenregistrarypresentaralanalistafuncionalparapoderconcluirqueelcdigo
estlistoparapasaralambientedeintegracin.

2.8 Plandeprueba
Unavezeldiseofuncionalaprobado,elanalistafuncionalylosusuariosdeberan(cadauno)que
escribirunplandeprueba.
Elplandepruebadebecontenerademsdelaspruebasdelcdigonueva,pruebasderegresin,para
verificarquelasprincipalesfuncionesdelaaplicacinpreexistentenohansidoimpactadodemanerano
deseada.

2.9 Integracin
Estepasoeselpuestoencomndetodoslasmodificacionesdelaaplicacin,yaquevariosproyectos
diferentespuedendesarrollarseenparalelo,yquemsdeunprogramadorpuedetrabajarenelproyecto.
Aquesqueelanalistafuncionalharsuspruebasparavalidarlaaplicacin,antesdeentregarlaal
cliente.
Lapruebasdeberanserdocumentadas,ascomolosproblemasencontrados.
Ademsdeprobarlasnuevasfuncionesocambiosdelsistema,sedebesiempreefectuarpruebasde
regresinparaasegurarsequetodaslasfuncionesimportantesdelaaplicacin,mismosinohansido
modificadadirectamente,siguenfuncionandocomoesperado.

2.10Pruebasdeusuarios

Aqusonlosusuariosquevanhacersuspruebas.
Lapruebasdeberanserdocumentadas,ascomolosproblemasencontrados.
Unavezlaspruebasterminadas,elclientedecidesielestdeacuerdoquelaaplicacinpasaa
produccinono.

2.11Pruebasderendimiento

Aqusevaaprobarelrendimientodelaaplicacin.Laspruebasderendimientosedeberanefectuar
sobreunambientelomsparecidoposiblealaproduccin.
Sevanaprobarentreotroslacargaquesoportaelsistema,eltiempodeejecucindelosinterfaces
'batch',yelrendimientodelasdiferentespartesdelsistema.
Elobjetivoesdetectarantesdeproduccinposiblesproblemasderendimientos(porejemploconsulta
SQLnooptimizada),yconocerlaslimitesdecargadelsistema(usuarios,transacciones,...).Existen
programasquepermitengenerarcargadelsistemasimulandomltiplesusuarios.,comoJMeter.

2.12Produccin

Aquesdondeseusafinalmentelaaplicacin.Debeserunambienteestable.Laproduccinnose
deberademodificarmuyseguido.
CopyrightCdricSimon,2007

Versin1.0

Reproduccinprohibida

Cursodetcnicasdedesarrollo

Pagina7/13

2.13Parches

Losparchessoncorreccionesdecdigosporerroresquenofuerondetectadasantesdeproduccinoque
lofueronperoquenoerancrticasynosepodancorregiratiempoparapasarenproduccin.Tambin
puedenservirparaimplementarcambiospequeos(requisitomodificadoencaminodeldesarrollodel
proyecto).
Losparchesdebendeseguirelmismociclo(puntos2.2a2.11),peromsligeramente.

2.14Seguimientodeproblemas

Paraseguirelestadodelosproblemasquefueronreportados,lesaconsejoelusodealgntipode
programa.Lomssimpleseraunarchivotextoountabulador,hastaprogramasdiseadosparaeste
tipodeactividad(porejemploPeregrine).Personalmente,hediseadounprograma,basadoenmi
experienciaconPeregrine,paraelseguimientosdeactividades(proyectos,parches,problemas...)quede
llamaVIDA,estescritoenJava(JSP)conbasededatosMySQL.

CopyrightCdricSimon,2007

Versin1.0

Reproduccinprohibida

Cursodetcnicasdedesarrollo

Pagina8/13

3 Manejodeversiones
3.1 Usodeprogramademanejodeversiones
Unodelosproblemasenlavidadeunaaplicacinesdesabercualeslaversinactual(enproduccin)de
losarchivos,sintenerquesacarunacopiadelaproduccin,depoderretrocederhaciaunaversin
anterior.Otroproblemaeseldesarrolloconcurrente(variosprogramadorestrabajandosobreunmismo
cdigo).
Paracontestarestosproblemasexistenlosprogramasdemanejodeversiones.Estosprogramasvana
guardartodoslosarchivosenunrepositorio.Seincrementarautomticamenteelnmerodeversinde
unarchivocadavezqueseguardaunanuevaversindelarchivoenelrepositorio,yselepodradjuntar
uncomentarioconelfindepodertrazarelhistricodelarchivo.
Enunsistematpicodeclienteservidor,unasolapersonapuedetenerelderechodeescribirenel
archivo,losdemssololopuedenleer.Sidospersonasleenelmismoarchivo,lomodificancadaunode
suladoyluegoloescriben,lasegundapersonavaasobrescribirloscambioshechosporlaprimera
persona,perdiendosutrabajo.
Elproblemaaevitar

Paraevitaresteproblemadesobreescritura,existendossoluciones:elbloqueodelarchivo,ylafusinde
archivos.
3.1.1

Sistemadebloqueo

Conelsistemadebloqueo,unusuarioadquiereunbloqueodeunarchivo,loqueimpidecualquierotro
usuariodemodificarlohastaqueelbloqueohagasidoquitado.

CopyrightCdricSimon,2007

Versin1.0

Reproduccinprohibida

Cursodetcnicasdedesarrollo

Pagina9/13

Conestesistema,unarchivosolopuedeserutilizadoporunusuario.Nosepermiteeldesarrollo
concurrente.
Estoaseguraquealmomentodeguardarsucopia,nadiehamodificadoenarchivodedesdeelbloqueo.
Elpuedesobrescribirelarchivoenelrepositoriosinriesgodesobrescribirloscambioshechosporotro
usuario.
Lasolucindebloqueolecturaescrituradesbloqueo

3.1.2

Sistemadefusin

Conelsistemadefusin,losusuarioguardanunacopiadelarchivoenlocal,yalmomentodeguardarlo
elsistemadetectasialguiendeotromodificoelarchivoenelrepositoriodesdeelmomentodelacopiaen
local.Encasoquesi,tendrqueocurrirunafusindeloscambiosantesdepoderguardarlos.Eso
permiteeldesarrolloconcurrente.
Lafusinsepuedepasarautomticamenteomanualmente.Encasodeconflictos(porejemplouna
mismalneamodificadapordospersonas),harqueresolverlosmanualmente.
Hayquenotarquelafusinfuncionamuybiencuandoelcdigosefusionaysecompilanenla
herramientamisma(comoEclipse),peronotantocuandosefusionaafueradelentorno,amenosquese
validaluegotodoelcdigofusionado,loquepuedeserfastidioso.Paraestosltimos,elbloqueoesuna
mejoraopcin.

CopyrightCdricSimon,2007

Versin1.0

Reproduccinprohibida

Cursodetcnicasdedesarrollo

Pagina10/13

Lasolucincopiarmodificarfusionar

3.1.3

CVS

CVSesunprogramalibrequepermitemanejarversionesdearchivos.Eselsistemamssoportados,y
muchasherramientassoportanpordefectolaconexinconunrepositoriodeCVS.
Msinformacinenwww.cvs.org
3.1.4

Subversion

SubversionesunsistemadecontroldeversincomoCVS(elherededeCVS),peroconms
posibilidades.Entreotros,Subversionpermiteversionarcarpetas,sobrevivirenelhistricoauncambio
denombredeunarchivo,ysoportavariostiposdeconexin,entreotrosHTTPoHTTPS.Seest
haciendomuypopularporloquesuperaaCVSyesgratis.
Msinformacinenhtt
p://subversion.tigris.org/

3.2 Ramasdedesarrollo
Losprogramasdecontroldeversinpermitencrearramasdentrodelrepositorio.
Elcdigo'original'seencuentraeneltronco(TRUNK/HEAD).Cuandoseiniciaunproyectode
modificaciones,secreaunaramasaliendodeltronco,ysetrabajarenestarama.Cuandoelproyecto
pasaaproduccinseponealdaeltroncoconlasmodificaciones.

CopyrightCdricSimon,2007

Versin1.0

Reproduccinprohibida

Cursodetcnicasdedesarrollo

Pagina11/13

Ramasdedesarrollo

Histricodeunarchivoconrama

3.3 IntegracindeCVSconherramientasdedesarrollo:
EclipseyCVS
EclipseseintegrademaneranativaconCVS,yvaunpluginconSubversin.
Vamosacrearunnuevoproyecto,guardarloenCVS,yluegocargarelproyectoenotrocomputadora,
modificarunarchivoenamboscomputadorasyvercomosecomportalafusindelasmodificaciones.
Hayquenotarquelosentornosestneningles.

CopyrightCdricSimon,2007

Versin1.0

Reproduccinprohibida

Cursodetcnicasdedesarrollo

Pagina12/13

4 Documentacindelcdigo
4.1 Uso
Ladocumentacindelcdigosirvetantoparaelcreadordelcdigocomoparalosotrosprogramadores
queluegomodificarnelcdigo.
Ladocumentacinsepuedeencontrarendoslugaresdistintos:enelcdigomismooafueroenotro
archivo.
Ladocumentacinqueseguardaafueraesdedostipos:eldiseotcnico,quedalaestructurageneral,y
laimplementacintcnica,quedalosdetallestcnicosobreelcdigomismo.Unejemplodeesaltima
documentacinenlaJavaDoc.

4.2 Objetivo
Elobjetivodeladocumentacindelcdigoestantoparaqueotrapersonapuedaentendercomofunciona
elcdigo,comoconfinesdeauditoria,paraquealguienquetienequecambiaruncdigoqueelconoca
antessepuededarcuentasialguiendeotrolotocyqueselehacambiado.

4.3 Estandartes
Sinoexistenestandartesinternacionalesdedocumentacindelcdigo,esmuyimportantequedentrode
unamismaorganizacinseimplementanestandartesparaquetodoelmundotrabajadelamisma
manerayqueunprogramadorpuedeencontrarlainformacinfcilmente,sinimportanciadequiencreo
ocambielcdigo.
Entonceshaydostipodeinformacinenladocumentacin:losdatoshistricosylosdetallestcnicos.
UncasoespecialeslaJavaDoc.ParautilizarlaJavaDoc,quecreaunadocumentacinenformatoHTML
sobrelasclasesysusmtodosautomticamentebasndoseencomentariosestructuradosadentrodel
cdigoJava,hayquerespetarunosestandartesparaquesepuedagenerarladocumentacin(que
JavaDocsepacualessonloscomentariosaincluirenladocumentacin).
Paralainformacinhistrica,leaconsejodecolocarlaencabezadelcdigo,conlosdatossiguiente:la
versindelarchivoodelaaplicacin,lafechadelcambio,lasinicialesoelnombredelprogramadorque
hizoelcambio,yladescripcingeneraldelcambio.
Porejemplo:
/*
* Version
* 1.0
* 1.0.1
* 1.1
*
*/

Fecha
10/03/06
02/05/06
05/10/06

Programador
Cedric
Cedric
Jose

Detalles
Creacin del cdigo. Proyecto no 845.
Correccin bug no 245
Adjunto de la posibilidad de mencionar origen de la
compra. Proyecto no 1545.

Cuantoalladocumentacintcnicaenelcdigo,haynohayrealmenteestandartes.Hayqueprobarde
metersuficienteinformacinparaqueotroprogramadorpueda'entrar'fcilmenteenelcdigoy
entenderadondemodificarloparalograrsuproyecto.Lasreglasdenombramientotambinayudana
documentarelcdigo.

CopyrightCdricSimon,2007

Versin1.0

Reproduccinprohibida

Cursodetcnicasdedesarrollo

Pagina13/13

5 Reglasdenombramiento
5.1 Objetivo
Lasreglasdenombramientopermitenquelosprogramadorespuedanentenderfcilmentelaestructura
deuncdigoyinteractuarmsfcilmenteconotroscdigos.
Ciertoslenguajetienenestandartesinternacionalesmuyseguidos,comoellenguajeJava.Otrosno,yse
tienequedefinirunestndaranivellocal.
Existenrestriccionesdenombramientoquesonpropiasacadalenguaje,Porejemplo,porlogeneralun
nombredevariablenopuedeserigualaunapalabrareservadadellenguaje.
Tambin,ciertoslenguajessonsensiblesamaysculasyminsculas,yotrosno.Ciertoslenguajes
permitenelusodeacentos,peronoseloaconsejoporquepuededarconfusinsiunoloutilizayotrono,
ositrabajacondoslenguajedelcualunoaceptaacentosyotrono.Tambinciertasherramientasno
soportanlosacentos,ysitrabajaconLinuxoUnixyWindows,copiandoarchivosdeunsistemaalotro
podradarproblemasconlosacentos.
Essiempreimportanteelegirunnombrequeseainteligible,esdecirquecuentalosquecontieneel
archivo/cdigo/variable...

5.2 Ejemplosdereglasdenombramiento
Lasreglasdenombramientoayudanaencontrarfcilmenteunarchivo.Porejemplo,sepuededefinir
quetodoslosnombresdearchivossernenminscula,consubrayaparasepararnombresinternos(por
ejemplopagina_de_inicio.html).

5.3 Nombramientodecdigos
Ademsdelcdigoprincipalvantambinpartesinternasdelcdigos(comolaclaseysusmtodos).Es
buenodefinirunaregladenombramientoparacadatipodepartedecdigo.
Cuandohayvarioscdigosmuycercanos,conaccinmuyparecida(porejemplolosdisparadores),se
puedeusarprefijososufijosparadiferenciarlos.Porejemplo:'empleado_au'paraundisparador'after
update'sobrelatableempleado,'empleado_bi'paraundisparador'beforeinsert'sobrelatableempleado,

5.4 Nombramientosdevariables
Paraelnombramientodevariablesexistenvariosestandartesinternacionales,deloscualeselms
conocidoeslanotacinhungarina('Hungariannotation').Ustedsepuedepegarauno,ocrearelsuyo.
Porlogeneralesbuenapracticadetenerporlomenosdospartesensunombredevariable:unprefijo
indicadordealcance(variablelocal,global,parmetro)yelnombreinteligibledelavariable.
Porejemplo:sinprefijoparavariableslocales,elprefijo'g_'paravariablesglobales,yelprefijo'p_'para
parmetros.
Ciertosestandartestambinadjuntaneltipodevariableenelnombredealvariable.
CopyrightCdricSimon,2007

Versin1.0

Reproduccinprohibida

También podría gustarte