Fundamentos del Diseo de Software M C Juan

  • Slides: 41
Download presentation
Fundamentos del Diseño de Software M. C. Juan Carlos Olivares Rojas

Fundamentos del Diseño de Software M. C. Juan Carlos Olivares Rojas

Agenda Ingeniería de Software y Diseño de Sistemas Proceso del Diseño Fundamentos del Diseño

Agenda Ingeniería de Software y Diseño de Sistemas Proceso del Diseño Fundamentos del Diseño Modular Efectivo

Agenda Diseño de Datos Diseño Arquitectónico Diseño de Interfaz de Usuario Diseño Procedimental Documentación

Agenda Diseño de Datos Diseño Arquitectónico Diseño de Interfaz de Usuario Diseño Procedimental Documentación del Diseño

Ingeniería de Software y Diseño de Sistemas • El diseño es la primera parte

Ingeniería de Software y Diseño de Sistemas • El diseño es la primera parte del desarrollo de cualquier proyecto. • Etimológicamente significa componer, por lo que se obtiene la solución que habrá de implementarse. • Todas las cosas siempre tienen primero una creación mental.

Diseño de Sistemas • El diseño en proyectos informáticos presenta cuatro apartados: datos, arquitectura,

Diseño de Sistemas • El diseño en proyectos informáticos presenta cuatro apartados: datos, arquitectura, interfaz y procedimientos. • El diseño de datos se encarga de transformar el modelo de información obtenido en el proceso de análisis en estructuras de datos. Se pueden utilizar diagramas entidadrelación pero especificados a mayor detalle.

Diseño de Sistemas • El diseño arquitectónico tiene la finalidad de comprobar las relaciones

Diseño de Sistemas • El diseño arquitectónico tiene la finalidad de comprobar las relaciones con los diferentes módulos o macrorequisitos del sistema (subsistemas). • El diseño de interfaz define como se comunica el software consigo mismo y hacia el exterior. • Existe una estrecha relación entre análisis y diseño.

Diseño de Sistemas • El diseño procedimental o basado en componentes consiste en la

Diseño de Sistemas • El diseño procedimental o basado en componentes consiste en la traducción de cada uno de los elementos obtenidos en la especificación de procesos, datos y transición hacia elementos implementables a través de computadoras.

Proceso del Diseño • El proceso de diseño sirve de base para la codificación

Proceso del Diseño • El proceso de diseño sirve de base para la codificación del sistema. Se deben seguir algunas recomendaciones para su mejor desarrollo como las siguientes: • Se deben especificar todos los elementos explícitos e implícitos del modelo de análisis.

Procesos del Diseño • El diseño deber servir de guía para que cual integrante

Procesos del Diseño • El diseño deber servir de guía para que cual integrante del proyecto pueda construir y entender el software. • El diseño debe de dar una completa idea de lo que es el software. • El diseño debe presentar uniformidad e integración. Se deben definir reglas y estilos que deben seguir los miembros del equipo.

Procesos del Diseño • El diseño debe estar estructurado, de tal forma que permita

Procesos del Diseño • El diseño debe estar estructurado, de tal forma que permita cambios. • El diseño no es escribir código, ni codificar es diseñar. • Al diseñar se deben tomar en cuenta Factores de Calidad Externos (velocidad. Fiabilidad, utilidad) y Factores de Calidad Interno (abstracción, refinamiento, modularidad).

Fundamentos del Diseño • A continuación se muestra el glosario básico del diseño de

Fundamentos del Diseño • A continuación se muestra el glosario básico del diseño de proyectos de software: • Abstracción: son los niveles de resolución de problema, los cuales pueden ser alto si se especifica en lenguaje natural o bajo nivel de abstracción si tiene una implantación directa. • La abstracción puede procedimientos y control. ser de datos,

Fundamentos del Diseño • Refinamiento: es la base del diseño. Es un proceso de

Fundamentos del Diseño • Refinamiento: es la base del diseño. Es un proceso de elaboración que comienza con un nivel de abstracción alto y van descendiendo sucesivamente de nivel de abstracción hasta llegar a un nivel bajo. • Durante el proceso de refinamiento se van obteniendo detalles tanto de procedimientos como de datos obteniendo mejores soluciones más fáciles de implementar.

Fundamentos del Diseño • El refinamiento tiene como objetivos encontrar detalles de bajo nivel

Fundamentos del Diseño • El refinamiento tiene como objetivos encontrar detalles de bajo nivel que podrían ser difíciles de plasmar. • La modularidad es el atributo de software que permite un programa sea manejable intelectualmente. • El software monolítico es muy difícil de manejar. Se debe aplicar el principio de “divide y vencerás”

Fundamentos del Diseño • Los módulos son los componentes básicos de todo sistema y

Fundamentos del Diseño • Los módulos son los componentes básicos de todo sistema y tienden a satisfacer a uno o más requerimientos. • Se han definido cinco métricas para evaluar el diseño modular: capacidad de descomposición, reutilización, capacidad de comprensión, continuidad modular y protección modular.

Fundamentos del Diseño • La arquitectura del software hace referencia a la estructura global

Fundamentos del Diseño • La arquitectura del software hace referencia a la estructura global del sistema, dicha estructura es jerárquica en forma de módulos. • La arquitectura de software debe ayudar a definir como interactúan los componentes de software entre sí y las estructuras de los datos.

Fundamentos del Diseño • La jerarquía de control representa dos características: visibilidad y conectividad.

Fundamentos del Diseño • La jerarquía de control representa dos características: visibilidad y conectividad. • La visibilidad es el conjunto de componentes de un programa que pueden ser invocados o utilizados sus datos por un componente aun de manera directa. • La conectividad indica el conjunto de componentes que son accedidos de manera directa por otros componentes.

Fundamentos del Diseño • La partición estructural de una arquitectura de software puede ser

Fundamentos del Diseño • La partición estructural de una arquitectura de software puede ser horizontal: datos, procesos y control; o bien vertical definiendo una jerarquía de módulos. • Los módulos deben programarse de tal forma que los datos no estén accesibles por otros módulos.

Diseño Modular Efectivo • El diseño modular ayuda a reducir la complejidad, facilita los

Diseño Modular Efectivo • El diseño modular ayuda a reducir la complejidad, facilita los cambios y ayuda a producir soluciones más sencillas. • Los tres tipos de módulos existentes son: secuencial, incremental y paralelo. • La independencia funcional se adquiere cuando se desarrollan los conceptos de modularidad, abstracción y ocultamiento de información.

Diseño Modular Efectivo • La independencia funcional se mide en base a dos criterios:

Diseño Modular Efectivo • La independencia funcional se mide en base a dos criterios: cohesión y acoplamiento. • Cohesión: es una extensión del principio de ocultamiento de información, es deseable tener una alta cohesión. Esta se obtiene cuando un módulo realiza una tarea sencilla sin depender de otros módulos

Diseño Modular Efectivo • El acoplamiento es una medida de interconexión de los módulos.

Diseño Modular Efectivo • El acoplamiento es una medida de interconexión de los módulos. Es necesario tener un bajo acoplamiento. El acoplamiento se mide en las relaciones que guardan los módulos con sus interfaces de entrada y salida. • Hay tres tipos de acoplamiento: común, de datos y control.

Diseño de Datos • Algunas recomendaciones para el diseño de datos son: • Definir

Diseño de Datos • Algunas recomendaciones para el diseño de datos son: • Definir todas las posibles operaciones a realizar sobre los datos. • Se deben refinar las estructuras de datos hasta tener representaciones de bajo nivel.

Diseño de Datos • Se deben desarrollar bibliotecas útiles para la manipulación de datos.

Diseño de Datos • Se deben desarrollar bibliotecas útiles para la manipulación de datos. • El lenguaje de implementación debe soportar tipos de datos abstractos. • Se debe tener cuidado a la hora de diseñar diccionarios de datos, para que no se tengan “basureros de datos” en lugar de almacenes de datos.

Diseño Arquitectónico • El concepto de Arquitectura de Software tiene mucho tiempo de antigüedad,

Diseño Arquitectónico • El concepto de Arquitectura de Software tiene mucho tiempo de antigüedad, pero no fue hasta la década de los 1990 s que comenzó a utilizarse de manera formal. • Analizando los sistemas se puede observar que existen patrones que se repiten conformando lo que se conoce como estilos arquitectónicos.

Diseño Arquitectónico • Un estilo arquitectónico define un conjunto de familias de patrones de

Diseño Arquitectónico • Un estilo arquitectónico define un conjunto de familias de patrones de software con una determinada estructura y restricciones. • Generalmente los patrones de diseño y arquitectura definen soluciones para medios repetitivos. • La arquitectura de software es una abstracción del sistema que nos permite ver su estructura y su relaciones.

Diseño Arquitectónico • Para el desarrollo del Diseño Arquitectónico se recomiendan seguir los siguientes

Diseño Arquitectónico • Para el desarrollo del Diseño Arquitectónico se recomiendan seguir los siguientes pasos: • Estructuración del sistema • Modelado de control • Descomposición modular • Existen diferentes estilos arquitectónicos que a continuación se mencionan.

Diseño Arquitectónico • La Arquitectura de Flujo de Datos parte del DFD para obtener

Diseño Arquitectónico • La Arquitectura de Flujo de Datos parte del DFD para obtener una arquitectura del sistema: • Se establece el tipo de flujo de información • Se indican los límites del flujo • Se convierte el DFD en una estructura del programa

Diseño Arquitectónico • Se define la jerarquía de control mediante particionamiento. • Se refina

Diseño Arquitectónico • Se define la jerarquía de control mediante particionamiento. • Se refina la estructura resultante utilizando heurísticas de diseño. • La Arquitectura Centrada en Datos tiene como componente principal un repositorio, del cual surgen los demás componentes.

Diseño Arquitectónico • Las Arquitecturas Estratificadas son de las más utilizadas en la actualidad,

Diseño Arquitectónico • Las Arquitecturas Estratificadas son de las más utilizadas en la actualidad, dado que dividen las actividades y responsabilidades de sistemas por capas. • El software más elaborado como los sistemas operativos, software de base, sistemas distribuidos y otros maneja variantes de esta arquitectura.

Diseño Arquitectónico • El diseño se debe refinar realizando cada uno de los siguientes

Diseño Arquitectónico • El diseño se debe refinar realizando cada uno de los siguientes pasos: • Desarrollar una descripción procedimiento para cada módulo. del • Desarrollar una descripción de la interfaz para cada módulo.

Diseño Arquitectónico • Se definen las estructuras generales y globales. de datos • Se

Diseño Arquitectónico • Se definen las estructuras generales y globales. de datos • Se anotan todas limitaciones/restricciones del sistema. • Se debe refinar el diseño hasta que esté completo. Se recomienda completar la arquitectura con el Diseño de Interfaces.

Diseño de Interfaz de Usuario • El diseño de interfaces se refiere al estudio

Diseño de Interfaz de Usuario • El diseño de interfaces se refiere al estudio de las relaciones entre los usuarios y las computadoras para que un sistema se pueda ejecutar. • El diseño de una interfaz puede definir el éxito de cualquier proyecto, ya que la utilización de cualquier interfaz de usuario depende de factores humanos.

Diseño de Interfaces de Usuario • Existen algunas reglas de oro para el buen

Diseño de Interfaces de Usuario • Existen algunas reglas de oro para el buen diseño de Interfaces de Usuario: • Dar el control al usuario • Reducir la carga de memoria del usuario • Construir una interfaz consecuente

Diseño de Interfaces de Usuario • Existen cuatro modelos diferentes para el desarrollo de

Diseño de Interfaces de Usuario • Existen cuatro modelos diferentes para el desarrollo de interfaces: • Modelo de diseño: que consiste en representar el software de acuerdo a los datos, arquitectura, interfaz y procedimiento. • Modelo de Usuario: Representa el perfil del usuario (edad, cultura, etnia, educación, etc. )

Diseño de Interfaces de Usuario • Existen tres tipos de usuario: Principiantes, Esporádicos y

Diseño de Interfaces de Usuario • Existen tres tipos de usuario: Principiantes, Esporádicos y Frecuentes. • La percepción del sistema (modelo de usuario): es la idea que tienen los usuarios sobre la posible interfaz del sistema. • La imagen del sistema es un modelo que intenta mezclar lo que es la estructura del sistema con analogías de la vida real.

Diseño de Interfaces de Usuario • Las fases del proceso del desarrollo de interfaces

Diseño de Interfaces de Usuario • Las fases del proceso del desarrollo de interfaces de usuario son: • • Análisis de usuarios, tareas y entornos Diseño de la interfaz Implementación de la interfaz Validación de la interfaz

Diseño de Interfaces de Usuario • Se deben seguir recomendaciones las siguientes • Establecer

Diseño de Interfaces de Usuario • Se deben seguir recomendaciones las siguientes • Establecer los objetivos e intenciones de cada tarea. • Hacer correspondencia entre cada objetivo con una secuencia de interacción • Especificar la secuencia de acciones de tareas y subtareas

Diseño de Interfaces de Usuario • Se debe indicar el estado del sistema •

Diseño de Interfaces de Usuario • Se debe indicar el estado del sistema • Se deben definir mecanismos de control • Se debe mostrar la forma en como los mecanismos de control afectan el estado del sistema. • Se debe indicar la forma en que el usuario interpreta el estado del sistema a partir de la información presente en la interfaz.

Diseño de Interfaces de Usuario • Los principales problemas que se presentan al diseñar

Diseño de Interfaces de Usuario • Los principales problemas que se presentan al diseñar una interfaz de usuario son: • • El tiempo de respuesta del sistema Los servicios de ayuda al usuario La manipulación de información de errores El etiquetado de órdenes

Diseño Procedimental

Diseño Procedimental

Documentación del Diseño

Documentación del Diseño

¿Preguntas, dudas y comentarios?

¿Preguntas, dudas y comentarios?