Fundamentos Disenio Software
-
Upload
diego-bryan-delfin-acharte -
Category
Documents
-
view
22 -
download
0
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?