Professional Documents
Culture Documents
ndice
Enfoque para el Proyecto
Herramientas Arquitectura
Generalidades Metodologa
Proceso Unificado Estndar de Codificacin Java
Generalidades Herramientas
Apache Maven 2 IDE Eclipse JUnit
Marzo 2009
PFC3
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 permitir incorporar 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) rehacer 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.
Marzo 2009 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 documento muy sencillo (breve), pero muy utilizado en el mundo Java son las Java Code Conventions, definidas por Sun Microsystems.
http://java.sun.com/docs/codeconv/index.html
Marzo 2009 PFC3 5
Herramientas
Modelado UML:
MagicDraw (instalado en Laboratorios de Docencia FIC) Poseidon for UML Rational Rose
Desarrollo:
HTTP HTML + CSS / XML Java SE 1.6.0 + Apache Struts 1.2.9 + Standard TagLibs 1.1.2 JUnit 4.4 Apache Maven 2 IDE Eclipse Otras: AJAX, Spring, JPA, Hibernate, EJB3, ...
Bases de Datos:
MySQL 5.0 PostgreSQL 8.1
Servidor Web:
Apache Tomcat 6.0.x / Jetty
Marzo 2009
PFC3
Capa 2
Int. Modelo web Serv. ap. web
Capa 3
Base de datos
Navegador
Internet/ Intranet
Navegador
Marzo 2009
PFC3
Vista
Controlador
Modelo
DAO/TO
Generalidades Metodologa
Introduccin al Proceso Unificado El proceso Unificado de Desarrollo de Software. Ivar Jacobson, Grady Booch, James Rumbaugh. Addison Wesley, 2001. Java Code Conventions Sun Microsystems, Java Code Conventions,http://java.sun.com/docs/codeconv/index.html.
Sistema software
Marzo 2009
PFC3
10
Marzo 2009
PFC3
11
Casos de Uso
<<defineNecesidades>> Anlisis Recopilar, Clarificar y Validar los requisitos <<realiza>> Diseo Realizar los casos de uso <<verifica>> Pruebas Verificar que se satisfacen los casos de uso
12
Marzo 2009
PFC3
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.
Marzo 2009
PFC3
13
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.
Marzo 2009
PFC3
15
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 granularidad de 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).
Marzo 2009 PFC3 16
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.
Marzo 2009
PFC3
17
Concepcin Elaboracin
Construccin
Transicin
hito 1
Iter. 1
hito 2
Iter. 2
hito 3
Iter. 3 Iter. 4 Iter. 5
hito 4
Iter. 6
Hito: punto en el tiempo donde se evalan los objetivos logrados y se pueden tomar decisiones crticas
Marzo 2009 PFC3 18
Desarrollo Iterativo
Construccin Iteracin de desarrollo 1 Iteracin de desarrollo 2 Iteracin de desarrollo n
Marzo 2009
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.
Marzo 2009
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.
Marzo 2009
PFC3
21
Fase de Transicin.
Pruebas beta (de usuario).
Marzo 2009
PFC3
22
Marzo 2009
PFC3
23
Marzo 2009
PFC3
24
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.
Marzo 2009
PFC3
25
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, identada con el inicio de la sentencia que cierra.
Excepcin: mtodos vacos {}
Marzo 2009
PFC3
26
Sentencias incluidas deben de ser identadas. { aparecer al final de la lnea de inicio del bloque; y } al principio de lnea, identado con el inicio del bloque. En sentencias if-then-else o bucles, se utilizar siempre {} aunque el bloque est compuesto 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
Marzo 2009 PFC3 27
28
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.
Marzo 2009
PFC3
29
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 _.
Marzo 2009
PFC3
30
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 est por terminar.
Marzo 2009 PFC3 31
Marzo 2009
PFC3
32
/** * ...method Blah documentation comment... */ public Blah() { // ...implementation goes here... } /** * ...method doSomething documentation comment... */ public void doSomething() { // ...implementation goes here... } /** * ...method doSomethingElse documentation comment... * @param someParam description */ public void doSomethingElse(Object someParam) { // ...implementation goes here... } }
Marzo 2009
PFC3
33
Generalidades Herramientas
Desarrollada en Java.
Documentacin Maven 2:
Maven en 5 minutos.
http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
Maven en 30 minutos.
http://maven.apache.org/guides/getting-started/index.html
Marzo 2009
PFC3
36
Marzo 2009
PFC3
37
Marzo 2009
PFC3
38
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.
Marzo 2009
PFC3
39
Marzo 2009
PFC3
40
MySQLCreateTables.sql PostgreSQLCreateTables.sql
ConfigurationParameters.properties
Marzo 2009
PFC3
42
Marzo 2009
43
Marzo 2009
PFC3
44
<?xml version="1.0"?> <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> <Configure class="org.mortbay.jetty.webapp.WebAppContext"> <!-- PostgreSQL --> <!-- --> <!-- MySQL --> <New id="J2EE-ExamplesDS-MySQL" class="org.mortbay.jetty.plus.naming.Resource"> <Arg>jdbc/J2EE-ExamplesDS</Arg> <Arg> <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"> <Set name="url">jdbc:mysql://localhost/j2ee</Set> <Set name="user">j2ee</Set> <Set name="password">j2ee</Set> </New> </Arg> </New> </Configure> Marzo 2009 PFC3 46
Ejemplos - Compilacin
Linux, Windows // Mysql, PostgreSQL. Configuracin por defecto:
Linux, Mysql, Base de Datos j2ee (default port), usuario j2ee, password j2ee
Arrancar la base de datos. Utilizar maven para crear las tablas en la base de datos y compilar los ejemplos.
Marzo 2009
PFC3
47
ooJSPX, XM b T P, rer
Pro, SQL, ls L
s ct ..Eeditor je .
ion dit
Marzo 2009
PFC3
48
Configuracin de Eclipse para importar cada subsistema de los ejemplos como un proyecto.
Arrancar eclipse.
eclipse&
Seleccionar "Create project at external location. Especificar directorio HOME del proyecto (Browse to j2ee-examples2.2.0/standardutil directory). Click sobre "Finish".
Marzo 2009 PFC3 49
Marzo 2009
PFC3
50
Linux:
$HOME/.m2/repository
Marzo 2009
PFC3
51
Marzo 2009
PFC3
52
Se puede seleccionar una clase en la jerarqua de clases y botn derecho + Run As > Java Application
Depuracin:
Eclipse posee una perspectiva para depuracin de aplicaciones.
Permite seguir la traza de ejecucin de una aplicacin, establecer puntos de interrupcin y visualizar el estado de las variables en un instante determinado.
Run > Debug As > Java Application Botn derecho + Debug As > Java Application
Otros
Window > Show View > Other > Connectivity > Data Source Explorer
Marzo 2009 PFC3 53
Marzo 2009
PFC3
54
Marzo 2009
PFC3
55
+ mvn eclipse:eclipse + Importar el proyecto desde Eclipse: "File -> New -> Java Project". Elegir nombre de proyecto (e.g. j2ee-app) y la opcin "Create project from existing source" (elegir directorio que se cre el proyecto).
NOTA: sustituir j2ee-app por el nombre del proyecto Marzo 2009 PFC3 56
Marzo 2009
PFC3
57
Marzo 2009
PFC3
58
En general, el objetivo de las pruebas de unidad es comprobar que los diferentes componentes del SW funcionan de forma aislada y que ante cambios en el cdigo continuan funcionando.
Marzo 2009
PFC3
59
Qu es Junit?
JUnit es un framework para escribir pruebas de unidad repetibles en Java.
http://www.junit.org/ Open Source. Programado por Erich Gamma y Kent Beck.
Caractersticas:
Utiliza aserciones para comprobar resultados esperados.
Marzo 2009
PFC3
60
Comprobaciones:
Pueden realizarse varias comprobaciones (aserciones) por mtodo. La clase Assert proporciona un conjunto de mtodos estticos para realizar comprobaciones (pueden lanzar un objeto con mensajes de fallo). Assert.assertEquals(Object, Object) Compara utilizando el mtodo "equals".
Si no se redefine, el mtodo equals de un Object realiza una comparacin por referencia; es necesario redefinir el mtodo equals de una clase para la que se desee comparacin por contenido. La clase String y las correspondientes a los tipos bsicos lo tienen redefinido
comparan por contenido.
Marzo 2009
PFC3
61
Marzo 2009
PFC3
62
Junit 4.x - 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 anterioridad todo lo que sea necesario (crear datos) y con posterioridad restaurar el estado inicial (eliminar datos).
Utiliza anotaciones @Before y @After para definir los mtodos a ejecutar antes y despus de la ejecucin de cada prueba. Utiliza anotaciones @BeforeClass y @AfterClass para definir los mtodos a ejecutar antes y despus de la ejecucin del conjunto de pruebas de una clase.
@Before protected void setup() { ... } @After protected void tearDown() { ... } @BeforeClass protected void setup() { ... } @AfterClass protected void tearDown() { ... }
Marzo 2009
PFC3
63
Cdigo de pruebas
Las clases que implementan las pruebas suelen implementarse en el mismo paquete que la clase que prueban, pero en un directorio de fuentes diferente.
Marzo 2009
PFC3
64
Referencias
Asignatura Integracin de Sistemas.
Facultade de Informtica. Universidade da Corua
http://www.tic.udc.es/~fbellas/teaching/is-2007-2008
Marzo 2009
PFC3
65