Sunteți pe pagina 1din 42

Diseo de Software

Clase 1
Fundamentos del Diseo de
Software
1
Entender el contexto del diseo de software
Resaltar la importancia del diseo
Revisar los criterios y puntos clave del diseo
Objetivos
2
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
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
Diseo orientado al software
Trata de solucionar un problema o implementar una
oportunidad por medio de un software
Como producto, es un modelo o representacin del
software que es construido
Como proceso, son las tcnicas y principios para llegar al
correcto desarrollo del software
Introduccin
5
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 bien
acabado
No solo requiere tcnicas formales

Introduccin
6
Importancia del diseo en el ciclo de vida de un producto
Introduccin
7
El diseo como actividad creativa, combina:
Introduccin
8
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
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]
Definicin de Diseo de Software (2)
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]
Definicin de Diseo de Software (3)
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]
Definicin de Diseo de Software (4)
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]
Definicin de Diseo de Software (5)
13
Dentro del ciclo de vida del desarrollo de software:
Contexto del diseo dentro de la
Ingeniera de Software
14
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
Contexto del diseo dentro de la
Ingeniera de Software
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.
Criterios utilizados: Abstraccin
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
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: Abstraccin
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:
Refinamiento sucesivo
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:
Ocultacin de la informacin
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 y cohesin
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:
Acoplamiento
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:
Cohesin
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
Criterios utilizados:
Modularidad
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.
Otros criterios utilizados
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 aconteci-
mientos a travs de diversos mecanismos,
tales como la invocacin implcita de
llamadas y sus intentos.
Otros puntos del diseo
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
Otros puntos 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
Principios del Diseo
39
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
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.

Resumen
41
Por qu es importante el diseo de software?

Preguntas?
42

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