Arquitectura MVC

Embed Size (px)

Citation preview

  • 5/25/2018 Arquitectura MVC

    1/56

    UNIVERSIDADE DA CORUA

    Departamento de Tecnoloxas da Informacin e as Comunicacins (TIC)

    UNIVERSIDADE DA CORUA

    Departamento de Tecnoloxas da Informacin e as Comunicacins (TIC)

    Diseo e Implementacin de una AplicacinWeb Java EE con Arquitectura MVC

    Manuel lvarez Daz

    http://www.tic.udc.es/~mad

    [email protected]

    Diciembre 2006

    Generalidades PFC3

  • 5/25/2018 Arquitectura MVC

    2/56

    Diciembre 2006 Generalidades PFC3 2

    ndice

    Enfoque para el Proyecto Generalidades Metodologa

    Proceso Unificado

    Estndar de Codificacin Java Generalidades Herramientas Caractersticas Java SE 5.0 Apache Ant

    Apache Maven 2 IDE Eclipse JUnit

    Visin Rpida de Tecnologas J2EE (documentacin de IS) Instalacin de Ejemplos de Integracin de Sistemas Tutorial de JDBC - MiniBank Tutorial de XML Tutorial de Tecnologas Web (MVC & Apache Struts) - MiniPortal

  • 5/25/2018 Arquitectura MVC

    3/56

    Diciembre 2006 Generalidades PFC3 3

    Enfoque para el Proyecto

    Para la realizacin de la aplicacin software del proyecto se aconsejaun enfoque basado en iteraciones, de manera que cada iteracinincorpora ms funcionalidad, hasta que en la ltima iteracin setermina con un software que implementa toda la funcionalidad. En cada iteracin se hace anlisis, diseo, implementacin y pruebas .

    Enfoque opuesto al concepto tradicional de analizar todo, disear todo,implementar y probar todo.

    Se divide el problema en iteraciones, y en cada iteracin se hace todoel ciclo de vida tradicional. En la primera iteracin se aborda lo ms complicado, intentando obtener

    en poco tiempo una arquitectura software que permitir incorporar elresto de la funcionalidad en subsiguientes iteraciones lnea base Objetivo: detectar problemas de diseo y/o implementacin cuanto antes, y no

    al final, cuando ya sera demasiado costoso (en tiempo y dinero) refactorizartodo el diseo y el cdigo.

    El resto de las iteraciones van introduciendo funcionalidad menos crtica,

    y no deberan causar cambios importantes a la lnea base.

    Los procesos de desarrollo de software actuales (eXtremeProgramming, Proceso Unificado de Desarrollo de Software, etc.),usan un enfoque iterativo similar a ste.

  • 5/25/2018 Arquitectura MVC

    4/56

    Diciembre 2006 Generalidades PFC3 4

    Estndar de Codificacin

    Normalmente en proyectos grandes se suele seguir unestndar de codificacin, de manera que el aspecto delcdigo sea el mismo, independientemente de qu

    programador lo haya escrito Facilita el mantenimiento del software

    Cdigo de calidad y fcilmente legible

    Un estndar de codificacin define: Reglas para nombrar clases, atributos y mtodos, normas deidentacin, etc.

    Un documento muy sencillo (breve), pero muy utilizado enel mundo Java son lasJava Code Conventions, definidaspor Sun Microsystems. http://java.sun.com/docs/codeconv/index.html

  • 5/25/2018 Arquitectura MVC

    5/56

    Diciembre 2006 Generalidades PFC3 5

    Herramientas

    Modelado UML MagicDraw (instalado en Laboratorios de Docencia FIC) Poseidon for UML Rational Rose

    Desarrollo HTTP/HTML/XML/CSS Java EE 5.0 + Apache Struts 1.2.9 + TagLibs 1.1.2 + JUnit 4.1

    Apache Maven 2 IDE Eclipse Otras: AJAX, Hibernate, EJB3, Spring, Apache Shale, ...

    Bases de Datos MySQL 4.x/5.x PostgreSQL 7.x/8.x

    Servidor Web Apache Tomcat 5.5.x

  • 5/25/2018 Arquitectura MVC

    6/56

    Diciembre 2006 Generalidades PFC3 6

    Arquitectura del Sistema

    Internet/Intranet

    Capa 2 Capa 3

    Navegador Int.web

    Modelo

    Navegador

    Capa 1

    Navegador

    Base dedatos

    Serv. ap. web

  • 5/25/2018 Arquitectura MVC

    7/56

    Diciembre 2006 Generalidades PFC3 7

    Capas de una Aplicacin Web Java EE: MVC+Layers

    Interfaces para Acceso a Datos

    Plugin: Plain | RMI | EJB |

    Interfaces con Casos de Uso (lgica de negocio)

    Modelo

    Vista

    Controlador

    Plugin: JDBC | XML |

    HTML/CSS + JSP + JSTL

    Apache Struts

    DAO/TO

    Business DelegateSession Facade

    CTO

    ActionForm + Action

    Factory

    Factory

  • 5/25/2018 Arquitectura MVC

    8/56

    UNIVERSIDADE DA CORUA

    Departamento de Tecnoloxas da Informacin e as Comunicacins (TIC)

    UNIVERSIDADE DA CORUA

    Departamento de Tecnoloxas da Informacin e as Comunicacins (TIC)

    Generalidades Metodologa

    Introduccin al Proceso UnificadoEl proceso Unificado de Desarrollo de Software. Ivar Jacobson, Grady Booch,

    James Rumbaugh. Addison Wesley, 2001.

    Java Code ConventionsSun Microsystems, Java CodeConventions,http://java.sun.com/docs/codeconv/index.html.

  • 5/25/2018 Arquitectura MVC

    9/56

    Diciembre 2006 Generalidades PFC3 9

    Introduccin al Proceso Unificado

    Un proceso de desarrollo de software es el conjunto de actividadesnecesarias para transformar los requisitos de un usuario en un sistemasoftware:

    Proceso Unificado: Ms que un proceso de desarrollo de software Marco de trabajo genrico que puede especializarse para una gran

    variedad de sistemas software, para diferentes reas de aplicacin,diferentes tipos de organizaciones, diferentes niveles de aptitud ydiferentes tamaos de proyecto.

    Basado en componentes software, interconectados a travs de interfacesbien definidas

    Utiliza el Lenguaje Unificado de Modelado (Unified Modeling Language,UML) para preparar todos los esquemas de un sistema software

    Proceso de desarrollode Software

    Proceso de desarrollode Software

    Requisitosdel usuario

    Sistemasoftware

  • 5/25/2018 Arquitectura MVC

    10/56

    Diciembre 2006 Generalidades PFC3 10

    Introduccin al Proceso Unificado

    Orgenes Modelo original Objectory definido por Ivan Jacobson (1987)

    Rational Software compra la empresa de Objectory (1995)

    Surge la primera versin de UML (1997) Se publica la primera versin del Proceso Unificado de Rational -

    RUP (junio 1998)

    Caractersticas del Proceso Unificado Dirigido por casos de uso

    Centrado en la Arquitectura

    Iterativo e incremental

    Guiadopo

    rriesgos

  • 5/25/2018 Arquitectura MVC

    11/56

    Diciembre 2006 Generalidades PFC3 11

    Introduccin al Proceso Unificado

    Dirigido por Casos de Uso Se centra en la funcionalidad que el sistema debe poseer para

    satisfacer las necesidades de un usuario (persona, sistema externo,dispositivo) que interacta con l

    Casos de uso como el hilo conductor que orienta las actividades dedesarrollo

    Casos de Uso

    Anlisis

    Recopilar,Clarificar yValidar losrequisitos

    Diseo

    Realizar loscasos de uso

    Pruebas

    Verificar que sesatisfacen loscasos de uso

  • 5/25/2018 Arquitectura MVC

    12/56

    Diciembre 2006 Generalidades PFC3 12

    Introduccin al Proceso Unificado

    Centrado en la Arquitectura Concepto similar a la arquitectura de un edificio

    Varios planos con diferentes aspectos del edificio

    Tener una imagen completa del edificio antes que comience laconstruccin

    Arquitectura en software Diferentes vistas del sistema: estructural, funcional, dinmico, etc.

    Plataforma en la que va a operar

    Determina la forma del sistema

    Arquitectura: determina la forma del sistema

    Casos de uso: determinan la funcin del sistema

  • 5/25/2018 Arquitectura MVC

    13/56

    Diciembre 2006 Generalidades PFC3 13

    Introduccin al Proceso Unificado

    Iterativo e Incremental Descomposicin de un proyecto grande en mini-proyectos Cada mini-proyecto es una iteracin Las iteraciones deben estar controladas Cada iteracin trata un conjunto de casos de uso

    Ventajas del enfoque iterativo Deteccin temprana de riesgos

    Administracin adecuada del cambio Mayor grado de reutilizacin Mayor experiencia para el grupo de desarrollo

    Guiado por riesgos Se detectan los riesgos graves para asegurarlos lo antes posible. El objetivo es detectar los problemas lo antes posible para darles

    solucin rpidamente.

  • 5/25/2018 Arquitectura MVC

    14/56

    Diciembre 2006 Generalidades PFC3 14

    Rational Unify Process (RUP) - Dimensiones

    Esttica - Flujos de trabajo Roles QUIN? Actividades CMO? Artefactos QU? Flujo de Trabajo CUNDO?

    Dinmica El Proceso Unificado se repite a lo largo de una serie de ciclos que

    constituyen la vida de un sistema. Ciclo: cada ciclo una nueva versin del producto Fase: Etapas de un ciclo que finalizan en un HITO

    Iteracin: Proceso de ingeniera sobre una funcionalidad limitada del sistema En cada fase se realizan una o ms iteraciones a travs de los flujos de

    tareas: requisitos no procedimentales (de eficiencia) y casos de uso,Anlisis (opcional), Diseo, Implementacin y Pruebas.

    Entradas al proceso: Lista de caractersticas: descripcin informal (2 pginas) de lo que se

    espera del desarrollo. Modelo de dominio (Opcional). Modelar con UML el entorno en el que

    operar el producto.

  • 5/25/2018 Arquitectura MVC

    15/56

    Diciembre 2006 Generalidades PFC3 15

    Dimensin Esttica del Proceso

    Rol Definicin del comportamiento y responsabilidades de los

    participantes

    Propietario de una serie de artefactos

    Actividad Unidad de trabajo que puede ejecutar un individuo en un rol

    especfico

    Tiene un propsito claro y se expresa en trminos de actualizarartefactos

    La granularidad de la actividad es generalmente de horas o pocosdas

    Ejemplos de actividades Planear una iteracin (administrador del proyecto)

    Encontrar caso de uso y actores (analista del dominio)

    Revisin del diseo (probador)

  • 5/25/2018 Arquitectura MVC

    16/56

    Diciembre 2006 Generalidades PFC3 16

    Dimensin Esttica del Proceso

    Artefacto Pieza de informacin producida, modificada y utilizada en un

    proceso

    Productos tangibles del proyecto

    Utilizados por los roles como entrada para la realizacin de susactividades

    Resultado de las actividades realizadas por los roles

    Flujo de Trabajo Forma de describir la secuencias de actividades que producen

    resultados y las interacciones entre cargos

    En trminos de UML se puede utilizar: diagrama de actividades, desecuencia, de colaboracin

  • 5/25/2018 Arquitectura MVC

    17/56

    Diciembre 2006 Generalidades PFC3 17

    Dimensin Dinmica del proceso

    Concepcin Elaboracin Construccin Transicin

    ciclofase

    Iter. 1 Iter. 2 Iter. 3 Iter. 4 Iter. 5 Iter. 6

    hito 1 hito 2 hito 3 hito 4

    Hito: punto en el tiempo donde se evalan los objetivoslogrados y se pueden tomar decisiones crticas

  • 5/25/2018 Arquitectura MVC

    18/56

    Diciembre 2006 Generalidades PFC3 18

    Desarrollo Iterativo

    Iteracin dedesarrollo 1

    Iteracin dedesarrollo 2

    Iteracin dedesarrollo n

    Perfeccionarel plan

    SincronizarArtefactos

    Anlisis Diseo Implementacin Pruebas

    Construccin

  • 5/25/2018 Arquitectura MVC

    19/56

    Diciembre 2006 Generalidades PFC3 19

    Fase de Concepcin

    Objetivo: Definir la razn de ser y el alcance del proyecto.Estudio de oportunidad. Visin = QU + PARA QU + CUNTO

    Actividades Especificacin de los criterios de xito del proyecto

    Definicin de los requisitos

    Estimacin de los recursos necesarios

    Cronograma inicial de fases

    Artefactos Documento de definicin del proyecto

  • 5/25/2018 Arquitectura MVC

    20/56

    Diciembre 2006 Generalidades PFC3 20

    Fase de Elaboracin

    Objetivo: Establecer un plan de proyecto y una arquitectura correctadel sistema Actividades

    Anlisis del dominio del problema Definicin de la arquitectura bsica Anlisis de riesgos Planificacin del proyecto

    Artefactos Modelo del dominio Modelo de procesos Modelo funcional de alto nivel Arquitectura bsica

    Al final de la fase de elaboracin se establece la lnea base de laarquitectura.

    Los riesgos de la lista de riesgos estn mitigados (con solucin,implementada o no). En realidad, adems de la lnea base de la arquitectura tambin se habrn

    implementado aquellos elementos necesarios asociados a los casos de usode la lnea base, pero que no son crticos (no existan dudas para surealizacin).

  • 5/25/2018 Arquitectura MVC

    21/56

    Diciembre 2006 Generalidades PFC3 21

    Fase de Construccin / Transicin

    Construccin Objetivo: Desarrollar el sistema a lo largo de una serie de

    iteraciones

    Actividades Anlisis

    Diseo

    Implementacin / Codificacin El flujo de tareas de implementacin se divide en Builds: consolidacin

    del trabajo de los desarrolladores (punto de encuentro del trabajo devarios diseadores).

    Pruebas (individuales, de integracin)

    Transicin: Pruebas beta (de usuario).

  • 5/25/2018 Arquitectura MVC

    22/56

    Diciembre 2006 Generalidades PFC3 22

    Ciclo de Vida del Proceso Unificado gil - AUP

  • 5/25/2018 Arquitectura MVC

    23/56

    Diciembre 2006 Generalidades PFC3 23

    ResumenJava Code Conventions ...

    Extensiones de ficheros: .java, .class Un fichero por clase pblica o interfaz

    Puede incluir clases privadas, pero siempre despus de la pblica

    Estructura de un fichero con cdigo fuente Comentarios de inicio

    Paquete y lista de imports necesarios Declaracin de clase o interfaz

    / ** Cl assname, Pr ogr ammer ( s) , Dat e

    * Ver si on i nf o* Copyr i ght not i ce* Descr i pt i on*/

  • 5/25/2018 Arquitectura MVC

    24/56

    Diciembre 2006 Generalidades PFC3 24

    ResumenJava Code Conventions ...

    Estructura de un fichero con cdigo fuente (continuacin) Declaracin de clase o interfaz

    /** ... */ Comentario Javadoc de Clase o Interfaz Declaracin class o interface /* ... */ Comentario de implementacin, si es necesario Variables de Clase (static)

    public > protected > private Variables de instancia

    public > protected > private Constructores Mtodos

    Agrupados por funcionalidad para facilitar el entendimiento del cdigo.

    Identacin, 4 espacios (con algunas excepciones para mejorar legibilidad). Longitud de lnea como mucho 80 caracteres Divisin de lneas:

    despus de una coma antes de un operador dar preferencia a divisiones de nivel superior alinear la nueva lnea con el comienzo de la expresin del mismo nivel en la lnea

    anterior si al aplicar estas reglas el cdigo queda poco legible, utilizar 8 espacios

  • 5/25/2018 Arquitectura MVC

    25/56

    Diciembre 2006 Generalidades PFC3 25

    ResumenJava Code Conventions ...

    Comentarios: Javadoc /** ... */, Bloque/lnea /* ... */, Fn de lnea // ...

    Declaraciones

    Una por lnea Definir variables al comienzo de bloques { } (ms claro) e inicializarlas

    cuando se definen si es posible Excepcin: bucles for

    Evitar declaraciones locales para ocultar declaraciones de niveles

    superiores Clases e interfaces

    No utilizar espacio entre el nombre del mtodo y el parntesis de inicio de listade parmetros

    La llave de inicio aparece al final de la lnea de declaracin de la sentencia

    La llave de fin aparece al comienzo de lnea, identada con el inicio de lasentencia que cierra

    Excepcin: mtodos vacos {}

    Los mtodos se separan por una lnea en blanco

  • 5/25/2018 Arquitectura MVC

    26/56

    Diciembre 2006 Generalidades PFC3 26

    ResumenJava Code Conventions ...

    Sentencias Una por lnea

    Sentencias compuestas entre {} Sentencias incluidas deben de ser identadas

    { aparecer al final de la lnea de inicio del bloque; y } alprincipio de lnea, identado con el inicio del bloque.

    En sentencias if-then-else o bucles, se utilizar siempre {} aunqueel bloque est compuesto por una sola sentencia

    Esto facilita el mantenimiento del cdigo (por ejemplo, si en el futuro seaade una nueva lnea al bloque, el programador podra olvidarse deaadir las llaves}

    Sentencias return

    No deben especificarse entre parntesis, salvo por claridad. Sentencias

    if, for, while, do/while, switch, try/catch

  • 5/25/2018 Arquitectura MVC

    27/56

    Diciembre 2006 Generalidades PFC3 27

    ResumenJava Code Conventions ...

    if ( condi t i on) {st at ement s;

    }

    if ( condi t i on) {st at ement s;

    } else {st at ement s;

    }

    if ( condi t i on) {st at ement s;

    } else if ( condi t i on) {st at ement s;

    } else if ( condi t i on) {st at ement s;

    }

    for ( i ni t i al i zat i on; condi t i on; updat e) {st at ement s;

    }

    for ( i ni t i al i zat i on; condi t i on; updat e) ;

    while ( condi t i on) {st at ement s;

    }

    while ( condi t i on) ;

    do {st at ement s;

    } while ( condi t i on) ;

    switch ( condi t i on) {case ABC:

    st at ement s;/ * f al l s t hr ough */

    case DEF:

    st at ement s;br eak;case XYZ:

    st at ement s;br eak;

    default:st at ement s;br eak;

    }

    try {st at ement s;

    } catch ( Except i onCl ass e) {st at ement s;

    } finally {st at ement s;

    }

  • 5/25/2018 Arquitectura MVC

    28/56

    Diciembre 2006 Generalidades PFC3 28

    ResumenJava Code Conventions ...

    Lneas en blanco (dos) Entre secciones de un fichero fuente Entre definiciones de clases e interfaces

    Lneas en blanco (una) Entre mtodos Entre definicin de variables locales y la primera sentencia Antes de un comentario de bloque o de lnea Entre secciones lgicas de un mtodo

    Espacios en blanco Antes de un parntesis, salvo que sea la invocacin de un mtodo Despus de una coma, en una lista de argumentos Para separar los operandos de todos los operadores binarios

    excepto .. No aplicable a operadores unarios Para separar las expresiones de una sentencia for Los casts deben de ir seguidos por un espacio

  • 5/25/2018 Arquitectura MVC

    29/56

    Diciembre 2006 Generalidades PFC3 29

    ResumenJava Code Conventions ...

    Convenciones de nombrado (nombres representativos) Clases

    Deben de ser nombres, con la primera letra de cada palabra involucrada en esenombre, en maysculas.

    Interfaces

    dem clases Mtodos

    Deben de ser verbos, con la primera letra de cada palabra involucrada enmaysculas, salvo la de la primera.

    Variables Palabras, con la primera letra de cada palabra involucrada en maysculas,

    salvo la de la primera. Nombres comunes para variables temporales son i,j,k (numricas) c,d,e

    (caracteres)

    Constantes

    En maysculas, separando cada palabra involucrada en el nombre por elcarcter subrayado _.

    Paquetes (no incluido en Java Code Conventions) Palabras simples y en minsculas.

  • 5/25/2018 Arquitectura MVC

    30/56

    Diciembre 2006 Generalidades PFC3 30

    ResumenJava Code Conventions ...

    Prcticas de Programacin (salvo casos justificados) Variables de clase o instancia no deben de ser pblicas Evitar acceder a variables de clase desde instancias de objetos. Las constantes numricas deben de definirse previamente en lugar de

    utilizarlas como literales (salvo inicializaciones como -1, 0, 1)

    Asignacin de variables Evitar asignaciones mltiples en la misma sentencias (difcil de leer) No utilizar el operador de asignacin en lugares en los que pueda ser

    fcilmente confundido con el operador de igualdad No utilizar asignaciones embebidas para intentar optimizar la ejecucin: Esa

    es tarea del compilador

    Es buena prctica utilizar parntesis en expresiones que combinanmltiples operadores, aunque no sean necesarios por las reglas deprecedencia de los mismos.

    Estructurar el programa de forma que slo haya una sentencia return. En sentencias con ?, si la expresin condicional contiene un operador

    binario, es recomendable ponerlo entre parntesis. Comentarios especiales

    XXX Marca algo que tiene algn problema pero funciona FIXME Marca algo como que no funciona correctamente TODO Marca algo como que est por terminar

  • 5/25/2018 Arquitectura MVC

    31/56

    Diciembre 2006 Generalidades PFC3 31

    Java Code Conventions ... Ejemplo/ ** Fi r st name Last name** Copyr i ght ( c) 1993- 1996 Sun Mi cr osyst ems, I nc. Al l Ri ght s Reser ved.**/

    package j ava. bl ah;

    i mpor t j ava. bl ah. bl ahdy. Bl ahBl ah;

    / *** Cl ass descr i pt i on goes here.** @ver si on 1. 10 04 Oct 1996* @aut hor Fi r st name Last name

    */publ i c cl ass Bl ah ext ends SomeCl ass {

    / * A cl ass i mpl ement at i on comment can go here. */

    / ** cl assVar 1 document at i on comment */publ i c st at i c i nt cl assVar 1;

    / *** cl assVar2 document at i on comment t hat happens t o be* more t han one l i ne l ong*/

    pr i vat e st at i c Obj ect cl assVar 2;

    / ** i nst anceVar 1 document at i on comment */publ i c Obj ect i nst anceVar1;

  • 5/25/2018 Arquitectura MVC

    32/56

    Diciembre 2006 Generalidades PFC3 32

    Java Code Conventions ... Ejemplo

    / ** i nst anceVar 2 document at i on comment */pr ot ect ed i nt i nst anceVar 2;

    / ** i nst anceVar 3 document at i on comment */pr i vat e Obj ect [ ] i nst anceVar3;

    / *** . . . met hod Bl ah document at i on comment . . .*/

    publ i c Bl ah( ) {/ / . . . i mpl ement at i on goes here. . .

    }

    / *** . . . met hod doSomet hi ng document at i on comment . . .*/

    publ i c voi d doSomet hi ng( ) {/ / . . . i mpl ement at i on goes here. . .

    }

    / *** . . . met hod doSomet hi ngEl se document at i on comment . . .* @par am somePar am descr i pt i on*/

    publ i c voi d doSomet hi ngEl se( Obj ect somePar am) {/ / . . . i mpl ement at i on goes here. . .

    }}

  • 5/25/2018 Arquitectura MVC

    33/56

    UNIVERSIDADE DA CORUA

    Departamento de Tecnoloxas da Informacin e as Comunicacins (TIC)

    UNIVERSIDADE DA CORUA

    Departamento de Tecnoloxas da Informacin e as Comunicacins (TIC)

    Generalidades Herramientas

    Caractersticas Java SE 5.0

    Herramientas de Gestin de Proyectos SoftwareAnt

    Maven 2IDE Eclipse

    Pruebas de Aplicaciones SoftwareJUnit

  • 5/25/2018 Arquitectura MVC

    34/56

    Diciembre 2006 Generalidades PFC3 34

    Caractersticas Java SE 5.0

    Generics - Mejora en el sistema de tipos. Aade comprobacin de tipos en tiempo de compilacin para el

    framework de collections y elimina los castings.

    Bucle for - Facilidad en iteraciones sobre arrays y colecciones.

    Autoboxing/Unboxing Elimina la conversin manual entre tipos primitivos (int) y los tipos

    envoltorio correspondientes (Integer).

    Typesafe Enums - Tipos enumerados orientados a objetos.

    Varargs - Mtodos con nmero de argumentos variable. Static Import

    Acceso no calificado a miembros estticos de un tipo sin heredar de l.

    Annotations - Posibilidad de anotar el cdigo fuente. Posibilita que herramientas generen cdigo a partir de las anotaciones.

  • 5/25/2018 Arquitectura MVC

    35/56

    Diciembre 2006 Generalidades PFC3 35

    Gestin de Proyectos: Apache Ant (1)

    Herramienta del tipo de make (gnumake, nmake ...) Open Source - Proyecto Apache (http://ant.apache.org) Desarrollada en Java. Otras herramientas existentes.

    Shell-based Ejecutan comandos especficos del sistema operativo (no reutilizables en

    diferentes plataformas). Formatos 'estrictos' (ej. tabuladores en Makefiles)

    Ant es ms portable. Las tareas son ejecutadas por clases Java. Solo requiere una MV Java 1.1 o

    superior (Reutilizable en diferentes plataformas) Existe una tarea que permite ejecutar comandos basados en el SO utilizado. Utiliza ficheros de configuracin XML (project, targets, tasks).

    Ejecucin de ant Por defecto busca el fichero build.xml en el directorio actual. Se pueden especificar uno o ms targets a ejecutar. Por defecto ejecuta el target indicado en el atributo default de la etiqueta

    . ant []*

  • 5/25/2018 Arquitectura MVC

    36/56

    Diciembre 2006 Generalidades PFC3 36

    Gestin de Proyectos: Apache Ant build.xml (2)

    Propiedades

    Targets

  • 5/25/2018 Arquitectura MVC

    37/56

    Diciembre 2006 Generalidades PFC3 37

    Estructura de los Ejemplos de Integracin de Sistemas (5II) - J2EE_EXAMPLES_HOME

    build.xmlCommonPat hRef er ences. xmlCommonPr oper t i es. xml

    Conf i gur at i onPar amet ers. pr oper t i esServi ceLocat or J NDI I ni t i al Cont ext . pr oper t i es

    CommonEnvi r onment Var i abl es. {bat , sh}

    MySQLCr eat eTabl es. sqlPost gr eSQLCr eat eTabl es. sql

    build.xml

  • 5/25/2018 Arquitectura MVC

    38/56

    Diciembre 2006 Generalidades PFC3 38

    Ficheros bui l d. xml de los Ejemplos

    build.xml global a todos lossubsistemas. all compile (default) ears init initdb jars javadoc rebuild sourcedist wars

    NOTA Cada fichero build.xml incluye los

    ficheros CommonProperties.xml yCommonPathReferences.xml deldirectorio Subsystems.

    Los targets del fichero build.xmlgeneral enlazan a los targets

    equivalentes en los build.xml de cadasubsistema particular.

    ant projecthelp muestra los targets quedefine un fichero build.xml

    build.xml de un Subsistema particular(MiniBank) clean cleanclasses compile (default) deployejbear deployplainwar deployrmiwar ears ejbear ejbmodeljar ejbwar entitiesjar

    init jars javadoc plainwar rebuild rmijars

    rmiwar wars

    TestAccountFacadeDelegateFactory

  • 5/25/2018 Arquitectura MVC

    39/56

    Diciembre 2006 Generalidades PFC3 39

    Gestin de Proyectos: Maven 2 (1)

    Herramienta de Gestin de proyectos Software Open Source; Proyecto Apache (http://maven.apache.org)

    Maven es una herramienta de ms alto nivel que Ant:

    Ant enfoque basado en tareas Crear el script build con las tareas a ejecutar Ejecutar los targets

    Maven enfoque declarativo

    Describir el proyecto y configurar plugins Ejecutar plugins existentes (goals)

    Ncleo de Maven - POM Project Object Model Contiene una descripcin detallada del proyecto, incluyendo

    informacin de versiones, gestin de configuracin, dependencias,recursos de la aplicacin y de pruebas, miembros del equipo, ...

    Fichero XML situado en el directorio raz del proyecto pom.xml

  • 5/25/2018 Arquitectura MVC

    40/56

    Diciembre 2006 Generalidades PFC3 40

    Gestin de Proyectos: Maven 2 (2)

    Estandarizacin de prcticas de gestin de proyectos No se pierde tiempo reinventando estructuras de directorios,

    convenciones ni personalizando scripts build.xml de ant para cadaproyecto.

    Maven permite redefinir la estructura de directorios estndar peroes conveniente respetarla por las siguientes razones:

    El fichero pom.xml ser ms pequeo y sencillo.

    Hace que el proyecto sea ms fcil de entender y facilita el

    mantenimiento futuro por otros. Facilita la integracin de plug-ins (asumen tambin la estructura por

    defecto)

  • 5/25/2018 Arquitectura MVC

    41/56

    Diciembre 2006 Generalidades PFC3 41

    Gestin de Proyectos: Maven 2 pom.xml (3)

    4. 0. 0

    es. udc. f bel l as. j 2eest andardut i l j ar 2. 1. 1J 2EE- Exampl es St andar d Ut i l Subsyst emht t p: / / www. t i c. udc. es/ ~f bel l as/ t eachi ng/ i s

    mysql mysql - connect or - j ava5. 0. 4t est

  • 5/25/2018 Arquitectura MVC

    42/56

    Diciembre 2006 Generalidades PFC3 42

    Gestin de Proyectos: Maven 2 Ciclo de Vida (4)

    Ciclo de vida de un proyecto Fases de construccin de un proyecto como compile, test, deploy

    En Ant se crean targets con esos nombres que implementen esa semntica En Maven 1 se invocan plugins (goals) existentes

    Un lenguaje de Scripting basado en XML, Jelly, permita definir nuevos goals o

    modificar el comportamiento de los existentes. En Maven 2 se estandariza el conjunto de fases del ciclo de vida del proyecto,

    y al ejecutar una de ellas se ejecutarn los plugins correspondientes Es posible implementar nuevos plugins a asociar a las diferentes fases, como clases

    Java.

    Para compilar: mvn compile

  • 5/25/2018 Arquitectura MVC

    43/56

    Diciembre 2006 Generalidades PFC3 43

    Gestin de Proyectos: Maven 2 Dependencias (4)

    En el fichero pom.xml se definen los recursos de los que depende unproyecto Maven automticamente descarga los recursos de repositorios remotos en

    repositorios locales Local a la mquina (estructura de directorios en base al groupid y artifactid del

    recurso) Maven 1 HOME/.maven/repository Maven 2 HOME/.m2/repository

    Gestin de Dependencias Transitivas Maven 1 obliga a que cada proyecto defina todos los jars necesarios,

    directa o indirectamente por la aplicacin.

    Con Maven 2 slo es necesario especificar los jars que la aplicacinnecesita de forma directa; Maven 2 gestiona las dependencias de laslibreras utilizadas, para incluirlas de forma automtica.

    mbitos de Dependencias en funcin de las fases (Maven 2) compi l e necesaria en todas las fases (valor por defecto)

    pr ovi ded

    necesaria para compilar pero no para deployar (e.g. servletAPI). r unt i me necesaria slo para ejecutar (e.g. JDBC drivers). test necesar i a sl o par a pr uebas (e.g. Junit API).

    d l j l d i d

  • 5/25/2018 Arquitectura MVC

    44/56

    Diciembre 2006 Generalidades PFC3 44

    Estructura de los Ejemplos de IS migrados a Maven 2

    pom.xml

    MySQLCr eat eTabl es. sqlPost gr eSQLCr eat eTabl es. sql

    Conf i gur at i onPar amet ers. pr oper t i es

    E li IDE ( )

  • 5/25/2018 Arquitectura MVC

    45/56

    Diciembre 2006 Generalidades PFC3 45

    Eclipse IDE (http://www.eclipse.org)

    CompileRunDebug

    Plugins- Ant- Maven 2- Tomcat-

    WebToolsProjectEdition

    -HTML,JSP,JSPX,XML,SQL,...editors

    -databaseexplorer

    -...

    P b d U id d

  • 5/25/2018 Arquitectura MVC

    46/56

    Diciembre 2006 Generalidades PFC3 46

    Pruebas de Unidad

    Qu es una prueba de unidad? - Definicin de IEEE Prueba individual de hardware o software, o grupos de unidades

    relacionadas Normalmente, un test de unidad es un cdigo que prueba una unidad: que

    puede ser una clase, un componente, un mdulo o una funcin.

    Las pruebas se crean y se ejecutan mientras se desarrolla el software.

    Las pruebas de unidad no son pruebas funcionales, de aplicacin.

    Las pruebas de unidad no son interactivas.

    Un Framework de pruebas de unidad proporciona:

    Un mecanismo para organizar y agrupar varios tests Una forma sencilla de invocar tests

    Un indicacin clara de qu tests han sido exitosos o fallidos.

    Una forma estndar para escribir tests y especificar resultados esperados.

    En general, el objetivo de las pruebas de unidad es comprobar que losdiferentes componentes del SW funcionan de forma aislada y que antecambios en el cdigo continuan funcionando.

    Q J it?

  • 5/25/2018 Arquitectura MVC

    47/56

    Diciembre 2006 Generalidades PFC3 47

    Qu es Junit?

    JUnit es un framework para escribir pruebas de unidadrepetibles en Java. http://www.junit.org/

    Open Source

    Programado por Erich Gamma y Kent Beck

    Caractersticas Utiliza aserciones para comprobar resultados esperados

    Test Suites para organizar y ejecutar tests Runners de tests grficos y textuales

    Framework JUnit

  • 5/25/2018 Arquitectura MVC

    48/56

    Diciembre 2006 Generalidades PFC3 48

    Framework JUnit

    run()

    >

    Test

    f Name

    setUp()

    runTest()

    tearDown()run()

    TestCase

    run()addTest ( )

    TestSuite

    *

    TestResult

    junit.framework

    asser t Tr ue( )asser t Equal s( ). . .

    Assert

    junit .textui.TestRunner junit.swingui.TestRunner

    Junit Pruebas de Unidad

  • 5/25/2018 Arquitectura MVC

    49/56

    Diciembre 2006 Generalidades PFC3 49

    Junit - Pruebas de Unidad

    junit

    App

    Te stC a se

    1..*

    TestRunner

    run1..*TestApp

    test1

    test2

    Junit Pruebas de Unidad

  • 5/25/2018 Arquitectura MVC

    50/56

    Diciembre 2006 Generalidades PFC3 50

    Junit - Pruebas de Unidad

    Creacin de prueba: Crear una subclase dej uni t . f r amewor k. Test Case

    Escribir un mtodo de pruebas public void t est XXX( ) [ t hr ows ]

    Pueden realizarse varias comprobaciones (aserciones) por mtodo

    Escribir un mtodo sui t e, que utiliza introspeccin para crearde forma dinmica un grupo de casos de prueba conteniendo todoslos mtodos t est XXX( ) .

    Escribir un mtodo main() para ejecutar el test con el ejecutor enmodo texto

    publ i c st at i c voi d mai n( St r i ng ar gs[ ] ) {j uni t . t ext ui . Test Runner . run( sui t e( ) ) ;

    }

    publ i c st at i c Test sui t e( ) {r et ur n new Test Sui t e ( Si mpl eTest . cl ass) ;

    }

    Assert

  • 5/25/2018 Arquitectura MVC

    51/56

    Diciembre 2006 Generalidades PFC3 51

    Assert

    La claseAsser t proporciona un conjunto de mtodos estticos pararealizar comprobaciones Pueden lanzar un objeto con mensajes de fallo

    Los mensajes slo se muestran cuando un assert falla

    Asser t . asser t Equal s( Obj ect , Obj ect ) Compara utilizando

    el mtodo "equal s". Si no se redefine, el mtodo equal s de un Object realiza unacomparacin por referencia; es necesario redefinir el mtodo equal s deuna clase para la que se desee comparacin por contenido.

    Clases como St r i ng lo tienen redefinido comparan por contenido. Debera redefinirse el mtodo equal s en la clase con la que comparar

    igualdad (que hara la igualdad atributo a atributo), en lugar de utilizar elmtodo t oSt r i ng.

    Dependiendo de cmo est implementado, el mtodo t oSt r i ngpodra darigual para dos objetos que no lo fuesen realmente.

    Las clases que implementan las pruebas suelen implementarse en elmismo paquete que la clase que prueban, pero en un directorio defuentes diferente.

    Inicializacin y Borrado de Datos de Prueba

  • 5/25/2018 Arquitectura MVC

    52/56

    Diciembre 2006 Generalidades PFC3 52

    Inicializacin y Borrado de Datos de Prueba

    La idea de hacer las pruebas con JUnit es que sean"pruebas automticas".

    Por tanto, cuando se ejecute, debe hacer con anterioridadtodo lo que sea necesario y con posterioridad restaurar elestado inicial.

    Creacin de Grupos de pruebas

    pr ot ect ed voi d set Up( ) {/ / i ni t i al i zat i on code

    }

    pr ot ect ed voi d t ear Down( ) {/ / cl eanup code

    }

    publ i c st at i c Test sui t e( ) {Test Sui t e sui t e = new Test Sui t e( ) ;sui t e. addTest ( SomeTest . sui t e( ) ) ;sui t e. addTest ( Anot her Test . sui t e( ) ) ;r et ur n sui t e;

    }

    Ejecucin de un Caso de Prueba

  • 5/25/2018 Arquitectura MVC

    53/56

    Diciembre 2006 Generalidades PFC3 53

    Ejecucin de un Caso de Prueba

    Ejecucin en modo texto ... j ava j uni t . t ext ui . Test Runner

    Ejecucin mediante interfaces grficas j ava j uni t . swi ngui . Test Runner

    Ejecucin desde ant, con la tarea "j uni t " (OPTIONAL-TASK =>necesario aadirj uni t . j ar al directorio lib de ant)

    NOTA: Con EJBs elTest Runner Swing falla; debe utilizarse elTestRunner en modo consola de texto para evitar problemas.

  • 5/25/2018 Arquitectura MVC

    54/56

    Diciembre 2006 Generalidades PFC3 54

    JUnit 4.0 o superior y Anotaciones (1)

    Requiere Java SE 5.0. Cases de prueba no tienen que extender

    j uni t . f r amewor k. Test Case. Mtodos de prueba no tienen que prefijarse con ' t est '.

    No hay cambios entre los mtodos assert antiguos y losnuevos.

    Utiliza anotaciones @Test para marcar un mtodo como

    un caso de prueba. Utiliza anotaciones @Bef or e y @Af t er para definir losmtodos a ejecutar antes y despus de la ejecucin de cada

    prueba.

    Utiliza anotaciones @Bef or eCl ass y @Af t er Cl asspara definir los mtodos a ejecutar antes y despus de laejecucin del conjunto de pruebas de una clase

    JUnit 4.0 o superior y Anotaciones (1)

  • 5/25/2018 Arquitectura MVC

    55/56

    Diciembre 2006 Generalidades PFC3 55

    p y ( )

    Las anotaciones @Test pueden incluir el parmetrotimeout. El test falla si tarda ms de ese tiempo enejecutarse.

    Las anotaciones @Test pueden incluir un parmetro queespecifique el tipo de excepcin a lanzar para que seaexitoso.

    JUnit4Adapter habilita la ejecucin de los nuevos tests

    JUnit4 con runners antiguos. El nuevo runner puede ejecutar tests JUnit "antiguos".

    ...

    Referencias

  • 5/25/2018 Arquitectura MVC

    56/56

    Diciembre 2006 Generalidades PFC3 56

    Asignatura Integracin de Sistemas. Facultade de Informtica. Universidade da Corua

    http://www.tic.udc.es/~fbellas/teaching/is

    Asignatura Proyecto de Fin de Carrera. Facultade de Informtica. Universidade da Corua

    http://www.tic.udc.es/~mad/teaching/pfc3