Tema
12. Modularidad
12.1 Separación de responsabilidades
12.2 Mantenibilidad del software
Instrucciones
Propósito
Desarrollar un sistema de gestión de acceso seguro aplicando modularidad, métodos bien definidos y patrones de diseño, logrando un sistema mantenible, escalable y correctamente estructurado.
Contexto del problema
El sistema de acceso seguro diseñado previamente presenta:
Código poco modular
Métodos con múltiples responsabilidades
Alta dependencia entre clases
Dificultad para agregar nuevas reglas de acceso
Se requiere mejorar el sistema mediante un desarrollo modular basado en buenas prácticas de diseño.
RETO 3
Desarrollo Modular con Métodos y Principios de Diseño OO
El estudiante deberá:
Descomponer el sistema en módulos
Definir métodos específicos por responsabilidad
Aplicar estructuras de control
Incorporar patrones de diseño
Ampliar funcionalidades del sistema
Componente teórico
1. Modularidad
Explique:
¿Qué es la modularidad?
¿Cómo mejora un sistema de control de accesos?
2. Separación de responsabilidades
Analice su sistema:
Identifique clases con múltiples responsabilidades
Proponga cómo dividirlas
3. Mantenibilidad
Explique:
¿Qué características hacen mantenible un sistema?
¿Cómo influye el diseño en la evolución del software?
4. Métodos como unidades de responsabilidad
Para cada clase:
Defina métodos claros y específicos
Evite métodos con múltiples funciones
5. Patrones de diseño (obligatorio)
Debe implementar al menos uno:
Opción 1: Strategy (recomendado)
Para definir distintas reglas de acceso
Ejemplo:
AccesoPorRol
AccesoPorPermiso
AccesoPorNivelSeguridad
Opción 2: Factory
Para crear objetos de validación de acceso
Análisis
Explique:
¿Qué problema resuelve el patrón?
¿Cómo reduce el acoplamiento?
¿Cómo mejora la extensibilidad?
6. Control del flujo del sistema
Defina el flujo:
Usuario solicita acceso
Sistema identifica rol
Sistema evalúa permisos
Sistema valida reglas de acceso
Sistema concede o deniega acceso
7. Uso de estructuras de control
Explique:
Condicionales → validación de permisos
Bucles → iteración de roles/permisos
8. Análisis crítico
Responda:
¿Qué problemas tenía el sistema antes?
¿Cómo mejora la modularidad el diseño?
¿Cómo contribuyen los patrones a la mantenibilidad?
Componente práctico (Java)
Requerimientos técnicos
El sistema debe:
Ser modular
Aplicar separación de responsabilidades
Definir métodos claros
Usar estructuras de control
Implementar al menos un patrón de diseño
Clases mínimas esperadas
Usuario
Rol
Permiso
Recurso
GestorAcceso
Funcionalidades
Crear usuarios
Asignar roles
Definir permisos
Asociar recursos
Validar acceso a recursos
Aplicación de patrón (ejemplo)
Strategy:
EstrategiaAcceso (interfaz)
Clases concretas:
AccesoPorRol
AccesoPorPermiso
Uso obligatorio
Métodos bien definidos
Condicionales
Bucles
Simulación
En el método main:
Usuario intenta acceder a un recurso
Sistema evalúa reglas
Muestra resultado
Condición clave
El sistema debe permitir: Agregar nuevas reglas de acceso, sin modificar clases existentes
Tipo de entrega
Archivo comprimido .ZIP
Código fuente en Java
Documento (análisis, diseño y justificación)
Video de máximo 5 minutos, donde se pueda mirar la cara del estudiante explicando la funcionalidad del programa y del diseño arquitectónico del software.