Eduteka+
Cursos Completo

Comprender y aplicar los fundamentos del proceso de resolución de problemas mediante algoritmos, siguiendo el paradigma imperativo-modular. Analizar,

Creado por Edith N.

Ingeniería Ingeniería de sistemas Publicado en EdutekaLab · términos de origen
DOCX PDF

Cómo fue en el aula

Todavía nadie ha contado cómo le fue con este recurso.

Descripción del Curso

DESCRIPCIÓN

Esta unidad forma parte de la asignatura Ingeniería de Sistemas y se centra en el desarrollo de habilidades para el trabajo en equipo y la implementación de buenas prácticas de desarrollo modular. Enfocada en la colaboración entre estudiantes para resolver problemas de ingeniería de sistemas, la unidad promueve la modularidad, la reutilización de código y el uso de prácticas modernas de desarrollo para entregar soluciones de calidad. A lo largo de la unidad, los estudiantes participarán en actividades de equipo donde se definen roles, se gestionan tareas, se comunican con claridad y se coordinan para integrar módulos de software. Se enfatizan principios de diseño modular (bajo acoplamiento, alta cohesión), la participación en revisiones por pares, la utilización de herramientas de control de versiones y la integración continua para garantizar la coherencia y la trazabilidad del trabajo.

La unidad se orienta a desarrollar una competencia clave: la capacidad de colaborar efectivamente en entornos de ingeniería de sistemas, planificar y ejecutar esfuerzos de desarrollo modular, y resolver problemas complejos mediante la descomposición en componentes reutilizables. Se busca que el estudiante comprenda la importancia de la documentación, los estándares de codificación, las pruebas y la gestión de versiones como prácticas esenciales para la entrega de resultados confiables. Al finalizar, el estudiante habrá aplicado métodos de gestión de tareas y comunicación en equipos, entregando piezas de software bien estructuradas y listas para su integración en proyectos más amplios.

Competencias

COMPETENCIAS

  • Trabajar de manera efectiva en equipos multidisciplinarios, asumiendo roles claros y colaborando para alcanzar objetivos comunes.
  • Aplicar principios de modularidad, diseño por módulos y reutilización de código para construir soluciones escalables.
  • Planificar, distribuir y gestionar tareas, plazos y entregables dentro de un proyecto de desarrollo de software.
  • Practicar la revisión por pares, la gestión de versiones (Git) y la integración de cambios de forma responsable y documentada.
  • Comunicar ideas y resultados de forma clara y profesional, favoreciendo la toma de decisiones y la resolución de conflictos.
  • Diseñar y ejecutar pruebas, validar interfaces entre módulos y garantizar la calidad del software mediante prácticas de aseguramiento de la calidad.
  • Analizar dependencias entre componentes, identificar acoplamientos y proponer soluciones para mejorar la modularidad.
  • Desarrollar actitudes éticas y responsables, con enfoque en la sostenibilidad del software y la colaboración efectiva.

Requerimientos

REQUERIMIENTOS

  • Conocimientos básicos de programación y estructuras de datos.
  • Conceptos de modularidad, interfaces y diseño orientado a módulos.
  • Experiencia básica en control de versiones y flujo de trabajo colaborativo (preferentemente Git/GitHub).
  • Acceso a un entorno de desarrollo y a plataformas de repositorio para trabajar en proyectos de equipo.
  • Habilidades de comunicación escrita y oral para la colaboración en equipo y para la documentación.
  • Disposición para trabajar en equipo, participar en revisiones y respetar acuerdos de equipo y entrega.

Unidades del Curso

1

Unidad 1: Fases del proceso de resolución de problemas en el paradigma imperativo-modular

<p>En esta unidad se identifica y se ubica cada una de las fases del proceso de resolución de problemas (definición del problema, diseño de la solución, implementación y verificación) dentro del paradigma imperativo-modular. Se analizan las relaciones entre fases, la importancia de las interfaces entre módulos y el flujo de trabajo que facilita una solución modular y verificable.</p>

Objetivos de Aprendizaje

  • Describir las cuatro fases del proceso de resolución de problemas y su propósito en el desarrollo de software imperativo.
  • Relacionar cada fase con prácticas de modularidad y diseño de interfaces entre módulos.
  • Ejemplificar, con un problema sencillo, cómo se transita de definición a verificación manteniendo la modularidad.

Contenidos Temáticos

  1. Definición del problema: identificación de requerimientos, criterios de éxito y restricciones.

  2. Diseño de la solución y modularidad: división en módulos, interfaces y contratos.
  3. Implementación y verificación: ejecución, pruebas básicas y verificación de resultados.

Actividades

  • Actividad 1 - Sesión de briefing del problema: en equipo, se define el problema, se identifican entradas, salidas y criterios de verificación; se discuten restricciones y supuestos clave. Puntos clave: claridad del problema, criterios de éxito y límites del alcance.
  • Actividad 2 - Mapeo de fases: el grupo mapea el problema a las cuatro fases, identifica puntos de decisión y propone hitos de verificación para cada fase.
  • Actividad 3 - Diseño de solución preliminar: se propone una solución modular inicial con una lista de módulos y contratos de entrada/salida por módulo.
  • Actividad 4 - Revisión por pares: revisión de la definición y de los contratos entre módulos por parte de otro equipo, con comentarios y mejoras.

Evaluación

La evaluación se centra en la comprensión de las fases y la capacidad de vincularlas al diseño modular. Criterios:

  • Identificación correcta de las fases y su papel en el paradigma imperativo-modular (40%).
  • Precisar contratos de módulo y definir interfaces entre componentes (30%).
  • Calidad del mapeo de fases y capacidad de justificar decisiones de diseño (30%).

Duración

3 semanas

2

Unidad 2: Descomposición modular y contratos en el diseño de algoritmos

<p>Esta unidad aborda la descomposición modular en procedimientos y funciones, y el establecimiento de contratos de entrada y salida para cada módulo, con énfasis en generar soluciones simples pero bien definidas para problemas prácticos.</p>

Objetivos de Aprendizaje

  • Aplicar descomposición modular para dividir un problema en módulos cohesivos (procedimientos y funciones).
  • Definir contratos de entrada y salida para cada módulo, especificando tipos, rangos y premisas.
  • Proponer ejemplos de soluciones modulares a problemas prácticos simples.

Contenidos Temáticos

  1. Descomposición modular y cohesión entre módulos. Descripción de procedimientos y funciones y su correspondencia con contratos.
  2. Contratos de entrada y salida: especificación de precondiciones, postcondiciones e invariantes.
  3. Diseño de algoritmos simples para problemas prácticos con módulos bien definidos.

Actividades

  • Taller de descomposición: dividir un problema práctico (por ejemplo, calcular una factura con impuestos) en módulos con contratos claros y discutir la responsabilizad de cada módulo.
  • Especificación de contratos: redactar contratos de entrada/salida para cada módulo y validar consistencia entre módulos.
  • Diseño de algoritmo modular: proponer un algoritmo modular para un caso simple y justificar las particiones y responsabilidades.
  • Revisión de interfaces: revisión entre equipos para asegurar que las interfaces son claras y completas.

Evaluación

Evaluación enfocada en la claridad de la descomposición y la calidad de los contratos. Criterios:

  • Descomposición modular correcta y coherente (35%).
  • Contratos de módulos completos y consistentes (35%).
  • Justificación de diseño y claridad de interfaces (30%).

Duración

3 semanas

3

Unidad 3: Implementación de soluciones modulares en lenguaje imperativo

<p>Se explora la implementación de soluciones modulares mediante pseudocódigo o código en un lenguaje imperativo, asegurando que cada módulo tenga una responsabilidad clara y cumpla con su contrato.</p>

Objetivos de Aprendizaje

  • Traducir diseños modulares a pseudocódigo o código ejecutable en un lenguaje imperativo.
  • Girar la responsabilidad de cada módulo hacia una única finalidad y cumplir con el contrato definido.
  • Mantener la legibilidad y la cohesión al implementar módulos.

Contenidos Temáticos

  1. Notación estructurada y pseudocódigo para soluciones modulares.
  2. Responsabilidad de módulos y cohesión en el diseño.
  3. Ejemplos de implementación de módulos simples en lenguaje imperativo.

Actividades

  • Actividad 1 - Conversión de diseño a pseudocódigo: convertir un diseño modular en pseudocódigo claro y estructurado, con contratos explícitos.
  • Actividad 2 - Implementación de módulos en lenguaje imperativo: codificar al menos dos módulos con responsabilidad definida y pruebas básicas de cada módulo.
  • Actividad 3 - Revisión de código modular: revisión entre pares para verificar que cada módulo respeta su contrato y mantiene cohesión.
  • Actividad 4 - Refactorización: mejorar nombres, contratos y comentarios para aumentar la legibilidad del código.

Evaluación

La evaluación se centra en la calidad de la implementación modular y la fidelidad a los contratos. Criterios:

  • Corrección funcional y adherencia a contratos (40%).
  • Claridad de pseudocódigo o código y legibilidad (30%).
  • Coherencia entre diseño y código (30%).

Duración

3 semanas

4

Unidad 4: Estructuras de control imperativas y mantenimiento de la modularidad

<p>Esta unidad aborda el uso de estructuras de control imperativas (secuencias, decisiones y bucles) para codificar soluciones que mantengan la modularidad y la legibilidad, enfatizando buenas prácticas de diseño de flujo de programa.</p>

Objetivos de Aprendizaje

  • Aplicar secuencias lógicas para ordenar la ejecución de módulos.
  • Utilizar estructuras de decisión y bucles sin sacrificar la modularidad.
  • Promover prácticas de legibilidad (nombres, comentarios y organización) en código modular.

Contenidos Temáticos

  1. Secuencias, decisiones y bucles: fundamentos de control de flujo en código imperativo.
  2. Refactorización para mejorar legibilidad sin perder modularidad.
  3. Interfaz y flujo entre módulos durante la ejecución de control de flujo.

Actividades

  • Actividad 1 - Flujo de control modular: diseñar un flujo de control para un problema con múltiples módulos, identificando dónde se aplican secuencias, decisiones y bucles.
  • Actividad 2 - Implementación con estructuras de control: codificar un problema simple utilizando módulos y estructuras de control claras.
  • Actividad 3 - Lectura de código: analizar código modular existente para evaluar legibilidad y modularidad, proponiendo mejoras.
  • Actividad 4 - Refactorización guiada: mejorar estructuras de control para reducir dependencias entre módulos y mejorar claridad.

Evaluación

La evaluación valora la capacidad de mantener modularidad durante el control de flujo. Criterios:

  • Correcta aplicación de secuencias, decisiones y bucles dentro de módulos (35%).
  • Preservación de cohesión y acoplamiento bajo cambios de control (35%).
  • Calidad de la legibilidad y documentación (30%).

Duración

3 semanas

5

Unidad 5: Pruebas, depuración y manejo de casos límite

<p>Se aborda la verificación de algoritmos a través de pruebas básicas y revisión de casos límite, identificando errores de lógica y de implementación, y corrigiéndolos en los módulos correspondientes para asegurar soluciones robustas.</p>

Objetivos de Aprendizaje

  • Planificar pruebas simples para cada módulo con casos típicos y extremos.
  • Diagnosticar errores de lógica y de implementación y aplicar correcciones en los módulos involucrados.
  • Desarrollar hábitos de revisión y verificación para asegurar la calidad de la solución.

Contenidos Temáticos

  1. Tipos de pruebas: unitarias, de integración y casos límite.
  2. Estrategias de depuración y revisión de código.
  3. Registro de resultados y verificación de criterios de solución.

Actividades

  • Actividad 1 - Plan de pruebas: diseñar un plan de pruebas para módulos individuales, con casos normales y extremos.
  • Actividad 2 - Ejecución de pruebas y registro: ejecutar pruebas y registrar resultados, identificar fallos y clasificar su tipo.
  • Actividad 3 - Depuración por módulos: localizar y corregir fallos en módulos aislados y validar correcciones.
  • Actividad 4 - Revisión de casos límite: analizar casos límite y proponer mejoras en la implementación para manejar bordes de entrada.

Evaluación

La evaluación se centra en la capacidad de detectar y corregir errores y en la calidad de la verificación. Criterios:

  • Ejecución satisfactoria de pruebas planificadas (40%).
  • Identificación adecuada de errores y soluciones correctivas (35%).
  • Documentación de pruebas y resultados (25%).

Duración

3 semanas

6

Unidad 6: Documentación de soluciones algorítmicas y criterios de verificación

<p>Se estudia la documentación de soluciones algorítmicas, especificando entradas, salidas, premisas, interfaces entre módulos y criterios de verificación, para facilitar la comunicación y la validación externa e interna de las soluciones.</p>

Objetivos de Aprendizaje

  • Especificar entradas y salidas de cada módulo con claridad, incluyendo tipos y rangos.
  • Definir premisas, interfaces y criterios de verificación para facilitar la reutilización y la validación.
  • Elaborar documentación comprensible que soporte mantenimiento y evolución del código.

Contenidos Temáticos

  1. Documentación técnica: componentes y artefactos de la solución.
  2. Interfaces entre módulos y contratos formales de verificación.
  3. Prácticas de documentación que favorecen la reutilización y el mantenimiento.

Actividades

  • Actividad 1 - Especificación de interfaces: redactar entradas, salidas y contratos para cada módulo de un sistema sencillo.
  • Actividad 2 - Criterios de verificación: definir criterios de verificación para cada módulo y para la solución completa.
  • Actividad 3 - Documentación de selección de algoritmos: justificar las decisiones de diseño y el razonamiento detrás de la modularidad.
  • Actividad 4 - Revisión de documentación: revisar la documentación de un compañero y proponer mejoras.

Evaluación

La evaluación valora la claridad y exhaustividad de la documentación, así como la coherencia entre contratos, interfaces y criterios de verificación. Criterios:

  • Compleción y precisión de entradas/salidas y premisas (40%).
  • Calidad de las interfaces entre módulos y criterios de verificación (35%).
  • Claridad y utilidad de la documentación para mantenimiento (25%).

Duración

3 semanas

7

Unidad 7: Trabajo en equipo y buenas prácticas de desarrollo modular

<p>Se enfatiza la colaboración en equipos para resolver problemas de ingeniería de sistemas aplicando principios de modularidad, reutilización de código y buenas prácticas de desarrollo, con foco en la comunicación, roles y gestión de tareas.</p>

Objetivos de Aprendizaje

  • Organizarse en roles y responsabilidades dentro de un equipo de desarrollo.
  • Aplicar prácticas de modularidad y reutilización de código en proyectos de equipo.
  • Desarrollar habilidades de comunicación, revisión por pares y gestión de versiones.

Contenidos Temáticos

  1. Trabajo en equipo en ingeniería de sistemas: roles, comunicaciones y herramientas.
  2. Buenas prácticas de desarrollo modular y reutilización de código.
  3. Gestión de proyectos y revisión por pares (peer review).

Actividades

  • Actividad 1 - Organización de equipo: definir roles, responsabilidades y plan de trabajo para un ejercicio de codificación modular en equipo.
  • Actividad 2 - Reutilización de código: identificar partes reutilizables en un conjunto de módulos y crear una biblioteca mínima interna.
  • Actividad 3 - Revisión por pares: realizar revisiones estructuradas de código y documentación entre equipos, con comentarios constructivos.
  • Actividad 4 - Gestión de versiones: usar un sistema de control de versiones para coordinar cambios y solucionar conflictos.

Evaluación

La evaluación considera la eficacia del trabajo en equipo y la adopción de prácticas de desarrollo modular. Criterios:

  • Coordinación, comunicación y cumplimiento de roles (40%).
  • Calidad de la reutilización de código y modularidad aplicada (30%).
  • Contribución individual y revisión por pares (30%).

Duración

3 semanas

Crea tus propios cursos con EdutekaLab

Diseña cursos completos con unidades, objetivos y actividades usando IA.

Comenzar gratis