ED DAM. Tema4
ED DAM. Tema4
id=3085&dopt=1
Optimización y documentación.
Caso práctico
Situación
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 1/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
1.- Refactorización.
Caso práctico
Gran parte de las clases, métodos y módulos
que forman parte de la aplicación de Gestión
Hotelera han sido implementados, surge ahora
una pregunta. ¿Podemos mejorar la estructura
del código y que sea de mayor calidad, sin que
cambie su comportamiento? ¿Cómo hacerlo?
¿Qué patrones hay que seguir?
Cuando se refactoriza se está mejorando el diseño del código después de haberlo escrito.
Podemos partir de un mal diseño y, aplicando la refactorización, llegaremos a un código
bien diseñado. Cada paso es simple, por ejemplo mover una propiedad desde una clase a
otra, convertir determinado código en un nuevo método, etc. La acumulación de todos estos
pequeños cambios pueden mejorar de forma ostensible el diseño.
Refactorización en Netbeans.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 2/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
1.1.- Concepto.
Caso práctico
Juan va a empezar a refactorizar parte del
código que ha generado. Ana no sabe que es
refactorizar, así que Juan le va a explicar las
bases del proceso de refactorización.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 3/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Reflexiona
Con la refactorización de código, estamos modificando un código que
funciona correctamente, ¿merece la pena el esfuerzo de refactorizar un
código ya implementado?
Mostrar retroalimentación
Merece la pena, por que el código que se consigue suele ser más fácil de
entender por otros programadores y programadoras, y por tanto, más
fácil de mantener. Además, en muchos casos, se mejora la eficiencia del
programa.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 4/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
1.2.- Limitaciones.
Caso práctico
Un área problemática de la refactorización son las bases de datos. Una base de datos
presenta muchas dificultades para poder ser modificada, dado la gran cantidad de
interdependencias que soporta. Cualquier modificación que se requiera de las bases de
datos, incluyendo modificación de esquema y migración de datos, puede ser una tarea muy
costosa. Es por ello que la refactorización de una aplicación asociada a una base de datos,
siempre será limitada, ya que la aplicación dependerá del diseño de la base de datos.
Hay determinados cambios en el diseño que son difíciles de refactorizar. Es muy difícil
refactorizar cuando hay un error de diseño o no es recomendable refactorizar, cuando la
estructura a modificar es de vital importancia en el diseño de la aplicación.
Hay ocasiones en las que no debería refactorizar en absoluto. Nos podemos encontrar con
un código que, aunque se puede refactorizar, sería más fácil reescribirlo desde el principio.
Si un código no funciona, no se refactoriza, se reescribe.
Autoevaluación
La refactorización:
Se utiliza como técnica complementaria de realización de pruebas.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 5/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Solución
1. Incorrecto
2. Incorrecto
3. Opción correcta
4. Incorrecto
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 6/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Caso práctico
A pesar de la poca documentación y lo
novedoso de la técnica, Juan le enseña a Ana
algunos de los patrones más habituales de
refactorización, que vienen ya integrados en la
mayoría de los entornos de desarrollos más
extendidos en el mercado.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 7/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Caso práctico
María se va a centrar el el uso de analizadores
de código con la ayuda de Carlos. Carlos no
sabe lo que son los analizadores de código ni
para qué sirven.
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.
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.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 9/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
1.4.1.- Uso.
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 Netbeans, vamos a instalar el plug-in para easyPMD. Para ello lo descargamos de
la página de plugins de Oracle. Se descomprime el plug-in para Netbeans y se añade a los
complementos de nuestro entorno de desarrollo. Para ello podemos utilizar el siguiente
enlace:
Descarga de EasyPMD.
Una vez que tenemos desarrollado nuestro código, si queremos analizarlo con EasyPMD, y
obtener el informe del análisis, pulsamos el botón derecho del ratón sobre el directorio que
contiene los ficheros de código, en la vista de proyectos y elegimos: Herramientas -
Ejecutar PMD.
El informe PMD, nos permite navegar por el fichero de clases y en la línea donde se ha
detectado el problema. En el número de línea, veremos una marca PMD. Si se posiciona el
ratón encima de ella, veremos un tooltip con la descripción del error.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 10/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
1.4.2.- Configuración.
La configuración de los analizadores de código, nos va a permitir definir nuestras propias
reglas, añadiéndolas a las que el analizador nos proporciona por defecto.
En la pestaña Rulestet podemos ver las reglas existentes y añadir nuevas reglas Add
standard, y personalizar reglas Add custom.
Si seleccionamos el nombre de una regla, podemos ver una descripción del problema y un
ejemplo de aplicación.
Si lo que queremos es introducir nuestras propias reglas, hacemos clic sobre Manage
Rulesets. Se nos mostrará una nuevo formulario donde podemos importar un fichero
XML o JAR con reglas.
Para crear ficheros XML con conjuntos de reglas, podemos obtener información en la
siguiente página web.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 11/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Caso práctico
Juan ayudado por Ana, se ha dedicado a
refactorizar algunas partes del código que
había diseñado. Al modificar el código
diseñado, se encuentra en al necesidad de
realizar pruebas de nuevo.
Con el Desarrollo Guiado por Pruebas, la propuesta que se hace es totalmente diferente. El
programador realiza las pruebas de unidad en su propio código, e implementa esas pruebas
antes de escribir el código a ser probado.
Cuando un programador recibe el requerimiento para implementar una parte del sistema,
empieza por pensar el tipo de pruebas que va a tener que pasar la unidad que debe
elaborar, para que sea correcta. Cuando ya tiene claro la prueba que debe de pasar, pasa a
programar las pruebas que debe pasar el código que debe de programar, no la unidad en
sí. Cuando se han implementado las pruebas, se comienza a implementar la unidad, con el
objeto de poder pasar las pruebas que diseñó previamente.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 12/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Para realizar la refactorización siguiendo TDD, se refactoriza el código tan pronto como
pasa las pruebas para eliminar la redundancia y hacerlo más claro. Existe el riesgo de que
se cometan errores durante la tarea de refactorización, que se traduzcan en cambios de
funcionalidad y, en definitiva, en que la unidad deje de pasar las pruebas. Tratándose de
reescrituras puramente sintácticas, no es necesario correr ese riesgo: las decisiones deben
ser tomadas por un humano, pero los detalles pueden quedar a cargo de un programa que
los trate automáticamente.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 13/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Caso práctico
Ana ya conoce los principios y patrones básico
de refactorización, ahora Juan le va a enseñar
las herramientas de Netbeans para refactorizar
de forma automática y sencilla, código Java.
A continuación, vamos a usar los patrones más comunes de refactorización, usando las
herramientas de ayuda del entorno.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 14/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
alguna referencias se nos advertirá que habrá errores en el código una vez se haya
borrado el elemento.
Autoevaluación
¿Cuál no es un patrón de refactorización?
Eliminar parámetros de un método.
Renombrado.
Sustitución de un bloque de sentencias por un método.
Mover clase.
Incorrecta.
No es correcta.
No es cierto.
Solución
1. Opción correcta
2. Incorrecto
3. Incorrecto
4. Incorrecto
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 15/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Caso práctico
Juan y María están implementando la mayor
parte de la aplicación. Continuamente está
modificando el código generado, bien para
mejorar algunos aspecto, o por qué han
refactorizado. Hay diferentes versiones de una
misma clase, de un mismo método. ¿Qué
ocurre si se borra accidentalmente algún
fichero? ¿Qué pasa si María modifica una
clase que necesita Juan?
Una versión, desde el punto de vista de la evolución, se define como la forma particular de
un objeto en un instante o contexto dado. Se denomina revisión, cuando se refiere a la
evolución en el tiempo. Pueden coexistir varias versiones alternativas en un instante dado y
hay que disponer de un método, para designar las diferentes versiones de manera
sistemática u organizada.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 16/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
En los entornos de desarrollo modernos, los sistemas de control de versiones son una parte
fundamental, que van a permitir construir técnicas más sofisticadas como la Integración
Continua.
En los proyectos Java, existen dos sistemas de control de versiones de código abierto, CVS
y Subversion. La herramienta CVS es una herramienta de código abierto que es usada por
gran cantidad de organizaciones. Subversion es el sucesor natural de CVS, ya que se
adapta mejor que CVS a las modernas prácticas de desarrollo de software.
Netbeans, cuenta con soporte nativo para Git. Puedes encontrar más
información en la documentación oficial de Netbeans (inglés):
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 17/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Caso práctico
Para Ana el concepto de control de versiones
le resulta muy abstracto. Juan va a intentar
explicarle como funciona el mecanismo de
control de versiones, tomando como ejemplo
una herramienta que él conoce: CVS.
CVS utiliza una arquitectura cliente-servidor: un servidor guarda la versión actual del
proyecto y su historia, y los clientes conectan al servidor para sacar una copia completa del
proyecto, trabajar en esa copia y entonces ingresar sus cambios. Típicamente, cliente y
servidor conectan utilizando Internet, pero cliente y servidor pueden estar en la misma
máquina. El servidor normalmente utiliza un sistema operativo similar a Unix, mientras que
los clientes CVS pueden funcionar en cualquier de los sistemas operativos más difundidos.
Los clientes pueden también comparar diferentes versiones de ficheros, solicitar una
historia completa de los cambios, o sacar una "foto" histórica del proyecto tal como se
encontraba en una fecha determinada o en un número de revisión determinado. Muchos
proyectos de código abierto permiten el "acceso de lectura anónimo", significando que los
clientes pueden sacar y comparar versiones sin necesidad de teclear una contraseña;
solamente el ingreso de cambios requiere una contraseña en estos escenarios. Los clientes
también pueden utilizar el comando de actualización con el fin de tener sus copias al día
con la última versión que se encuentra en el servidor. Esto elimina la necesidad de repetir
las descargas del proyecto completo.
checkout: obtiene un copia del trabajo para poder trabajar con ella.
Update: actualiza la copia con cambios recientes en el repositorio.
Commit: almacena la copia modificada en el repositorio.
Abort: abandona los cambios en la copia de trabajo.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 19/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
2.2.- Repositorio.
Caso práctico
Juan le ha explicado a Ana la los fundamentos
del control de versiones, pero quiere
profundizar más en el concepto de repositorio,
ya que para él es la parte fundamental del
control de versiones.
Si tenemos un proyecto CVS versionado, con el que hemos trabajado, podemos abrirlo en
el IDE y podremos acceder a las características de versionado. El IDE escanea nuestro
proyectos abiertos y si contienen directorios CVS, el estado del archivo y la ayuda-
contextual se activan automáticamente para los proyectos de versiones CVS. En el
siguiente enlace podemos ver acceder a un archivo que amplia la información sobre el
repositorio CVS.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 20/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Autoevaluación
¿Qué afirmación sobre control de versiones es correcta?
Solo puede existir una única versión de una clase.
El almacenamiento de versiones es local a cada máquina.
El repositorio centraliza el almacenamiento de los datos.
Solución
1. Incorrecto
2. Incorrecto
3. Opción correcta
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 21/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Caso práctico
María quiere que Carlos conozca las
herramientas de control de versiones que
integra Netbeans, ya que es el Entorno que
utilizan para su desarrollo. Dado que estamos
utilizando un Entorno de Desarrollo Integrado,
Carlos debe conocer las herramientas que
incorpora Netbeans.
SourceSafe: es una herramienta que forma parte del entorno de desarrollo Microsoft
Visual Studio.
Visual Studio Team Foundation Server: es el sustituto de Source Safe. Es un
productor que ofrece control de código fuente, recolección de datos, informes y
seguimiento de proyectos, y está destinado a proyectos de colaboración de desarrollo
de software.
Darcs: es un sistema de gestión de versiones distribuido. Algunas de sus
características son: la posibilidad de hacer commits locales (sin conexión), cada
repositorio es una rama en sí misma, independencia de un servidor central, posibilidad
de renombrar ficheros, varios métodos de acceso como local, ssh, http y ftp,
etc.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 22/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Autoevaluación
¿Qué herramienta no es una herramienta de Control de Versiones?
Subversion.
CVS.
Mercurial.
PMD.
Incorrecta.
No es cierto.
No es correcta.
Solución
1. Incorrecto
2. Incorrecto
3. Incorrecto
4. Opción correcta
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 23/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Caso práctico
El equipo de desarrollo de BK Programación
decide reunirse para planificar la gestión de
configuraciones, ya que la aplicación de
Gestión Hotelera es amplia y compleja, y
continuamente se están diseñando nuevos
módulos, clases o métodos.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 24/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 25/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Caso práctico
Para gestionar el control de versiones de forma
centralizada, Ada va a supervisar los cambios de versión
que el equipo de Juan y de María están efectuando de
forma independiente. Ada va a realizar una gestión del
cambio centralizada y organizada.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 26/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Autoevaluación
¿Cuál de las siguientes no es una tarea básica de la Gestión de
Configuraciones del Software?
Control de cambios.
Generación de informes.
Auditorías de configuraciones.
Gestión del repositorio.
Solución
1. Incorrecto
2. Incorrecto
3. Incorrecto
4. Opción correcta
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 27/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Caso práctico
María ha desarrollado varias versiones del
módulo de reservas de la aplicación de Gestión
Hotelera. Le explica a Carlos como ha sido la
evolución de cada versión del módulo, desde la
primera versión, hasta la versión actual, que
ella cree definitiva.
Grafo de evolución simple: las revisiones sucesivas de un componente dan lugar a una
simple secuencia lineal. Esta evolución no presenta problemas en la organización del
repositorio y las versiones se designan mediante números correlativos.
Variantes: en este caso, existen varias versiones del componente. El grafo ya no es una
secuencia lineal, si no que adopta la forma de un árbol. La numeración de las versiones
requerirá dos niveles. El primer número designa la variante (línea de evolución) y el
segundo la versión particular (revisión) a lo largo de dicha variante.
La terminología que se usa para referirse a los elementos del grafo son:
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 28/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
La planificación de la entrega se ocupa de cuándo emitir una versión del sistema como una
entrega. La entrega está compuesta por el conjunto de programas ejecutables, los archivos
de configuración que definan como se configura la entrega para una instalación particular,
los archivos de datos que se necesitan para el funcionamiento del sistema, un programa de
instalación para instalar el sistema en el hardware de destino, documentación electrónica y
en papel, y, el embalaje y publicidad asociados, diseñados para esta entrega Actualmente
los sistemas se entregan en discos ópticos (CD o DVD) o como archivos de instalación
descargables desde la red.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 29/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Caso práctico
Ada decide utilizar herramientas CASE, de código
abierto, para la gestión de configuraciones. Decide utilizar
Bugzilla, ya que puede integrarse con Netbeans.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 30/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Autoevaluación
La Gestión de Configuraciones:
Verifica la evolución de la implementación de una clase.
Es una tarea que se puede gestionar con herramientas de Control de
Versiones.
Es un conjunto de actividades desarrolladas para gestionar los cambios
a lo largo del ciclo de vida del software.
Incorrecta.
No es correcta.
Muy bien.
Solución
1. Incorrecto
2. Incorrecto
3. Opción correcta
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 31/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Caso práctico
Juan le va a enseñar a Ana los clientes de
control de versiones que hay en Netbeans, para
que aprenda a utilizarlos e integrarlos en los
proyectos que realice de ahora en adelante.
Los entorno de desarrollo Open-Source, como Eclipse y Netbeans, los integran de manera
directa, o bien instalándolos como plug-in (complementos). Los clientes de control de
versiones más destacados son:
CVS.
Subversion.
Mercurial.
Debes conocer
Debes leer el siguiente documento para conocer las herramientas de control
de versiones de Netbeans.
También debes visitar el siguiente enlace donde se puede ver la guía de uso
de subversión en Netbeans. Está en inglés pero es conveniente que le eches
un vistazo para conocer cómo funciona Subversion.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 32/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Autoevaluación
¿Qué cliente de Gestión de Versiones no incorpora Netbeans?
VS Team Foundation.
CVS.
Mercurial.
Muy bien. Visual Studio Team Foundation, está diseñada para el trabajo
colaborativo y control de versiones en Microsoft Visual Studio.
No es correcta.
Incorrecta.
Solución
1. Opción correcta
2. Incorrecto
3. Incorrecto
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 33/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
3.- Documentación.
Caso práctico
Juan y María saben de la importancia de tener
documentado el código y todo el proceso de
desarrollo de software. Al mismo tiempo que
codifican y refactorizan, dejan constancia
documental de lo que van haciendo. Como
están desarrollando con Netbeans, y con el
objetivo de facilitar su trabajo de documentación,
van a utilizar JavaDoc. Ana y Antonio
consiguen entender el funcionamiento de la aplicación, y la función de cada
método, gracias a los comentarios que insertan en el código los dos
programadores principales.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 35/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Caso práctico
Carlos está aprendiendo muchas cosas con
María. Sin embargo hay algunos métodos y
clases que ha implementado María, y que no
logra entender. María le comenta que va a
incluir comentarios en su código, y le va a
enseñar la forma correcta de hacerlo.
Otro tipo de comentarios que se utilizan en Java, son los que se utilizan para explicar qué
hace un código, se denominan comentarios JavaDoc y se escriben empezando por /** y
terminando con */ , estos comentarios pueden ocupar varias líneas. Este tipo de
comentarios tienen que seguir una estructura prefijada.
Los comentarios son obligatorios con JavaDoc, y se deben incorporar al principio de cada
clase, al principio de cada método y al principio de cada variable de clase. No es obligatorio,
pero en muchas situaciones es conveniente, poner los comentarios al principio de un
fragmento de código que no resulta lo suficientemente claro, a la largo de bucles, o si hay
alguna línea de código que no resulta evidente y pueda llevarnos a confusión.
Hay que tener en cuenta, que si el código es modificado, también se deberán modificar los
comentarios.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 36/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
3.2.- Alternativas.
Caso práctico
Juan le explica a María, que para documentar el
software, existen diferentes formas de hacerlo y
distintas herramientas en el mercado que
automatizan la tarea de documentación.
La primera alternativa que surge para documentar código, son los comentarios. Con los
comentarios, documentamos la funcionalidad de una línea de código, de un método o el
comportamiento de una determinada clase.
Autoevaluación
Un comentario en formato JavaDoc.
Utiliza los caracteres //
Comienzan con /* y termina por */
Comienza por /** y terminan por */
No es correcta.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 37/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Solución
1. Incorrecto
2. Incorrecto
3. Opción correcta
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 38/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Caso práctico
Juan va a utilizar JavaDoc para documentar las
clases que ha desarrollado. Ana se da cuenta
de la ayuda tan importante que ofrece, tanto
para el futuro mantenimiento de la aplicación
como para entender su funcionamiento, tener
documentadas las clases.
Con el uso de los entornos de desarrollo, las etiquetas se añaden de forma automática,
estableciendo el @author y la @version de la clase de forma transparente al programador-
programadora. También se suele añadir la etiqueta @see, que se utiliza para referenciar a
otras clases y métodos.
@param: seguido del nombre, se usa para indicar cada uno de los parámetros que
tienen el constructor o método.
@return: si el método no es void, se indica lo que devuelve.
@exception: se indica el nombre de la excepción, especificando cuales pueden
lanzarse.
@throws: se indica el nombre de la excepción, especificando las excepciones que
pueden lanzarse.
Los campos de una clase, también pueden incluir comentarios, aunque no existen etiquetas
obligatorias en JavaDoc.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 39/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
3.4.- Herramientas.
Caso práctico
Para documentar el código, el equipo de
desarrollo de BK Programación, ha decidido
utilizar JavaDoc, por lo que todos los
componentes del equipo de desarrollo, debe
familiarizarse con la herramienta.
Los comentarios JavaDoc deben empezar por /** y terminar por */.
Los comentarios pueden ser a nivel de clase, a nivel de variable y a nivel de método.
La documentación se genera para métodos public y protected.
Se puede usar tag para documentar diferentes aspectos determinados del código,
como parámetros.
Tipo de
Formato Descripción
tag
Tipo de
Formato Descripción
tag
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 41/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 42/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Si queremos conectar con un repositorio remoto desde el IDE, entonces chequearemos los
ficheros e inmediatamente comenzará a trabajar con ellos. Se hace de la siguiente forma:
Contraseña de
pserver :pserser:username@hotsname:/repository_path
servidor remoto.
Acceso usando
Remote Shell
ext :ext:username@hostname:/repository_path
(RSH) o Secure
Shell (SSH).
:local:/repository_path
Acceso a un (requiere un <acronym lang="en" title="Concurrent
local
repositorio local. Versions System.">CVS</acronym> externo
ejecutable)
Acceso a un
:fork:/repository_path
repositorio local
(requiere un <acronym lang="en" title="Concurrent
fork usando un
Versions System.">CVS</acronym> externo
protocolo
ejecutable)
remoto.
3. En el panel de Módulos a extraer del asistente, especificamos el módulo que
queremos extraer, en el campo Módulo. Si no sabemos el nombre del módulo,
podemos extraerlo haciendo clic en el botón Examinar. Si lo que queremos es
conectar a un repositorio remoto desde el IDE, debemos extraer los ficheros e
inmediatamente trabajar con ellos, se hace de la siguiente forma:
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 43/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
4. En el área de texto Importar mensaje, pondremos una descripción del proyecto que
estamos importando.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 44/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 45/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
CVS
En el caso del IDE NetBeans, es importante su uso para mantener de forma segura, tanto
los programas como las pruebas, en un repositorio de código. La configuración
de CVS puede suponer unos cinco minutos, que dentro del tiempo de desarrollo de una
aplicación, es un tiempo despreciable. Sin embargo, el uso de CVS en NetBeans, nos va a
gestionar las distintas versiones del código que se desarrollen y nos va a evitar pérdidas de
datos y de código.
1. Desde la línea de comando CVS, donde se escribirán los comandos CVS y de esta
forma se interactuará con el repositorio.
2. Si CVS está incorporado a NetBeans, dispondremos de un conjunto de clases Java
que imitan los comandos clásicos de CVS.
3. Con fórmulas de línea de comandos CVS genéricas basadas en plantillas
proporcionadas por el usuario, que son pasadas al shell del sistema operativo.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 46/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
En los casos anteriores, donde se utilizan plantillas, las plantillas están parametrizadas, con
la lógica NetBeans, que sustituye los operadores CVS por variables. Esto quiere decir,
que NetBeans se va a encargar de decidir el nombre de los ficheros, que datos se importan
o exportan del repositorio, sin que el usuario deba conocer toda la lógica interna de CVS.
Nos evitamos tener que conocer todos los parámetros y opciones necesarias para realizar
las operaciones con CVS.
SUBVERSION
Subversion puede acceder al repositorio a través de redes. Esto implica que varias
personas pueden acceder, modificar y administrar el mismo conjunto de datos, con lo que
se va a fomentar la colaboración. Se puede progresar más rápidamente sin un único
conducto por el cual deban pasar todas las modificaciones. Y puesto que el trabajo se
encuentra bajo el control de versiones, no se compromete la calidad del software que se
desarrolla.
MERCURIAL
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 47/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Recurso (1) Datos del recurso (1) Recurso (2) Datos del recurso (2)
Autoría: Oracle
Autoría: Gnome.org.
Corporation.
Licencia: GNU.
Licencia: Copyright cita.
Procedencia: Captura de
Procedencia: Captura de
pantalla de gnome.org.
pantalla de Netbeans.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 48/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Autoría: Oracle
Corporation.
Licencia: Copyright cita.
Procedencia: Captura de
pantalla de Netbeans.
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 49/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
Historial de actualizaciones
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 50/51
14/5/23, 20:11 https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1
https://educacionadistancia.juntadeandalucia.es/formacionprofesional/blocks/recopila/recopila.php?id=3085&dopt=1 51/51