Está en la página 1de 27

ICI 542

INGENIERA DE SOFTWARE
Dr. Cristian Rusu
cristian.rusu@ucv.cl

6. Diseo del software


n

El proceso de aplicar distintas tcnicas y principios


con el propsito de definir un dispositivo, un proceso
o un sistema con suficientes detalles como para
permitir su implementacin fsica
Es un conjunto de pasos iterativos que permiten al
diseador describir todos los aspectos del sistema
software a construir
Se agregan detalles y se corrigen las especificaciones
previas (Cuales?)

6. Diseo del software


n

El modelo de anlisis se transforma en un modelo de


diseo
Se definen los objetivos de diseo y se descompone
el sistemas en subsistemas (que pueden ser
eventualmente implementados por equipos
independientes)
Se seleccionan estrategias para la construccin del
sistema:
n
n
n
n
n
n

Plataforma hardware
Plataforma software
Estrategia de almacenamiento de datos persistentes
Flujo de control global
Poltica de control de acceso
Manejo de excepciones, etc.

6. Diseo del software


n

Diseo arquitectnico define la relacin entre los


principales elementos estructurales del sistema
Diseo de datos define las estructuras de datos necesarias
para implementar el software
Diseo de interfaz describe cmo se comunica el software:
n con los usuarios
n con los sistemas con los cuales est interactuando
n consigo mismo
Diseo procedimental ofrece la descripcin procedimental
de los componentes de software

6.1 Diseo arquitectnico


Establece el marco de trabajo
estructural para el sistema:
n Identifica los componentes del sistema
n Establece el control y la comunicacin
entre los componentes
Establece la arquitectura de software
Documento de diseo arquitectnico

6.1 Diseo arquitectnico


Actividades comunes para todos los procesos de
diseo arquitectnico (independiente del
enfoque utilizado):
Estructuracin del sistema el sistema se estructura
en subsistemas (unidades de software independientes) y
se identifica la comunicacin entre estos
n Modelado del control se establece el modelo
general de (relaciones de) control entre los subsistemas
n Descomposicin modular cada subsistema se
descompone en mdulos
Habitualmente las actividades estn entrelazadas, no
secuenciales!
n

6.1 Diseo arquitectnico


Subsistemas y mdulos
Subsistema:
Es un sistema por s mismo
Su operacin no depende de los servicios suministrados por otros
subsistemas
Se compone de mdulos
Comunica con otros subsistemas a travs de su interfaz

n
n

n
n

Mdulo:
Suministra uno o ms servicios a otros mdulos
Utiliza los servicios suministrados por otros mdulos
Generalmente no se considera un sistema independiente
Se compone de varios componentes simples del sistema

n
n
n
n

o existe una distincin clara entre subsistemas y


mdulos!

6.1 Diseo arquitectnico


Documento de diseo arquitectnico
n

Describe cmo se estructura el sistema en subsistemas y


cmo se estructura cada subsistema en mdulos
Consiste de representaciones grficas de los modelos del
sistema y el texto descriptivo asociado

Lenguajes de descripcin arquitectnica:


n ADL - lenguajes de descripcin arquitectnica
n UML - lenguaje unificado de modelado

6.1 Diseo arquitectnico


Modelos arquitectnicos
n

Modelo estructural esttico muestra los


subsistemas y/o componentes a desarrollar, como
unidades independientes
Modelo de proceso dinmico muestra la
organizacin dinmica del sistema (en ejecucin)
Modelo de interfaz define los servicios ofrecidos
por cada subsistema a travs de su interfaz
Modelo de relacin muestra las relaciones entre
subsistemas (por ejemplo, el flujo de datos)

6.2 Diseo orientado a


objetos
Desarrollo orientado a objeto:
n Anlisis orientado a objetos los objetos
identificados reflejan entidades y operaciones que
se asocian al problema a resolver
n Diseo orientado a objetos implementa los
requerimientos identificados anteriormente,
desarrollando el modelo de diseo
n Programacin orientada a objetos implementa el
modelo anterior en lenguajes de programacin
orientado a objetos

6.2 Diseo orientado a


objetos
n

Cada etapa del desarrollo orientado a objetos


agrega detalles a las clases existentes y crea
nuevas clases
El diseo no est condicionado por detalles de
implementacin del sistema
Los objetos deberan ser entidades
independientes! Los cambios en un objeto no
deberan afectar otros objetos!
El diseador puede utilizar objetos previamente
diseados

6.2 Diseo orientado a


objetos
Objetos concurrentes: pueden ejecutarse
concurrentemente, como procesos paralelos
(en una maquina, o como objetos
distribuidos)
n Activos pueden cambiar su estado sin
intervencin externa
n Pasivos pueden cambiar su estado
solamente a travs de su interfaz

6.3 Diseo con reutilizacin


n

La reutilizacin de componentes es un concepto


bsico en todos las reas de ingeniera
El software se debe considerar como un activo y
su reutilizacin es esencial para incrementar el
retorno de sus costos de desarrollo
La reutilizacin de software debe considerarse en
los procesos de ingeniera de requerimientos y
durante el diseo

6.3 Diseo con reutilizacin


La ingeniera de software basada en reutilizacin es un
enfoque de desarrollo que intenta maximizar la
reutilizacin de software existente:
n Reutilizacin de aplicaciones la aplicacin se
incorpora sin ningn cambio en otros sistemas o se
desarrollan familias de aplicaciones que se ejecutan
en plataformas distintas (o son especficas para
necesidades especficas de clientes particulares)
n Reutilizacin de componentes desde subsistemas
hasta objetos simples
n Reutilizacin de funciones se basa en bibliotecas
estndar (el mtodo ms antiguo)

6.3 Diseo con reutilizacin


Ventajas
n

Incremento en la fiabilidad los componentes anteriormente


probados son habitualmente ms confiables que los nuevos
componentes
Reduccin en el riesgo un componente existente da menos
incertidumbre en los costos que el desarrollo de un nuevo
componente
Utilizacin efectiva de especialistas los especialistas no
gastan tiempo repitiendo trabajo de rutina
Conformidad con los estndares los componentes
reutilizables favorecen los estndares
Desarrollo rpido acelera la produccin de sistemas,
reduciendo el tiempo de desarrollo y validacin

6.3 Diseo con reutilizacin


Problemas
n

Encontrar y adaptar componentes reutilizables los


componentes tienen que buscarse en bibliotecas y a veces
adaptarse
Confiar en los componentes a veces los desarrolladores
confan mas en su trabajo que en los componentes existentes
Documentacin asociada existe? es completa? est
actualizada?
Incremento en los costos de mantenimiento a travs del
tiempo, los elementos reutilizables son cada vez ms
incompatibles con los cambios requeridos en el sistema
Falta de herramientas CASE el conjunto de herramientas
CASE disponible no siempre permite el desarrollo con
reutilizacin

6.3.1 Desarrollo basado en


componentes
Los componentes:
n Son ms abstractos que las clases de objetos
n Son proveedores independientes de servicios:
n

El componente es una entidad ejecutable independientemente, su


cdigo fuente no esta disponible
Los componentes publican su interfaz y todas las interacciones se
realizan a travs de ella

Se definen a travs de dos interfaces relacionadas:


n
n

Una interfaz que define los servicios que ofrece el componente


Una interfaz que los servicios que el componente requiere

6.3.1 Desarrollo basado en


componentes
Proceso de desarrollo orientado a componentes

Disear la
arquitectura del
sistema

Especificar
componentes
Buscar
componentes
reutilizables
Incorporar
componentes
encontrados

6.3.1 Desarrollo basado en


componentes
Problemas

Mantenimiento y evolucin!
n

n
n

Generalmente el cdigo fuente de los


componentes no est disponible
Los requerimientos cambian
Es imposible adaptar los componentes para
que reflejan los nuevos requerimientos

6.3.1 Desarrollo basado en


componentes
Desarrollo de componentes

Los componentes deben ser genricas y


reutilizables:
n
n

n
n

Deben reflejar abstracciones estables del dominio


Deben ocultar la forma en que se representa su
estado
Deben permitir acceso al estado y su actualizacin
Deben ser independiente

10

6.3.1 Desarrollo basado en


componentes
Desarrollo de componentes

Compromiso reutilizacin usabilidad


(generalidad - entendimiento):
n

Componente reutilizable: debe ofrecer una interfaz


general, con operaciones que se ajustan a las formas
diferentes en las que el componente se utilizar
Componente utilizable: debe ofrecer una interfaz sencilla,
fcil de comprender

La reutilizacin agrega complejidad y reduce la


comprensin de los componentes!

6.3.2 Familias de aplicaciones


Familia de aplicaciones: conjunto relacionado de
aplicaciones que tienen una arquitectura comn,
de dominio especfico
n
n

Cada aplicacin especfica se especializa, de alguna forma


El ncleo comn se reutiliza cada vez que se requiere una
nueva aplicacin
Desarrollar una nueva aplicacin habitualmente implica
desarrollar algunos componentes adicionales y adaptar
algunos de los componentes, para cumplir los nuevos
requerimientos

11

6.3.2 Familias de aplicaciones


Tipos de especializacin:
n

Especializacin de la plataforma versiones distintas para


distintas plataformas (Windows, UNIX etc.)
Especializacin de la configuracin versiones distintas
para manejar diversos dispositivos perifricos especficos
Especializacin de la funcionalidad se desarrollan
distintas versiones de la aplicacin para clientes con
requerimientos especficos

6.3.2 Familias de aplicaciones


Etapas en la adaptacin de una familia de
aplicaciones, para crear una nueva aplicacin:
n
n

n
n
n

Obtener requerimientos de los stakeholders


Elegir un miembro apropiado de la familia de
aplicaciones
Renegociar los requerimientos
Adaptar el miembro existente
Entregar el nuevo miembro

12

6.4 Diseo de la interfaz de


usuario
Es esencial para que el sistema tenga
xito!
Si no:
n Errores en el uso del sistema
n Fallas en el sistema
n Perdida de datos
n Rechazo del sistema!

Quien debera disear las interfaces?

6.4 Diseo de la interfaz de


usuario
Caractersticas de las interfaces GUI
n

n
n

Ventana - mltiples ventanas que permiten el


despliegue simultaneo de varias informaciones
Icono - representan de manera sugestiva varios
tipos de informaciones
Men ofrece comandos accesibles
Apuntador permiten interacciones fciles e
intuitivas
Grfica - presentaciones grficas, intuitivas

13

6.4 Diseo de la interfaz de


usuario
Ventajas de las interfaces GUI

n
n

Fcil de aprender y utilizar?


Posibilidad de ir de una tarea a otra sin
perder la informacin
Interaccin rpida y acceso inmediato
a cualquier zona de la pantalla

6.4 Diseo de la interfaz de


usuario
El proceso iterativo de diseo interfaces
Analizar y
comprender las
actividades del
usuario

Desarrollar
prototipos en papel

Evaluar el diseo
con los usuarios

Disear el prototipo

Desarrollar el prototipo
dinmico

Evaluar el diseo
con los usuarios

Prototipo ejecutable

Implementar la
interfaz

14

6.4.1 Principios de diseo de


la interfaz de usuario
n

n
n

Familiaridad del usuario - debe utilizar trminos y


conceptos cercanas a las personas que ms utilizan el
sistema
Consistencia - las acciones similares deben activarse de la
misma forma
Mnima sorpresa - el comportamiento del sistema no debe
provocar sorpresa a los usuarios
Recuperabilidad - debe incluir mecanismos para
recuperarse de los errores
Gua al usuario - debe proveer ayuda (sensible al contexto)
Diversidad de usuarios - debe proveer caractersticas
apropiadas para cada tipo de usuarios

6.4.2 Estilos de interaccin


n

Manipulacin directa - el usuario interacta


directamente con los objetos (virtuales) de la
pantalla
Seleccin de mens - el usuario selecciona un
comando de una lista de posibilidades
Llenado de formularios - el usuario llena los
campos de un formulario
Lenguaje de comandos - el usuario escribe
comandos y parmetros asociados
Lenguaje natural - el usuario emite comandos en
lenguaje natural

15

6.4.2 Interaccin del usuario


Manipulacin directa
Ventajas:
n
Interaccin rpida e intuitiva
n
Fcil de aprender
Inconvenientes:
n
Difcil de implementar?
n
Adecuada solamente cuando existe una metfora visual
para tareas y objetos
Aplicaciones tpicas:
n
Sistemas CAD
n
Videojuegos

6.4.2 Interaccin del usuario


Llenado de formularios

Ventajas:
n
Introduccin sencilla de datos
n
Fcil de aprender
Inconvenientes:
n
Requiere mucho espaci en la pantalla
Aplicaciones tpicas:
n
Sistemas de gestin

16

6.4.2 Interaccin del usuario


Lenguaje de comandos

Ventajas:
n
Poderoso
n
Flexible
Inconvenientes:
n
Difcil de aprender
n
Difcil gestin de errores
Aplicaciones tpicas:
n
Sistemas operativos

6.4.2 Interaccin del usuario


Lenguaje natural

Ventajas:
n
Accesible para usuarios casuales
n
Fcil de ampliar
Inconvenientes:
n
Lentos
n
Los sistemas de comprensin de lenguaje natural
son poco fiables
Aplicaciones tpicas:
n
Sistemas de bsqueda de informacin

17

6.4.3 Visualizacin de la
informacin
Separar la generacin y la presentacin de la
informacin!
n
Permite cambiar la representacin de la
informacin sin cambiar el sistema mismo
n
Representaciones mltiples de los mismos datos
(un objeto modelo tiene asociados varios objetos
vistas)

6.4.3 Visualizacin de la
informacin
Factores para tomar en cuenta

El usuario est interesado en informacin


precisa o en relaciones entre datos?
Qu tan rpido cambian los valores de la
informacin?
Los cambios de valores se indicaran al usuario
de forma inmediata?
El usuario tiene que reaccionar a los cambios
de la informacin?
La informacin es textual o numrica?

18

6.4.3 Visualizacin de la
informacin
Uso de los colores

n
n

Limitar el nmero de colores utilizados


Utilizar un cambio de color para mostrar un
cambio en el estado del sistema
Utilizar el cdigo de colores para apoyar la tarea
de los usuarios
Utilizar el cdigo de colores en una forma
consistente
Utilizar cuidadosamente los pares de colores

6.4.3 Visualizacin de la
informacin
Uso de los colores

Errores habituales:
n
Asociar significados a colores particulares
(8% de los hombres y 1% de las
mujeres no perciben los colores)
n
Utilizar demasiados colores!

19

6.4.4 Soporte al usuario


n
n
n

Mensajes del sistema!


Sistema de ayuda en lnea
Documentacin suministrada junto con el
sistema

6.4.4 Soporte al usuario


Diseo del sistema de ayuda

Sistema navegable:
n
Sistema con estructura de red compleja,
jerrquica
n
Varios puntos de entrada en el sistema de ayuda
n
Cada marco de informacin se vincula con otros
marcos
n
La informacin general situada en la parte
superior de la jerarqua
n
Despliegue de informacin en ventanas
mltiples
n
Ventana historial

20

6.4.4 Soporte al usuario


Documentacin del usuario
n
n
n
n
n
n

Descripcin funcional
Documentacin de instalacin
Manual introductorio
Manual de referencia
Manual de administracin
Manual de documentacin rpida, etc.

6.5 Diseo de sistemas


software de tiempo real
Sistema de tiempo real: sistema software cuyo
funcionamiento correcto depende de:
n Los resultados producidos por el sistema
n El tiempo en el cual se producen los
resultados
n El tiempo de respuesta es crtico!

21

6.5 Diseo de sistemas


software de tiempo real
Caractersticas:
n El diseo est limitado por recursos
(principalmente tiempo)
n Los sistemas son compactos y complejos (la parte
crtica del software representa un porcentaje
pequeo, pero compleja desde un punto de vista
algortmico)
n Las sistemas generalmente funcionan sin la
presencia del usuario

6.5 Diseo de sistemas


software de tiempo real
El sistema:
n Debe reaccionar en tiempo real a los eventos
generados por el hardware (eventos que provienen
del entorno del sistema)
n Debe emitir seales (de control) en respuesta a
estos eventos
Sistemas en tiempo real:
n Suaves la operacin se degrada si los resultados
no se producen en el tiempo especificado
n Duros la operacin es incorrecta si los resultados
no se producen en el tiempo especificado

22

6.5 Diseo de sistemas


software de tiempo real
Sistema de tiempo real:
n Sistema estimulo/respuesta
n Tiene que responder a estmulos que ocurren en
distintos (cualquier) momentos
n Normalmente se disean como conjunto de
procesos cooperativos concurrentes

6.5 Diseo de sistemas


software de tiempo real
El comportamiento del sistema se define por:
n Todos los estmulos que el sistema recibe
n Las respuestas asociadas
n El tiempo de respuesta!

23

6.5 Diseo de sistemas


software de tiempo real
Estmulos elementos centrales en el proceso de
diseo:
n Peridicos ocurren en intervalos de tiempo
predecibles (el sistema examina un sensor en
momentos preestablecidos)
n Aperidicos ocurren de forma irregular
(habitualmente se indican a travs del mecanismo
de interrupcin del computador)

6.5 Diseo de sistemas


software de tiempo real
Diseo de sistemas de tiempo real:
n Diseo de hardware de propsito especifico
n Diseo de software de tiempo real
Qu se implementa hardware? Qu se implementa
software?
Las decisiones de implementacin
hardware/software deben retrasarse lo ms que se
pueda!

24

6.5 Diseo de sistemas


software de tiempo real
Etapas en el proceso de diseo de sistemas de tiempo real:
n Identificar estmulos que el sistema debe procesar y las
respuestas asociadas
n Identificar las restricciones de tiempo para cada
estmulo/respuesta
n Incorporar el procesamiento de estmulos y las respuestas
en varios procesos concurrentes
n Disear algoritmos de procesamiento para cada
estmulo/respuesta
n Disear un sistema de planeacin que asegure que los
procesos se inician a tiempo
n Integrar el sistema bajo el control de un sistema ejecutivo
de tiempo real
Proceso iterativo!

6.5 Diseo de sistemas


software de tiempo real
Problemas en el proceso de diseo de sistemas de tiempo real:
n Los estmulos aperidicos son impredecible, los
diseadores deben hacer suposiciones sobre la
probabilidad de que estos estmulos ocurran en un
momento determinado (las suposiciones pueden ser
incorrectas!)
n Los procesos del sistema deben ser coordinados (los
mecanismos de coordinacin deben asegurar la exclusin
mutua de uso de los recursos compartidos)
n No se recomienda utilizar tcnicas de diseo que incluyen
sobrecarga de implementaciones adicionales (sin diseo
orientado a objeto!)

25

6.5 Diseo de sistemas


software de tiempo real
Los sistemas operativos (ejecutivos) de tiempo real:
n Administran los subprocesos y la asignacin de recursos
en sistemas de tiempo real
n Inician y detienen los procesos apropiados para manejar
estmulos, asignar memoria y recursos del procesador
n No incluyen recursos adicionales tpicos para sistemas
operativos (como la administracin de archivos)
n No son de uso general, son orientados a sistemas
especficos
n Habitualmente se disean como parte del sistema
mismo!

6.5 Diseo de sistemas


software de tiempo real
n
n

Los estmulos tienen niveles de prioridad


El ejecutivo debe manejar dos niveles de
prioridad:
n Nivel de interrupcin prioridad ms alta, se
asigna a procesos crticos (aperidicos)
n Nivel de reloj se asigna a procesos peridicos

26

6.5 Diseo de sistemas


software de tiempo real
Administrador de procesos peridicos:
n
n

n
n

Deben ejecutarse en intervalos de tiempo predefinidos


El ejecutivo usa el reloj de tiempo real para determinar
cundo se debe ejecutar un proceso
El reloj inicia una interrupcin
La interrupcin programa el administrador de procesos,
para llevar a cabo procesos peridicos
Habitualmente el proceso de nivel de interrupcin no es
responsable de la administracin de procesos peridicos
(solo de iniciarlos!)

6.5 Diseo de sistemas


software de tiempo real
Enfoque global para el manejo de
interrupciones:
n
n
n
n
n

Se guarda el estado del programa interrumpido


Se determina la naturaleza de la interrupcin
Se atiende la interrupcin
Se restaura el estado del programa interrumpido
Se vuelve al programa interrumpido

27

También podría gustarte