Skip to content

Commit 434d49c

Browse files
committed
Merge branch 'main' of https://github.com/JesusTriana18/pdd
2 parents 9ec3cde + 69abd72 commit 434d49c

File tree

2 files changed

+95
-2
lines changed
  • docs/temas

2 files changed

+95
-2
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# Arquitecturas evolutivas y su relación con refactorización progresiva
2+
# Alvarado Cardona Antonio 22210279
3+
4+
## Arquitecturas evolutivas
5+
6+
Las arquitecturas evolutivas son un enfoque de diseño de software en el que la arquitectura no se define como algo rígido y definitivo, sino como un sistema que puede adaptarse y mejorar con el tiempo.
7+
Se basan en principios como:
8+
9+
**Adaptabilidad:** La arquitectura está preparada para responder a cambios en requerimientos, tecnologías o negocio.
10+
11+
**Incrementalidad:** El sistema crece poco a poco, en iteraciones.
12+
13+
**Feedback continuo:** Se mide la calidad de la arquitectura a través de pruebas, métricas y validaciones.
14+
15+
**Resiliencia al cambio:** Se minimiza el costo de introducir nuevas funcionalidades.
16+
17+
En lugar de “diseñar todo desde el principio”, la arquitectura se construye en paralelo con el desarrollo del software, evolucionando conforme el sistema crece.
18+
19+
### Refactorización progresiva
20+
21+
La refactorización progresiva es la práctica de mejorar continuamente el código existente, sin cambiar su funcionalidad observable, para:
22+
23+
- Reducir deuda técnica.
24+
- Mejorar la legibilidad y mantenibilidad.
25+
- Alinear la implementación con los principios de diseño.
26+
27+
Se hace en pequeños pasos controlados, acompañados de pruebas automatizadas, para evitar introducir errores.
28+
29+
## Relación entre arquitecturas evolutivas y refactorización progresiva
30+
La conexión es muy estrecha:
31+
32+
#### Mantenimiento de la calidad arquitectónica:
33+
Una arquitectura evolutiva necesita mantenerse flexible y sana en el tiempo. La refactorización progresiva permite ajustar el código y los módulos para que la arquitectura no se deteriore.
34+
35+
**Adaptación a cambios:** Cuando los requerimientos cambian, la refactorización facilita modificar componentes internos sin romper la funcionalidad externa, lo cual mantiene la capacidad evolutiva.
36+
37+
**Minimización de deuda técnica:** Si la arquitectura evoluciona pero no se refactoriza el código, la deuda técnica se acumula. Con refactorización progresiva se asegura que la evolución sea sostenible.
38+
39+
**Iteración conjunta:** Mientras la arquitectura evoluciona en ciclos (añadiendo nuevas capacidades), la refactorización acompaña cada paso para mantener la coherencia y robustez del sistema.
40+
41+
## Ejemplo práctico: Sistema de pedidos de café
42+
### 1. Versión inicial (arquitectura simple)
43+
44+
Todo está en una sola clase:
45+
``` java
46+
class CafeApp {
47+
void tomarPedido() { ... }
48+
void prepararCafe() { ... }
49+
void cobrar() { ... }
50+
}
51+
```
52+
53+
Funciona bien al inicio porque el negocio es pequeño.
54+
55+
### 2. Problema (necesidad de evolución)
56+
57+
El negocio crece y muchos baristas usan la app al mismo tiempo.
58+
59+
Difícil mantener el código.
60+
61+
Si falla “cobrar”, también se rompe “tomarPedido”.
62+
63+
### 3. Refactorización progresiva
64+
65+
En lugar de reescribir todo:
66+
67+
Paso 1: Extraer responsabilidades en clases separadas.
68+
``` java
69+
class PedidoService { void tomarPedido() { ... } }
70+
class CafeService { void prepararCafe() { ... } }
71+
class PagoService { void cobrar() { ... } }
72+
```
73+
74+
Paso 2: Conectar los servicios poco a poco.
75+
``` java
76+
class CafeApp {
77+
PedidoService pedido = new PedidoService();
78+
CafeService cafe = new CafeService();
79+
PagoService pago = new PagoService();
80+
}
81+
```
82+
### 4. Resultado
83+
84+
La arquitectura evoluciona de un monolito desordenado a un sistema modular.
85+
86+
La refactorización progresiva permitió hacerlo en pasos pequeños, sin detener el negocio.
87+
88+
89+
### En resumen:
90+
Las arquitecturas evolutivas permiten que el sistema cambie y crezca de manera flexible, mientras que la refactorización progresiva es la herramienta práctica que asegura que esos cambios puedan hacerse de forma ordenada, sostenible y sin pérdida de calidad.

docs/temas/README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
<img width="525" height="552" alt="image" src="https://github.com/user-attachments/assets/59ebe06d-abf7-4fcd-87da-d6f261e39454" />
2+
3+
14
# Asignación de Temas - DSF-2101 SC8A - Software de Calidad, Refactorización y Patrones Emergentes
25

36
Este repositorio contiene los temas asignados a cada estudiante del curso, enfocados en:
@@ -7,7 +10,7 @@ Este repositorio contiene los temas asignados a cada estudiante del curso, enfoc
710
- Patrones emergentes en lenguajes no convencionales
811
- Uso responsable y ético de LLMs
912

10-
## Tabla de Asignación
13+
## Tabla de Asignación de Temas
1114
| Nombre del Alumno | Tema Asignado |
1215
|-------------------|---------------|
1316
| ALVARADO CARDONA ANTONIO | Arquitecturas evolutivas y su relación con refactorización progresiva |
@@ -67,7 +70,7 @@ Este repositorio contiene los temas asignados a cada estudiante del curso, enfoc
6770
- Tu presentación en Markdown (`readme.md`).
6871
- (Opcional) Código fuente con sus extensiones independientes, referencias PDF de articulos o imágenes si aplica.
6972
- Noticias en PDF, Articulos y eBooks agregarlos a su directorio del tema
70-
- `ANEXO.md` si utilizaste ChatGPT u otro LLM.
73+
- `ANEXO.md` si utilizaste ChatGPT u otro LLM (prompts de recuperación profesionales y su reflexión del material personal).
7174
4. Enviar un Pull Request al repositorio `http://github.com/tectijuana/pdd`.
7275

7376
## Ética y Uso de LLMs

0 commit comments

Comments
 (0)