Diseños de sistemas
Son las que constituyen un marco de trabajo para el diseño detallado
Subsistemas y clases
Cada uno de los componentes principales de un sistema se llama subsistema
Incluye
Descomposicion del sistema en subsistema
La definicion de los objetos de diseño
La seleccion de componentes hechos y heredados
La correspondencia entre el sistema y el hardware
El manejo de condiciones de frontera
Es la estrategia de alto nivel para resolver un problema y construir una solucion
DISEÑO
Diseño de objeto
La fase de diseño de objetos determina las definiciones completas de las clases asociaciones que se utilizaran en la implementacion , asi como las interfaces y algoritmos de los metodos utilizados para implementar las operaciones
El diseño de objetos es analogico a la fase preliminar de diseño del ciclo de vida de desarrollo de software tradicional
Controles
El diseñador debe refinar la estrategia para implementar los modelos de estados y sucesos presentes en el modelo dinamico
Implementacion directa de un mecanismo de maquina de estados
Utiliza la posicion del programa para almacenar el estado
Utilizacion de tareas concurrentes
Algoritmo
El analisis de especificaciones dice lo que hace la operacion desde el punto de vista de sus clientes y los algoritmo muestran como se hace
Selecionar estructuras de datos adecuados para algoritmo
Seleccionar algoritmo que minimicen el costo de implementar las operaciones
Asignar la responsabilidad de las operaciones a las clases adecuadas
Asociaciones
Son el pegamento de nuestro modelo de objetos, y proporcionan vias de acceso entre objetos siendo entidades conceptuales utiles para el modelado y el analisis
Patrones de Diseño
Tipos de patrones
Son formas “estandarizadas” de resolver problemas comunes de diseño en el desarrollo de software.
Conforman un amplio catálogo de problemas y soluciones
Estandarizan la resolución de determinados problemas
Estandarizan la resolución de determinados problemas
Condensan y simplifican el aprendizaje de las buenas prácticas
Proporcionan un vocabulario común entre desarrolladores
Patrones Creacionales
Estos patrones hacen hincapié en la encapsulación de la lógica de la instanciación, ocultando los detalles concretos de cada objeto y permitiéndonos trabajar con abstracciones.
Factory: Desacoplar la lógica de creación de la lógica de negocio, evitando al cliente conocer detalles de la instanciación de los objetos de los que depende.
Abstract Factory: Nos provee una interfaz que delega la creación de una serie de objetos relacionados sin necesidad de especificar cuáles son las implementaciones concretas.
Factory Method: Expone un método de creación, delegando en las subclases la implementación de este método.
Builder: Separa la creación de un objeto complejo de su estructura, de tal forma que el mismo proceso de construcción nos puede servir para crear representaciones diferentes.
Patrones Estructurales
Los patrones estructurales nos ayudan a definir la forma en la que los objetos se componen.
Adapter: Nos ayuda a definir una clase intermedia que sirve para que dos clases con diferentes interfaces puedan comunicarse.
Decorator: Permite añadir funcionalidad extra a un objeto (decora el objeto) sin modificar el comportamiento del resto de instancias.
Facade: Una fachada es un objeto que crea una interfaz simplificada para tratar con otra parte del código más compleja.
Patrones de comportamiento.
Los patrones comportamentales nos ayudan a definir la forma en la que los objetos interactúan entre ellos.
Command: Son objetos que encapsulan una acción y los parámetros que necesitan para ejecutarse.
Observer: Los objetos son capaces de suscribirse a una serie de eventos que otro objeto va a emitir, y serán avisados cuando esto ocurra.
Strategy: Permite la selección del algoritmo que ejecuta cierta acción en tiempo de ejecución.
Template Method: Especifica el esqueleto de un algoritmo, permitiendo a las subclases definir cómo implementan el comportamiento real.