Sunteți pe pagina 1din 42

Diseo de Software

Clase 1 Fundamentos del Diseo de Software

Objetivos

Entender el contexto del diseo de software Resaltar la importancia del diseo Revisar los criterios y puntos clave del diseo

Temas

Introduccin Fundamentos del Diseo de Software


Definicin del Diseo de Software Contexto del diseo dentro de la Ingeniera de Software Criterios utilizados Puntos clave del diseo

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:

Definicin de Diseo de Software (1)

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]

Definicin de Diseo de Software (2)

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

Definicin de Diseo de Software (3)

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

Definicin de Diseo de Software (4)

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

Definicin de Diseo de Software (5)

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

Contexto del diseo dentro de la Ingeniera de Software

Dentro del ciclo de vida del desarrollo de software:

14

Contexto del diseo dentro de la Ingeniera de Software

El diseo es el primer paso de la fase de desarrollo de cualquier producto o sistema de ingeniera.

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.

El diseo es tcnicamente la parte central de la ingeniera del software

15

Contexto del diseo dentro de la Ingeniera de Software

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

Contexto del diseo dentro de la Ingeniera de Software

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

Contexto del diseo dentro de la Ingeniera de Software

18

Contexto del diseo dentro de la Ingeniera de Software

19

Contexto del diseo dentro de la Ingeniera de Software


Dentro de las Metodologas El proceso de software dirigido por un plan es aquel donde todas las actividades del proceso se planean por anticipado y el avance se mide contra dicho plan. Aqu el diseo es ms estructurado y formal. En cambio un proceso gil tiene una planeacin incremental y es ms fcil de modificar el proceso para reflejar los requerimientos cambiantes del cliente. Aqu el diseo es menos formal y ms flexible.

20

Contexto del diseo dentro de la Ingeniera de Software

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

Criterios utilizados: Abstraccin

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

Criterios utilizados: Abstraccin


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

Criterios utilizados: Abstraccin

La abstraccin es un proceso mental que ignora partes de un todo selectivamente, con el fin de facilitar su comprensin. Abstraccin procedimental o funcional

Te quedas con qu hace una funcin y olvidas cmo se implementa

Slo necesitamos conocer la sintaxis y la semntica


24

Criterios utilizados: Abstraccin


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

Criterios utilizados: Refinamiento sucesivo

Estrategia de diseo descendente El diseo se refina con una jerarqua de detalles creciente Concepto muy ligado a la abstraccin

El refinamiento es un concepto complementario 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

Criterios utilizados: Refinamiento sucesivo

27

Criterios utilizados: Ocultacin de la informacin

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

Criterios utilizados: Acoplamiento y cohesin


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

Criterios utilizados: Acoplamiento


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

Criterios utilizados: Acoplamiento

31

Criterios utilizados: Cohesin


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

Criterios utilizados: Cohesin

33

Criterios utilizados: Modularidad


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

Criterios utilizados: Modularidad

La modularidad facilita:

Los factores de calidad del software


Extensibilidad: interfaces abstractas, bien definidas Reusabilidad: bajo acoplamiento, alta cohesin Portabilidad: oculta las dependencias mquina

La calidad de los diseos software


Permite reducir la complejidad del sistema global mediante arquitecturas software descentralizadas Incrementa la escalabilidad mediante el soporte al desarrollo independiente y concurrente por varias personas

35

Otros criterios utilizados

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

Otros puntos del diseo

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

Otros puntos del diseo

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

Principios del Diseo

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

Beneficios del diseo

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?

Por qu es importante el diseo de software?

42

S-ar putea să vă placă și