1. 9. Diseño de Software
Prof. Ramiro Estigarribia Canese
Link a la presentación
2. ¿Qué es el diseño de SW?
➔ El diseño crea una representación del software.
➔ Proporciona detalles sobre la arquitectura, estructuras
de datos, interfaces y componentes que se necesitan
para implementar el sistema.
3. Comparación entre:
Edificios y Software.
★ Vitruvio (romano/arquitecto): afirmaba que los
edificios bien diseñados son aquellos que tienen resistencia,
funcionalidad y elegancia.
Lo mismo se aplica al software.
1. Resistencia: un programa no debe tener ningún error que
impida su funcionamiento.
2. Funcionalidad: un programa debe ser apropiado para los fines
que persigue.
3. Elegancia: la experiencia de usar el programa debe
ser placentera.
4. I.S. vs Otras Ingenierías.
➔ El diseño del software cambia conforme evolucionan los
métodos, surgen mejores técnicas y se obtiene una
comprensión más amplia.
➔ Hasta hoy: las metodologías de diseño de software carecen de
profundidad, flexibilidad y exactitud de las ingenierías clásicas.
5. ➔ La importancia del diseño del software se
resume en una palabra: calidad.
➔ Es la única manera de traducir un producto terminado
a los requerimientos de los participantes.
➔ Sin diseño se corre el riesgo de obtener un sistema
inestable, que falle cuando se hagan cambios
pequeños.
Importancia del Diseño.
6. 1. Funcionalidad: Se estima al evaluar el conjunto de
características y la seguridad del sistema en su totalidad.
2. Facilidad de uso: Se valora al considerar los factores humanos,
la estética, consistencia y documentación.
3. Confiabilidad: Se evalúa al medir la frecuencia de las fallas, la
precisión de los resultados, y la habilidad para recuperarse de
las fallas.
4. Desempeño: La velocidad de procesamiento, tiempo de
respuesta, rendimiento y eficacia.
5. Soportabilidad: Facilidad de mantenimiento.
Atributos de Calidad
7. Abstracción en Sistemas.
Existen diversos grados de abstracción.
Entre mayor es: se considera una solución general.
Entre menor es: se considera una solución específica.
➔ Abstracción procedimental: Permiten describir procesos
omitiendo detalles específicos.(ej: encender automóvil)
➔ Abstracción de datos: Describe las características de un
objeto. (automóvil, no siendo necesario describir en
detalle su especificación para reconocerlo).
8. ¿Qué es la Arquitectura de Software?
➔ Representa la estructura general del software y la forma
como interactúan sus componentes.
➔ Una meta del diseño del software es obtener una
aproximación arquitectónica de un sistema.
➔ Permite que el ingeniero resuelva problemas comunes.
9. ¿Qué son Patrones de Diseño?
Brad Appleton define así: “Es una mezcla con nombre
propio de puntos de vista que contienen la esencia de una
solución demostrada para un problema”.
El objetivo de cada patrón es proporcionar una descripción
que permita determinar:
1. Si es aplicable al trabajo en cuestión.
2. Si puede volverse a usar.
3. Si sirve como guía para desarrollar un patrón distinto.
10. División de Problemas.
➔ Es un concepto de diseño que sugiere que cualquier
problema complejo puede manejarse con más facilidad
si se subdivide en elementos susceptibles de resolverse
u optimizarse de manera independiente.
➔ Al separar un problema en sus piezas más pequeñas y
por ello más manejables, se requiere menos esfuerzo y
tiempo para resolverlo.
11. ¿Qué es la Modularidad?
➔ Es la manifestación de la división de problemas.
➔ El software se divide en componentes con nombres
distintos y abordables por separado, que se integran para
satisfacer los requerimientos del problema.
➔ El software monolítico (un solo módulo) no es fácil de
entender para un ingeniero de software.
13. ➔ Las curvas de la figura son una guía al considerar la
modularidad.
➔ Deben hacerse módulos, pero con cuidado para permanecer
en la cercanía de M.
➔ Se debe buscar un número intermedio.
➔ Debe hacerse un diseño (y el programa resultante) con
módulos, de manera que el desarrollo pueda planearse con
más facilidad.
Relación entre:
Número de módulos y éxito.
14. Ocultamiento de Información.
➔ El principio del ocultamiento de información sugiere que los
módulos se “caracterizan por decisiones de diseño que se
oculten (cada una) de las demás”.
➔ En otras palabras, deben especificarse y diseñarse módulos,
de forma que la información (algoritmos y datos) contenida en
un módulo sea inaccesible para los que no necesiten de ella.
➔ La modularidad efectiva se logra definiendo módulos
independientes que intercambien sólo aquella información
necesaria para el software.
15. Resumen y Conclusiones.
➔ El objetivo del diseño del software es aplicar un conjunto de
principios, conceptos y prácticas que llevan al desarrollo de un
sistema o producto de alta calidad.
➔ La meta del diseño es crear un modelo de software que
implantará correctamente todos los requerimientos del
usuario y causará placer a quienes lo utilicen.
16. Resumen y Conclusiones.
➔ Los diseñadores deben elegir entre muchas alternativas de
diseño y llegar a la solución que mejor se adapte a las
necesidades de los participantes en el proyecto.
➔ El proceso de diseño va de una visión “panorámica” del
software a otra más cercana que define el detalle requerido
para implementar un sistema.
Cuestionario