miércoles, 28 de julio de 2010

Programación Ágil: extreme programming

Las metodologías ágiles de software surgen como respuesta a la gestión rígida, que impone la programación heroica (convencional). Dentro de estas metodologías ágiles, encontramos XP, o extreme programming.

Por definición lo deseable en XP es lo siguiente:

Características fundamentales

Las características fundamentales del método son:

  • Desarrollo iterativo e incremental: pequeñas mejoras, unas tras otras.

  • Pruebas unitarias continuas, frecuentemente repetidas y automatizadas, incluyendo pruebas de regresión. Se aconseja escribir el código de la prueba antes de la codificación. Véase, por ejemplo, las herramientas de prueba JUnit orientada a Java, DUnit orientada a Delphi y NUnit para la plataforma.NET. Estas dos últimas inspiradas en JUnit.

  • Programación en parejas: se recomienda que las tareas de desarrollo se lleven a cabo por dos personas en un mismo puesto. Se supone que la mayor calidad del código escrito de esta manera -el código es revisado y discutido mientras se escribe- es más importante que la posible pérdida de productividad inmediata.

  • Frecuente integración del equipo de programación con el cliente o usuario. Se recomienda que un representante del cliente trabaje junto al equipo de desarrollo.

  • Corrección de todos los errores antes de añadir nueva funcionalidad. Hacer entregas frecuentes.

  • Refactorización del código, es decir, reescribir ciertas partes del código para aumentar su legibilidad y mantenibilidad pero sin modificar su comportamiento. Las pruebas han de garantizar que en la refactorización no se ha introducido ningún fallo.

  • Propiedad del código compartida: en vez de dividir la responsabilidad en el desarrollo de cada módulo en grupos de trabajo distintos, este método promueve el que todo el personal pueda corregir y extender cualquier parte del proyecto. Las frecuentes pruebas de regresión garantizan que los posibles errores serán detectados.


A modo de iniciación, lo preferible es comenzar centrándose en lo siguiente:

    1.Pruebas unitarias continuas, frecuentemente repetidas y automatizadas. Se aconseja escribir el código de la prueba antes de la codificación. Para el caso la librería con la que realizar las pruebas con la librería TestNG.

    2. Corrección de todos los errores antes de añadir nueva funcionalidad. Hacer entregas frecuentes, en el caso realizar dichas entregas a través de Subversión en Eclipse.

    3. Desarrollo iterativo e incremental . pequeñas mejoras, unas tras otras. En el caso una vez resueltos los puntos uno y dos, centrarse en la funcionalidad.


Fuentes:

Wikipedia: Desarrollo ágil de software

Wikipedia: programación extrema

Wikipedia: TDD, desarrollo dirigido por pruebas

Navegapolis: Gestion y procesos

Lectura recomendada:

Chuidiang: TDD, desarrollo dirigido por pruebas

lunes, 26 de julio de 2010

Maven

Apache Maven.
Es una refinación de ant pero con mas funciones.
Limpieza de código, generación del proyecto,..
(generación de .jar y war)
PARA USAR ESTAS HERRAMIENTAS es necesario generar un archivo XML
Se puede lanzar desde consola.
XML
CONSOLA
PLUGIN

Eclipse proporciona un plugin visual.
A nosotros lo que nos va a interesar es la gestión de dependencias (librería, proyecto)
Indicamos a maven la herramienta (pej hibernate) y la version, el conecta a un repositorio y localiza los archivos dependientes.

Maven aun no esta bastante implantado en entorno empresarial.
Por eso es recomendable saber usar otras herramientas

Descargar Maven (en el curso se usa maven 1)

Maven crea en local un repositorio en espejo al de internet
(vjgr)

Descomprimir el archivo en una carpeta accesible. (P.ej: C:\Maven)
Instrucciones en pagina de descarga.
Añadir nueva ruta al path

La instalación de ant es similar.

Maven guarda los archivos en una carpeta por defecto,
seguir las instrucciones de la pagina

Eclipse maven m2eclipse

http://m2eclipse.sonatype.org/sites/m2e

En las vistas se puede elegir maven

En windows-> preferences usando el buscador aparecen las opciones de configuracion de maven.
Dentro de maven indicamos la ruta a la carpeta de maven. y al archivo de configuracion que hemos editado (setting.xml)

A partir de ahora tenemos la opción nuevo proyecto-> nuevo maven project.
Nos aparece una lista de plantillas. para elegir la deseada
GroupiD-> Quien desarrolla el proyecto
ArtifactID-> Nombre del proyecto
Snapshop-> numero de lanzamiento

El fichero pom.xml define todas las propiedades del proyecto.
Para añadir dependencias al proyecto.
Sobre el proyecto, botón derecho -> maven->

Así mismo podemos elegir que maven no gestiones el proyecto.


Maven estandariza la organización en carpetas.

SRC->Main -> Ejecución
SRC->Test-> Pruebas (Vease JUNIT, TESTNG)

src----main ----java
--main----resources
------test----java
------test----resources
Resources->Archivos XML y de configuración

Ver ejemplo Hola mundo en maven

Run as -> maven build... -> podemos darle las opciones clean compile package test install

install -> si no indicamos otra opción maven intenta instalar (en el modo por defecto), en el ejemplo de un jar, lo copia en el repositorio local en el paquete correspondiente.
Ésto es útil si tenemos otro proyecto con dependencias. Se coge dicha dependencia del repositorio local. Si no se hace la instalación los demás proyectos no tienen acceso al paquete en cuestión.

lunes, 19 de julio de 2010

Conveniencia de los métodos automatizados de prueba (Ej: JUNIT)
En el caso librería TestNG.

Instalación y prueba , código de ejemplo

@Test //Importa automáticamente el contenido.

@DataProvider(name="test1")

Importación de proyectos desde SVN. ()

viernes, 16 de julio de 2010

16 julio 2010

Enumeraciones en java.

Las enumeraciones surgen como respuesta a los problemas que surgían con los String.
Un tipo enum persigue sustituir las cadenas por código que si da errores de compilación, por lo que los errores son mas visibles.

Declaración dentro de una clase:

public enum marcas{ audi,golf,SEAT};

Declaración como clase:

public enum Tamanos{
enum PEQUENO,MEDIO,GRANDE;
}

Uso en una clase:
public class Ropa{
private Tamano talla;
public Ropa(Tamano talla){
this.talla=talla;
}
}//Fin clase

jueves, 15 de julio de 2010

15 Julio 2010

Atajos de Tclado en Eclipse

Comandos más utilizados en desarrollo:

  • Navigate>Open Type
    • ventanita para indicar la clase que queremos editar/ver. Esta ventanita tiene un buscador y funciona la búsqueda por iniciales
  • Navigate>Open Resource
    • lo mismo que la anterior pero nos devuelve como resultado otros tipos de archivos además de las clases java
  • CTRL+SPACE
    • autocompleta
  • CTRL+1
    • sugiere para la correción de error de compilación
  • ALT+MAYS+CURSOR ARRIBA
    • seleccion incremental de código
  • CTRL+MAYS+F
    • Formatear código
  • Refactor>extract local variable
    • seleccionamos el código que representará la futura variable para extraerla/declararla antes
  • Sobreescribir metodos:
    • botón derecho>source>override implemet methods;

Eclipse permite generar distintos workspace para cada tipo de proyecto.
File-> Set workspace

Eclipse llama view a los distintos plugins integrados.

Eclipse permite generar una libreria de usuario que podemos usar en nuestros proyectos,
p.ej. mysql, loggin,...

Propiedades de un proyecto, permite importar las librerias especificas de usuario.
Atajo-> Alt+Enter
library-> User library -> la libreria creada
Se puede añadir , el codigo fuente del codigo,la documentacion a la libreria impiortada.
Eclipse con la tecla CTRL sigue al codigo del elemento.
F2 muestra el javadoc
Si tenemos seleccionada una clase, el botón link with editor nos manda al codigo de la clase en cuestión.
CTRL+SHIFT+F Formatea el texto

CTRL+1 Da posibles soluciones al error