34
Gestión de tareas de desarrollo de software Fco. Javier Yáñ ez Juan ITIS Consultor: Javier Ferró Garcia 9 de enero de 2006

38392tfc

Embed Size (px)

DESCRIPTION

lajsp

Citation preview

  • Gestindetareasdedesarrollodesoftware

    Fco.JavierYezJuan

    ITIS

    Consultor:JavierFerrGarcia

    9deenerode2006

  • ndice de contenidoPlandetrabajo......................................................................................................................................................3

    DescripcindelTFC.......................................................................................................................................3Objetivosgeneralesyespecficos...................................................................................................................3Planificacin....................................................................................................................................................3

    Anlisisderequisitos............................................................................................................................................5Introduccin....................................................................................................................................................5Glosario...........................................................................................................................................................6Modelodedominio.........................................................................................................................................7Casosdeuso....................................................................................................................................................8Guiones...........................................................................................................................................................9Descripcintextualdeloscasosdeuso........................................................................................................10Fichasdeloscasosdeuso.............................................................................................................................11Futurasmejoras.............................................................................................................................................13

    Diseo.................................................................................................................................................................14Arquitectura..................................................................................................................................................15

    Capas.......................................................................................................................................................15Implementacindelascapas...................................................................................................................15Arquitecturadepatrones.........................................................................................................................17Diagramadedespliegue..........................................................................................................................19Diagramadecomponentes......................................................................................................................20Diagramadeclases..................................................................................................................................21Diagramadecolaboracin.......................................................................................................................23Persistencia..............................................................................................................................................24Detallesdeimplementacin....................................................................................................................26

    ServiceLocator...................................................................................................................................26TypesafeEnumeration.......................................................................................................................26

    Interfazdeusuario.........................................................................................................................................27Conclusiones.......................................................................................................................................................28Guadeinstalacin.............................................................................................................................................29

    Paso1.............................................................................................................................................................29Paso2............................................................................................................................................................29Paso3............................................................................................................................................................30Paso4............................................................................................................................................................30Paso5............................................................................................................................................................30

    2de34

  • Plandetrabajo

    DescripcindelTFCEstetrabajofinaldecarreraconsisteenlarealizacindeunaaplicacinbajolaplataformaJ2EE.La

    realizacindeesta aplicacinpermitir aplicarconocimientosadquiridosendiferentesasignaturasdelosestudiosdeITIS.ConeldesarrollodelaaplicacinseadquirirnlosconocimientosbsicossobreJ2EE.

    Laaplicacinarealizarpermitirgestionarlastareaspendientesenunproyectodedesarrollodesoftware.Esdeutilidadsobretodoenlasultimasfasesdelproyectocuandosequierecerraryhaymltiplescambiospequeosquehacer(corregirbugs,pequeasmejoras,etc).Tambinestilparalafasedemantenimientoenlaquelosusuariosdetectanbugsypidenpequeoscambios.

    ObjetivosgeneralesyespecficosEldesarrollodelaaplicacinsebasarenpatronesdediseo.

    Lalgicadelaaplicacinsedividirenvariaspartes:lgicadepresentacin,lgicadenegocioylgicadeintegracin(persistenciaenSGBD).Sepretendeaplicarlospatronesdediseoapropiadosparacadatipodelgica.

    Sepretendenlossiguientesobjetivosfuncionales:

    1. Introducir tareas pendientes indicando el tipo de tarea (corregir bug, aadir funcionalidad,cambiarfuncionalidad,etc),eltitulo,ladescripcin,laprioridadyelproyecto.

    2. Cambiarelestadodeunatarea(encurso,realizada,rechazada,etc.)

    3. Listarlastareasfiltradasporestado,yordenadasporprioridad.

    4. Crear,modificaryeliminarproyectos.

    PlanificacinFecha Hito

    16/10/05 Documentodeanlisisderequisitos

    30/10/05 Documentodediseo

    13/11/05 Programacin:Crear,modificaryeliminarproyectos

    20/11/05 Programacin:Introducirtareas

    27/11/05 Programacin:Listartareas

    4/12/05 Programacin:Cambiarelestadodeunatarea

    18/12/05 Memoria

    3de34

  • Fecha Hito

    25/12/05 PresentacindefensadelTFC

    4de34

  • AnlisisderequisitosIntroduccin

    Enlosproyectosdedesarrollodesoftwaresesuelengestionarlosbugsmedianteaplicacionesrealizadasparatalfin,como,porejemplo,bugzilla.

    Sepretenderealizarunaaplicacinquehagaunpocoms.Ademsdelosbugs,duranteeldesarrollodesoftwaresesuelenacumularpequeastareas,talescomovariacionesenlafuncionalidad,variacionesenelinterfaz,etc.Todasestastareasjuntoconlosbugspodrnsergestionadasporlaaplicacin.

    5de34

  • GlosarioProyecto:serefiereaunproyectodedesarrollodesoftware.

    Tarea:trabajopendientederealizarenunproyecto.

    Estado:situacinenqueseencuentrauntarea.

    Tipo:naturalezadeunatarea.Losposiblestipossonlossiguientes:bug,modificacin,nuevafuncionalidad.

    6de34

  • Modelodedominio

    Parasimplificarsehanomitidolosmtodosdeaccesoalosatributosdelasclases.

    7de34

  • Casosdeuso

    8de34

  • GuionesAdministrador:eladministradoreselresponsabledecrear,modificaryeliminarlosproyectosalosqueselesasignarntareas.

    Usuario:elusuarioserquienasignetareasalosproyectos.Tambinseencargardemodificarelestadodedichastareas.

    9de34

  • DescripcintextualdeloscasosdeusoCU01Crearproyecto:creaunnuevoproyectoenelsistema.

    CU02Modificarproyecto:modificalaspropiedadesdeunproyectoexistenteenelsistema.

    CU03Eliminarproyecto:eliminaunproyectoexistenteenelsistema.Siexistentareasrelacionadasconelproyectotambinsoneliminadas.

    CU04Listarproyectos:listatodoslosproyectosexistentesenelsistema.

    CU05Introducirtarea:introduceunanuevatareaasociadaaundeterminadoproyecto.

    CU06Modificartarea:modificalaspropiedadesdeunatareaexistenteenelsistema.

    CU07Cambiarestadotarea:cambiaelestadodeunatareaexistenteenelsistema.

    CU08Listartareas:listalastareaspertenecientesaundeterminadoproyecto.

    10de34

  • Fichasdeloscasosdeuso

    Casodeuso:crearproyecto Cdigo:CU01

    Descripcin:creaunnuevoproyectoenelsistema

    Actores:administrador

    Prioridad:alta

    Precondicin: Postcondicin:

    Casosdeusorelacionados: Frecuenciadeuso:baja

    Casodeuso:modificarproyecto Cdigo:CU02

    Descripcin:modificalaspropiedadesdeunproyectoexistenteenelsistema

    Actores:administrador

    Prioridad:baja

    Precondicin:elproyectotienequehabersidocreado

    Postcondicin:

    Casosdeusorelacionados: Frecuenciadeuso:baja

    Casodeuso:Eliminarproyecto Cdigo:CU03

    Descripcin:eliminaunproyectoexistenteenelsistema.Siexistentareasrelacionadasconelproyectotambinsoneliminadas.

    Actores:administrador

    Prioridad:baja

    Precondicin:elproyectotienequehabersidocreado

    Postcondicin: las tareas relacionados con elproyectonodebeexistir

    Casosdeusorelacionados: Frecuenciadeuso:baja

    Casodeuso:Listarproyectos Cdigo:CU04

    Descripcin:listatodoslosproyectosexistentesenelsistema

    Actores:administrador,usuario

    Prioridad:alta

    Precondicin: Postcondicin:

    Casosdeusorelacionados: Frecuenciadeuso:alta

    Casodeuso:Introducirtarea Cdigo:CU05

    Descripcin:introduceunanuevatareaasociadaaundeterminadoproyecto

    Actores:usuario

    11de34

  • Prioridad:media

    Precondicin: el proyecto relacionado tiene queexistir

    Postcondicin:

    Casosdeusorelacionados: Frecuenciadeuso:alta

    Casodeuso:Modificartarea Cdigo:CU06

    Descripcin:modificalaspropiedadesdeunatareaexistenteenelsistema

    Actores:usuario

    Prioridad:baja

    Precondicin:latareatienequeexistir Postcondicin:

    Casosdeusorelacionados: Frecuenciadeuso:baja

    Casodeuso:Cambiarestadotarea Cdigo:CU07

    Descripcin:cambiaelestadodeunatareaexistenteenelsistema

    Actores:usuario

    Prioridad:alta

    Precondicin:latareadebeexistir Postcondicin:

    Casosdeusorelacionados: Frecuenciadeuso:alta

    Casodeuso:Listartareas Cdigo:CU08

    Descripcin:listalastareaspertenecientesaundeterminadoproyecto

    Actores:usuario

    Prioridad:media

    Precondicin: Postcondicin:

    Casosdeusorelacionados: Frecuenciadeuso:alta

    12de34

  • FuturasmejorasDebidoalimitacionesdetiempoenesteproyectonosehanpodidoincluiralgunasfuncionalidades.

    Estasfuncionalidadessonlassiguientes:

    Seguridad: creacin de una gestin de usuarios basada en roles. Cada usuario deberautenticarseparaaccederalsistemaylafuncionalidadquetendrdisponiblevariarsegnlosrolesqueposea.

    Asignacindetareas: sepodrasignarunatareaaunusuarioenconcreto.Sepodrlistarlastareasasignadasaundeterminadousuarioyfiltrarporestado.

    Avisos por email: cuando a un usuario se le asigne una tarea se le avisar por correoelectrnico.

    13de34

  • Diseo

    14de34

  • Arquitectura

    Capas

    Enesteesquemapodemosverlascapasdelasquevaaconstarelsistema.

    Lacapaderenderizadoserefierealnavegador(InternetExplorer,Firefox,Opera,etc.).

    Lacapadepresentacineslaquerespondealaspeticionesdelacapaderenderizadodespusdeconsultaralacapadenegocio.SurespuestaesenformadeHTML.

    Lacapadenegociorespondealacapadepresentacindespusdeconsultaralacapadeintegracin.Enestacapaesdondesedebeimplementarlasreglasdenegocio.

    Lacapadeintegracinpermitealacapadenegocioaccederalapersistencia.

    Lacapadepersistenciaeslaquepermitepersistiryrecuperarlainformacinprocedenteodemandadaporlasotrascapas.

    Implementacin de las capasLacapaderenderizadonolavamosaimplementaryaqueexistenmltiplesnavegadoresquesiguenlos

    estndaresyquesernvalidosparaintegrarseenelsistema.

    15de34

    Renderiza

    do

    Presentaci

    n

    Negocio

    Integraci

    n

    Persiste

    ncia

  • LacapadepresentacinlaimplementaremosusandoelpopularframeworkStruts.

    LacapadenegociolaimplementaremosusandoStatelessSessionBeans.

    LacapadeintegracinlaimplementaremosusandoelpatrnDAO(vermsadelantelaexplicacin).

    La capa de persistencia, al igual que la de renderizado, no la vamos a implementar ya que existenmltiplessoluciones.EnestecasoconfiaremoslapersistenciaalSGBDPostgreSQL.

    16de34

  • Arquitectura de patrones

    17de34

    DAO

    SessionFaade

    ServiceLocator

    BusinessDelegate

    Controler

    Model

    View

    TransferObject

    BasedeDatos

  • EncolorazulestnloscomponentesdelpatrnMVC2.,engrislospatronesdelgicadenegocio,enrojolosdeintegracin,enazulelpatrnTransferObjectyenamarilloelSGBDquenoesunpatrnperoloheincluidoenelesquemaparamayorclaridad.

    MVC2: elpatrnMVC2(ModeloVistaControlador2)eselqueemplearenlacapadepresentacin.Struts esunframeworkmuyextendidoquesebasaenMVC2.ElfuncionamientodelpatrnMVC2sebasaenqueelcontrolador(servlet)recibelaspeticionesqueprocesa,traslocualinstanciaelmodelo(JavaBean o FormBean) e invoca a la vista (JSP) tras lo cual se contesta a la peticin. Enhttp://www.javaworld.com/javaworld/jw121999/jw12ssjjspmvc.htmlhayunarticulointeresantesobrelaaplicacindeMVC2conJSP.Deestearticuloheextradoelsiguienteesquema:

    SessionFaade:estepatrnpermiteenunaplataformamulticapaJ2EEmostrarunafachadadelacapadelgicadenegocioalacapadepresentacin.Encapsulaelaccesoalalgicadenegociopresentandounniveldeabstraccinelevado.Laimplementacindel SessionFaade serealizaconun sessionbean. EstepatrnestabasadoenelpatrnFaadedeGoF,ysedescribeenellibroCoreJ2EEPatterns.

    BussinesDelegate:lafuncindeestepatrnesencapsularlacomplejidaddelacomunicacinremotaconloscomponentesdenegocio.Aunqueseuseenlapartedelcliente,seconsideraunpatrndenegocioyaqueeselaccesodelalgicadenegocioparaelclienteylosueleprogramarelprogramadordelgicadenegocio.El Bussines Delegate suele usar el patrn Service Locator para hacer el lookup de los servicios. SecomunicadirectamenteconelSessionFaade.

    DAO:elpatrnDAO(DataAccessObject)permiteencapsularlosaccesosalapersistencia.Esunpatrndelacapadeintegracin.

    ServiceLocator:ocultalaimplementacindelmecanismodelookupdelAPIJNDI.

    TransferObject:seusaparamoverinformacinentrecapas.EnCoreJ2EEPatternssepresentacomounpatrndelgicadenegocio.Perootrosautoresloconsideranunpatrnmulticapa.TambinesconocidocomoValueObject.

    18de34

  • Diagrama de despliegueEneldiagramadedesplieguesevecomodesdeelcliente,pormediodelnavegadorweb,seaccedeal

    servidordeaplicaciones(Jboss)ydesdeesteseaccedealSGBD(PostgreSQL)queestnenotramquina(aunquepodraestarenlamisma).

    19de34

  • Diagrama de componentesLaaplicacinconstadedoscomponentes.SoftwareTasks.jareselcomponentequecontienelalgicade

    negocio, mientras que SoftwareTasks.war es el componente que contiene la lgica de presentacin. Elcomponentedelgicadenegociopresentaunosinterfacesalosquelalgicadepresentacinaccede.

    20de34

  • Diagrama de clasesElsiguientediagramasecorrespondeconlacapadenegocioeintegracin.

    21de34

  • Elsiguientediagramasecorrespondeconlacapadepresentacin.SehaincluidolaclaseProjectDelegatequenoperteneceestrictamentealalgicadepresentacin.

    nicamentesehacereferenciaalasclaserelacionadasconlaentidad proyecto yaquelosmecanismorelacionadosconlasdemsentidadessonmuysimilares.

    22de34

  • Diagrama de colaboracinEl siguiente diagrama de colaboracinse refiere al caso de uso de mostrar todos los proyectos. Es

    representativodelosdemscasosdeuso.

    23de34

  • PersistenciaLalabordepersistenciaseconfaalsistemagestordebasesdedatosPostgreSQL.Acontinuacinsedefinenlastablasjuntoconlassentenciasdecreacin.

    Tabla:Project

    Campo Tipo Referenciaa

    ProjectId serial

    Name text

    CREATE TABLE Project (ProjectId serial PRIMARY KEY,Name text);

    Tabla:Priority

    Campo Tipo Referenciaa

    PriorityId serial

    Name text

    CREATE TABLE Priority (PriorityId serial PRIMARY KEY,Name text);

    Tabla:Status

    Campo Tipo Referenciaa

    StatusId serial

    Name text

    CREATE TABLE Status (StatusId serial PRIMARY KEY,Name text);

    Tabla:Task

    Campo Tipo Referenciaa

    TaskId serial

    Name text

    Description text

    24de34

  • Tabla:Task

    Campo Tipo Referenciaa

    ProjectId int Project

    StatusId int Status

    PriorityId int Priority

    TypeId int

    CREATE TABLE Task (TskId serial PRIMARY KEY,Name text,Description text,ProjectId int REFERENCES Project,StatusId int REFERENCES Status,PriorityId int REFERENCES Priority,TypeId int);

    25de34

  • Detalles de implementacin

    ServiceLocator

    Para implementar el patrn ServiceLocator he estudiado dos ejemplos. El primero ha sido el de laaplicacinJavaAdventureBuilderqueestaenlosblueprintsdeSunsobreJava.Elcdigofuenteesten:

    http://java.sun.com/blueprints/code/adventure/1.0/src/com/sun/j2ee/blueprints/servicelocator/ejb/ServiceLocator.java.html

    PorotroladohemiradoelejemplodeOracle:http://www.oracle.com/technology/sample_code/tech/java/j2ee/vsm12/src/oracle/otnsamples/util/ServiceLocator.java.html

    MevoyaquedarconelejemplodeOracleporsusimplicidad.AunquelomodificarparaimplementarelpatrnSingletonynotenerqueinstanciarlaclasecadavezquesequierausar.

    Typesafe Enumeration

    Lostiposdetareasnosonconfigurables.PararepresentarlosusarelpatrnTypesafeEnumerationqueesdescritoenDesignPatterns:ElementsofReusableObjectOrientedSoftware.

    Este patrn permite representar un conjunto fijo de valores de manera segura. Cada valor de laenumeracinposeeunainstanciapublica.Existeunnicoobjetoparacadavalor.

    26de34

  • InterfazdeusuarioAqusemuestraunapantallasignificativadeloquepuedeserellistadodetareas.

    Elmenestposicionadoalaizquierdamientrasquealaderechaaparecenlosdilogos.

    27de34

  • ImplementacinEnesteapartadovoyacomentarlosaspectos,amijuicio,mssignificaticosdelaimplementacin.

    ServiceLocator

    LafuncionalidaddelServiceLocatoryahasidoexplicadaenelapartadodediseo.ParaimplementarmiServiceLocatormehebasadoenunodesarroladoporOracle:(http://www.oracle.com/technology/sample_code/tech/java/j2ee/vsm12/src/oracle/otnsamples/util/ServiceLocator.java.html)

    LohemodificadoparaqueimplementaraelpatrnSinglentonyparaquenohayaquehacercastingdelosdiferentesobjetosdevueltos.

    Elresultadoeselsiguiente:

    package edu.uoc.projecttasks.util;

    import java.util.Hashtable;

    import javax.ejb.EJBHome;import javax.naming.InitialContext;import javax.naming.NamingException;import javax.rmi.PortableRemoteObject;import javax.sql.DataSource;

    /* * Basado en el ServiceLocator de Oracle *

    */

    public final class ServiceLocator {

    // Cache of objects in JNDI tree private static Hashtable homeCache = new Hashtable();

    // Initial context private static InitialContext defaultContext = getContext();

    private ServiceLocator() { }

    private static InitialContext getContext() { try { return new InitialContext(); } catch (NamingException e) { throw new ServiceLocatorException(e.getMessage()); } }

    /** * Method to return an object in the default JNDI context, with the supplied * JNDI name. * @param jndiName The JNDI name * @return Object The object in the JNDI tree for this name. * @throws UtilityException Exception this method can throw */

    28de34

  • public static Object getService(String jndiName) { try { if (!homeCache.containsKey(jndiName)) {

    // If the service is not in the cache, get the object for the // supplied jndi name and put it in the cache homeCache.put(jndiName, defaultContext.lookup(jndiName)); } } catch (NamingException ex) { throw new ServiceLocatorException("Exception thrown from getService " + "method of ServiceLocator class : " + ex.getMessage()); } catch (SecurityException ex) {

    throw new ServiceLocatorException("Exception thrown from getService " + "method of ServiceLocator class : " + ex.getMessage()); }

    // Return object from cache return homeCache.get(jndiName); }

    public static Integer getInteger(String jndiName) { return (Integer) getService(jndiName); }

    public static String getString(String jndiName) { return (String) getService(jndiName); }

    public static DataSource getDataSource(String jndiName) { return (DataSource) getService(jndiName); }

    public static EJBHome getRemoteHome(String jndiName, Class className) { return (EJBHome) PortableRemoteObject.narrow( getService(jndiName), className);

    }

    }

    XDoclet

    XDoclet(http://xdoclet.sf.net/)esunaherramientadegeneracinautomticadecdigo.LaaplicacinquehedesarrolladohaceusodelosStatelessSessionBeans,quesonbastanteengorrososdeprogramardebidoaquehayquerealizarvariasclasesparaunosolo.GraciasaXDocletbastaconprogramarunnicaclaseylasdemssegeneranautomticamente. Porejemplo,paraprogramar PriorityFacade sehaninsertadoenelcdigofuentelossiguientesatributosXDoclet:

    /** * @ejb.bean name="PriorityFacade" * display-name="Name for PriorityFacade" * description="Description for PriorityFacade" * jndi-name="ejb/PriorityFacade" * type="Stateless" * view-type="both"*/

    29de34

  • Tags

    Enlacapadepresentacinlastareassonmuysimilares.ParanotenerquerealizarcdigoJSPmuysimilarencadaJSPheutilizadotagsdeJSP.Elmstilmehasidoelqueheempleadoparaloslistados:

    Eliminar

    TypeSafeEnumeration

    Para implementar el patrn Type Safe Enumeration he hecho uso del Enum de Java 5. Lo cual hasimplificadobastantelascosas.

    Haquedadoas:

    package edu.uoc.tfc.projecttasks.to;

    30de34

  • import java.io.Serializable;

    public enum TypeTO implements Serializable {

    BUG(1, "bug"), NEW_FUNCTIONALITY(2, "Nueva funcionalidad"),MODIFICATION(3, "Modificacin"), OTHER(4, "Otros");

    private int id;private String name;

    private TypeTO(int id, String name) {this.id = id;this.name = name;

    }

    public int getId() {return id;

    }

    public void setId(int id) {this.id = id;

    }

    public String getName() {return name;

    }

    public void setName(String name) {this.name = name;

    }}

    31de34

  • ConclusionesLarealizacindeunproyectoJ2EEnoestrivial.LospatronesdediseoespecificosparaJ2EEsonuna

    orientacinbsica,porlocualesnecesariotenerconocimientosdediagramacinUML.Debidoalotediosodelaprogramcindelasinterfaces,localesyremotas,esmuyrecomendablerecurriraXdocletparacrearcdigodeformaautomtica.

    En la parte de presentacin la base es el conocimiento del HTML. Conociendo HTMLno es muycomplicadoentenderlafilosofiadelJSP.DentrodeJSPhayunavariedaddelibreriasquesepuedenescoger.EnelcasodeesteproyectoheoptadoporlasqueparecensermsdifundidasStrutsyJSTL.StrutsademsdeproporcionarlibreriasdetagsproporcionaunFrontControllerqueimplemetaMVC2.Sinosedispusieradelframework Struts , o de cualquier otro, la programacin de la parte de presentacin sera mucho mscompleja.

    LaconclusinfinalesqueprogramarunaaplicacinJ2EErequieredeunacurvadeaprendizajeelevada.AcambioJ2EEproporcionaunaseriedeventajas:separacindelgicadenegocioypresentacin,seguridadcontroladaporelservidordeaplicacionesyrobustezdelasaplicaciones,entreotrasventajas.

    32de34

  • GuadeinstalacinLoexplicadoaquserefierealainstalacindelaaplicacinenunservidordeaplicacionesJBoss.Seha

    probadoenunJBoss versin4.0.3.. Esdeesperarquefuncioneenotras versiones, aunquenohasidoverificado.

    Paso1

    Creareneldirectoriodedespliegueunfichero,correspondientealdatasource,llamadotasksds.xmlconelsiguientecontenido:

    TasksDS jdbc:postgresql://localhost:5432/tasks org.postgresql.Driver javier

    PostgreSQL 8.0

    Esposible,dependiendodelaconfiguracindelabasededatos,quehayaquemodificarelusuarioycontraseadelfichero.

    Paso2

    Crearlaestructuradelabasededatosconlassiguientessentencias:

    33de34

  • CREATE TABLE Project (ProjectId serial PRIMARY KEY,Name text);

    CREATE TABLE Priority (PriorityId serial PRIMARY KEY,Name text);

    CREATE TABLE Status (StatusId serial PRIMARY KEY,Name text);

    CREATE TABLE Task (TskId serial PRIMARY KEY,Name text,Description text,ProjectId int REFERENCES Project,StatusId int REFERENCES Status,PriorityId int REFERENCES Priority,TypeId int);

    Paso3

    CopiareneldirectoriodelibreriasdelservidorlaslibreriscorrespondientesaStrutsyaJSTL.

    LaslibreriasdeStrutsestndisponiblesenhttp://apache.rediris.es/struts/library/struts1.2.8lib.zip.

    Las librerias de JSTL estn disponibles en http://www.apache.org/dist/jakarta/taglibs/standard/jakartataglibsstandardcurrent.zip

    Paso4

    CopiareneldirectoriodedespliegueelficheroProjectTasksApplication.ear.

    Paso5

    ArrancarJBossyaccederahttp://localhost:8080/ProjectTasksWeb/

    34de34

    Plan de trabajoDescripcin del TFCObjetivos generales y especficosPlanificacin

    Anlisis de requisitosIntroduccinGlosarioModelo de dominioCasos de usoGuionesDescripcin textual de los casos de usoFichas de los casos de usoFuturas mejoras

    DiseoArquitecturaCapasImplementacin de las capasArquitectura de patronesDiagrama de despliegueDiagrama de componentesDiagrama de clasesDiagrama de colaboracinPersistenciaDetalles de implementacinServiceLocatorTypesafe Enumeration

    Interfaz de usuario

    ImplementacinService LocatorXDocletTagsType Safe Enumeration

    ConclusionesGua de instalacinPaso1Paso 2Paso 3Paso 4Paso 5