DISEÑO DE SISTEMAS IS04D2 JC - Semestre I 2025
Diagrama de temas
-
El Diseño de Sistemas tiene como objetivo proporcionar a los estudiantes los conocimientos y habilidades necesarias para diseñar y desarrollar sistemas de información eficientes, robustos y escalables. A lo largo de este curso, se explorarán las etapas fundamentales del ciclo de vida del diseño de sistemas, desde la recopilación de requisitos hasta la implementación y evaluación de soluciones tecnológicas.
-
-
En esta unidad, se introducen los principios fundamentales del diseño orientado a objetos, centrándose en los conceptos de objetos, clases y abstracción. Se explora cómo los objetos se representan a través de clases y cómo la abstracción facilita la creación de sistemas modulares y reutilizables. Además, se abordan las relaciones y asociaciones entre los objetos, incluyendo dependencias, agregación y composición, fundamentales para modelar de manera eficiente las interacciones entre componentes dentro de un sistema. Los estudiantes aprenderán cómo estas relaciones estructuran el comportamiento y la interacción de los elementos en el diseño de software.
-
Se profundiza en tres pilares fundamentales de la programación orientada a objetos: encapsulamiento, herencia y polimorfismo. Se explora cómo el encapsulamiento permite ocultar los detalles internos de un objeto, promoviendo la seguridad y la modularidad del sistema. La herencia se aborda como una técnica para crear nuevas clases basadas en clases existentes, facilitando la reutilización del código y la extensión del comportamiento. Finalmente, se analiza el polimorfismo, que permite que diferentes clases respondan de manera uniforme a la misma interfaz, promoviendo la flexibilidad y la escalabilidad en los sistemas. Estos conceptos son esenciales para el diseño de sistemas robustos, extensibles y fáciles de mantener.
-
Se presentan dos herramientas fundamentales para el modelado de sistemas orientados a objetos: Fichas CRC (Clase-Responsabilidad-Colaboración) y Diagramas de Clases Básicos. Las Fichas CRC son una técnica eficaz para identificar y organizar las clases dentro de un sistema, detallando sus responsabilidades y las colaboraciones necesarias con otras clases. Por otro lado, los Diagramas de Clases básicos son fundamentales para representar la estructura estática de un sistema, mostrando cómo las clases se relacionan entre sí mediante asociaciones, agregaciones y composiciones. Los estudiantes aprenderán a utilizar estas herramientas para diseñar y visualizar la arquitectura de un sistema de manera clara y estructurada
-
Se profundiza en el uso avanzado de Diagramas de Clases, explorando técnicas y notaciones más complejas para representar de manera detallada la estructura estática de un sistema orientado a objetos. Se abordan conceptos como clases abstractas, interfaces, relaciones de herencia y composición más sofisticadas. A través de este enfoque avanzado, los estudiantes aprenderán a crear diagramas que no solo capturen las relaciones fundamentales entre las clases, sino que también ofrezcan una representación más precisa y completa del diseño del sistema, esencial para sistemas grandes y complejos.
-
Abrió: domingo, 16 de marzo de 2025, 06:00Cerró: lunes, 24 de marzo de 2025, 23:59
-
Apertura: domingo, 16 de marzo de 2025, 06:00Cierre: lunes, 17 de marzo de 2025, 23:59
-
-
-
Este diagrama es especialmente útil para:
Visualizar la relación entre objetos y cómo se comunican.
Comprender mejor la lógica interna de un sistema desde una perspectiva colaborativa.
Identificar responsabilidades de cada objeto en un escenario específico.
Apoyar la transición del diseño al código, mostrando interacciones clave.
En esta unidad aprenderás a interpretar y construir diagramas de colaboración, identificando los elementos clave como objetos, enlaces, mensajes numerados. Además, conocerás en qué contextos es más útil aplicar este tipo de diagrama y cómo complementa otros modelos visuales en el desarrollo de software.
-
Este tipo de diagrama es útil para:
-
Entender la lógica de un proceso paso a paso.
-
Visualizar cómo los objetos colaboran en un escenario particular.
-
Detectar posibles errores o inconsistencias en el diseño antes de codificar.
-
Documentar procesos complejos en sistemas grandes.
En esta unidad aprenderás a identificar y construir diagramas de secuencia, reconociendo sus elementos clave como: objetos, líneas de vida (lifelines), activaciones y mensajes. También practicarás cómo modelar distintos casos de uso, asegurando una representación clara y precisa del comportamiento del sistema.
-
-
Apertura: sábado, 19 de abril de 2025, 00:00Cierre: martes, 29 de abril de 2025, 23:59
-
Este diagrama es útil para:
-
Modelar el comportamiento de objetos complejos que cambian de estado con frecuencia.
-
Representar sistemas que responden a eventos, como botones, sensores, interfaces o procesos automáticos.
-
Detectar condiciones críticas o errores lógicos en el diseño del flujo de estados.
-
Comprender y documentar cómo se comporta una clase, módulo o sistema a lo largo del tiempo.
En esta unidad aprenderás a identificar los estados posibles de un objeto, a modelar las transiciones que ocurren entre ellos, y a representar de forma visual su comportamiento dinámico. Además, verás cómo este diagrama se aplica tanto en el diseño de software como en sistemas de control, videojuegos, interfaces, y más.
-
-
Los principios SOLID son fundamentales para diseñar software mantenible, escalable y fácil de entender.
Estos principios ayudan a:
Crear clases y módulos con responsabilidades claras y bien definidas.
Facilitar la reutilización de código sin generar dependencias rígidas.
Mejorar la capacidad de adaptación del sistema ante cambios o nuevas funcionalidades.
Minimizar errores causados por modificaciones en el código existente.
Promover un diseño limpio, flexible y profesional en el desarrollo orientado a objetos.
-
Abrió: martes, 29 de abril de 2025, 23:59Cerró: viernes, 2 de mayo de 2025, 23:59
En esta evaluación, pondrás a prueba tus conocimientos sobre tres tipos fundamentales de diagramas utilizados en el diseño de sistemas orientados a objetos: el diagrama de colaboración, el diagrama de secuencia y el diagrama de estados. Estos diagramas son esenciales para representar la dinámica de los sistemas, permitiendo visualizar la interacción entre objetos, el orden de los mensajes, y los cambios en el estado de un objeto a lo largo del tiempo.
📍 Instrucciones: ✅ Antes de comenzar, asegúrate de revisar las guías de estudio correspondientes para comprender a fondo los conceptos y notaciones que serán evaluados.
✅ Lee cuidadosamente cada pregunta.
✅ Selecciona la opción correcta en cada caso.
✅ Algunas preguntas incluyen ejemplos gráficos o fragmentos de diagramas; analízalos con atención.🔎 Objetivo: Evaluar tu comprensión sobre el uso y la interpretación de los diagramas de colaboración, diagramas de secuencia y diagramas de estados, como herramientas clave para modelar el comportamiento dinámico de los sistemas.
⏱️ Duración: El cuestionario tiene un tiempo límite de 60 minutos. El reloj comenzará a correr una vez inicies tu intento. Asegúrate de completarlo antes de que el tiempo termine.
¿Listo para comenzar?
¡Mucho éxito! 🚀💡
-
-
-
Los patrones creacionales son soluciones reutilizables que abordan el problema de cómo crear objetos de manera flexible, eficiente y controlada, especialmente cuando la creación directa puede generar dependencia o rigidez en el código.
Estos patrones encapsulan el proceso de instanciación, permitiendo que el sistema sea más independiente de las clases concretas que utiliza y facilitando cambios, extensiones o mejoras sin alterar la estructura del software.
Entre los patrones creacionales más conocidos se encuentran:
Singleton: garantiza que una clase tenga una única instancia accesible globalmente.
Factory Method: delega la creación de objetos a subclases o métodos especializados.
Abstract Factory: proporciona una interfaz para crear familias de objetos relacionados sin especificar sus clases concretas.
Builder: separa la construcción de un objeto complejo de su representación, permitiendo diferentes configuraciones.
Prototype: crea nuevos objetos copiando una instancia existente, útil cuando la creación desde cero es costosa o compleja.
En esta unidad aprenderás a identificar cuándo y por qué aplicar cada uno de estos patrones, así como sus ventajas, desventajas y usos comunes en el desarrollo de software robusto, escalable y fácil de mantener.
-
Los patrones de comportamiento se enfocan en cómo interactúan los objetos entre sí y cómo se reparten las responsabilidades dentro del sistema, facilitando una comunicación más flexible, organizada y desacoplada.
Estos patrones ayudan a definir algoritmos, flujos de trabajo, y relaciones entre clases y objetos, promoviendo un diseño más claro y extensible. Son especialmente útiles cuando el sistema debe adaptarse fácilmente a cambios en el comportamiento o cuando se busca reducir dependencias rígidas.
Algunos de los patrones de comportamiento más utilizados son:
Observer: permite que múltiples objetos reaccionen automáticamente a cambios en otro objeto (muy usado en interfaces gráficas y sistemas de eventos).
Strategy: define una familia de algoritmos intercambiables, encapsulando cada uno y permitiendo cambiar su comportamiento en tiempo de ejecución.
Command: encapsula una solicitud como un objeto, permitiendo parametrizar acciones, deshacer operaciones o ejecutar comandos en diferentes momentos.
State: permite que un objeto altere su comportamiento cuando cambia su estado interno.
Mediator: centraliza la comunicación entre objetos para reducir las dependencias directas entre ellos.
En esta unidad aprenderás a aplicar estos patrones para mejorar la comunicación entre componentes, aumentar la reutilización de código y mantener un diseño limpio y escalable. Verás cómo estos patrones son clave en aplicaciones interactivas, sistemas de control, motores de reglas, y más.
-
Los patrones estructurales se centran en cómo se componen las clases y los objetos para formar estructuras más grandes y flexibles, sin comprometer la eficiencia o la claridad del sistema.
Estos patrones ayudan a organizar y optimizar las relaciones entre entidades, facilitando la reutilización de código, la reducción de dependencias directas y la adaptación de interfaces incompatibles. Son especialmente útiles cuando se busca mejorar la arquitectura del software sin alterar su comportamiento.
Entre los patrones estructurales más comunes se encuentran:
Adapter: permite que dos interfaces incompatibles trabajen juntas mediante una clase intermediaria.
Decorator: agrega responsabilidades adicionales a un objeto de forma dinámica, sin modificar su estructura.
Composite: compone objetos en estructuras jerárquicas (como árboles), permitiendo tratarlos de manera uniforme.
Facade: proporciona una interfaz simplificada para acceder a un conjunto complejo de clases o subsistemas.
Proxy: controla el acceso a un objeto, agregando funcionalidades como control de acceso, carga diferida o registro.
En esta unidad aprenderás a identificar cuándo aplicar cada patrón estructural, cómo integrarlos en el diseño de tus aplicaciones, y qué beneficios aportan en términos de organización, legibilidad y mantenimiento. Estos patrones son fundamentales en sistemas con arquitecturas complejas, interfaces múltiples o requisitos de extensibilidad.
-
Estos diagramas pertenecen a la vista estructural del sistema y son fundamentales para comprender cómo se organiza, distribuye y despliega una aplicación en el mundo real.
El Diagrama de Componentes permite representar la estructura modular del software, mostrando cómo se agrupan las clases y se relacionan entre sí a través de interfaces.
El Diagrama de Paquetes se utiliza para organizar y simplificar el modelo, agrupando elementos relacionados dentro de contenedores lógicos o “paquetes”, lo cual facilita la comprensión y el mantenimiento del sistema.
El Diagrama de Despliegue muestra cómo se distribuyen físicamente los componentes del sistema en el hardware, es decir, qué artefactos se ejecutan en qué nodos, permitiendo visualizar la arquitectura de ejecución.
En esta unidad aprenderás a identificar los componentes clave de un sistema, a organizarlos en paquetes coherentes, y a representar cómo se despliegan sobre una infraestructura física. Estos diagramas son especialmente útiles en proyectos de software empresarial, aplicaciones distribuidas, sistemas en red y entornos de producción reales.
-
Figma es una herramienta de diseño colaborativo basada en la web, utilizada ampliamente para la creación de interfaces de usuario (UI), experiencias de usuario (UX) y prototipos interactivos. Pertenece a la vista de diseño del sistema y es esencial para conceptualizar y validar visualmente cómo lucirá y funcionará una aplicación antes de ser desarrollada.
Figma permite diseñar pantallas, componentes reutilizables, flujos de navegación y prototipos interactivos, lo que facilita la comunicación entre diseñadores, desarrolladores y otros miembros del equipo. Su funcionalidad en la nube permite la colaboración en tiempo real, haciendo posible que múltiples usuarios trabajen sobre un mismo proyecto simultáneamente.
Además, Figma ofrece una estructura de trabajo basada en capas, marcos y componentes, lo cual fomenta la organización y reutilización eficiente del diseño. Esto es especialmente útil para mantener la coherencia visual y funcional en proyectos grandes y complejos.
En esta unidad aprenderás a utilizar Figma para diseñar interfaces intuitivas, a crear prototipos navegables que simulen el comportamiento real de la aplicación, y a colaborar efectivamente en entornos de desarrollo ágil. Esta herramienta resulta fundamental en etapas tempranas del desarrollo de software, así como en la validación de ideas y pruebas con usuarios finales.
-
Apertura: martes, 10 de junio de 2025, 00:00Cierre: miércoles, 11 de junio de 2025, 23:59
Estimados Estudiantes
En este espacio se debe subir el taller "DISEÑO DE SISTEMA UTILIZANDO UML II" - Entrega Final
-
-