View
38
Download
0
Category
Preview:
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
mad@udc.es
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
Recommended