Documente Academic
Documente Profesional
Documente Cultură
Objetivos
Entender el contexto del diseo de software Resaltar la importancia del diseo Revisar los criterios y puntos clave del diseo
Temas
Introduccin
Solucin a un problema de software Como producto, es un modelo o representacin de la solucin que es construida Como proceso, aplicacin de tcnicas y principios para llegar a la solucin
Introduccin
Concepto de Diseo Proceso de aplicar distintas tcnicas y principios con el propsito de definir un dispositivo, proceso o sistema con los suficientes detalles como para permitir su realizacin fsica [Taylor, 1959] Proceso comn en la actividad humana Intuitivamente es el proceso que se trata de formular y evaluar una solucin para un problema dado
Introduccin
Diseo orientado al software En el caso del diseo de un sistema software ser la bsqueda de soluciones que se ajusten a los requisitos del usuario Actividad necesaria para conseguir un software bien acabado
Introduccin
Importancia del diseo en el ciclo de vida de un producto
Introduccin
El diseo como actividad creativa, combina:
En un sentido, el diseo es la representacin de un objeto que est siendo creado. Un diseo es una informacin de base que describe aspectos de este objeto, y el proceso de diseo puede ser visto como una elaboracin sucesiva de representaciones, tales como aadir ms informacin, puntos de retorno y explorar alternativas [Webster, 1988]
Es la prctica de tomar una especificacin del comportamiento observable externamente y aadir los detalles necesarios para la implementacin actual del sistema computacional, incluyendo detalles sobre la interaccin de los usuarios, la gestin de tareas y la gestin de datos [Coad y Yourdon, 1991]
10
Es un proceso de invencin y seleccin de programas que cumplan los objetivos de un sistema software. La entrada incluye el entendimiento de los requisitos, las restricciones de entorno y los criterios de diseo. La salida del proceso de diseo est compuesta de una arquitectura de diseo que muestra como las piezas estn interrelacionadas, de especificaciones de cualquier pieza nueva y de las definiciones de cualquier dato nuevo [Stevens, 1991]
11
El diseo de software es el proceso de definir la arquitectura, componentes, interfaces y otras caractersticas de un sistema o componente; IEEE-Std. 610.12 [IEEE, 1999]
12
El diseo del software es una descripcin de la estructura del software que se va a implementar, los datos que son parte del sistema, las interfaces entre los componentes del sistema y, algunas veces, los algoritmos utilizados [Sommerville, 2005]
13
14
Una vez que se han establecido los requisitos del software, el diseo es la primera de tres actividades tcnicas: diseo, codificacin y prueba. Cada actividad transforma la informacin de forma que al final se obtiene un software validado.
15
Durante el diseo se desarrollan, revisan y se documentan los refinamientos progresivos de las estructuras de datos, de la estructura del programa y de los detalles procedimentales. El diseo de software se encuentra en una etapa relativamente temprana en su evolucin, en comparacin con otras ingenieras. Pero, ya existen tcnicas de diseo de software para poder evaluar la calidad del software.
16
El diseo de software, al igual que los mtodos de diseo de todas las ingenieras, cambian continuamente al aparecer nuevos mtodos, mejores anlisis y ampliar los conocimientos.
17
18
19
20
Sin diseo, nos arriesgamos a construir un sistema inestable, un sistema que falle cuando se realicen pequeos cambios, un sistema que sea difcil de probar, un sistema cuya calidad no pueda ser evaluada hasta ms adelante, cuando quede poco tiempo y ya sea haya gastado mucho dinero.
21
Abstraccin es el proceso o el resultado de la generalizacin de la reduccin del contenido de la informacin de un concepto o un fenmeno observable, por lo general, con el fin de conservar nicamente la informacin que es relevante para un propsito en particular. En un alto grado de abstraccin una solucin se establece en trminos generales con el lenguaje del entorno del problema.
22
En los grados de menor abstraccin se proporciona una descripcin ms detallada de la solucin En la medida en que se cambian los diferentes grados de abstraccin tenemos:
Abstraccin Procedimental: Se refiere a una secuencia de instrucciones que tiene una funcin especfica y limitada Abstraccin de Datos: Es una coleccin nombrada de datos que describe un objeto de datos Abstraccin de Control: Mecanismo de control de programa sin especificar datos internos
23
La abstraccin es un proceso mental que ignora partes de un todo selectivamente, con el fin de facilitar su comprensin. Abstraccin procedimental o funcional
La cantidad de informacin es menor. Las abstracciones permiten comprender la esencia de los subsistemas sin tener que conocer detalles innecesarios Las decisiones de diseo susceptibles de cambio deben ocultarse detrs de interfaces abstractas Los mdulos se han de disear de forma que la informacin interna del mdulo sea inaccesible a otros mdulos que no la necesitan Una solucin modular implica niveles de abstraccin Por tanto, ayuda a entender sistemas complejos
25
Estrategia de diseo descendente El diseo se refina con una jerarqua de detalles creciente Concepto muy ligado a la abstraccin
Es el procedimiento por el que se va pasando de los niveles superiores de abstraccin a los niveles inferiores, es decir, la manera en que se va aadiendo informacin de un nivel a otro
En cada paso, una o varias instrucciones del programa dado se descomponen en instrucciones ms detalladas Cada refinamiento implica decisiones de diseo
26
27
Los mdulos debern especificarse y disearse de manera que la informacin (procedimientos y datos) que est dentro de un mdulo sea inaccesible a otros mdulos que no necesiten esa informacin El ocultamiento de la informacin es un buen medio para conseguir abstraccin Restricciones de acceso
Detalle procedimental dentro del mdulo Estructura de datos local empleada por el mdulo.
28
Dentro del modelo de diseo es necesario que las clases de diseo colaboren con alguna otra. Definiciones:
Acoplamiento: La fuerza de las relaciones entre los mdulos. Cohesin: Como estn relacionados los elementos que conforman un mdulo.
29
El acoplamiento es una medida de la interconexin entre los mdulos de una estructura de software El acoplamiento depende de la complejidad de la interconexin entre los mdulos, el punto donde se realiza una entrada o referencia a un mdulo y los datos que se pasan a travs de la interfaz Minimizar el acoplamiento implica un buen diseo
Un acoplamiento bajo indica un sistema bien dividido y puede conseguirse mediante la eliminacin o reduccin de relaciones innecesarias
Acoplamiento mnimo
Ningn mdulo tiene que preocuparse de los detalles de la construccin interna del resto de los mdulos
30
31
La cohesin es la medida de la relacin funcional de los elementos de un mdulo. Organizacin de los elementos de forma que los que tengan una mayor relacin para realizar una tarea, pertenezcan al mismo mdulo y los elementos no relacionados se encuentren en mdulos separados Un subsistema o mdulo tiene un alto grado de cohesin si mantiene unidas cosas que estn relacionadas entre ellas y mantiene fuera el resto Un mdulo cohesivo lleva a cabo una sola tarea dentro de un procedimiento software
32
33
Es el atributo particular del software que permite que un programa sea manejable de manera intelectual. Se divide el software en componentes identificables y tratables por separado, denominados mdulos, que estn integrados para satisfacer los requisitos del programa.
34
La modularidad facilita:
35
Encapsulacin mediante la agrupacin y empaquetado de los elementos y los detalles internos de una abstraccin, haciendo que estos detalles sean inaccesibles. La separacin de la interfaz y la aplicacin implica la definicin de un elemento especificando una interfaz pblica, conoce a los clientes, aparte de los detalles de cmo se realiza el componente. Suficiencia e integridad. Los mtodos asociados con una clase de diseo deben enfocarse en el cumplimiento de un servicio para la clase.
36
Concurrencia La forma de descomponer el software en los procesos, tareas e hilos tratar relacionarlos con la eficiencia, la atomicidad, la sincronizacin, y dems cuestiones de programacin. Control y manejo de Eventos Cmo organizar los datos y el controlar el flujo, manejo de reactivo y temporal de los acontecimientos a travs de diversos mecanismos, tales como la invocacin implcita de llamadas y sus intentos.
37
Distribucin de Componentes Cmo distribuir el software en el hardware, cmo los componentes se comunican, cmo se puede usar una plataforma al utilizarse para hacer frente a software heterogneos. Error y Gestin de Excepciones Tolerancia a Fallos El anlisis y la gestin del riesgo son una serie de pasos que ayudan al equipo del software a comprender y a gestionar la incertidumbre.
38
Divide y conquistars Incrementar la cohesin Reducir el acoplamiento Incrementar la abstraccin Disear para reutilizar Disear con reutilizacin Disear pensando en flexibilidad Anticiparse a la obsolescencia Disear pensando en portabilidad Disear pensando en verificabilidad
39
Un buen diseo:
Hace el proyecto ms fcil Directamente enlazado con la calidad del software Minimiza el incremento de costos Hace el proyecto imposible No podr ser salvado con un buen desarrollo Deviene en un sistema inestable
Un mal diseo:
40
Resumen
El diseo de es un proceso que trata de formular y evaluar una solucin para un problema dado El diseo de software es el proceso de definir la arquitectura, componentes, interfaces y otras caractersticas de un sistema o componente. Sin diseo nos arriesgamos a construir un sistema inestable, que falle cuando se realicen pequeos cambios y que sea difcil de probar El diseo es tcnicamente la parte central de la ingeniera del software Existen criterios utilizados y puntos clave que se deben tener en cuenta en el diseo de software.
41
Preguntas?
42