Sei sulla pagina 1di 22

IS-UPNC / DIARS

Semana 02

Principios del diseo del


software

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Introduccin
Concepto de diseo

IS-UPNC / DIARS

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]

o Proceso comn en la actividad humana


o Intuitivamente es el proceso que se trata de formular y evaluar
una solucin para un problema dado
o En el caso del diseo de un sistema software ser la bsqueda de
soluciones que se ajusten a los requisitos del usuario
o Actividad necesaria para conseguir un software bien acabado

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Importancia del diseo en el ciclo de


vida de un producto

Ingeniera en Sistemas Computacionales UPN Cajamarca

IS-UPNC / DIARS

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Diseo como actividad creativa


o El diseo combina

IS-UPNC / DIARS

Creatividad
Intuicin
Experiencia

Del ingeniero
del software

Guas
Mtodos
Heursticas

Del proceso
de diseo

Diseo Final

Criterios de calidad
Proceso iterativo

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Definicin de diseo de software (i)


o Es el proceso de definicin de la arquitectura software: IS-UPNC / DIARS
componentes mdulos, interfaces, procedimientos de prueba y
datos de un sistema que se crean para satisfacer unos requisitos
especificados [AECC, 1986]
o 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]
o 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]
Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Definicin de diseo de software (ii)


o Es un proceso de invencin y seleccin de programas que IS-UPNC
cumplan
/ DIARS
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]
o El diseo de software es el proceso de definir la arquitectura,
componentes, interfaces y otras caractersticas de un sistema o
componente; el resultado de ese proceso IEEE-Std. 610.12 [IEEE,
1999]
o 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]
Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Evolucin del diseo de software


o El diseo de software disciplina que evoluciona
o Primeros aos de la dcada de los 70s

IS-UPNC / DIARS

Programacin modular [Dennis, 1973]


Refinamiento descendente [Wirth, 1971]
Evolucin hacia la programacin estructurada [Dahl et al., 1972]

o Mediados de los 70s


Transformaciones de los flujos de datos [Stevens et al., 1974]
Transformaciones de la estructura de datos [Warnier, 1974], [Jackson,
1975]

o Finales de los 80s, dcada de los 90s


Diseo Orientado a Objeto (DOO) [Wirfs-Brock et al., 1990], [Gamma et
al., 1995], [Buschmann et al., 1996]

o Las diferentes tendencias en diseo han dado lugar a mtodos de


diseo
Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

IS-UPNC / DIARS

PROCESO DE DISEO DEL SOFTWARE


Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

El proceso de diseo
o El diseo es un proceso de resolucin de problemas cuyo
IS-UPNC
objetivo es encontrar y describir una forma

/ DIARS

Para implementar los requisitos funcionalesdel sistema


Respetando las restricciones impuestas por los requisitos no funcionales
Incluyendo las presupuestarias
Ajustndose a los principios generales de calidad

o El proceso de diseo es, por tanto, un proceso iterativo, mediante


el cual se va a realizar una traduccin de los requisitos en una
representacin del software.

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Diseo como toma de decisiones


o El diseador se enfrenta a una coleccin de problemas de
diseo
IS-UPNC
/ DIARS
Cada problema tiene normalmente varias soluciones alternativas
Opciones de diseo

El diseador toma una decisin de diseo para resolver cada


problema
Este proceso implica elegir la mejor opcin entre las alternativas

o Para tomar las decisiones de diseo el ingeniero software utiliza


el conocimiento que tiene de

Los requisitos
El diseo realizado hasta el momento
La tecnologa disponible
Los principios de diseo y de las buenas prcticas
Lo que ha funcionado bien en situaciones anteriores

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Objetivos de la fase de diseo


o Descomponer el sistema en subsistemas

IS-UPNC / DIARS

Identificar la arquitectura software

o Determinar las relaciones entre componentes


Identificar las dependencias entre componentes y determinar
los mecanismos de comunicacin entre componentes

o Especificar las interfaces entre los componentes


Interfaces bien definidas para facilitar la prueba y
comunicacin entre los componentes

o Describir la funcionalidad de los componentes

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Actividades del proceso de diseo (i)


o Segn Roger S. Pressman (1992)

IS-UPNC / DIARS

Diseo preliminar
Tambin llamado diseo de sistema, diseo
arquitectnico o diseo de alto nivel
Identificar los mdulos en los que puede
dividirse atendiendo a motivos de
conveniencia de implementacin

Diseo detallado
Se centra en la lgica interna de dichos
mdulos
Se ocupa del refinamiento de la
representacin arquitectnica que lleva a una
estructura de datos detallada y a las
representaciones algortmicas del software

Hay una vertiente tcnica y una vertiente de


gestin en el diseo

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Actividades del proceso de diseo (ii)


o Diseo arquitectnico

IS-UPNC / DIARS

Define la relacin entre los elementos estructurales principales del


software, los patrones de diseo que se pueden utilizar para lograr los
requisitos que se han definido para el sistema, y las restricciones que
afectan a la manera en que se pueden aplicar los patrones de diseo
arquitectnicos [Shaw y Garlan, 1996]

o Diseo de datos
Transforma el modelo del dominio de informacin creado en el anlisis en
las estructuras de datos necesarias para la implementacin del software
[Pressman, 2006]
Influencia de la estructura de datos en la estructura del programa y en la
complejidad de los procedimientos
Ocultacin de la informacin y Abstraccin
Datos bien diseados conducen a
Mejor estructura del programa
Modularidad efectiva
Reduccin de la complejidad procedimental

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Actividades del proceso de diseo (iii)


o Principios de Wasserman (1996) para el diseo de datosIS-UPNC

/ DIARS

Los principios sistemticos del anlisis aplicados a la funcin y al


comportamiento tambin deben aplicarse a los datos
Deben identificarse todas las estructuras de datos y las operaciones que se
han de realizar sobre cada una de ellas
Debe establecerse y usarse un diccionario de datos para definir el diseo
de los datos y del programa
Deben posponerse las decisiones de datos de bajo nivel hasta el diseo
detallado
La representacin de una estructura de datos slo debe ser conocida por
los mdulos que hagan uso directo de los datos contenidos en la
estructura
Se debe desarrollar una biblioteca de estructuras de datos tiles y de las
operaciones que se les pueden aplicar
El diseo del software y el lenguaje de programacin deben soportar la
especificacin y la realizacin de tipos abstractos de datos
Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Actividades del proceso de diseo (iv)


o Diseo a nivel de componentes (diseo procedimental)

IS-UPNC / DIARS

Transforma los elementos estructurales de la arquitectura del software en una


descripcin procedimental de los componentes del software
Diseo de algoritmos

o Diseo de la interfaz
Diseo de interfaces hombre-mquina para facilitar al usuario la utilizacin del
sistema
Propsito
Recoger de los usuarios la informacin del sistema y ponerla a disposicin de otros
usuarios
La interfaz cubre las entradas y las salidas

Se debe tener en cuenta la psicologa del usuario


Sobrecarga de la informacin
Complejidad de la tarea
Grado de control del sistema permitido al usuario

Ergonoma
Estudio de datos biolgicos y tecnolgicos aplicados a problemas de mutua
adaptacin entre el hombre y la mquina [RAE, 2001]

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Actividades del proceso de diseo (v)


o Por su parte D. E. Webster (1988) y L. A. Belady (1990)
IS-UPNC
hablan de

/ DIARS

Diseo de flujo ascendente (Upstream design)


Es adaptable y abstracto y tiende a corresponderse con las fases de
anlisis de requisitos y de diseo preliminar

Diseo de flujo descendente (Downstream design)


Se refiere a los mdulos, codificacin y documentacin,
correspondindose con las fases de diseo detallado e
implementacin

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

IS-UPNC / DIARS

PRINCIPIOS Y CONCEPTOS DEL DISEO DEL SOFTWARE

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Introduccin
IS-UPNC / DIARS
El comienzo de la sabidura de un programador de computadoras
est en reconocer la diferencia entre obtener un programa que
funcione y obtener uno que funcione correctamente
M. A. Jackson (1975)

o Qu criterios se pueden usar para partir el software en


componentes individuales?
o Cmo se separan los detalles de una funcin o de la estructura
de los datos de la representacin conceptual del software?
o Existen criterios uniformes que definen la calidad tcnica de un
diseo de programas?

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Principios del diseo del software


o Los principios bsicos de diseo hacen posible que el ingeniero
IS-UPNC / DIARS
del software navegue por el proceso de diseo [Pressman, 2002]

En el proceso de diseo no deber utilizarse orejeras


El diseo deber poderse rastrear hasta el modelo de anlisis
El diseo no deber inventar nada que ya est inventado
El diseo deber minimizar la distancia intelectual entre el software y el
problema, como si de misma vida real se tratara
El diseo deber presentar uniformidad e integracin
El diseo deber estructurarse para admitir cambios
El diseo deber estructurarse para degradarse poco a poco, incluso
cuando se enfrenta con datos, sucesos o condiciones de operacin
aberrantes
El diseo no es escribir cdigo y escribir cdigo no es disear
El diseo deber evaluarse en funcin de la calidad mientras que se va
creando, no despus de terminarlo
El diseo deber revisarse para minimizar los errores conceptuales
(semnticos)

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Conceptos del diseo


o Los conceptos fundamentales del diseo del software

IS-UPNC / DIARS

Proporcionan el marco de trabajo necesario para conseguir que se haga


correctamente
Favorecen la gestin de la complejidad de los sistemas software y la
consecucin de los factores de calidad que estos sistemas han de exhibir

o Los conceptos del diseo a tratar son [Pressman, 2002]

Abstraccin
Refinamiento sucesivo (descomposicin)
Ocultacin de la informacin
Modularidad
Arquitectura del software
Jerarqua de control
Divisin estructural
Estructura de datos
Procedimiento de software

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

10

Abstraccin (i)
o Definicin

IS-UPNC / DIARS

Separar por medio de una operacin intelectual las cualidades


de un objeto para considerarlas aisladamente o para
considerar el mismo objeto en su pura esencia o nocin [RAE,
2001]
La representacin de las caractersticas esenciales de algo sin
incluir antecedentes o detalles irrelevantes [Graham, 1994]
La nocin psicolgica de abstraccin permite concentrarse en
un problema a un nivel de generalizacin independiente de
los detalles de nivel inferior; la abstraccin tambin permite
trabajar con conceptos y trminos que son familiares en el
entorno del problema sin tener que transformarlos en una
estructura poco familiar [Wasserman, 1983]

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Abstraccin (ii)
o Los diseos han de ocultar o diferir los detalles de implementacin
IS-UPNC / DIARS
o Las abstracciones permiten comprender la esencia de los subsistemas
sin tener que conocer detalles innecesarios
o Las decisiones de diseo susceptibles de cambio deben ocultarse
detrs de interfaces abstractas
o 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

o Ventajas

Define y refuerza las restricciones de acceso


Facilita el mantenimiento y la evolucin de los sistemas software
Reduce los efectos laterales
Limita el impacto global de las decisiones de diseo locales
Favorece la encapsulacin, uno de los elementos de un buen diseo

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

11

Principios generales de la ingeniera del


software
Principios de Ing. Soft. Para sistemas
software Complejos

IS-UPNC / DIARS

Definicin

Abstraccin un resultado mayor

Omitir detalles no relevantes

Descomposicin

Divide y vencers

Composicin

Unir partes para obtener

Automatizacin

Automatizar el proceso de desarrollo de


software

Reutilizacin

Reutilizar desde requisitos a cdigo

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Principios generales de la ingeniera del


software

IS-UPNC / DIARS

o Estn surgiendo numerosas tcnicas y


o tecnologas con el objetivo de construir
o software ms complejo
Principios de Ing. Soft. Para sistemas
software Complejos Lneas de productos

Definicin

Abstraccin un resultado mayor

BDD, AOSE, Autonomic


Computing, MDA

Descomposicin

Aspectos

Composicin

Componentes, Servicios
Web

Automatizacin

MDA

Reutilizacin

Lneas de productos

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

12

Principios evaluativos del diseo


IS-UPNC / DIARS

Acoplamiento

Cohesin

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Acoplamiento
o Medida cualitativa del grado en el que un mdulo
est
IS-UPNC
/ DIARS
conectado a otros y al mundo exterior.

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

13

Acoplamiento
IS-UPNC / DIARS

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Acoplamiento
o Principio evaluativo

Ingeniera en Sistemas Computacionales UPN Cajamarca

IS-UPNC / DIARS

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

14

Acoplamiento
o Escoger las batallas

Ingeniera en Sistemas Computacionales UPN Cajamarca

IS-UPNC / DIARS

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Cohesin
o Medida cualitativa del grado de relacin entre los
IS-UPNC / DIARS
elementos de un mdulo

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

15

Principio evaluativo
IS-UPNC / DIARS

Un elemento es altamente cohesivo si


todos sus elementos trabajan juntos para
proporcionar algn comportamiento bien
delimitado
Grady Booch

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Cohesin y acoplamiento
IS-UPNC / DIARS

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

16

Nuestro enemigo:
IS-UPNC / DIARS

CAMBIO
Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Nuestro objetivo
o Lograr que los cambios
involucren la menor
cantidad de cdigo posible
y estn lo ms acotados
posible.

Ingeniera en Sistemas Computacionales UPN Cajamarca

IS-UPNC / DIARS

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

17

Variaciones protegidas
o Intentar ocultar/proteger de los cambios al restoIS-UPNC
del / DIARS
sistema

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Variaciones protegidas
proponemos en lugar de eso que uno comience con unaIS-UPNC
lista de
/ DIARS
decisiones de diseo difciles o con altas probabilidades de cambio.
Cada mdulo se disea entonces para ocultar dichas decisiones a
otros

o On the criteria to be used in


decomposing systems into modules,
David Parnas, 1972

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

18

Variaciones protegidas
IS-UPNC / DIARS

Cmo se hace esto?

Encapsulacin de lo que vara


Principio de inversin de la dependencia

Principio de separacin de la interfaz

Uso de datos externos


Ocultacin de la estructura (Ley de
Demeter)
Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Variaciones protegidas
IS-UPNC / DIARS

Cmo se hace esto?


Dinero cantidad= venta.CgetmPaog soe( )h.agceet eCsatnot? idadEntregada
():
//Clase acoplada con Venta y con Pago Encapsulacin de lo que vara
Dinero cantidad= venta.getCantidadEntregadaEnPago();
//Clase acoplada slo con Venta
Principio de inversin de la dependencia

Principio de separacin de la interfaz

Uso de datos externos


Ocultacin de la estructura (Ley de
Demeter)
Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

19

Variaciones protegidas
IS-UPNC / DIARS

Cmo se hace esto?

Principio abierto / cerrado

Evitar cdigo duplicado


Principio de sustitucin de
Liskov
Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

Variaciones protegidas
IS-UPNC / DIARS

Cmo se hace esto?

Principio abierto / cerrado

Evitar cdigo duplicado


Principio de sustitucin de
Liskov
Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

20

Variaciones protegidas
IS-UPNC / DIARS

o El coste de disear la proteccin de un punto de


variacin o de evolucin debe ser inferior a rehacer un
diseo simple

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

IS-UPNC / DIARS

Preguntas?

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

21

IS-UPNC / DIARS

Muchas gracias

Ingeniera en Sistemas Computacionales UPN Cajamarca

2013-2 Ing. Samuel Mestanza Alcntara sma@upnorte.edu.pe

22

Potrebbero piacerti anche