Mem UD04 ClaraSoriano
Mem UD04 ClaraSoriano
Mem UD04 ClaraSoriano
Documentación y Refactorización
Introducción…...…….………………………………………………………………..pág. 3
¿Qué es la documentación?………….…...…….…………….…………………...pág. 4
Tipos de refactorización……………………………………………………………..pág. 13
Acoplamiento y cohesión……………………………………………………………pág. 14
Conclusiones…..……………………………………………………………………..pág. 16
Bibliografía web………………………………………………………………………pág. 17
La metodología ágil es más adecuada para proyectos que no tienen un alcance definido
y en los que podrías enfrentar obstáculos que requieren cambios rápidos durante el
proceso. Esta metodología es iterativa, se adapta en función de los comentarios de los
clientes y las partes interesadas a lo largo del proyecto. Requiere un equipo de individuos
con iniciativa que colaboren y se adapten sin perder el ritmo.
En ambos casos encontramos los dos conceptos que vamos a trabajar en esta memoria
que son la documentación y la refactorización y como esta ayuda a tus proyectos de
software a crecer y expandirse entre los usuarios más allá de los desarrolladores que lo
han generado.
¿QUÉ ES LA DOCUMENTACIÓN?
La documentación acompaña las distintas etapas del proyecto, que son iterativas y de
mejora constante. Hay algunas partes de la documentación que sí se realizan al principio,
como el modelo de dominio,nos ayuda a aclarar cuál es el vocabulario del cliente y fija el
conjunto de palabras que todos tendremos que usar al crear las piezas de software.
Algunos de los diagramas que pueden ayudar mucho a entender el problema y el flujo de
acciones de la aplicación son los de casos de uso y los diagramas de estado.
La documentación es parte del software, lo que lo hace necesaria para su correcto uso y
mantenimiento, pese a que realizarla nunca es fácil, ya que hay que saber qué
documentar y como hacerlo, por ello son importantes los siguientes puntos:
- Documentación bien organizada y fácil de entender: sobre todo porque requiere ser
consultada rápidamente, y es preferible la creación de diagramas en lugar de textos.
- Los diagramas tienen que ser entendidos de manera idéntica por todas las
personas: es por ello importante el uso de un lenguaje como UML, el cual indica el
significado de cada uno de los elementos que forman parte de los diagramas.
- El lenguaje escritor debe ser claro, conciso y sencillo de entender: incluso por una
persona con menos conocimientos técnicos.
Mantener una documentación correcta y actualizada es una tarea que lleva tiempo y al
Es importante realizar una documentación adecuada para entender bien qué se debe
programar y cómo se debe programar, más aún cuando el proyecto conlleva cierta
dificultad de desarrollo. La documentación se divide en dos categorías:
Pero en todo caso, la documentación que se entrega al cliente tendrá que coincidir con la
versión final de los programas que componen la aplicación. Una vez concluido el
programa, los documentos que se deben entregar son una guía técnica, una guía de
uso y de instalación.
La guía de instalación:
La documentación del producto está especialmente dirigida a los usuarios finales de este
producto y el personal que se dedicará a darle mantenimiento o prestar soporte. Ya que
les permite entender mejor las características del mismo y tener una idea concreta de las
tareas que deben desempeñar. Podemos encontrar los siguientes documentos:
• Descripción del sistema: Guía a las personas que van a gestionar una
aplicación, indicando cuál es el objetivo de ésta, cuáles son sus requisitos
funcionales, los requisitos no funcionales y las restricciones o necesidades
especiales de las soluciones que se deben implementar.
• Guías de uso: Para los usuarios de la aplicación, donde especifique qué procesos
se encuentran disponibles y cómo se deben usar las aplicaciones.
• Descripción del sistema: Para las personas más técnicas, que les ayude a
entender la arquitectura de la solución, los sistemas que involucra y sus
interacciones. Qué requisitos deben tener las máquinas de despliegue, en aspectos
relacionados con la escalabilidad, seguridad y otros factores importantes que
ayuden al correcto mantenimiento de los sistemas.
• Documentación del API: Además, si los clientes del software son otras piezas de
software, como ocurre en el caso de las API o servicios web, es importante
disponer de una completa documentación que especifique claramente la entrada y
salida de cada proceso. En este caso herramientas como OpenAPI o Swagger ya
que nos permiten generar toda la documentación mediante anotaciones en el
propio código.
¿QUÉ ES LA REFACTORIZACIÓN?
Con la refactorización buscamos ser limpios y elegantes con el código, pero es posible
que en los inicios de la carrera de cualquier programador inexperto esto se convierta en
un problema, y es aquí, donde se hace necesaria la fase de refactorización.
Al refactorizar podemos añadir nuevos errores, este es un punto a tener en cuenta, ya que
nos tenemos que concienciar para repasar el código y evitar errores, para ello es
necesario que pase un Test Driven Development.
Code Smells: Son señales e indicios de que es posible que haya un problema en el
diseño o estructura del código fuente del programa. No tienen porque ser errores por si
mismos, pero pueden indicar áreas problemáticas que podrían conducir a problemas más
graves en el futuro si no se abordan.
Peligros de refactorizar:
• Arma de doble filo. Siempre hay un código mejor. Cuidado con entrar en una espiral de
refactorización.
•Mantener la refactorización bajo control
• Debemos estimar tiempo máximo antes de comenzar a refactorizar.
• Refactorizar demasiado implica:
• Pérdida de tiempo (y dinero)
• Incremento de complejidad de diseño de tanto refactorizar
• Sensación de no estar avanzando
• Sensaciones anímicas negativas
Teniendo en cuenta todo lo expuesto, hay que buscar las ventajas de cada uno y
encontrar el balance que garantiza mayor simplicidad y coherencia. A modo gráfico, la
tendencia que deberíamos buscar sería movernos siempre hacia el cuadrante inferior de
la derecha, buscando bajo acoplamiento y alta cohesión.
https://monday.com/blog/es/gestion-de-proyectos/metodologia-agil-o-de-cascada-que-tipo-
de-gestor-eres/
https://www.arsys.es/blog/hacer-documentacion-tecnica-software
https://desarrolloweb.com/articulos/importancia-documentacion.html
https://www.disrupciontecnologica.com/acoplamiento-y-cohesion/