You are on page 1of 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 Aplicacin
Web Java EE con Arquitectura MVC
Manuel lvarez Daz
http://www.tic.udc.es/~mad
mad@udc.es
Diciembre 2006
Generalidades PFC3
Diciembre 2006 Generalidades PFC3 2
ndice
Enfoque para el Proyecto
Generalidades Metodologa
Proceso Unificado
Estndar de Codificacin J ava
Generalidades Herramientas
Caractersticas J ava SE 5.0
Apache Ant
Apache Maven 2
IDE Eclipse
J Unit
Visin Rpida de Tecnologas J 2EE (documentacin de IS)
Instalacin de Ejemplos de Integracin de Sistemas
Tutorial de J DBC - MiniBank
Tutorial de XML
Tutorial de Tecnologas Web (MVC & Apache Struts) - MiniPortal
Diciembre 2006 Generalidades PFC3 3
Enfoque para el Proyecto
Para la realizacin de la aplicacin software del proyecto se aconseja
un enfoque basado en iteraciones, de manera que cada iteracin
incorpora ms funcionalidad, hasta que en la ltima iteracin se
termina 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 todo
el ciclo de vida tradicional.
En la primera iteracin se aborda lo ms complicado, intentando obtener
en poco tiempo una arquitectura software que permitirincorporar el
resto 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) refactorizar
todo 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 (eXtreme
Programming, Proceso Unificado de Desarrollo de Software, etc.),
usan un enfoque iterativo similar a ste.
Diciembre 2006 Generalidades PFC3 4
Estndar de Codificacin
Normalmente en proyectos grandes se suele seguir un
estndar de codificacin, de manera que el aspecto del
cdigo 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 de
identacin, etc.
Un documento muy sencillo (breve), pero muy utilizado en
el mundo J ava son las Java Code Conventions, definidas
por Sun Microsystems.
http://java.sun.com/docs/codeconv/index.html
Diciembre 2006 Generalidades PFC3 5
Herramientas
Modelado UML
MagicDraw(instalado en Laboratorios de Docencia FIC)
Poseidonfor UML
Rational Rose
Desarrollo
HTTP/HTML/XML/CSS
J ava EE 5.0 +Apache Struts1.2.9 +TagLibs1.1.2 +J Unit 4.1
Apache Maven2
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
Diciembre 2006 Generalidades PFC3 6
Arquitectura del Sistema
Internet/
Intranet
Capa 2 Capa 3
Navegador
I nt.
web
Modelo
Navegador
Capa 1
Navegador
Base de
datos
Serv. ap. web
Diciembre 2006 Generalidades PFC3 7
Capas de una Aplicacin Web J ava 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 + J SP + J STL
Apache Struts
DAO/TO
BusinessDelegate
SessionFacade
CTO
ActionForm + Action
Factory
Factory
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 Unificado
El proceso Unificado de Desarrollo de Software. Ivar J acobson, GradyBooch,
J ames Rumbaugh. AddisonWesley, 2001.
Java Code Conventions
Sun Microsystems, Java Code
Conventions,http://java.sun.com/docs/codeconv/index.html.
Diciembre 2006 Generalidades PFC3 9
Introduccin al Proceso Unificado
Un proceso de desarrollo de software es el conjunto de actividades
necesarias para transformar los requisitos de un usuario en un sistema
software:
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 y
diferentes tamaos de proyecto.
Basado en componentes software, interconectados a travs de interfaces
bien definidas
Utiliza el Lenguaje Unificado de Modelado (UnifiedModelingLanguage,
UML) para preparar todos los esquemas de un sistema software
Proceso de desarrollo
de Software
Proceso de desarrollo
de Software
Requisitos
del usuario
Sistema
software
Diciembre 2006 Generalidades PFC3 10
Introduccin al Proceso Unificado
Orgenes
Modelo original Objectorydefinido por IvanJ acobson(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
G
u
i
a
d
o

p
o
r

r
i
e
s
g
o
s
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 de
desarrollo
Casos de Uso
Anlisis
Recopilar,
Clarificar y
Validar los
requisitos
Diseo
Realizar los
casos de uso
Pruebas
Verificar que se
satisfacen los
casos de uso
<<realiza>>
<<verifica>> <<defineNecesidades>>
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 la
construccin
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
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.
Diciembre 2006 Generalidades PFC3 14
Rational UnifyProcess(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 ciclosque
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
operarel producto.
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 actualizar
artefactos
La granularidadde la actividad es generalmente de horas o pocos
das
Ejemplos de actividades
Planear una iteracin (administrador del proyecto)
Encontrar caso de uso y actores (analista del dominio)
Revisin del diseo (probador)
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 sus
actividades
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, de
secuencia, de colaboracin
Diciembre 2006 Generalidades PFC3 17
Dimensin Dinmica del proceso
Concepcin Elaboracin
Construccin
Transicin
ciclo
fase
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 objetivos
logrados y se pueden tomar decisiones crticas
Diciembre 2006 Generalidades PFC3 18
Desarrollo Iterativo
Iteracin de
desarrollo 1
Iteracin de
desarrollo 2
Iteracin de
desarrollo n
Perfeccionar
el plan
Sincronizar
Artefactos
Anlisis Diseo Implementacin Pruebas
Construccin
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
Diciembre 2006 Generalidades PFC3 20
Fase de Elaboracin
Objetivo: Establecer un plan de proyecto y una arquitectura correcta
del 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 la
arquitectura.
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 casosde uso
de la lnea base, pero que no son crticos (no existan dudas para su
realizacin).
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 de
varios diseadores).
Pruebas (individuales, de integracin)
Transicin: Pruebas beta (de usuario).
Diciembre 2006 Generalidades PFC3 22
Ciclo de Vida del Proceso Unificado gil - AUP
Diciembre 2006 Generalidades PFC3 23
Resumen Java 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
*/
Diciembre 2006 Generalidades PFC3 24
Resumen Java Code Conventions ...
Estructura de un fichero con cdigo fuente (continuacin)
Declaracin de clase o interfaz
/** ... */ Comentario J avadocde 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
Diciembre 2006 Generalidades PFC3 25
Resumen Java Code Conventions ...
Comentarios:
J avadoc/** ... */, Bloque/lnea /* ... */, Fnde 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 lista
de 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, identadacon el inicio de la
sentencia que cierra
Excepcin: mtodos vacos {}
Los mtodos se separan por una lnea en blanco
Diciembre 2006 Generalidades PFC3 26
Resumen Java Code Conventions ...
Sentencias
Una por lnea
Sentencias compuestas entre {}
Sentencias incluidas deben de ser identadas
{ apareceral final de la lnea de inicio del bloque; y } al
principio de lnea, identadocon el inicio del bloque.
En sentencias if-then-elseo bucles, se utilizarsiempre {} aunque
el bloque estcompuesto por una sola sentencia
Esto facilita el mantenimiento del cdigo (por ejemplo, si en el futuro se
aade una nueva lnea al bloque, el programador podra olvidarse de
aadir las llaves}
Sentencias return
No deben especificarse entre parntesis, salvo por claridad.
Sentencias
if, for, while, do/while, switch, try/catch
Diciembre 2006 Generalidades PFC3 27
Resumen Java 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;
}
Diciembre 2006 Generalidades PFC3 28
Resumen Java 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 operandosde todos los operadores binarios
excepto .. No aplicable a operadores unarios
Para separar las expresiones de una sentencia for
Los castsdeben de ir seguidos por un espacio
Diciembre 2006 Generalidades PFC3 29
Resumen Java Code Conventions ...
Convenciones de nombrado (nombres representativos)
Clases
Deben de ser nombres, con la primera letra de cada palabra involucrada en ese
nombre, en maysculas.
Interfaces
dem clases
Mtodos
Deben de ser verbos, con la primera letra de cada palabra involucrada en
maysculas, 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 el
carcter subrayado _.
Paquetes (no incluido en J ava CodeConventions)
Palabras simples y en minsculas.
Diciembre 2006 Generalidades PFC3 30
Resumen Java 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 combinan
mltiples operadores, aunque no sean necesarios por las reglas de
precedencia 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 estpor terminar
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 her e.
*
* @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 her e. */
/ ** cl assVar 1 document at i on comment */
publ i c st at i c i nt cl assVar 1;
/ **
* cl assVar 2 document at i on comment t hat happens t o be
* mor e 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 anceVar 1;
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 anceVar 3;
/ **
* . . . met hod Bl ah document at i on comment . . .
*/
publ i c Bl ah( ) {
/ / . . . i mpl ement at i on goes her e. . .
}
/ **
* . . . 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 her e. . .
}
/ **
* . . . met hod doSomet hi ngEl se document at i on comment . . .
* @par amsomePar amdescr i pt i on
*/
publ i c voi d doSomet hi ngEl se( Obj ect somePar am) {
/ / . . . i mpl ement at i on goes her e. . .
}
}
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 Software
Ant
Maven2
IDE Eclipse
Pruebas de Aplicaciones Software
J Unit
Diciembre 2006 Generalidades PFC3 34
Caractersticas J ava SE 5.0
Generics - Mejora en el sistema de tipos.
Aade comprobacin de tipos en tiempo de compilacin para el
frameworkde collectionsy elimina los castings.
Bucle for - Facilidad en iteraciones sobre arraysy 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.
Diciembre 2006 Generalidades PFC3 35
Gestin de Proyectos: Apache Ant (1)
Herramienta del tipo de make(gnumake, nmake...)
OpenSource- Proyecto Apache (http://ant.apache.org)
Desarrollada en J ava.
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 J ava. Solo requiere una MV J ava 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 targetsa ejecutar.
Por defecto ejecuta el target indicado en el atributo default de la etiqueta
<project >.
ant [<target>]*
Diciembre 2006 Generalidades PFC3 36
Gestin de Proyectos: Apache Ant build.xml (2)
<project name=" MyPr oj ect " def aul t =" di st " basedi r =" . " >
<! - - set gl obal pr oper t i es f or t hi s bui l d - - >
<property name=" sr c" val ue=" . " / >
<property name=" bui l d" val ue=" bui l d" / >
<property name=" di st " val ue=" di st " / >
<target name=" i ni t " >
<! - - Cr eat e t he t i me st amp - - >
<t st amp/ >
<! - - Cr eat e t he bui l d di r ect or y st r uct ur e used by compi l e - - >
<mkdi r di r =" ${bui l d}" / >
</ target>
<target name=" compi l e" depends=" i ni t " >
<! - - Compi l e t he j ava code f r om${sr c} i nt o ${bui l d} - - >
<j avac sr cdi r =" ${sr c}" dest di r =" ${bui l d}" / >
</ target>
<target name=" di st " depends=" compi l e" >
<! - - Cr eat e t he di st r i but i on di r ect or y - - >
<mkdi r di r =" ${di st }/ l i b" / >
<! - - Put ever yt hi ng i n ${bui l d} i nt o t he
MyPr oj ect - ${DSTAMP}. j ar f i l e - - >
<j ar j ar f i l e=" ${di st }/ l i b/ MyPr oj ect - ${DSTAMP}. j ar " basedi r =" ${bui l d}" / >
</ target>
<target name=" cl ean" >
<! - - Del et e t he ${bui l d} and ${di st } di r ect or y t r ees - - >
<del et e di r =" ${bui l d}" / >
<del et e di r =" ${di st }" / >
</ target>
</ project>
Propiedades
Targets
Diciembre 2006 Generalidades PFC3 37
Estructura de los Ejemplos de Integracin de Sistemas (5II) - J 2EE_EXAMPLES_HOME
build.xml
CommonPat hRef er ences. xml
CommonPr oper t i es. xml
Conf i gur at i onPar amet er s. pr oper t i es
Ser vi 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. sql
Post gr eSQLCr eat eTabl es. sql
build.xml
Diciembre 2006 Generalidades PFC3 38
Ficheros bui l d. xml de los Ejemplos
build.xml global a todoslos
subsistemas.
all
compile (default)
ears
init
initdb
jars
javadoc
rebuild
sourcedist
wars
NOTA
Cadaficherobuild.xml incluyelos
ficherosCommonProperties.xml y
CommonPathReferences.xml del
directorioSubsystems.
Los targets del ficherobuild.xml
general enlazana lostargets
equivalentesen losbuild.xml de cada
subsistemaparticular.
ant projecthelpmuestra los targetsque
define 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
Diciembre 2006 Generalidades PFC3 39
Gestin de Proyectos: Maven2 (1)
Herramienta de Gestin de proyectos Software
OpenSource; Proyecto Apache (http://maven.apache.org)
Mavenes una herramienta de ms alto nivel que Ant:
Ant enfoque basado en tareas
Crear el script buildcon las tareas a ejecutar
Ejecutar los targets
Maven enfoque declarativo
Describir el proyecto y configurar plugins
Ejecutar pluginsexistentes (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
Diciembre 2006 Generalidades PFC3 40
Gestin de Proyectos: Maven2 (2)
Estandarizacin de prcticas de gestin de proyectos
No se pierde tiempo reinventando estructuras de directorios,
convenciones ni personalizando scriptsbuild.xml de ant para cada
proyecto.
Mavenpermite redefinir la estructura de directorios estndar pero
es conveniente respetarla por las siguientes razones:
El fichero pom.xml serms 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)
Diciembre 2006 Generalidades PFC3 41
Gestin de Proyectos: Maven2 pom.xml (3)
<pr oj ect xml ns=" ht t p: / / maven. apache. or g/ POM/ 4. 0. 0"
xml ns: xsi =" ht t p: / / www. w3. or g/ 2001/ XMLSchema- i nst ance"
xsi : schemaLocat i on=" ht t p: / / maven. apache. or g/ POM/ 4. 0. 0
ht t p: / / maven. apache. or g/ maven- v4_0_0. xsd" >
<model Ver si on>4. 0. 0</ model Ver si on>
<gr oupI d>es. udc. f bel l as. j 2ee</ gr oupI d>
<ar t i f act I d>st andar dut i l </ ar t i f act I d>
<packagi ng>j ar </ packagi ng>
<ver si on>2. 1. 1</ ver si on>
<name>J 2EE- Exampl es St andar d Ut i l Subsyst em</ name>
<ur l >ht t p: / / www. t i c. udc. es/ ~f bel l as/ t eachi ng/ i s</ ur l >
<dependenci es>
<dependency>
<gr oupI d>mysql </ gr oupI d>
<ar t i f act I d>mysql - connect or - j ava</ ar t i f act I d>
<ver si on>5. 0. 4</ ver si on>
<scope>t est </ scope>
</ dependency>
</ dependenci es>
</ pr oj ect >
Diciembre 2006 Generalidades PFC3 42
Gestin de Proyectos: Maven2 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 Maven1 se invocan plugins(goals) existentes
Un lenguaje de Scriptingbasado en XML, J elly, permita definir nuevos goalso
modificar el comportamiento de los existentes.
En Maven2 se estandariza el conjunto de fases del ciclo de vida del proyecto,
y al ejecutar una de ellas se ejecutarn los pluginscorrespondientes
Es posible implementar nuevos pluginsa asociar a las diferentes fases, como clases
J ava.
Para compilar: mvn compile
Diciembre 2006 Generalidades PFC3 43
Gestin de Proyectos: Maven2 Dependencias (4)
En el fichero pom.xml se definen los recursos de los que depende un
proyecto
Mavenautomticamente descarga los recursos de repositorios remotos en
repositorios locales
Local a la mquina (estructura de directorios en base al groupidy artifactiddel
recurso)
Maven1 HOME/.maven/repository
Maven2 HOME/.m2/repository
Gestin de Dependencias Transitivas
Maven1 obliga a que cada proyecto defina todos los jarsnecesarios,
directa o indirectamente por la aplicacin.
Con Maven2 slo es necesario especificar los jarsque la aplicacin
necesita de forma directa; Maven2 gestiona las dependencias de las
libreras utilizadas, para incluirlas de forma automtica.
mbitos de Dependencias en funcin de las fases (Maven2)
compi l e necesaria en todas las fases (valor por defecto)
pr ovi ded necesaria para compilar pero no para deployar (e.g. servlet
API).
r unt i me necesaria slo para ejecutar (e.g. J DBC drivers).
t est necesar i a sl o par a pr uebas (e.g. J unit API).
Diciembre 2006 Generalidades PFC3 44
Estructura de los Ejemplos de IS migrados a Maven 2
pom.xml
MySQLCr eat eTabl es. sql
Post gr eSQLCr eat eTabl es. sql
Conf i gur at i onPar amet er s. pr oper t i es
Diciembre 2006 Generalidades PFC3 45
Eclipse IDE (http://www.eclipse.org)
Compile
Run
Debug
Plugins
- Ant
- Maven2
- Tomcat
-
W
e
b

T
o
o
l
s
P
r
o
j
e
c
t

E
d
i
t
i
o
n
-
H
T
M
L
,

J
S
P
,

J
S
P
X
,

X
M
L
,

S
Q
L
,

.
.
.

e
d
i
t
o
r
s
-
d
a
t
a
b
a
s
e
e
x
p
l
o
r
e
r
-
.
.
.
Diciembre 2006 Generalidades PFC3 46
Pruebas de Unidad
Quesunapruebade unidad? - Definicinde IEEE
Pruebaindividual de hardware o software, o gruposde unidades
relacionadas
Normalmente, un test de unidadesun cdigoquepruebaunaunidad: que
puedeser unaclase, un componente, un mduloo unafuncin.
Las pruebasse creany se ejecutanmientrasse desarrollael software.
Las pruebasde unidadno son pruebasfuncionales, de aplicacin.
Las pruebasde unidadno son interactivas.
Un Framework de pruebasde unidadproporciona:
Un mecanismoparaorganizar y agrupar variostests
Unaforma sencillade invocar tests
Un indicacinclarade qutests hansidoexitososo fallidos.
Unaforma estndar paraescribir tests y especificar resultadosesperados.
En general, el objetivode laspruebasde unidadescomprobar quelos
diferentescomponentesdel SW funcionande forma aisladay queante
cambiosen el cdigocontinuanfuncionando.
Diciembre 2006 Generalidades PFC3 47
Ques J unit?
J Unit esun framework paraescribir pruebasde unidad
repetiblesen J ava.
http://www.junit.org/
Open Source
Programadopor Erich Gamma y Kent Beck
Caractersticas
Utilizaasercionesparacomprobar resultadosesperados
Test Suites paraorganizar y ejecutar tests
Runners de tests grficosy textuales
Diciembre 2006 Generalidades PFC3 48
FrameworkJ Unit
r un( )
<< interface >>
Test
f Name
setUp()
runTest()
tearDown()
r un( )
TestCase
r un( )
addTest ( )
TestSuite
*
TestResult
junit.framework
asser t Tr ue( )
asser t Equal s( )
. . .
Assert
junit.textui.TestRunner junit.swingui.TestRunner
Diciembre 2006 Generalidades PFC3 49
J unit - Pruebas de Unidad
junit
App
TestCase
1..*
TestRunner
run
1..*
TestApp
test
1
test
2

Diciembre 2006 Generalidades PFC3 50


J unit - Pruebas de Unidad
Creacin de prueba:
Crear una subclase de j uni t . f r amewor k. Test Case
Escribir un mtodo de pruebas
public void t est XXX( ) [ t hr ows ]
Puedenrealizarsevariascomprobaciones(aserciones) por mtodo
Escribir un mtodo sui t e, que utiliza introspeccin para crear
de forma dinmica un grupo de casos de prueba conteniendo todos
los mtodos t est XXX( ) .
Escribir un mtodo main() para ejecutar el test con el ejecutor en
modo 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 . r un( 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) ;
}
Diciembre 2006 Generalidades PFC3 51
Assert
La claseAsser t proporcionaun conjuntode mtodosestticospara
realizar comprobaciones
Puedenlanzar un objetocon mensajesde fallo
Los mensajesslose muestrancuandoun 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 una
comparacin por referencia; es necesario redefinir el mtodo equal s de
una clase para la que se desee comparacin por contenido.
Clases como St r i nglo 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 el
mtodo t oSt r i ng.
Dependiendo de cmo estimplementado, el mtodo t oSt r i ngpodra dar
igual para dos objetos que no lo fuesen realmente.
Las clases que implementan las pruebas suelen implementarse en el
mismo paquete que la clase que prueban, pero en un directorio de
fuentes diferente.
Diciembre 2006 Generalidades PFC3 52
Inicializacin y Borrado de Datos de Prueba
La idea de hacer las pruebas con J Unit es que sean
"pruebas automticas".
Por tanto, cuando se ejecute, debe hacer con anterioridad
todo lo que sea necesario y con posterioridad restaurar el
estado 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;
}
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 <t est CaseCl ass| t est Sui t eCl ass>
Ejecucin mediante interfaces grficas
j ava j uni t . swi ngui . Test Runner <t est CaseCl ass| t est Sui t eCl ass>
Ejecucin desde ant, con la tarea "j uni t " (OPTIONAL-TASK =>
necesario aadir j uni t . j ar al directorio libde ant)
NOTA: Con EJ Bsel Test Runner Swing falla; debe utilizarse el
TestRunner en modo consola de texto para evitar problemas.
<j uni t >
<t est name=" my. t est . Test Case" / >
</ j uni t >
<j uni t pr i nt summar y=" yes" f or k=" yes hal t onf ai l ur e=" yes" >
<f or mat t er t ype=" pl ai n" / >
<cl asspat h pat h=" . " / >
<t est name=" my. t est . Test Case" / >
</ j uni t >
Diciembre 2006 Generalidades PFC3 54
J Unit 4.0 o superior y Anotaciones (1)
Requiere J ava 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 asser t antiguos y los
nuevos.
Utiliza anotaciones @Test para marcar un mtodo como
un caso de prueba.
Utiliza anotaciones @Bef or e y @Af t er para definir los
mtodos a ejecutar antes y despus de la ejecucin de cada
prueba.
Utiliza anotaciones @Bef or eCl ass y @Af t er Cl ass
para definir los mtodos a ejecutar antes y despus de la
ejecucin del conjunto de pruebas de una clase
Diciembre 2006 Generalidades PFC3 55
J Unit 4.0 o superior y Anotaciones (1)
Las anotaciones @Test pueden incluir el parmetro
timeout. El test falla si tarda ms de ese tiempo en
ejecutarse.
Las anotaciones @Test pueden incluir un parmetro que
especifique el tipo de excepcin a lanzar para que sea
exitoso.
J Unit4Adapter habilita la ejecucin de los nuevos tests
J Unit4con runners antiguos.
El nuevo runner puede ejecutar testsJ Unit "antiguos".
...
Diciembre 2006 Generalidades PFC3 56
Referencias
Asignatura Integracin de Sistemas.
Facultadede Informtica. Universidadeda Corua
http://www.tic.udc.es/~fbellas/teaching/is
Asignatura Proyecto de Fin de Carrera.
Facultadede Informtica. Universidadeda Corua
http://www.tic.udc.es/~mad/teaching/pfc3

You might also like