• Guardar
Herramientas Java
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Herramientas Java

el

  • 1,632 reproducciones

 

Estadísticas

reproducciones

reproducciones totales
1,632
reproducciones en SlideShare
1,632
reproducciones incrustadas
0

Actions

Me gusta
0
Descargas
0
Comentarios
0

0 insertados 0

No embeds

Accesibilidad

Categorias

Detalles de carga

Uploaded via as Adobe PDF

Derechos de uso

CC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs LicenseCC Attribution-NonCommercial-NoDerivs License

Report content

Marcada como inapropiada Marcar como inapropiada
Marcar como inapropiada

Seleccione la razón para marcar esta presentación como inapropiada.

Cancelar
  • Full Name Full Name Comment goes here.
    ¿Está seguro?
    Tu mensaje aparecerá aquí
    Processing...
Publicar comentario
Edite su comentario

Herramientas Java Presentation Transcript

  • 1. Herramientas para el desarrollo y gestión de proyectos Java Óliver Centeno Álvarez
  • 2. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 2 Objetivos  Conocer las herramientas más comunes y demandadas que permitan la gestión de los proyectos Java en sus distintas fases  Desarrollo  Pruebas  Detección rápida y eficiente de errores  Implantación
  • 3. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 3 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 4. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 4 Estructuración de Contenidos I. Eclipse (3 horas) II. Ant (3 horas) III. Maven (3 horas) IV. Sistemas de Control de Versiones (6 horas) V. Sistemas de Gestión de Incidencias (3 horas) VI. Sistemas de Pruebas (3 horas) VII. Otros Plugins de Eclipse (3 horas)
  • 5. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 5 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 6. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 6 I. Eclipse 1. Entorno de desarrollo 2. Creación y Refactorización de código 3. Depuración 4. Gestión de Librerías 5. Servidores Web y J2EE 6. Acceso a BBDD 7. Extendiendo las capacidades de Eclipse
  • 7. Octubre 2009 1. Eclipse 7 1. Entorno de Desarrollo
  • 8. Octubre 2009 1. Eclipse 8 2. Creación y Refactorización de código
  • 9. Octubre 2009 1. Eclipse 9 3. Depuración
  • 10. Octubre 2009 1. Eclipse 10 4. Gestión de Librerías  Librerías Eclipse  Window>Preferences>Java>Build Path  Librerías de proyecto  Project>Properties>Java Build Path  Pluggins  ECLIPSE_HOMEpluggins  Help>Software Updates>Find & Install
  • 11. Octubre 2009 1. Eclipse 11 5. Servidores Web y J2EE  Tomcat pluggin  http://www.eclipsetotale.com/tomcatPlugin.html  Descargar y descomprimir en ECLIPSEpluggins  Nuevo menú Tomcat y botones de acción  Configurar versión y directorio  Arrancar y detener Tomcat  Crear proyectos Java>Tomcat
  • 12. Octubre 2009 1. Eclipse 12 6. Acceso a BBDD  Pluggin SQLExplorer  http://eclipsesql.sourceforge.net/  Soporte para:  MySQL (com.mysql.jdbc.Driver, mysql-connector-java-3.1.10-bin.jar)  URL:: jdbc:mysql://<server>:<port>/<database>  DB2 (COM.ibm.db2.jdbc.app.DB2Driver, db2java.zip)  URL:: jdbc:db2:<database>  Sybase (com.sybase.jdbc2.jdbc.SybDriver, jconn2.jar)  URL: jdbc:sybase:Tds:<host>:<port>/<database>  Oracle (oracle.jdbc.driver.OracleDriver, classes12.zip)  URL: jdbc:oracle:thin:@ <host>:<port>:<sid>  SQLServer (com.microsoft.jdbc.sqlserver.SQLServerDriver, mssqlserver.jar, msbase.jar, msutil.jar)  URL: jdbc:microsoft:sqlserver://localhost:1433  PostgreSQL (org.postgresql.Driver, postgresql.jar)  URL: jdbc:postgresql://<server>:<port>/<database>
  • 13. Octubre 2009 1. Eclipse 13 7. Extendiendo las capacidades de Eclipse  http://www.eclipse- plugins.info/eclipse/index.jsp  Contiene numerosos pluggins para Eclipse  Posibilidades:  Copiar y descomprimir en ECLIPSEpluggins  Utilizar Help>Software Updates>Find & Install (requiere un repositorio del que descargar)
  • 14. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 14 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 15. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 15 II. Ant 1. Proyectos Ant 2. Configuración de tareas 3. Ejecución de proyectos Ant 4. Despliegue de aplicaciones con Ant
  • 16. Octubre 2009 2. Ant 16 1. Proyectos Ant  ¿Qué es Apache Ant?  Herramienta de compilación hecha con (extiende) Java  Configurada mediante ficheros XML  No depende del SO (multiplataforma)  ¿Dónde se obtiene?  http://ant.apache.org/  ¿Cómo se instala?  Descomprimir el fichero descargado  Añadir las variables JAVA_HOME y ANT_HOME  Añadir JAVA_HOMEbin y ANT_HOMEbin al PATH  Ejecutar ant -diagnostics
  • 17. Octubre 2009 2. Ant 17 1. Proyectos Ant  ¿Qué es un proyecto Ant?  Fichero de construcción build.xml <project name="test" default="compile" basedir=".">  Contiene tareas a realizar (targets) <target name="prepare"> <mkdir dir="${build.dir}"/> </target>  Y dependencias entre las tareas <target name="compile" depends="prepare">  Se invocan las tareas mediante ant <tarea>  Admite propiedades de configuración <property name="build.dir" value="clases"/>
  • 18. Octubre 2009 2. Ant 18 1. Proyectos Ant  ¿Qué estructura tiene un proyecto Ant?  Dentro del directorio de proyecto  Fichero build.xml  Directorio /src para código fuente  Directorio /build para ficheros de salida compilados  Directorio /lib para librería y otras dependencias  En el fichero build.xml  Un único elemento raíz <project>  Una sección de definición de propiedades <property>  Un conjunto de objetivos ejecutables <target>  Se referencia a una propiedad con ${prop}
  • 19. Octubre 2009 2. Ant 19 2. Configuración de Tareas  Target: Secuencia de tareas o acciones <target> <tarea1/> <tarea2/> <tarea3/> </target>  Atributos:  name: (requerido) Permite referenciar esta tarea  depends: Indica una lista de targets de los que depende  if: Condiciona la ejecución a la existencia de una propiedad  unless: Permite la ejecución a menos que exista la propiedad  description: Descripción textual de la tarea (-projecthelp)
  • 20. Octubre 2009 2. Ant 20 2. Configuración de Tareas  Tareas habituales dentro de un target:  http://ant.apache.org/manual/CoreTasks/  <delete>  <mkdir>  <javac>  <jar>  <copy>  <java>  <fileset>  Filtro que permite indicar patrones de fichero  Admite comodines: ?, *, **  Debe especificarse un directorio base (dir)  <include name=“patrón”> y <exclude name=“patrón”>
  • 21. Octubre 2009 2. Ant 21 3. Ejecución de proyectos Ant  Desde el directorio del proyecto  ant [target] lanza el target descrito en build.xml  Desde otro directorio  ant –find busca build.xml hacia arriba  Ejecutar otro fichero de construcción  ant –buildfile otro_build.xml  Parametrizar propiedades  ant –D<porpiedad>=valor  Ejecutar desde Java  java -Dant.home=<directorio ant_home> org.apache.tools.ant.Main [target]
  • 22. Octubre 2009 2. Ant 22 3. Ejecución de proyectos Ant  Ejecución condicional  if/unless <condition property="existe"> <available file="${build.dir}" type="dir" /> </condition> <antcall target="then"/> <target name="then" unless="existe"> <target name="else" if="existe" >  depends <target name="A"/> <target name="B" depends="A"/> <target name="C" depends="B"/> <target name="D" depends="C,B,A"/>
  • 23. Octubre 2009 2. Ant 23 4. Despliegue de aplicaciones  Habitualmente se indican targets de preparación, compilación, despliegue y ejecución  Tareas de empaquetamiento  <jar destfile="${app.name}.jar" >  <war destfile="f.war" webxml="web.xml" >  <cab cabfile="${dist}/manual.cab" basedir="htdocs/manual" includes="api/**/*.html" excludes="**/todo.html" verbose="yes" />  <zip>
  • 24. Octubre 2009 2. Ant 24 4. Despliegue de aplicaciones  Filtros sobre directorios  <patternset> indicar directorios/ficheros que cumplen el patrón  <include> y <exclude> para directorios  <includesfile> y <excludesfile> para ficheros  <fileset> es un <patternset> implícito  <zipfileset> equivale a <fileset> en tareas de empaquetamiento  Selectores  Contenedores <and>, <or>, <not> para combinar patrones  CORE: <contains>, <date>, <size>, <type>, …  <filelist> lista explícita de ficheros separada por comas/espacios (atributo dir)
  • 25. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 25 4. Despliegue de aplicaciones BUILD <war destfile="myapp.war" webxml="src/metadata/myapp.xml"> <fileset dir="src/html/myapp"/> <fileset dir="src/jsp/myapp"/> <lib dir="thirdparty/libs"> <exclude name="jdbc1.jar"/> </lib> <classes dir="build/main"/> <zipfileset prefix="images“ dir="src/graphics/images/gifs" /> </war> GENERADO WEB-INF/web.xml WEB-INF/lib/jdbc2.jar WEB-INF/classes/com/myco/myapp/Servlet.class META-INF/MANIFEST.MF index.html front.jsp images/small/logo.gif images/large/logo.gif FICHEROS thirdparty/libs/jdbc1.jar thirdparty/libs/jdbc2.jar build/main/com/myco/myapp/Servlet.class src/metadata/myapp.xml src/html/myapp/index.html src/jsp/myapp/front.jsp src/graphics/images/gifs/small/logo.gif src/graphics/images/gifs/large/logo.gif
  • 26. Octubre 2009 2. Ant 26 4. Despliegue de aplicaciones  Filtros (tareas <copy> y <move>)  <mapper> permite mapear ficheros FROM a ficheros TO  type=flatten elimina directorios y paquetes  type=merge sólo considera el atributo TO  type=glob admite asteriscos en el FROM y en el TO  type=regexp admite expresiones regulares  type=package transforma directorios FROM en paquetes TO  type=unpackage hace lo contrario  <filterset> permite indicar grupos de filtros para tokens  Admite begintoken y endtoken (@ por defecto)  <filter token="CLASE" value="${Clase}" />
  • 27. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 27 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 28. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 28 III. Maven 1. Goals Maven 2. Gestión de Dependencias 3. Arquetipos 4. Pluggins 5. Maven vs. Ant
  • 29. Octubre 2009 3. MAVEN 29 1. Goals Maven  ¿Qué es Maven?  Un framework de gestión de proyectos, que proporciona un modelo estándar de gestión y descripción de proyectos  Sistema de estándares + repositorio + SW para manejar y describir proyectos  Estándares  Una estructura estándar para los directorios  Una salida principal para cada proyecto  Una convención de nombres estándar  Reutilización  Ejecución declarativa  Organización coherente de dependencias
  • 30. Octubre 2009 3. MAVEN 30 1. Goals Maven  Ciclo de Vida  Validar  Inicializar  Generar fuentes  Procesar fuentes  Generar recursos  Compilar  Estructura de carpetas  src/main/java: Código fuente  src/main/resources: Otros recursos  src/test/java: Código fuente de pruebas.  src/test/resources: Otros recursos para las pruebas  Toda la información almacenada en pom.xml
  • 31. Octubre 2009 3. MAVEN 31 1. Goals Maven  Instalación  Descargar mvn y crear la variable M2_HOME  Añadir M2_HOMEbin a PATH y comprobar mvn - version  Crear la variable M2_REPO apuntando a .m2/repository  settings.xml permite configurar las conexiones de Maven  Goals  Objetivos que permiten realizar una tarea  mvn <goal>
  • 32. Octubre 2009 3. MAVEN 32 1. Goals Maven  Generación de proyectos  mvn archetype:create -DgroupId=com.empresa.solucion -DartifactId=mi-aplicacion  mvn eclipse:eclipse genera un proyecto de Eclipse  Compilación y ejecución  mvn compile compila el proyecto  mvn test lanza las prueba de src/test  mvn test-compile sólo compilar las pruebas  Empaquetado e instalación  mvn package empaqueta el proyecto  mvn install instala en repositorio local  Otros comandos  mvn clean, mvn resolve, mvn site, mvn deploy, …
  • 33. Octubre 2009 3. MAVEN 33 2. Gestión de Dependencias  Fichero POM (Project Object Model) <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>ejemplos</groupId> <artifactId>EjemploMaven1</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>EjemploMaven1</name> <url>http://maven.apache.org</url>
  • 34. Octubre 2009 3. MAVEN 34 2. Gestión de Dependencias  Fichero POM (Project Object Model)  Las dependencias no acompañan al código  Se puede indicar un ámbito de aplicación (scope)  compile, test, provided, run-time, system  Elementos de descripción  groupId: Nombre de organización, suele coincidir con el paquete  artifacId: Identificador del componente que se esta desarrollando  version: Versión actual del desarrollo  scope: Ámbito en el que se usa (compile, test, provided, run- time, system)  type: Empaquetamiento de la dependencia
  • 35. Octubre 2009 3. MAVEN 35 2. Gestión de Dependencias  Fichero POM (Project Object Model)  Indica la estructura y dependencias de un proyecto  Maven resuelve automáticamente dependencias transitivas y descarga de repositorio <project ...> ... <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
  • 36. Octubre 2009 3. MAVEN 36 2. Gestión de Dependencias  Las dependencias se heredan entre módulos  Existe un super-pom del que heredan todos  mvn help:effective-pom  Gestor de dependencias  Permite indicar una versión preferida para las dependencias  No afecta al grafo de dependencias del proyecto <dependencyManagement> <dependencies> <dependency> <groupId>org.apache.maven.proficio</groupId> <artifactId>proficio-model</artifactId> <version>${project.version}</version> </dependency>
  • 37. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 37 2. Gestión de Dependencias  Exclusión de Dependencias  Supongamos que tenemos estas dependencias <dependencies> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-el</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.apache.myfaces.core</groupId> <artifactId>myfaces-api</artifactId> <version>1.1.5</version> </dependency> </dependencies>
  • 38. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 38 2. Gestión de Dependencias  Exclusión de Dependencias  Si ahora cada uno depende a su vez de otra… (en su propio pom.xml) <artifactId>commons-el</artifactId> <dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.0.3</version> </dependency> </dependencies> <artifactId>myfaces-api</artifactId> <dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.0.4</version> </dependency> </dependencies>
  • 39. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 39 2. Gestión de Dependencias  Exclusión de Dependencias  El paquete generado contendrá ambas versiones  Para evitarlo se pueden excluir dependencias <dependencies> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-el</artifactId> <version>1.0</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
  • 40. Octubre 2009 3. MAVEN 40 3. Arquetipos  Los arquetipos permiten crear una estructura de proyecto sin tener que escribir el pom.xml  Listado de Arquetipos  http://docs.codehaus.org/display/MAVENUSER/Archetypes+List  mvn archetype:generate  Ejemplos:  appfuse-basic-jsf  appfuse-basic-struts  maven-archetype-j2ee-simple  maven-archetype-mojo  maven-archetype-site  …
  • 41. Octubre 2009 3. MAVEN 41 4. Pluggins  Permiten extender la funcionalidad de Maven  Se añaden al pom.xml  Se puede indicar una configuración personalizada <configuration>  Se puede restringir la ejecución a alguna fase del ciclo de vida <executions> <execution> <phase>integration-test</phase>  Se pueden crear pluggins personalizados mediante MOJO
  • 42. Octubre 2009 3. MAVEN 42 4. Pluggins  Reporting (mvn site) <reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> </plugin> </plugins> </reporting>  Build <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0</version> <configuration> <source>1.5</source><target>1.5</target> </configuration> </plugin> </plugins> </build>
  • 43. Octubre 2009 3. MAVEN 43 4. Pluggins  SCM  http://maven.apache.org/scm/plugins/  Permite la conexión con sistemas de control de versiones <connection> scm:svn:http://localhost/repositorios/miRepo </connection>  Eclipse  http://m2eclipse.codehaus.org/update/site.xml  http://code.google.com/p/q4e/wiki/Installation  mvn eclipse:eclipse  Requiere la variable M2_REPO  Permite lanzar tareas Maven como herramienta externa
  • 44. Octubre 2009 3. MAVEN 44 5. Maven vs. Ant  Incluir tareas Ant en Maven  Plugin maven-antrun-plugin  Permite especificar tareas ant a ejecutar  Ejemplo: <rmic base="${target.classes.dir}" classname="org.springframework.remoting.rmi. RmiInvocationWrapper"/> <rmic base="${target.classes.dir}" iiop="true" classname="org.springframework.remoting.rmi. RmiInvocationWrapper"> <classpath refid="all-libs"/> </rmic>
  • 45. Octubre 2009 3. MAVEN 45 5. Maven vs. Ant  Ejemplo: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <phase>process-classes</phase> <configuration> <tasks> <echo>Running rmic</echo> <!– TAREAS ANT A EJECUTAR --> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions>
  • 46. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 46 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 47. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 47 IV.Sistemas de Control de Versiones 1. Repositorios de Código 2. CVS 3. Subversion 4. Subversive
  • 48. Octubre 2009 4. Sistemas de Control de Versiones 48 1. Repositorios de Código  ¿Qué es un repositorio?  Sitio centralizado donde se almacena y mantiene información digital  Repositorio de código almacena y mantiene código fuente  ¿Qué es una versión/revisión?  Estado en que se encuentra un producto en un momento de su desarrollo  ¿Qué es un sistema de control de versiones?  Aplicación que gestiona el estado de un proyecto en base a un repositorio que almacena el histórico de versiones
  • 49. Octubre 2009 4. Sistemas de Control de Versiones 49 1. Repositorios de Código  Un sistema de control de versiones debe proporcionar:  Mecanismo de almacenaje de los elementos a gestionar (archivos, imágenes, documentación, ...)  Posibilidad de realizar cambios sobre los elementos almacenados (modificaciones parciales, añadir, borrar, renombrar o mover elementos)  Registro histórico de las acciones realizadas con cada elemento o conjunto de elementos (pudiendo volver a un estado anterior del producto)
  • 50. Octubre 2009 4. Sistemas de Control de Versiones 50 1. Repositorios de Código  Conceptos  Módulo: Estructura de directorios de un proyecto  Etiquetar: Dar a una versión de cada módulo un nombre común  Línea base: Versión aprobada a partir de la que se realizan los siguientes cambios  Rama: Cada una de las versiones en desarrollo obtenida a partir de una línea base  Check-in: Envío de una copia modificada a repositorio  Check-out: Obtención de una copia en local  Conflicto: Cada vez que se realizan cambios, hay que resolverlos  Integración: Unión de uno o varios conjuntos de cambios sobre una versión unificada
  • 51. Octubre 2009 4. Sistemas de Control de Versiones 51 2. CVS  Concurrent Versions System  Servidor CVSNT para Windows (http://www.march- hare.com/cvspro/es.asp)  CVSNT Control Panel 1. Detener los servicios (Pestaña About) 2. Añadir un repositorio (Pestaña Repository Configuration) 3. Opcionalmente configurar el servidor (Server Settings) 4. Aplicar los cambios y reiniciar los servicios 5. Crear una variable CVSROOT=:sspi:<host>:/<repositorio> 6. Añadir usuario(s) al sistema (Windows) 7. Crear un password para cada usuario (cvs passwd –a <usuario>)
  • 52. Octubre 2009 4. Sistemas de Control de Versiones 52 2. CVS  Cliente CVS  Habitualmente se admite check-out anónimo  Y se exige un usuario para check-in  cvs <orden> [opciones]  Órdenes básicas  import crear un módulo nuevo con el directorio actual  co check-out inicial de un módulo  commit check-in de los cambios realizados  update actualización de los cambios de otros usuarios  diff muestra diferencias entre revisiones  add añade ficheros al módulo (-kb para binarios)  remove elimina ficheros del módulo
  • 53. Octubre 2009 4. Sistemas de Control de Versiones 53 2. CVS  Resolución de conflictos  Al hacer update o commit  CVS se quejará si hay conflictos que no pueda resolver  El fichero en conflicto aparecerá marcado para su edición <<<<<<< Fichero texto-versión-1 ======= texto-versión-2 >>>>>>> revisión  Resolver el conflicto  Repetir el update o commit
  • 54. Octubre 2009 4. Sistemas de Control de Versiones 54 2. CVS  Desde Eclipse 1. Configurar la perspectiva CVS 2. Botón derecho>Team>Share Project 3. ¡¡OJO!! Añadir .project y .classpath a la lista de ignorados 4. Etiquetar la revisión (Team>Tag as Version) 5. Ya aparecerán las opciones de trabajo  Commit, Update, Branch, Merge, Tag as Version 6. La resolución de conflictos es gráfica
  • 55. Octubre 2009 4. Sistemas de Control de Versiones 55 3. Subversion  CVS es un sistema de control de versiones antiguo  Subversion es la evolución natural de CVS  Hereda comandos (svn co, svn add,…)  Y añade nuevos (svn cp, svn status,…)  Conceptos  Trunk Tronco, se refiere a una línea base  Branch Rama derivada del tronco  Tag Etiqueta
  • 56. Octubre 2009 4. Sistemas de Control de Versiones 56 3. Subversion  http://svn1clicksetup.tigris.org/  Instala SVN en “1 paso”  Instala TortoiseSVN como cliente Windows  Consideraciones  Crear un usuario para SVN  Opcionalmente crear un proyecto inicial  Genera un servicio de control SVNService  Podemos omitir TortoiseSVN  Se accede como svn://localhost  Se admiten referencias http://, file:///, etc.
  • 57. Octubre 2009 4. Sistemas de Control de Versiones 57 3. Subversion  Comandos  svn add Añade elementos a repositorio  svn co Obtiene una copia local  svn cleanup Limpia una copia de trabajo local  svn commit Actualiza cambios en el repositorio  svn import Commit recursivo de archivos no versionados  svn export Obtiene la estructura de directorios limpia  svn mkdir Crea un directorio en el repositorio  svn cp Crea una nueva rama  svn merge Fusiona dos ramas  svn resolved Marca los conflictos como resueltos  svn revert Deshace los cambios de una copia local  svn update Actualiza cambios del repositorio en local
  • 58. Octubre 2009 4. Sistemas de Control de Versiones 58 3. Subversion  svn help  Muestra todos los comandos disponibles  svn status  Muestra el estado de una copia de trabajo  Estados de un fichero SVN  A Fichero añadido  D Fichero eliminado  M Fichero modificado  ? Fichero local nuevo (no existe en repositorio)  ! Fichero remoto distinto de la copia local  U Fichero actualizado desde repositorio  G Fichero guardado en repositorio  C Fichero con conflictos
  • 59. Octubre 2009 4. Sistemas de Control de Versiones 59 3. Subversion  Propiedades de un fichero/directorio  svn:read-only Fichero de solo lectura  svn:executable Fichero ejecutable  svn:mime-type Indica el tipo mime del fichero  svn:ignore Fichero ignorado  Operaciones con propiedades  svn propget <propiedad> <fichero>  svn propset <propiedad> <valor> <fichero>  svn propedit <propiedad> <fichero>
  • 60. Octubre 2009 4. Sistemas de Control de Versiones 60 3. Subversion  Herramientas de administración  svnlook  Analiza los cambios en un repositorio  svnadmin  Permite crear repositorios, mostrar revisiones, cambiar el log de revisiones, copias de seguridad, …  shell consola de navegación por el repositorio  dump copia de seguridad a salida estándar  load recupera una copia de seguridad  setlog modifica el log de una revisión
  • 61. Octubre 2009 4. Sistemas de Control de Versiones 61 4. Subversive  Proyecto para la integración de Subversion para Eclipse  http://www.eclipse.org/subversive/  Permite trabajar con repositorios SVN de modo similar al que se trabaja con CVS  Características  Exploración de repositorio remoto  Compartición de proyectos y check-out  Sincronización de proyectos para cambios incomming/outgoing  Commit, update y revert  Histórico de cambios  Resolución de conflictos por mezcla (merge)
  • 62. Octubre 2009 4. Sistemas de Control de Versiones 62 4. Subversive  Perspectiva SVN Repository Exploring  Añadir svn://localhost  Compartir el proyecto con este repositorio  Botón derecho > Team > Share project  Opciones  De acceso: Synchronize, Commit, Update, Revert  De estructura: Tag, Branch, Merge, Switch  Otras: Show properties, Set property, Copy to, Export  También se puede crear un proyecto como check-out de un repositorio
  • 63. Octubre 2009 4. Sistemas de Control de Versiones 63 4. Subversive
  • 64. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 64 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 65. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 65 V. Gestión de Incidencias 1. Propósito de un SGI 2. Bugzilla 3. Instalación y Administración 4. Creación de Usuarios 5. Registro de incidencias (Bugs)
  • 66. Octubre 2009 5. Gestión de Incidencias 66 1. Propósito de un SGI  Toda aplicación en explotación puede generar incidencias  El cliente reporta estas incidencias a su contacto (comercial, jefe de proyecto, gerente,…)  El contacto deriva la incidencia al equipo de desarrollo  El equipo la resuelve y se lo comunica al contacto  El contacto le devuelve al cliente una nueva versión  Un SGI pretende llevar un control más preciso de este proceso
  • 67. Octubre 2009 5. Gestión de Incidencias 67 1. Propósito de un SGI  “Un SGI es una aplicación informática diseñada para ayudar a asegurar la calidad de software y asistir a los programadores y otras personas involucradas en el desarrollo y uso de sistemas informáticos en el seguimiento de los defectos de software”  Componentes  Base de Datos  Aplicación de acceso (escritorio o Web)
  • 68. Octubre 2009 5. Gestión de Incidencias 68 1. Propósito de un SGI  Errores  Bloqueante: impide que se pueda seguir desarrollando/probando  Crítico: caída de la aplicación, pérdida de datos, …  Mayor: pérdida importante de funcionalidad, datos de salida incorrectos, o dificultades que impiden el uso del programa  Normal: una parte del componente no es funcional  Menor: un problema al cual se le puede dar la vuelta  Trivial: un problema estético  Mejora: solicitud de una nueva característica o funcionalidad
  • 69. Octubre 2009 5. Gestión de Incidencias 69 2. Bugzilla  Bugzilla es un conjunto de cgi que nos permiten mantener una base de datos de incidencias de un proyecto desde un navegador Web  Requiere un servidor Web, una base de datos y Perl  Permite el alta y baja de incidencias sabiendo  Versión a la que afecta  Encargado de resolverla  Estado de la incidencia (abierta, rechazada, cerrada, …)  Histórico de cambios realizados
  • 70. Octubre 2009 5. Gestión de Incidencias 70 3. Instalación y Administración  Instalación en Windows  Requiere MySQL, Apache y ActivePerl  Instalable sobre SQLServer e IIS (Bugzilla??)  http://www.bugzilla.org/download/  http://dev.mysql.com/downloads/mysql/5.1.html  http://www.activestate.com/activeperl/downloads/  http://httpd.apache.org/download.cgi
  • 71. Octubre 2009 5. Gestión de Incidencias 71 3. Instalación y Administración  Instalación en Windows 1. Descargar las aplicaciones indicadas 2. Descomprimir Bugzilla 3. Instalar MySQL  Crear una instancia “bugs” y un usuario “bugs” con permisos totales sobre ella (BUGZILLA_HOMElocalconfig) 4. Instalar ActivePerl  perl checksetup.pl (desde el directorio de bugzilla)  Resolver las distintas dependencias  Montar la BD (ppm install DBD-mysql) 5. Instalar Apache  Configurar permisos, httpd.conf y CGI
  • 72. Octubre 2009 5. Gestión de Incidencias 72 3. Instalación y Administración
  • 73. Octubre 2009 5. Gestión de Incidencias 73 4. Creación de Usuarios
  • 74. Octubre 2009 5. Gestión de Incidencias 74 5. Registro de incidencias (Bugs)
  • 75. Octubre 2009 5. Gestión de Incidencias 75 5. Registro de incidencias (Bugs)
  • 76. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 76 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 77. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 77 VI.Sistemas de Pruebas 1. Clases de Test 2. Ciclo de Vida de un Test 3. Aserciones 4. JUnit 5. DbUnit 6. HttpUnit 7. Ejecución de Pruebas
  • 78. Octubre 2009 6. Sistemas de Pruebas 78 1. Clases de Test  JUnit está diseñado bajo los patrones de diseño Command y el patrón Composite  Un TestCase es un objeto Command y una clase de Test es una clase que extiende TestCase y contiene métodos de testeo  Antes de Java 5  Los métodos debían llamarse testXXX()  Se admitían los métodos setUp() y tearDown() para inicializar y liberar objetos (pre-post condiciones)  Después de Java 5  Se utilizan anotaciones @Before, @Test, @After  Utilizables a nivel de clase o a nivel de método (test)  No importan los nombres de los métodos ni hay que heredar TestCase
  • 79. Octubre 2009 6. Sistemas de Pruebas 79 2. Ciclo de Vida de un Test  Todos los programas tienen errores  Un test NO se realiza para comprobar que un sistema no tiene errores, NI para demostrar que funciona  Un test se realiza para encontrar fallos (decisión fuerte)  Se pueden probar las distintas fases de desarrollo  Modelo en V
  • 80. Octubre 2009 6. Sistemas de Pruebas 80 3. Aserciones  Condiciones que deben cumplirse para validar un test  En caso de fallo lanza un AssertionFailedError  Se especifican mediante la clase org.junit.Assert  assertTrue(“mensaje”, condición)  assertFalse(“mensaje”, condición)  assertSame(objeto, objeto)  assertNotSame(objeto, objeto)  assertNull(objeto)  assertNotNull(objeto)  assertEquals(variable, variable)  JUnit3 hereda los métodos (extends TestCase)  JUnit4 requiere importarlos (import static)
  • 81. Octubre 2009 6. Sistemas de Pruebas 81 4. JUnit  Framework para pruebas unitarias  Pruebas de funcionamiento de una clase  Paquetes junit.* (JUnit 3) y org.junit.* (JUnit 4)  Disponible en Eclipse (JUnit 3 y 4)  Proyectos de prueba (New > Project > Examples)  Ejecutable como JUnit (junit.samples.AllTests)  Ejecutable como Swing o AWT (TestRunner)  JUnit 4 admite timeout, excepciones esperadas, tests ignorables, auto-documentación, …
  • 82. Octubre 2009 6. Sistemas de Pruebas 82 4. JUnit  Paquetes de pruebas (Suites)  Permite ejecutar pruebas de varias clases en conjunto desde una lanzadora  En JUnit 3 se añaden clases a TestSuite  suite.addTest(ClaseTest.suite());  suite.addTestSuite(ClaseTest.class);  En JUnit 4 se usan anotaciones de clase  @RunWith(Suite.class)  @SuiteClasses({C1Test.class, C2Test.class})
  • 83. Octubre 2009 6. Sistemas de Pruebas 83 5. DbUnit  Herramienta para simplificar las pruebas unitarias de operaciones sobre base de datos  http://www.dbunit.org/  Carga los datos de test de XML  El framework DbUnit extiende JUnit 3  Contiene métodos para distintas comparaciones entre datos (desde texto plano, consultas, tablas, …)  En lugar de extender TestCase se extiende DatabaseTestCase  Requiere implementar dos métodos  protected IDatabaseConnection getConnection() throws Exception  protected IDataSet getDataSet() throws Exception
  • 84. Octubre 2009 6. Sistemas de Pruebas 84 5. DbUnit  Ciclo de vida 1. Eliminar datos de anteriores ejecuciones del test de la BD 2. Cargar datos nuevos desde el sistema de archivos 3. Ejecutar pruebas considerando aserciones  Nótese: no se realizan tareas de restauración  Permite cargar datos para un único test  DatabaseTestCase  setUp() borra y reinserta los datos de getDataSet()  tearDown() no realiza ninguna acción
  • 85. Octubre 2009 6. Sistemas de Pruebas 85 5. DbUnit  Realización de pruebas  org.dbunit.Assertion permite establecer aserciones entre DataSets  No importa el origen de datos  FlatXmlDataSet  QueryDataSet  XlsDataSet  CsvDataSet  IDataSet  También permite exportar datos a distintos destinos
  • 86. Octubre 2009 6. Sistemas de Pruebas 86 6. HttpUnit  Framework para probar sitios Web basado en JUnit  http://www.httpunit.org/  com.meterware.WebConversation simula un navegador accediendo al servidor  WebRequest y WebResponse auxiliares para indicar la URL y obtener la respuesta  La respuesta será HTML  getText() la devuelve como texto  getDOM() la devuelve como objeto XML DOM
  • 87. Octubre 2009 6. Sistemas de Pruebas 87 6. HttpUnit  Enlaces  WebLink link = response.getLinkWith("texto");  link.click();  Se recarga la respuesta con el método getCurrentPage() de WebConversation  También existe getLinkWithImageText() que busca en el texto ALT de una imagen  Tablas  WebTable table = resp.getTables()[0];  Método asText() la devuelve como String[][]  Marcos  getFrameContents("marco") devuelve un WebResponse
  • 88. Octubre 2009 6. Sistemas de Pruebas 88 6. HttpUnit  Formularios  WebForm form = resp.getForms()[0];  form.getParameterValue("parámetro") ;  getParameterNames() devuelve un String[]  setParameter("parámetro", "valor");  toggleCheckbox("parámetro"); para checkbox  submit(); envía los datos  reset(); resetea a los valores por defecto
  • 89. Octubre 2009 6. Sistemas de Pruebas 89 7. Ejecución de Pruebas  Desde Eclipse  Run as JUnit  Desde consola  java org.junit.runner.JUnitCore [Clase de Test]  Desde Swing  java junit.swingui.TestRunner  Desde AWT  java junit.awtui.TestRunner  Desde Ant  <junit><test name="Clase de Test" /></junit>
  • 90. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 90 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 91. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 91 VII.Otros Plugins de Eclipse 1. Selenium IDE 2. JMeter 3. I18N 4. Hibernate Tools 5. Spring IDE
  • 92. Octubre 2009 7. Otros Pluggins de Eclipse 92 1. Selenium IDE  Paquete de herramientas para automatizar pruebas de aplicaciones Web en distintas plataformas  http://seleniumhq.org/  NO es pluggin de Eclipse sino de Firefox  CubicTest SÍ es un pluggin para Eclipse  http://cubictest.seleniumhq.org/  Requiere Eclipse 3.3 Ganymede  Requiere pluggin Eclipse Graphical Editing Framework (GEF)
  • 93. Octubre 2009 7. Otros Pluggins de Eclipse 93 1. Selenium IDE
  • 94. Octubre 2009 7. Otros Pluggins de Eclipse 94 1. Selenium IDE
  • 95. Octubre 2009 7. Otros Pluggins de Eclipse 95 1. Selenium IDE
  • 96. Octubre 2009 7. Otros Pluggins de Eclipse 96 2. JMeter  Herramienta para realizar pruebas de stress sobre un servidor Web  http://jakarta.apache.org/jmeter/  Se parte de un plan de pruebas (test plan) que deberá contener un grupo de hilos (thread group) para lanzar llamadas concurrentes  Se puede indicar  Nombre del grupo  Número de hilos  Tiempo para generar los hilos  Número de veces que se lanza una petición al servidor
  • 97. Octubre 2009 7. Otros Pluggins de Eclipse 97 2. JMeter  Dado un plan de pruebas y un grupo de hilos se indicar la URL del servidor a probar (Add>Sampler>HTTPRequest)  Indicar  Máquina (nombre o IP)  Puerto (80)  Protocolo (http)  Método de petición (GET/POST)  Directorio Web a consultar  Posibles parámetros para la petición  …
  • 98. Octubre 2009 7. Otros Pluggins de Eclipse 98 2. JMeter  Para mostrar los resultados se debe añadir un Listener al plan de pruebas  Árbol de resultados (Results Tree)  Para cada petición muestra la respuesta HTTP, la petición y los datos HTML devueltos  Tiene un renderizador de HTML y XML  Informe agregado (Aggregate Report)  Muestra un resumen de los resultados  Gráfico de resultados (Graph results)  Muestra un gráfico de rendimiento  …
  • 99. Octubre 2009 7. Otros Pluggins de Eclipse 99 3. I18N  Proceso de internacionalización y localización  Internacionalización  Diseñar software adaptable a distintos idiomas y regiones sin reprogramar  Localización  Adaptar software internacionalizado a un idioma concreto con componentes específicos y ficheros de localización (es-es, en-GB, en-US, …)  Se utilizan tokens en lugar de texto al desarrollar  Se sustituyen los token de ficheros de localización
  • 100. Octubre 2009 7. Otros Pluggins de Eclipse 100 3. I18N  Ejemplo Hola Mundo 1. Source>Externalize Strings 2. Determinar los textos a externalizar o ignorar 3. Determinar el fichero .properties asociado 4. Comprobar el gestor de recursos que genera 5. Si no hay ficheros de localización utiliza el generado 6. Si añadimos copias localizadas utiliza la copia del idioma instalado (Windows)
  • 101. Octubre 2009 7. Otros Pluggins de Eclipse 101 4. Hibernate Tools  Conjunto de herramientas para la persistencia de objetos en bases de datos relacionales  https://www.hibernate.org/  Disponible para Java y .Net  Define el mapeo tablas-clases en ficheros XML  Las clases son VO serializables  La lógica de acceso la implementa hibernate  Fichero de configuración  Conexión, usuario, password, …
  • 102. Octubre 2009 7. Otros Pluggins de Eclipse 102 5. Spring IDE  Framework para la creación de beans Java a través de documentos XML  http://www.springide.org/  Permite la inyección de dependencias a la hora de crear estos beans  Sólo se necesita crear la clase Java (POJO)  Equivale a un Diagrama de Objetos UML
  • 103. Muchas Gracias Óliver Centeno Álvarez