Fundamentos Disenio Software

download Fundamentos Disenio Software

of 42

Transcript of Fundamentos Disenio Software

  • 5/23/2018 Fundamentos Disenio Software

    1/42

    Diseo de Software

    Clase 1

    Fundamentos del Diseo de

    Software

    1

  • 5/23/2018 Fundamentos Disenio Software

    2/42

    Entender el contexto del diseo de software

    Resaltar la importancia del diseo

    Revisar los criterios y puntos clave del diseo

    Objetivos

    2

  • 5/23/2018 Fundamentos Disenio Software

    3/42

    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

    Temas

    3

  • 5/23/2018 Fundamentos Disenio Software

    4/42

    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

    4

  • 5/23/2018 Fundamentos Disenio Software

    5/42

    Diseo orientado al software

    Trata de solucionar un problema o implementar una

    oportunidadpor medio de un software

    Como producto, es un modelo o representacin delsoftware que es construido

    Como proceso, son las tcnicas y principios para llegar al

    correcto desarrollo del software

    Introduccin

    5

  • 5/23/2018 Fundamentos Disenio Software

    6/42

    Diseo orientado al software

    El diseo de un sistema software es la bsqueda de

    soluciones que se ajusten a los requisitos del usuario

    Actividad necesaria para conseguir un software bienacabado

    No solo requiere tcnicas formales

    Introduccin

    6

  • 5/23/2018 Fundamentos Disenio Software

    7/42

    Importancia del diseo en el ciclo de vida de un producto

    Introduccin

    7

  • 5/23/2018 Fundamentos Disenio Software

    8/42

    El diseo como actividad creativa, combina:

    Introduccin

    8

  • 5/23/2018 Fundamentos Disenio Software

    9/42

    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 (1)

    9

  • 5/23/2018 Fundamentos Disenio Software

    10/42

    Es la prctica de tomar una especificacin delcomportamiento 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 lagestin de datos [Coad y Yourdon, 1991]

    Definicin de Diseo de Software (2)

    10

  • 5/23/2018 Fundamentos Disenio Software

    11/42

    Es un proceso de invencin y seleccin de programasque 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 unaarquitectura 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]

    Definicin de Diseo de Software (3)

    11

  • 5/23/2018 Fundamentos Disenio Software

    12/42

    El diseo de software es el proceso de definir laarquitectura, componentes, interfaces y otras

    caractersticas de un sistema o componente; IEEE-Std.

    610.12 [IEEE, 1999]

    Definicin de Diseo de Software (4)

    12

  • 5/23/2018 Fundamentos Disenio Software

    13/42

    El diseo del software es una descripcin de laestructura 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]

    Definicin de Diseo de Software (5)

    13

  • 5/23/2018 Fundamentos Disenio Software

    14/42

    Dentro del ciclo de vida del desarrollo de software:

    Contexto del diseo dentro de laIngeniera de Software

    14

  • 5/23/2018 Fundamentos Disenio Software

    15/42

    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 laIngeniera de Software

  • 5/23/2018 Fundamentos Disenio Software

    16/42

    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 laIngeniera de Software

  • 5/23/2018 Fundamentos Disenio Software

    17/42

    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 laIngeniera de Software

  • 5/23/2018 Fundamentos Disenio Software

    18/42

    18

    Contexto del diseo dentro de laIngeniera de Software

  • 5/23/2018 Fundamentos Disenio Software

    19/42

    19

    Contexto del diseo dentro de laIngeniera de Software

  • 5/23/2018 Fundamentos Disenio Software

    20/42

    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. Aquel 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. Aquel diseo es menos formal y ms flexible.

    20

    Contexto del diseo dentro de laIngeniera de Software

  • 5/23/2018 Fundamentos Disenio Software

    21/42

    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

    Contexto del diseo dentro de laIngeniera de Software

  • 5/23/2018 Fundamentos Disenio Software

    22/42

    Abstraccin es el proceso o el resultado de la generalizacinde 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.

    Criterios utilizados: Abstraccin

    22

  • 5/23/2018 Fundamentos Disenio Software

    23/42

    En los grados de menor abstraccin se proporciona unadescripcin 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 deinstrucciones 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

  • 5/23/2018 Fundamentos Disenio Software

    24/42

    La abstraccin es un proceso mental que ignora partesde un todo selectivamente, con el fin de facilitar su

    comprensin.

    Abstraccin procedimental o funcional

    Te quedas con qu hace una funcin y olvidas cmo seimplementa

    Slo necesitamos conocer la sintaxis y la semntica

    24

    Criterios utilizados: Abstraccin

  • 5/23/2018 Fundamentos Disenio Software

    25/42

    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: Abstraccin

  • 5/23/2018 Fundamentos Disenio Software

    26/42

    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 informacinde 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

  • 5/23/2018 Fundamentos Disenio Software

    27/42

    27

    Criterios utilizados:Refinamiento sucesivo

  • 5/23/2018 Fundamentos Disenio Software

    28/42

    Los mdulos debern especificarse y disearse demanera 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 mediopara conseguir abstraccin

    Restricciones de acceso

    Detalle procedimental dentro del mdulo

    Estructura de datos local empleada por el

    mdulo.

    28

    Criterios utilizados:Ocultacin de la informacin

  • 5/23/2018 Fundamentos Disenio Software

    29/42

    Dentro del modelo de diseo es necesario que las clasesde 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 y cohesin

  • 5/23/2018 Fundamentos Disenio Software

    30/42

    El acoplamiento es una medida de la interconexin entre losmdulos 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 sepasan 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 relacionesinnecesarias

    Acoplamiento mnimo

    Ningn mdulo tiene que preocuparse de los detalles de la

    construccin interna del resto de los mdulos

    30

    Criterios utilizados:Acoplamiento

  • 5/23/2018 Fundamentos Disenio Software

    31/42

    31

    Criterios utilizados:Acoplamiento

  • 5/23/2018 Fundamentos Disenio Software

    32/42

    La cohesin es la medida de la relacin funcional de loselementos 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 seencuentren en mdulos separados

    Un subsistema o mdulo tiene un alto grado de cohesin si

    mantiene unidascosas 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

  • 5/23/2018 Fundamentos Disenio Software

    33/42

    33

    Criterios utilizados:Cohesin

  • 5/23/2018 Fundamentos Disenio Software

    34/42

    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

  • 5/23/2018 Fundamentos Disenio Software

    35/42

    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

    Criterios utilizados:Modularidad

  • 5/23/2018 Fundamentos Disenio Software

    36/42

    Encapsulacin mediante la agrupacin y empaquetadode los elementos y los detalles internos de una

    abstraccin, haciendo que estos detalles sean

    inaccesibles.

    La separacin de la interfaz y la aplicacin implica ladefinicin 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.

    Otros criterios utilizados

    36

  • 5/23/2018 Fundamentos Disenio Software

    37/42

    ConcurrenciaLa 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 aconteci-

    mientos a travs de diversos mecanismos,

    tales como la invocacin implcita de

    llamadas y sus intentos.

    Otros puntos del diseo

    37

  • 5/23/2018 Fundamentos Disenio Software

    38/42

    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

    Otros puntos del diseo

  • 5/23/2018 Fundamentos Disenio Software

    39/42

    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

    Principios del Diseo

    39

  • 5/23/2018 Fundamentos Disenio Software

    40/42

    Un buen diseo: Hace el proyecto ms fcil

    Directamente enlazado con la calidad del software

    Minimiza el incremento de costos

    Un mal diseo:

    Hace el proyecto imposible

    No podr ser salvado con un buen desarrollo

    Deviene en un sistema inestable

    Beneficios del diseo

    40

  • 5/23/2018 Fundamentos Disenio Software

    41/42

    El diseo de es un proceso que trata de formular yevaluar una solucin para un problema dado

    El diseo de software es el proceso de definir laarquitectura, componentes, interfaces y otrascaractersticas de un sistema o componente.

    Sin diseo nos arriesgamos a construir un sistemainestable, que falle cuando se realicen pequeoscambios y que sea difcil de probar

    El diseo es tcnicamente la parte central de laingeniera del software

    Existen criterios utilizados y puntos clave que se debentener en cuenta en el diseo de software.

    Resumen

    41

  • 5/23/2018 Fundamentos Disenio Software

    42/42

    Por qu es importante el diseo de software?

    Preguntas?