Intro¿Qué es? Guía 1Explicativo Guía 2Depuración Guía 3Comparación Guía 4Refactorización Guía 5Diseño Original

¿Cómo funciona cada sesión?

Todas las actividades con IA siguen este protocolo de tres momentos. No podés saltarte el PRE-IA.

Momento 1 · PRE-IA

Intentalo vos primero

Antes de abrir cualquier herramienta de IA, resolvé el problema con lo que sabés. Escribí tu propuesta en papel o en el sistema.

⏱ 15 min
Momento 2 · CON-IA

Dialogá con la IA

Usá el prompt de la guía correspondiente. Solo podés pedirle razonamiento y explicaciones, nunca el código completo directamente.

⏱ 30–40 min
Momento 3 · POST-IA

Reflexioná y apropiáte

Comparé tu propuesta inicial con lo que aprendiste. Respondé: ¿qué entendí mejor? ¿qué cambié en mi diseño y por qué?

⏱ 15 min

¿Qué nivel cognitivo desarrolla cada guía?

N1Recordar
N2Comprender
Guía 1
N3Aplicar
N4Analizar
Guía 2
N5Evaluar
Guías 3 y 4
N6Crear
Guía 5

Referencia rápida: Las tres capas

CapaNombre alternativo¿Qué hace?Ejemplo de clase
UI Presentación Frontend / Vista Interactúa con el usuario. Captura datos y muestra resultados. No valida ni accede a datos. FormularioEstudiante, PanelPrincipal
BLL Lógica de Negocio Servicio / Service Aplica las reglas del sistema. Valida datos. Coordina entre UI y DAL. No muestra nada al usuario. ServicioEstudiante, ServicioFactura
DAL Acceso a Datos DAO / Repository Ejecuta operaciones CRUD sobre la base de datos. No valida reglas de negocio. EstudianteDAO, ClienteRepository
Regla de oro: La capa de Presentación nunca habla directamente con la capa de Acceso a Datos. Siempre pasa por la Lógica de Negocio. Si ves código SQL dentro de un formulario, hay una violación arquitectónica.
💡

Guía 1 — Prompt Explicativo

Para comprender conceptos de arquitectura por capas que no tenés del todo claros
Bloom N2 — Comprender

¿Cuándo usar esta guía?

Cuando no entendés la diferencia entre dos capas, no sabés qué responsabilidad tiene una clase, o querés que te expliquen un concepto arquitectónico de varias formas antes de intentar implementarlo.

Prompt base (copiá y adaptá)

Prompt Explicativo — GuíaPrompt-CR

Explícame con un ejemplo concreto en [Java / C# / Python] qué diferencia hay entre la capa de [capa A] y la capa de [capa B] en una arquitectura de software por capas. No me des el código completo de un sistema. Solo usá una clase de ejemplo pequeña por capa para que pueda ver el contraste. Explica después por qué esa responsabilidad pertenece a esa capa y no a la otra.

Ejemplos de preguntas que podés formular

1

¿Qué diferencia hay entre la capa DAO y la capa de Lógica de Negocio? ¿Por qué no puedo poner la validación directamente en el DAO?

2

Explícame qué significa que una capa tenga "responsabilidad única". Dame un ejemplo con una clase de inventario mal diseñada y otra bien diseñada.

3

¿Por qué la clase que muestra datos en pantalla no debería tener código SQL? Explicámelo con un ejemplo simple en Java.

Qué evaluar en la respuesta de la IA

No aceptés la primera respuesta sin leerla. Verificá: ¿la explicación usa capas claramente separadas? ¿El ejemplo tiene lógica de negocio dentro de la UI? Si la IA mezcla capas en su propio ejemplo, preguntále: "¿No estás violando la separación de responsabilidades en ese ejemplo?"
Reflexión POST-IA — Guía 1
  1. Con tus propias palabras, ¿cuál es la diferencia principal entre las dos capas que preguntaste?
  2. ¿Podés identificar en el código de tu proyecto actual alguna clase que esté mezclando responsabilidades de dos capas diferentes?
  3. ¿Qué cambiarías en esa clase para que respete la separación de responsabilidades?
🔍

Guía 2 — Prompt de Depuración Guiada

Para identificar errores arquitectónicos sin que la IA te dé la solución directa
Bloom N4 — Analizar

¿Cuándo usar esta guía?

Cuando tu código compila y corre, pero sospechás que tiene problemas de diseño arquitectónico. O cuando tenés un error y no sabés si es de sintaxis, de lógica o de arquitectura.

Prompt base — Versión arquitectónica

Prompt Depuración Guiada — GuíaPrompt-CR

Tengo este fragmento de código en [lenguaje]. Sin corregirlo directamente, dime:
1. ¿Qué principio de separación de capas está violando y por qué?
2. ¿A qué capa debería pertenecer el código que está en el lugar equivocado?
3. Dame una pista de por dónde empezar a corregirlo, pero no me escribas el código corregido.

Código de práctica — Identificá las violaciones

El siguiente fragmento tiene al menos 2 violaciones arquitectónicas. Usá el Prompt Depuración Guiada para identificarlas.

// FormularioVenta.java — supuestamente capa UI
public class FormularioVenta {

    public void procesarVenta(String prod, int cant, double precio) {

        // ← ¿Qué está mal aquí?
        if (cant <= 0 || precio <= 0) {
            System.out.println("Datos inválidos");
            return;
        }

        double total = cant * precio * 1.13; // ← ¿Y aquí?

        // ← ¿Y esto?
        try {
            Connection c = DriverManager.getConnection(
                "jdbc:mysql://localhost/tienda", "root", "admin");
            PreparedStatement ps = c.prepareStatement(
                "INSERT INTO ventas VALUES(?,?,?)");
            ps.setString(1, prod);
            ps.setInt(2, cant);
            ps.setDouble(3, total);
            ps.executeUpdate();
        } catch(Exception e){ e.printStackTrace(); }
    }
}

Prompt base — Versión error de compilación

Prompt Depuración — Error de compilación

Mi código tiene este error: [pegá el stack trace]. Sin darme el código corregido:
1. ¿En qué archivo y línea ocurre el problema según el mensaje?
2. ¿Qué tipo de error es (sintaxis, lógica, null, tipo de datos)?
3. ¿Qué debería revisar primero para encontrar la causa?

Reflexión POST-IA — Guía 2
  1. ¿Cuáles fueron las violaciones que encontraste en el código de práctica? ¿Coincidió con lo que te dijo la IA?
  2. ¿A qué capa pertenece cada fragmento mal ubicado? Completá: «El código de la línea ___ debería estar en la clase ___ de la capa ___».
  3. ¿Podés dibujar un diagrama simple que muestre cómo debería fluir la llamada entre las tres capas para esta funcionalidad?
⚖️

Guía 3 — Prompt de Comparación Arquitectónica

Para desarrollar criterio crítico comparando dos implementaciones del mismo problema
Bloom N5 — Evaluar

¿Cuándo usar esta guía?

Cuando tenés dos formas de implementar algo y querés saber cuál es arquitectónicamente superior, o cuando querés evaluar si tu diseño respeta los principios de separación de responsabilidades.

Prompt base

Prompt Comparación Arquitectónica — GuíaPrompt-CR

Tengo estas dos implementaciones de [nombre de la funcionalidad] en [lenguaje]:

Implementación A: [pegá el código A]
Implementación B: [pegá el código B]

Sin decirme directamente cuál es la correcta:
1. ¿Cuál de las dos respeta mejor el principio de responsabilidad única de cada capa?
2. ¿Cuál tendría más problemas si tuviéramos que cambiar la base de datos por otra?
3. ¿Qué criterio arquitectónico diferencia a una de la otra?

Comparación de práctica — ¿Cuál es mejor?

Implementación A:

// Versión A — ¿Qué opinas?
public class RegistroEstudiante {
    public void guardar(Estudiante e) {
        if (e.getCedula() == null) {
            throw new IllegalArgumentException("Cédula vacía");
        }
        Connection c = DriverManager.getConnection("...");
        PreparedStatement ps = c.prepareStatement("INSERT INTO...");
        ps.executeUpdate();
    }
}

Implementación B:

// Versión B — ¿Qué opinas?
public class ServicioEstudiante {          // BLL
    private EstudianteDAO dao = new EstudianteDAO();

    public void guardar(Estudiante e) {
        if (e.getCedula() == null)
            throw new IllegalArgumentException("Cédula vacía");
        dao.insertar(e);
    }
}
public class EstudianteDAO {             // DAL
    public void insertar(Estudiante e) {
        Connection c = DriverManager.getConnection("...");
        PreparedStatement ps = c.prepareStatement("INSERT INTO...");
        ps.executeUpdate();
    }
}
Reflexión POST-IA — Guía 3
  1. ¿Cuál implementación elegiste como mejor y por qué criterio arquitectónico?
  2. ¿Qué pasaría en la Implementación A si en el futuro la empresa cambia de MySQL a PostgreSQL? ¿Y en la B?
  3. Revisá tu propio proyecto: ¿cuál de las dos versiones se parece más a lo que tenés?
🔧

Guía 4 — Prompt de Refactorización Justificada

Para mejorar código existente con comprensión del proceso, no solo aceptando el resultado
Bloom N5 — Evaluar

¿Cuándo usar esta guía?

Cuando tenés código funcional pero mal estructurado arquitectónicamente, y querés mejorarlo de forma que entiendas cada cambio que hacés, no solo que el programa siga corriendo.

Prompt base

Prompt Refactorización Justificada — GuíaPrompt-CR

Tengo este código en [lenguaje] que funciona pero tiene problemas de arquitectura:
[pegá el código]

Sin reescribir el código completo todavía:
1. ¿Cuántas clases debería tener un sistema bien estructurado para esta funcionalidad?
2. ¿Qué responsabilidad debería tener cada clase?
3. ¿Qué líneas de mi código actual deberían moverse a otra clase y por qué?
Luego, acompañame en la refactorización: yo voy a proponer la nueva estructura y vos me decís si respeta la separación de capas.

Ejercicio de refactorización paso a paso

Partís de este código monolítico y lo refactorizás en tres capas:

// Código inicial — todo en una clase, ¡a refactorizar!
public class AppPrestamo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Libro: ");
        String libro = sc.nextLine();
        System.out.print("Estudiante: ");
        String est = sc.nextLine();

        // Validación mezclada con UI
        if (libro.isEmpty() || est.isEmpty()) {
            System.out.println("Datos incompletos");
            return;
        }

        // Acceso a datos mezclado con todo
        Connection c = DriverManager.getConnection("jdbc:mysql://...");
        PreparedStatement ps = c.prepareStatement(
            "INSERT INTO prestamos VALUES(?,?,NOW())");
        ps.setString(1, libro);
        ps.setString(2, est);
        ps.executeUpdate();
        System.out.println("Préstamo registrado.");
    }
}
1

Usá el Prompt de Refactorización para que la IA te diga cuántas clases necesitás y qué responsabilidad tiene cada una.

2

Proponé vos la lista de clases con su capa. Compartísela a la IA y pedile que evalúe si la separación es correcta.

3

Implementá las clases vos. Luego usá el Prompt de Comparación para comparar tu versión refactorizada con el original.

Reflexión POST-IA — Guía 4
  1. ¿Cuántas clases creaste en la refactorización? Nombralas y asignales su capa.
  2. ¿Qué línea específica del código original fue la más difícil de reubicar? ¿Por qué?
  3. Si tuvieras que agregar una nueva funcionalidad (marcar préstamo como devuelto), ¿en qué clase la pondrías ahora con la nueva arquitectura? ¿Y en la versión original?
🏗️

Guía 5 — Prompt de Consultor de Diseño

Para diseñar sistemas originales usando la IA como revisor, no como arquitecto
Bloom N6 — Crear

¿Cuándo usar esta guía?

Cuando tenés que diseñar un sistema nuevo desde cero. La IA no diseña por vos — vos proponés la arquitectura y la IA la revisa críticamente.

Prompt base

Prompt Consultor de Diseño — GuíaPrompt-CR

Voy a diseñar un sistema de [descripción del sistema] en [lenguaje] con arquitectura por capas.

Estas son las clases que propongo y sus capas:
[tu lista de clases con su capa y responsabilidad]

Actuá como mi consultor de arquitectura:
1. ¿Mi distribución de responsabilidades respeta la separación de capas?
2. Si encontrás problemas, explicame cuáles son pero no me los corrijas directamente. Dejá que yo proponga la solución primero.
3. ¿Hay alguna responsabilidad que olvidé asignar a alguna capa?

Sistema de práctica para diseñar

Sistema a diseñar

Sistema de Gestión de Notas Estudiantiles

Funcionalidades: registrar una nota (estudiante, materia, calificación), calcular el promedio de un estudiante, listar estudiantes con nota mayor a 70, actualizar una nota existente.

1

PRE-IA: Diseñá vos primero la lista de clases con su capa y responsabilidad. Escribila sin consultar nada.

2

CON-IA: Compartí tu diseño a la IA usando el Prompt Consultor. No le mostrés que querés que te lo corrija — pedile que lo evalúe.

3

Iteración: Si la IA encontró problemas, proponé vos la corrección antes de pedirle que la valide.

4

Implementación: Implementá al menos 2 de las clases diseñadas. Usá la Guía 4 si necesitás ayuda durante la implementación.

Plantilla para proponer tu diseño

Tu propuesta de arquitectura

Clase: NombreClase — Capa: UI / BLL / DAL
Responsabilidad: qué hace esta clase
Métodos principales: lista de métodos

Clase: NombreClase — Capa: UI / BLL / DAL
Responsabilidad: qué hace esta clase
Métodos principales: lista de métodos

[repetí para todas las clases que propones]

Reflexión POST-IA — Guía 5
  1. ¿Tu diseño inicial tenía problemas arquitectónicos? ¿Cuáles encontró la IA?
  2. ¿Cuántas iteraciones necesitaste antes de tener una arquitectura que la IA validara como correcta?
  3. Completá: «Antes de esta actividad yo pensaba que la arquitectura por capas era... Ahora pienso que...».
  4. ¿Qué diferencia notás entre cómo le hiciste preguntas a la IA hoy versus cómo lo hacías antes de conocer estas guías?