ED04.- Optimización y documentación.

Orientaciones para la tutoría

En esta unidad trabajaremos conceptos de la programación actual, como son la refactorización y el control de versiones. El alumnado aprenderá algunas técnicas para conseguir un software de mejor calidad. Se introducirán algunos patrones para refactorizar el código fuente y algunos analizadores de código.

El trabajo en equipo es fundamental en el desarrollo de software, así como el control y gestión de todos los ficheros, documentos y versiones que se van generando. Conoceremos algunas de las herramientas que automatizan la gestión de las versiones y del acceso a los documentos de un proyecto.

Por último, veremos diferentes modos de documentación, documentación de código, documentación de clases y herramientas que gestionan de manera automatizada la generación de documentación.

Datos generales de la Unidad de Trabajo
Nombre completo del MP Entornos de desarrollo. Siglas MP ED
y título de la UT 04.- Optimización y documentación. Horas  
Índice o tabla de contenidos
  1. Refactorización.
    1. Concepto.
    2. Limitaciones.
    3. Patrones de refactorización más habituales.
    4. Refactorización en Eclipse
      1. Renombrar.
      2. Mover.
      3. Cambiar signatura del método.
      4. Extraer variable local.
      5. Extraer constante.
      6. Convertir variable local en atributo.
      7. Extraer método.
      8. Incorporar.
      9. Autoencapsular atributo.
    5. Analizadores de código.
      1. Instalación de PMD.
      2. Configuración.
  2. Control de versiones.
    1. Tipos de herramientas de control de versiones. 
    2. Estructura de herramientas de control de versiones.
      1. Repositorio.
      2. Gestión de versiones y entrega.
    3. Herramientas de control de versiones.
    4. Planificación de la gestión de configuraciones.
    5. Gestión del cambio.
  3. Documentación.
    1. Uso de comentarios.
    2. Documentación de clases.

Anexo I.- Repositorio CVS.

Anexo II.- Clientes de Control de Versiones en Netbeans.

Anexo III.- GIT.

  1. Terminología.
  2. Escenario de trabajo con GIT.
  3. Flujo de trabajo.
  4. Resumen de comandos GIT.
  5. Gitk.

Anexo IV.- Práctica de refactorización en Eclipse.

  1. Enunciado.
  2. Solución de la práctica.

Anexo V.- Práctica con GIT.

  1. Puesta en marcha.
  2. Trabajando en el repositorio local - consola.
  3. Trabajando en el repositorio local - Eclipse.
  4. Gestión de conflictos - 1.
  5. Gestión de conflictos - 2.
  6. Comandos Git, Status, Log.

Anexo VI.- Práctica con GitHub.

  1. Alta de cuenta en GitHub.
  2. Crear un repositorio.
  3. Carga de información en el repositorio HolaMundoGit de GitHub.
  4. Descarga del repositorio HolaMundoGit de GitHub a un repositorio local de consola.

Anexo VII.- Práctica: JavaDoc con Eclipse.

Anexo VIII.- Licencias de Recursos.

Objetivos
  • Conocer los patrones de refactorización más importantes, para conseguir un código fuente de mayor calidad. Aplicar las herramientas de refactorización incorporadas en los entornos de desarrollo.
  • Valorar la importación de la gestión de configuraciones y de versiones, en el proceso de desarrollo de desarrollo de software. Utilizar herramientas del mercado, para gestionar de forma automatizada la gestión de versiones.
  • Valorar la importancia de documentar el código y el diseño de una aplicación.
  • Utilizar herramientas automatizadas que generen la documentación del código, y de las clase implementadas. Utilizar el estilo de comentarios oportuno en cada situación.
Consejos y recomendaciones

En esta unidad, sería recomendable partir de aplicaciones previamente elaboradas por el alumnado, o suministradas por el profesor o profesora, para poder refactorizarla, utilizando los patrones básicos de refactorización introducidos en los contenidos. Para ello se pueden utilizar las herramientas que proporciona el IDE Netbeans. También se pueden utilizar algún analizador de código, en concreto se pueden realizar una actividad con PMD. En el punto de control de versiones, podemos utilizar CVS o subversion, ambos están presentes en NetBeans.


En cuanto al apartado de documentación, sería interesante que el alumnado sólo insertase los comentarios imprescindibles en el código y siguiera las sintaxis de JavaDoc, para generar a posteriori toda la documentación de forma automatizada.

Tarea Criterios de puntuación
  1. Crear el proyecto, con el paquete "cuentas" y poner ahí los dos ficheros java y cambiar el nombre de la variable "miCuenta" por "cuenta1". = 1 punto.
  2. Introduce el método operativa_cuenta, que englobe las sentencias de la clase Main que operan con el objeto cuenta1. = 1 punto.
  3. Encapsula los cuatro atributos de la clase CCuenta. = 1 punto.
  4. Añadir un nuevo parámetro al método operativa_cuenta, de nombre cantidad y de tipo float. = 1 punto.
  5. Configurar GIT para el proyecto. Crear un repositorio público en GitHub.= 1 punto.
  6. Realiza, al menos, una operación commit, comentando el resultado de la ejecución. = 1 punto.
  7. Mostrar el historial de versiones para el proyecto mediante un comando desde consola.= 1 punto.
  8. Inserta comentarios Javadoc en la clase Ccuenta. = 1 punto.
  9. Genera documentación Javadoc para todo el proyecto. = 1 punto.
  10. Comprueba que la documentación generada por Javadoc, abarca todos los métodos y atributos de la clase Ccuenta. = 1 punto.
Criterios de corrección

A la hora de corregir, se debe valorar la soltura en el uso del entorno de desarrollo, y que alumnado entienda la utilidad de la refactorización. También se debe valorar la gestión y uso del control de versiones, como parte fundamental en el desarrollo de software. Es también muy importante, que los alumnos y alumnas sepan documentar bien sus aplicaciones, sin abusar de comentarios inútiles, y que utilicen Javadoc.

Solución propuesta
La solución completa y correcta a la tarea propuesta, desarrollada por el autor o la autora de la misma, la podrás encontrar como enlace en la página de inicio de la unidad de trabajo, justo debajo del enlace a las orientaciones para la tutoría.
Trabajo de investigación

Se plantea dos posibles trabajos de investigación:

  1. Busca cuales son los IDE más usados actualmente (que sirvan para programar en Java). Elige uno de ellos y haz una guía de usuario indicando todas las opciones que ofrece la refactorización. Explica cada una de ellas. No puede ser ni NetBeans ni Eclipse.
  2. Haz un documento donde expliques algunas de las posibilidades que ofrece la plataforma GitHub. La que veas interesante. Súbelo al foro del aula virtual del módulo, para que pueda acceder a dicho documento tus compañeros. Estate pendiente de lo que ya han subido tus compañeros para que tu aportación no sea la misma que alguno de ellos.
 

Con lo cual,  esta unidad hay dos trabajos a entregar. Por ello, cada tarea supondrá un 50% de la nota en esta unidad en las tareas a entregar al profesor.

Temas de debate
  • ¿Es necesaria la refactorización? ¿Qué relación guarda con la eXtreme Programming (XP)?
  • ¿Qué utilidad tienen los analizadores de código?
  • ¿Es importante la gestión centralizada de un proyecto?
  • Importancia de la documentación. ¿Qué hay que documentar?