2. Todo diseño software debe cumplir los siguientes principios.
• Abstracción: Aislar un elemento de su contexto, para centrarse en el qué y no en el cómo.
o Abstracción de datos: Colección identificada de datos que describe un objeto. Su objetivo es encontrar una jerarquía en los datos.
o Abstracción procedimental: Secuencia identificada de instrucciones que tiene una función específica y limitada.
• Modularidad: Criterios estructurales que nos proporcionan información acerca de módulos individuales y sus interconexiones. Se busca conseguir la
mayor independencia entre módulos mediante la cohesión y el acoplamiento
• Cohesión: Mide la relación funcional entre módulos.
• Acoplamiento: Mide el nivel de dependencia entre dos módulos.
• Ocultación de la Información: Los módulos deben diseñarse de manera que la información sea inaccesible a otros módulos que no necesiten dicha
información. Directamente relacionado con Abstracción, Cohesión y Acoplamiento
• Complejidad: mide ciertos aspectos del software con el objetivo de evaluar el diseño. Se puede clasificar en:
o Intra-Modular: Interior de un modulo.
o Inter-Modular: Entre módulos.
Metodologías
Patrones y antipatrones
• Los patrones proporcionan soluciones a problemas recurrentes, facilitando la comprensión, mantenimiento y extensión, apoyando la construcción de
software de calidad. Estos patrones son: open-closed, single responsability, Liskov substitution, interface segregation, dependency inversion.
• Los antipatrones definen situaciones y costumbres que es mejor evitar. Algunos ejemplos son: God class, lava flow, spaguetti code, poltergeist, etc.
• Descomposición Funcional
• Diseño de flujo de datos:
o Utiliza el flujo de información
para derivar la estructura del
programa.
• Diseño basado en estructuras de
datos
• Orientada a objetos
• Booch
• Fusion
• RUP
Consta de 3 pasos:
1. Identificar los objetos.
2. Determinar sus atributos y
servicios.
3. Determinar las relaciones entre
objetos.
• No orientada a objetos