UD4 Entornos PDF
UD4 Entornos PDF
UD4 Entornos PDF
DOCUMENTACIÓN
2
RESUMEN INTRODUCTORIO
INTRODUCCIÓN
La refactorización es un concepto nuevo que se ha introducido en la
terminología del mundo del desarrollo software apoyado por las
metodologías ágiles. Como tal, es un proceso que va a permitir a los
programadores mejorar sus funciones y automizar sus procesos
permitiendo, en este sentido, obtener ventajas en la realización de sus
tareas diarias. Además, como se ha estudiado en las unidades anteriores,
llevar una buena gestión de la documentación sobre todo lo relacionado con
el desarrollo de software es crucial para el ciclo de vida del proyecto. Por
todo ello es significativo para el alumnado adentrarse en estos nuevos
conceptos y tomar consciencia de la importancia que conllevan.
CASO INTRODUCTORIO
El equipo de desarrollo de Juan ha establecido un nuevo patrón de trabajo.
Todos los miembros del equipo deben tener disponible toda la
documentación generada, así como el código resultante de que requisito
implementado. Para ello, Juan decide llevar a cabo una buena práctica:
instalar un software para el control de versiones.
3
Con este software instalado en cada equipo, tanto los programadores como
analistas, diseñadores y tester son capaces de ver el trabajo de los demás
y, dependiendo de los permisos asignados, poder modificar su contenido.
Por otro lado, Juan decide llevar a cabo una refactorización del código del
aplicativo. ¿Cuál sería la mejor decisión a tomar? Reúne a sus
programadores y asigna a cada uno de ellos un requisito funcional ya
programado, para que pueda ser revisado y refactorizado, repartiendo la
carga de trabajo. Al estar el código bajo un software para el control de
versiones, todos tendrán notificaciones de las novedades existentes en el
código.
4
1. REFACTORIZACIÓN
5
PARA SABER MÁS
Refactoring
Tanto (Fowler et al, 1999) como (Piattini y García, 2003) coinciden en que
las áreas conflictivas de la refactorización son las bases de datos y los
cambios de interfaces. El cambio de base de datos tiene dos problemas:
los sistemas están fuertemente acoplados a los esquemas de las bases de
datos y el segundo de ellos radica en la migración tanto estructural como de
datos. Se deben aplicar los cambios necesarios y luego migrar los datos
existentes en la base de datos, lo que es muy costoso.
6
Existen muchos patrones que ayudan a la refactorización, incluso algunos
de ellos son utilizados a diario sin saber que son patrones como tal. A
continuación, se muestran dos ejemplos:
ARTÍCULO DE INTERÉS
7
PARA SABER MÁS
Refactorización
8
ARTÍCULO DE INTERÉS
9
1.3 Herramientas de ayuda a la refactorización
Muchos editores y entornos de desarrollo presentan soporte automatizado
refactorización. A continuación, se indican lo más conocidos: Eclipse,
NetBeans, JDeveloper, Visual Studio, Visual Assist y DMS Toolkit
Reingeniería de Software.
Las herramientas de Refactoring son especialmente útiles cuando se trata
de realizar modificaciones o actualizaciones en las líneas código, que afecta
a varios elementos del diseño. Eclipse incorpora desde versiones muy
tempranas opciones para refactorizar nuestro código. En Eclipse, se puede
acceder a las operaciones de Refactoring a través de la opción Refactor en
el menú principal o en el menú pop-up del Editor. Como ejemplo de
refactorización se propone una extracción a método mediante el IDE
Eclipse. Para ello se parte de las siguientes 3 líneas de código, cuyo
cometido es obtener por pantalla un valor numérico entero aleatorio entre
el 1 y 10. Para ello se hace uso de la clase Random, importándola
previamente:
10
Imagen: Extracción de método con Eclipse
ARTÍCULO DE INTERÉS
¿Qué es refactoring?
11
PARA SABER MÁS
Refactorización
EJEMPLO PRÁCTICO
SOLUCIÓN:
En primer lugar, es importante analizar bien las líneas de código que ejecutan y
definen esa funcionalidad. Si se puede aplicar algún tipo de refactorización, este
debe ser el primer paso. Una vez realizado, probar de nuevo la funcionalidad,
para asegurar que no ha habido ningún cambio asociado a esta nueva versión.
Si el problema persiste, la solución es optimizar el código que, a diferencia de la
refactorización, permite analizar línea por línea el tiempo de ejecución
correspondiente. De esta forma, será mucho más fácil ver en qué parte exacta
del código se está produciendo esta lentitud en el acceso a la información.
VIDEO DE INTERÉS
12
2. CONTROL DE VERSIONES
2.1 Tipos
Los sistemas de control de versiones se pueden clasificar en 2 grandes
grupos:
13
Si uno de los desarrolladores ha modificado determinados ficheros
fuentes y el otro no, los modificados se convierten en la versión más
moderna. Ejemplos: Git y Mercurial.
VIDEO DE INTERÉS
2.2 Herramientas
Aunque un sistema de control de versiones puede realizarse de forma
manual, es muy aconsejable disponer de herramientas que faciliten esta
gestión dando lugar a los llamados sistemas de control de versiones o
VCS (del inglés Version Control System). Estos sistemas facilitan la
administración de las distintas versiones de cada producto desarrollado, así
como las posibles especializaciones realizadas (por ejemplo, para algún
cliente específico). A continuación, se muestran algunos ejemplos de control
de versiones:
14
Mercurial: Es un sistema de control de versiones distribuido que
ofrece, entre otras opciones, una completa indexación cruzada de
ficheros y conjuntos de cambios, unos protocolos de sincronización
SSH y HTTP eficientes respecto al uso de CPU y ancho de banda, una
fusión arbitraria entre ramas de desarrolladores, una interfaz web
autónoma integrada y portabilidad UNIX, MacOS X y Windows.
GIT: Es un proyecto llevado a cabo por Linus Torvalds para manejar
el árbol fuente del kernel de Linux. Al principio GIT se enfocó
bastante en las necesidades del desarrollo del kernel, pero se ha
expandido más allá de ello y en la actualidad es utilizado por otros
proyectos aparte del kernel de Linux. Su página web dice que está
diseñado para manejar proyectos muy grandes eficaz y velozmente.
Se usa sobre todo en varios proyectos de código abierto. Cada
directorio de trabajo de GIT es un repositorio completo con plenas
capacidades de gestión de revisiones, sin depender del acceso a
la red o de un servidor central.
Bazaar: Está todavía en desarrollo. Será una implementación del
protocolo GNU Arch, mantendrá compatibilidad con el protocolo GNU
Arch a medida que evolucione y trabajará con el proceso de la
comunidad GNU Arch para cualquier cambio de protocolo que fuera
requerido a favor del agrado del usuario.
Introduction to CVS
Apache Subversion
GIT
Bazaar
2.3 Repositorio
Subversión es un sistema centralizado para compartir información. En su
núcleo está un repositorio, que es un almacén central de datos. Almacena
información en forma de un árbol de archivos, una jerarquía típica de
archivos y directorios. Un número de clientes se conectan al repositorio y
luego leen o escriben esos archivos. Al escribir datos, el cliente hace que la
información esté disponible para los otros. Al leer los datos, el cliente recibe
información de los demás.
15
Imagen: Operaciones de los clientes sobre un repositorio
3. DOCUMENTACIÓN
16
No es viable la solución mostrada por algunos programadores de ir
directamente a la implementación sin antes pararse en las fases 1, 2 y 3.
Un trabajo deficiente en estas fases supone una mala definición del
problema y por tanto el sistema no cumplirá seguramente con todos los
requisitos. El diseño del sistema no será efectivo y los errores serán de
difícil solución.
Documentación de programas
SABÍAS QUE...
17
Imagen: Comentarios de código en Java
ARTÍCULO DE INTERÉS
18
PARA SABER MÁS
Adobe FrameMaker
Adobe RoboHelp
3.2.2 Nuxeo
Nuxeo es un software que permite implementar con gran funcionalidad un
repositorio documental corporativo. Aporta soluciones a las necesidades
primarias de gestión documental de las empresas, permitiendo gestionar
cómodamente documentos mediante control de versiones, flujos de trabajo
asociados, publicación remota o búsqueda avanzada a texto completo,
además de integración con suite ofimáticas habituales como Microsoft Office
y Open Office. A través de Nuxeo DAM se ofrece soporte para imágenes y
vídeos.
Nuxeo
19
3.2.3 Alfresco
Se trata de otro gran ejemplo de ECM open source. Es una solución versátil
compatible con software tanto de la vertiente Microsoft, como de la rama
Linux. Posibilita la creación y gestión de contenidos empresariales desde
una gran cantidad de CMS, blogs y paquetes ofimáticos (Office y
OpenOffice). Además, ofrece una gran variedad de herramientas
colaborativas como calendarios individuales y de equipo, feeds de actividad,
tableros de discusión, etc.
Alfresco
3.2.4 Athento
Athento es una capa software que añade funcionalidad de última
generación a sistemas de gestión de contenidos empresariales como Nuxeo
y Alfresco, proporcionándoles interoperabilidad para conectarse con
aplicaciones de terceros. Utiliza estándares abiertos e incorpora los últimos
avances de la Sociedad de la información como tecnología semántica,
procesamiento de la imagen mediante OCR, Redes Neuronales, Análisis del
color y procesamiento del lenguaje natural (PNL), siendo fundamental su
aportación en fases esenciales del ciclo de gestión de documental como
la captura, la gestión y la distribución.
20
PARA SABER MÁS
Athento
21
RESUMEN FINAL
En esta unidad se presenta el concepto de refactorización y qué ventajas
aporta a la fase de codificación. Entre varias operaciones se han visto 2: la
extracción a método y el método en línea.
22