Diseño de software

Fundamentos
- Conceptos
- Contexto
- Proceso
- Principios
Diseño de software
Fundamentos
- Conceptos
- Abstracción: "Es una vista de un objeto que se enfoca en la información relevante para un propósito particular e ignora la demás información"
- Mecanismos de abstracción
- Por parametrización (Centrado en los datos)
- Por especificación (Procedimientos, datos, control - Iteraciones, comportamientos dinámicos)
- Mecanismos de abstracción
- Abstracción: "Es una vista de un objeto que se enfoca en la información relevante para un propósito particular e ignora la demás información"
Diseño de software
Fundamentos
- Conceptos
-
Cohesión y acoplamiento:
- Cohesión: "El nivel de especialización que tiene un componente de software"
- Acoplamiento: "Es que tanto depende un componente de software de otros componentes"
-
Cohesión y acoplamiento:
Diseño de software
Bajo acoplamiento + Alta cohesión
Fundamentos
- Conceptos
- Descomposición y modularización: "Un software es dividido en un número de partes más pequeñas (Divide y vencerás), a estas partes les llamamos componentes y esos componentes tienen interfaces que definen la interacción con otros componentes"
- Usualmente la meta es poner diferentes funcionalidades y responsabilidades en diferentes componentes.
Diseño de software
Fundamentos
- Conceptos
- Separación de interfaces e implementaciones: "Definir una interfaz pública (Contrato) conocida por el cliente que está separada de los detalles de como el componente funciona (Encapsulación y ocultamiento de información)"
Diseño de software

Fundamentos
- Conceptos
- Suficiencia, completitud: Significa asegurar que un componente de software capture todas las características importantes de la abstracción realizada en el diseño y nada más.
- Carácter primitivo: El diseño debe ser basado en patrones que sean fáciles de implementar.
Diseño de software
Fundamentos
- Conceptos
-
Separación de intereses: Un interés es un área importante en lo que respecta al diseño de software.
- Vistas (Abstracciones para diferente tipo de público), ayuda a que cada interesado en el proyecto se enfoque en lo que lo importa y disminuye la complejidad de análisis.
-
Separación de intereses: Un interés es un área importante en lo que respecta al diseño de software.
Diseño de software
Fundamentos
- Asuntos clave a tener en cuenta en el diseño de Software
- Concurrencia (Descomponer el software en procesos, tareas, hilos), se usa para tratar temas de rendimiento, atomicidad, sincronización y programación de tareas.
- Control y administración de eventos, la organización de los datos y el flujo de los mecanismos del sistema, (Cómo se hacen los llamados entre componentes) (Call-backs)
Diseño de software
Fundamentos
- Asuntos clave a tener en cuenta en el diseño de Software
- Persistencia de datos: Cómo voy a controlar los datos longevos (Tienen una vida larga) - Memoria secundaria
- Distribución de componentes: Cómo voy a distribuir los elementos de software a través de los componentes de hardware (Computadores, redes, Maquinas virtuales), además como se comunican esos elementos (Middleware)
Diseño de software
Fundamentos
- Asuntos clave a tener en cuenta en el diseño de Software
- Gestión de excepciones y tolerancia a fallos: Cómo prevenir, tolerar y procesar errores y además como gestionar condiciones excepcionales
- Interacción y presentación: Cómo estructurar y organizar las interacciones con los usuarios y como presentar la información y la lógica de negocio (Modelo - Vista - Controlador (Servicios))
- Seguridad: Cómo prevenir accesos no autorizados, creación, cambio o borrado de datos, o negar acceso a información u otros recursos dependiendo de privilegios.
Diseño de software
Fundamentos
Diseño de software

Conceptos clave
- Concurrencia
Diseño de software
Diseño de software
By Ricardo Bermudez Osorio
Diseño de software
- 180