Diseño de software
-
Upload
david-m-martin-garcia -
Category
Software
-
view
74 -
download
0
Transcript of Diseño de software
DISEÑO DE SOFTWARE
Tiempo invertido en la fase de implementación
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