Want to create interactive content? It’s easy in Genially!

Get started free

ED - TEMA 3 - OPTIMIZACIÓN Y DOCUMENTACIÓN

Antonio Olivares

Created on July 9, 2024

Start designing with a free template

Discover more than 1500 professional designs like these:

Smart Presentation

Practical Presentation

Essential Presentation

Akihabara Presentation

Pastel Color Presentation

Visual Presentation

Relaxing Presentation

Transcript

UNIT 3

DOCUMENTATION AND OPTIMIZATION

DEVELOPMEN T ENVIRONMENTS

ANTONIO OLIVARES

JAVADOC

Javadoc es la utilidad de Java para extraer y generar documentación directamente del código en formato HTML.Para poder generar esta documentación, es necesario que escribamos comentarios de tipo Javadoc: /** */

¿dónde escribir los comentarios javadoc?

Hay que escribir comentarios Javadoc en los siguientes sitios:

antes de las clases

antes de los métodos

antes de los atributos

ESTRUCTURA DE UN JAVADOC

Todo comentario Javadoc está formado al menos por dos elementos:

  • Descripción: Describimos el elemento que estamos comentando (clase, atributo o método).
  • Bloque de tags: Hay una serie de etiquetas que nos ofrecen información extra. Se verán en detalle más adelante.

Además, dentro de los delimitadores /** */, podemos añadir etiquetas HTML, que van a ayudar también a resaltar elementos importantes de los comentarios o incluso incluir listas.

TAGS DISPONIBLES

GENERAR DOCUMENTACIÓN JAVADOC

  1. Para generar la documentación Javadoc de nuestro proyecto debemos irnos al menú superior de Eclipse y dentro del menú Project --> Generate Javadoc...
  2. En la ventana que se abre tendremos que configurar lo siguiente:
    1. Clases que queremos añadir en nuestra documentación.
    2. Desde qué visibilidad queremos que se muestre la documentación. Si seleccionamos private se verán todas las visibilidades.
    3. Carpeta donde queremos guardar la documentación. Podemos seleccionar la carpeta pulsando en Browse...

control de versiones

  • Un producto software se modifica infinitas veces durante su tiempo de vida.
  • Por lo tanto, se necesita una herramienta que permita llevar un control de los distintos cambios que pueda sufrir a lo largo de su desarrollo o vida útil.

Git es una de las herramientas de control de versiones más utilizadas. Entre sus características se encuentran:

  • Es un SCV (Sistema de Control de Versiones) gratuito y de código abierto.
  • Puede utilizarse para proyectos pequeños y grandes.
  • Es fácil de aprender y tiene un buen rendimiento.

En la mayoría de productos software, muchas personas intervienen en su desarrollo y, por lo tanto, es imprescindible que el control de versiones no se haga de forma manual, puesto que pueden cometerse muchos errores y el coste sería muy alto.

tipos de colaboración en un sCv

Generalmente se colabora de dos formas en un Sistema de Control de Versiones (SCV):

de forma colaborativa

en exclusiva

  • Muchas veces, un usuario es responsable de una parte o módulo de un desarrollo software.
  • Cuando está modificándolo, notifica al repositorio que esa parte está pendiente de modificación y el mismo respositorio bloquea esa parte para que no se vea modificada.
  • Cuando finaliza el trabajo, lo comunica al repositorio y sube el software modificado. El repositorio desbloquea esa parte y queda disponible para los demás usuarios.
  • Cada usuario trabaja con su cuenta en su copia local y, cuando termina los cambios, los sube al repositorio común.
  • Los problemas más comunes al trabajar de esta forma es que pueden aparecer confictos con las distintas modificaciones.
  • La coordinación en este tipo de trabajo es fundamental para evitar dichos problemas.

vs

FLUJOS DE TRABAJO

La forma en la que se trabaja en un sistema de control de versiones se llama workflow o flujo de trabajo.

CON DICTADOR Y TENIENTES

CON GESTOR DE INTEGRACIÓN

CENTRALIZADO

  • Suele utilizarse en SCV distribuidos.
  • Los desarrolladores actualizan sus repositorios públicos.
  • Un gestor de integración es una persona del equipo de desarrollo que actualiza los trabajos en el repositorio común.
  • Suele utilizarse un servidor centralizado.
  • Estos sistemas funcionan de forma exclusiva: si alguien está modificando un elemento, ningún otro desarrollador puede realizar actualizaciones en este.
  • Solamente en proyectos masivos.
  • Evolución del modelo anterior.
  • Existen varias personas supervisoras de varias partes del proyecto llamadas tenientes.
  • Hay una persona llamada dictador que puede actualizar los cambios que sus tenientes le envían.
  • Todos los desarrolladores tienen acceso al repositorio para poder clonarlo y crearse su propia copia.

+ info

+ info

+ info

DARSE DE ALTA EN GITHUB

Para poder subir nuestro código a un repositorio podemos usar GitHub. Para ello, previamente nos tenemos que registrar en este enlace. Cuando te pregunte por el número de miembros con los que vas a trabajar elige de 2 a 5. De las opciones que te dan a elegir marca Collaborated coding. Cuando te salgan las opciones de pago, abajo del todo pincha en Continue for free (aparece casi transparente al final del modo gratuito).

CREAR REPOSITORIO EN GITHUB

Antes de poder subir nuestro código, primero tenemos que crear un repositorio en GitHub, que es donde se subirá el código de nuestro proyecto:

Recuerda copiar la URL del repositorio que acabas de crear, porque es el que usarás en el entorno de desarrollo:

SUBIR PROYECTOS A GITHUB desde eclipse

Para subir proyectos des de Eclipse, pincharemos con el botón derecho del ratón sobre el proyecto y seleccionaremos Team --> Share Project...

A continuación creamos el repositorio local. Debes elegir en qué carpeta quieres que se cree el repositorio. Puede ser en la propia carpeta del proyecto o en otra ubicación.

Comandos GIT

add: Sube el código al espacio de trabajocommit: Sube los cambios del espacio de trabajo al epositorio local push: sube el código desde el repositorio local hasta el repositorio remoto fetch: Descargas el código del repositorio remoto al local pull: Descargas el código del repositorio remoto a tu workspace

2XX

COMMIT desde eclipse

Una vez creado el repositorio local podremos hacer commit de nuestro código en ese proyecto. Para ello pulsaremos con el botón derecho sobre el proyecto --> Team --> Commit...

Nos aparecerá una nueva pestaña en la parte inferior de la ventana llamada Git Staging. En esta ventana moveremos los ficheros de la parte superior izquierda a la inferior izquierda mediante el botón con dos más (+) verdes. Además debemos poner un comentario explicando qué estamos commiteando. Una vez todo esto esté hecho, pulsaremos en el botón de Commit.

PUSH desde eclipse

Una vez hemos hecho Commit en nuestro repositorio local, ya podemos subir nuestros cambios al repositorio de GitHub. Para lo cual haremos un Push Head... en la misma ventana de Git Staging que nos salió durante el Commit:

A continuación aparecerá una ventana donde configuraremos la URI de nuestro repositorio en GitHub (URL que se generó al crear el repositorio).Los siguientes campos importantes son: User: el mismo con el que te diste de alta en GitHub. Password: En este caso no es la contraseña con la que te registraste, sino un token que veremos a continuación cómo se genera. Una vez todo esté relleno es simplemente seguir todos los pasos hacia delante.

GENERAR TOKEN

Cuando en el Eclipse nos pide una contraseña para poder conectarnos al repositorio de GitHub no es la contraseña con la que nos dimos de alta en GitHub, sino que hay que generar un token en GitHub.Para ello, seguiremos los pasos que se señalan en las imágenes.

PULL desde eclipse

Va a haber muchas ocasiones en las que queremos trabajar con un proyecto que ya tenemos subido en GitHub. En estos casos tendremos que hacer un Pull. Para ello, desde Eclipse seleccionamos File --> Import... --> Projects from Git (with smart import) --> Clone URI e indicamos la URL del repositorio ya existente en GitHub:

NUEVA RAMA desde eclipse

Si queremos crear una nueva rama desde Eclipse tenemos que pulsar con el botón derecho del ratón sobre el proyecto y seleccionar Team -> Switch To -> New Branch...En la siguiente pantalla se indica el nombre de la rama a crear. Por defecto viene marcado el checkout a la nueva rama.

NUEVA RAMA desde eclipse

La próxima vez que vayamos a hacer un commit, se ve que entre corchetes aparece el nombre de la rama sobre la que voy a hacer el commit. En el momento de hacer Push también se muestra que la rama sobre la que se hace Push es rama1.

NUEVA RAMA desde eclipse

Si nos vamos a GitHub se puede ver que se ha creado una nueva rama, y podemos movernos de una rama a otra para ver los cambios en una y en otra:

MERGE desde eclipse

Cuando tenemos varias ramas creadas, llegará un punto en el que queramos realizar un merge de las mismas para así unir todo el código. Para ello, hay que llevar a cabo los siguientes pasos:

  1. Nos movemos a la rama principal: Team -> Switch To -> master
  2. Pinchamos con el botón derecho sobre el proyecto y seleccionamos Team -> Merge.
  3. Seleccionamos rama1 o la rama con la que queremos hacer el merge.
  4. Para que se reflejen los cambios en el repositorio remoto hay que hacer un "Push branch master".

PATRONES DE REFACTORIZACIÓN EN eclipse

El concepto de refactorización hace referencia a la realización de modificaciones en el código con el objetivo de mejorar su estructura interna, sin alterar su comportamiento externo. Eclipse ofrece una serie de patrones de refactorización que nos permiten realizar estas mejoras en el código de forma "casi automática". Para hacer uso de estos patrones, seleccionamos el elemento a mejorar, pulsamos botón derecho del ratón y seleccionamos la opción Refactor. Dependiendo del tipo de elemento que hayamos seleccionado (clase, variable, texto, método, etc.) el menú que se muestra dentro del Refactor varía:

RENAME

Este patrón de Eclipse permite cambiar el nombre de una clase, de un atributo, de un método, de una variable, etc., de forma que se renombran todas las referencias a ese elemento a lo largo del programa.

MOVE

Mueve una clase clase de un paquete a otro, procediéndose a cambiar todas las referencias a esa clase.

EXTRACT CONSTANT

Convierte un número o cadena literal en una constante. Al hacer la refactorización se mostrará dónde se van a producir los cambios y se puede visualizar el estado antes y después de refactorización. Tras la misma, todos los usos del literal se sustituyen por esa constante. El objetivo es modificar el valor del literal en un único lugar.

EXTRACT LOCAL VARIABLE

Sustituye la expresión seleccionada por una nueva variable, de manera que cualquier referencia a esa expresión es sustituida por dicha variable en ese ámbito. Esta modificación solo afecta al método en el que se realiza la refactorización.

CONVERT LOCAL VARIABLE TO FIELD

Convierte una variable local de un método en un atributo privado de la clase. Tras la refactorización, todos los usos de la variable local se sustituyen por ese atributo:

EXTRACT METHOD

Convierte un conjunto de instrucciones en un método. Eclipse determinará de manera automática los parámetros y el valor de retorno del método. Es útil para acortar métodos excesivamente largos o para extraer porciones de código repetidas en varias partes de una aplicación.

CHANGE METHOD SIGNATURE

Permite cambiar la firma o cabecera de un método, esto es, su nombre, nombre de sus parámetros, los tipos de los parámetros o el tipo de dato que devuelve. Se actualizarán de manera automática todas las llamadas al método dentro del proyecto.

INLINE

Permite escribir en una única línea de código la referencia a una variable o a un método y el uso de dicha variable o método:

ANALIZADORES DE CÓDIGO

CODE ANALYZERS

  • El análisis estático de código, es un proceso que tiene como objetivo, evaluar el software, sin llegar a ejecutarlo.
  • Esta técnica se va a aplicar directamente sobre el código fuente, para poder obtener información que nos permita mejorar la base de código, pero sin que se modifique la semántica.
  • Los analizadores de código, son las herramientas encargadas de realizar esta labor. El analizador estático de código recibirá el código fuente de nuestro programa, lo procesará intentando averiguar la funcionalidad del mismo, y nos dará sugerencias, o nos mostrará posibles mejoras.
  • Los analizadores de código incluyen analizadores léxicos y sintácticos que procesan el código fuente y de un conjunto de reglas que se deben aplicar sobre determinadas estructuras. Si el analizador considera que nuestro código fuente tiene una estructura mejorable, nos lo indicará y también nos comunicará la mejora a realizar.

ANALIZADORES DE CÓDIGO

CODE ANALYZERS

  • Las principales funciones de los analizadores es encontrar partes del código que puedan:
    • Reducir el rendimiento
    • Provocar errores en el software
    • Tener una excesiva complejidad
    • Complicar el flujo de datos
    • Crear problemas de seguridad.
  • El análisis puede ser automático o manual. El automático, lo va a realizar un programa, que puede formar parte de la funcionalidad de un entorno de desarrollo, o manual, cuando es una persona quien realiza el análisis.
  • Tomando como base el lenguaje de programación Java, nos encontramos en el mercado un conjunto de analizadores disponibles:
    • PMD. Esta herramienta basa su funcionamiento en detectar patrones, que son posibles errores en tiempo de ejecución, código que no se puede ejecutar nunca porque no se puede llegar a él, código que puede ser optimizado, expresiones lógicas que pueden ser simplificadas, malos usos del lenguaje, etc.
    • CPD. Forma parte del PMD. Su función es encontrar código duplicado.

USO DE ANALIZADORES DE CÓDIGO

  • Los analizadores de código estático, se suelen integrar en los Entornos de Desarrollo, aunque en algunos casos, hay que instalarlos como plug‐in, tras instalar el IDE.
  • En el caso de Eclipse, tenemos que instalar el plug-in. Para ello, nos iremos a Help > Eclipse Marketplace… y buscamos “PMD”.

ANALIZAR NUESTRO CÓDIGO

Una vez que tenemos desarrollado nuestro código, si queremos analizarlo con PMD, y obtener el informe del análisis, pulsamos el botón derecho del ratón sobre el proyecto a analizar y seleccionamos PMD > Check Code.A continuación, se mostrarán unas flechas sobre nuestro código con sugerencias sobre el mismo en la parte inferior izquierda:

MODIFICAR LAS REGLAS DE PMD (i)

PMD define una serie de reglas por defecto. En la mayoría de las ocasiones no queremos que nos analice todas las reglas, sólo algunas que son las que realmente nos interesa tener en cuenta en nuestro código.Para desactivar las reglas para un proyecto concreto, pinchamos con el botón derecho del ratón sobre el proyecto, seleccionamos Properties --> PMD

MODIFICAR LAS REGLAS DE PMD (II)

Una vez en la pantalla de configuración del PMD, podemos desactivar aquellas reglas que no nos interesen tener en cuenta. Por ejemplo, si queremos desactivar la regla DataflowAnomalyAnalysis, la buscamos en la lista de reglas y desactivamos el check: