CAPACITACIÓN CULTURA DE CALIDAD DEL SOFTWARE
Taller 1: Código Limpio y Arquitectura Limpia
PARTE 1 - ARQUITECTURA LIMPIA [25/50]
INSUMOS DE DESARROLLO DEL TALLER
1. Clean Architecture: A Craftsman's Guide to Software Structure and Design, First
Edition. Robert C. Martin, 2017. (https://learning.oreilly.com/library/view/clean-
architecture-a/9780134494272/)
2. Clean Code. Robert C. Martin, 2008. (https://learning.oreilly.com/library/view/clean-
code/9780136083238/)
3. Clean Coder (Clean Coders Video Series). Robert C. Martin, 2017.
(https://learning.oreilly.com/videos/clean-coder-clean/9780134843803)
4. Clean Code Applied (Clean Coders Video Series): Building a Java Web Application
with Software Craftsmanship. Robert C. Martin, 2017.
(https://learning.oreilly.com/videos/clean-code-applied/9780134843810)
De acuerdo con la lectura asignada de Arquitectura Limpia, desarrolle el presente taller:
Bases de datos
1. Identifique si son o no relevantes los siguientes aspectos para la arquitectura de un
sistema a nivel de datos. Justifique su respuesta:
Aspecto ¿Relevante Por qué
(Sí/No)?
La base de datos
La estructura que
se le da a los
datos
Las tablas
relacionales
Los sistemas de
bases de datos
(RDBMS)
El rendimiento
Tecnologías Web
2. ¿Por qué se considera que se debe separar la interfaz de usuario (UI) de la lógica de
negocio?
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
José Alejandro Sánchez, material exclusivo capacitación de Cultura de Calidad del Software
CAPACITACIÓN CULTURA DE CALIDAD DEL SOFTWARE
Taller 1: Código Limpio y Arquitectura Limpia
_____________________________________________________________________________
____________________________________________________________________________.
3. ¿Qué patrón o qué patrones de arquitectura justifican la separación de la UI de la
lógica de negocio? (Sugerencia: capítulo 13 de Software Architecture in Practice, Len
Bass). https://es.slideshare.net/rickkazman/sap3-chapter-13-36473136
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
____________________________________________________________________________.
Importancia de los Frameworks
4. ¿Describa 3 razones por las qué Robert C. Martin recomienda no casarse con un
Framework?
Razón 1:
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
Razón 2:
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
Razón 3:
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
5. Escoja al menos 2 tácticas para no tener una dependencia considerable (casamiento)
con un framework:
a. Evitar el uso del framework en el código base o central de la aplicación
b. Incluir el framework como una decisión de arquitectura
c. Evitar el uso de anotaciones en los objetos de negocio
d. Utilizar proxies para aislar el framework del core de negocio de la aplicación
e. Utilizar una versión específica del framework
Caso de estudio: Ventas de videos
José Alejandro Sánchez, material exclusivo capacitación de Cultura de Calidad del Software
CAPACITACIÓN CULTURA DE CALIDAD DEL SOFTWARE
Taller 1: Código Limpio y Arquitectura Limpia
6. A qué hace referencia el principio de responsabilidad única (Sugerencia. Investigue en
la Web sobre este principio)
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
____________________________________________________________________________.
7. Explique el enfoque “Divide y vencerás” comúnmente recomendado en construcción
de software.
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
____________________________________________________________________________.
8. Explique la relación/similitud/complemento que ve entre el “principio de
responsabilidad única” y el enfoque “divide y vencerás”
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
____________________________________________________________________________.
Arquitectura Limpia
Complemente la lectura del libro de Robert C. Martin con el siguiente Blog:
http://xurxodev.com/por-que-utilizo-clean-architecture-en-mis-proyectos/
https://www.genbeta.com/desarrollo/principios-de-una-arquitectura-limpia-mantenible-y-
testeable
José Alejandro Sánchez, material exclusivo capacitación de Cultura de Calidad del Software
CAPACITACIÓN CULTURA DE CALIDAD DEL SOFTWARE
Taller 1: Código Limpio y Arquitectura Limpia
9. Concepto de arquitectura limpia
_______________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
______________________________________________________________________.
Enuncie y describa 3 características de las arquitecturas limpias
a. ___________________________________________________________________
___________________________________________________________________
__________________________________________________________________.
b. ___________________________________________________________________
___________________________________________________________________
__________________________________________________________________.
c. ___________________________________________________________________
___________________________________________________________________
__________________________________________________________________.
10. Qué enfoque de arquitectura sigue arquitectura limpia:
a. Domain Driven Design (DDD)
b. Model Driven Architecture (MDA)
c. Test Driven Development (TDD)
d. Data Driven Desing
e. Model Diven Engineering
11. Describa cada uno de los anteriores enfoques y enuncie sus ventajas y desventajas
Descripción del enfoque Ventajas Desventajas
Domain Driven Design (DDD)
es…
José Alejandro Sánchez, material exclusivo capacitación de Cultura de Calidad del Software
CAPACITACIÓN CULTURA DE CALIDAD DEL SOFTWARE
Taller 1: Código Limpio y Arquitectura Limpia
Model Driven Architecture
(MDA) es …
Test Driven Development
(TDD) es..
Data Driven Desing es …
Model Diven Engineering es
…
El capítulo perdido
12. Describa con sus palabras los siguientes métodos de diseño:
Método de diseño Descripción Ventajas/Desventajas
Paquete por capas
Paquete por función
Puertos y adaptadores
Paquete por componente
Aplicación práctica de Arquitectura Limpia
Seleccione un método de diseño y aplíquelo al problema del polígamo responsable que hemos
visto en clase (Sugerencia: Diagramas de las figuras 34.1, 34.2, 34.4, 34.5, 34.6 según el método
de implementación elegido.
13. Realice los diagramas de diseño correspondientes para la gestión de:
a. Esposas
b. Polígamos
Nota: Utilice draw.io o lucidchart
14. Seleccione otra entidad de dominio del problema del polígamo y realice el diagrama
de diseño correspondiente:
06-20180905y07-POOyRelacionesClases.pdf (diapositiva 43)
15. Realice una vista funcional de microservicios similar a la vista en la clase de
microservicios:
07-20180321y23-ArquitecturasMonol%C3%ADticas%20y%20Microservicios.pdf:
José Alejandro Sánchez, material exclusivo capacitación de Cultura de Calidad del Software
CAPACITACIÓN CULTURA DE CALIDAD DEL SOFTWARE
Taller 1: Código Limpio y Arquitectura Limpia
Una vista más actualizada la encuentran en: https://www.manning.com/books/microservices-
patterns (pueden descargar el capítulo 1 de forma gratuita)
Otros ejemplos los encuentran en https://microservices.io/patterns/microservices.html
José Alejandro Sánchez, material exclusivo capacitación de Cultura de Calidad del Software
CAPACITACIÓN CULTURA DE CALIDAD DEL SOFTWARE
Taller 1: Código Limpio y Arquitectura Limpia
PARTE 2 - CÓDIGO LIMPIO [25/50]
Seguramente en el LabDigital se ha enfrentado a procesos de estabilización y refactorización de
código. Para esta parte del taller ustedes deberán seleccionar algún código funcional y aplicar al
menos 10 de las buenas prácticas de código limpio. El grupo seleccionará un miembro del equipo
para presentar el resultado al auditorio y justificar por qué aplicó dichas prácticas y como cree
que va a mejorar la mantenibilidad del código, así como responder las preguntas que se le
realicen.
Partes de la sustentación [15/25] y entrega del taller [10/25]:
• Describir el propósito del código seleccionado para aplicar la práctica
• Presentar el código sin prácticas de código limpio (AS-IS)
• Presentar el código con prácticas de código limpio (TO-BE)
• Documentar las prácticas en el documento de entrega del taller justificando para cada
una de ellas el por qué tuvo que aplicarla (no es necesario anexar el código en la entrega
del taller, pero puede hacerlo si el grupo así lo decide).
José Alejandro Sánchez, material exclusivo capacitación de Cultura de Calidad del Software