ingenieria de software - 6
TRANSCRIPT
-
8/19/2019 Ingenieria de Software - 6
1/27
1
ICI 542INGENIERÍA DE SOFTWARE
Dr. Cristian [email protected]
6. Diseño del software
n El proceso de aplicar distintas técnicas y principioscon el propósito de definir un dispositivo, un procesoo un sistema con suficientes detalles como parapermitir su implementación física
n Es un conjunto de pasos iterativos que permiten aldiseñador describir todos los aspectos del sistemasoftware a construir
n Se agregan detalles y se corrigen las especificacionesprevias (¿Cuales?)
-
8/19/2019 Ingenieria de Software - 6
2/27
2
6. Diseño del softwaren El modelo de análisis se transforma en un modelo de
diseñon Se definen los objetivos de diseño y se descompone
el sistemas en subsistemas (que pueden sereventualmente implementados por equiposindependientes)
n Se seleccionan estrategias para la construcción delsistema:n Plataforma hardwaren
Plataforma softwaren Estrategia de almacenamiento de datos persistentesn Flujo de control globaln Política de control de acceson Manejo de excepciones, etc.
6. Diseño del software
n Diseño arquitectónico – define la relación entre los principales elementos estructurales del sistema
n Diseño de datos – define las estructuras de datos necesarias para implementar el software
n Diseño de interfaz – describe cómo se comunica el software:
n con los usuarios
n con los sistemas con los cuales está interactuando
n consigo mismo
n Diseño procedimental – ofrece la descripción procedimentalde los componentes de software
-
8/19/2019 Ingenieria de Software - 6
3/27
3
6.1 Diseño arquitectónico
Establece el marco de trabajoestructural para el sistema:
n Identifica los componentes del sisteman Establece el control y la comunicación
entre los componentes
→ Establece la arquitectura de software→ Documento de diseño arquitectónico
6.1 Diseño arquitectónico
Actividades comunes para todos los procesos dediseño arquitectónico (independiente delenfoque utilizado):
n Estructuración del sistema – el sistema se estructuraen subsistemas (unidades de software independientes) yse identifica la comunicación entre estos
n Modelado del control – se establece el modelo
general de (relaciones de) control entre los subsistemasn Descomposición modular – cada subsistema se
descompone en módulos¡Habitualmente las actividades están entrelazadas, no
secuenciales!
-
8/19/2019 Ingenieria de Software - 6
4/27
4
6.1 Diseño arquitectónicoSubsistemas y módulos
Subsistema:
n Es un sistema por sí mismo
n Su operación no depende de los servicios suministrados por otrossubsistemas
n Se compone de módulos
n Comunica con otros subsistemas a través de su interfaz
Módulo:
n Suministra uno o más servicios a otros módulos
n Utiliza los servicios suministrados por otros módulos
n Generalmente no se considera un sistema independienten Se compone de varios componentes simples del sistema
¡o existe una distinción clara entre subsistemas ymódulos!
6.1 Diseño arquitectónicoDocumento de diseño arquitectónico
n Describe cómo se estructura el sistema en subsistemas y
cómo se estructura cada subsistema en módulos
n Consiste de representaciones gráficas de los modelos del
sistema y el texto descriptivo asociado
Lenguajes de descripción arquitectónica:
n ADL - lenguajes de descripción arquitectónican UML - lenguaje unificado de modelado
-
8/19/2019 Ingenieria de Software - 6
5/27
5
6.1 Diseño arquitectónicoModelos arquitectónicos
n Modelo estructural estático – muestra lossubsistemas y/o componentes a desarrollar, comounidades independientes
n Modelo de proceso dinámico – muestra laorganización dinámica del sistema (en ejecución)
n Modelo de interfaz – define los servicios ofrecidos por cada subsistema a través de su interfaz
n Modelo de relación – muestra las relaciones entresubsistemas (por ejemplo, el flujo de datos)
6.2 Diseño orientado aobjetos
Desarrollo orientado a objeto:
n Análisis orientado a objetos – los objetosidentificados reflejan entidades y operaciones quese asocian al problema a resolver
n Diseño orientado a objetos – “implementa” losrequerimientos identificados anteriormente,desarrollando el modelo de diseño
n Programación orientada a objetos – implementa elmodelo anterior en lenguajes de programaciónorientado a objetos
-
8/19/2019 Ingenieria de Software - 6
6/27
6
6.2 Diseño orientado a
objetos
n Cada etapa del desarrollo orientado a objetosagrega detalles a las clases existentes y creanuevas clases
n El diseño no está condicionado por detalles deimplementación del sistema
n ¡Los objetos deberían ser entidadesindependientes! ¡Los cambios en un objeto no
deberían afectar otros objetos!n El diseñador puede utilizar objetos previamente
diseñados
6.2 Diseño orientado aobjetos
Objetos concurrentes: pueden ejecutarse
concurrentemente, como procesos paralelos
(en una maquina, o como objetos
distribuidos)
n Activos – pueden cambiar su estado sin
intervención externan Pasivos – pueden cambiar su estado
solamente a través de su interfaz
-
8/19/2019 Ingenieria de Software - 6
7/27
7
6.3 Diseño con reutilización
n La reutilización de componentes es un concepto
básico en todos las áreas de ingeniería
n El software se debe considerar como un activo y
su reutilización es esencial para incrementar el
retorno de sus costos de desarrollo
n La reutilización de software debe considerarse en
los procesos de ingeniería de requerimientos ydurante el diseño
6.3 Diseño con reutilización
La ingeniería de software basada en reutilización es unenfoque de desarrollo que intenta maximizar lareutilización de software existente:
n Reutilización de aplicaciones – la aplicación seincorpora sin ningún cambio en otros sistemas o sedesarrollan familias de aplicaciones que se ejecutanen plataformas distintas (o son específicas para
necesidades específicas de clientes particulares)n Reutilización de componentes – desde subsistemas
hasta objetos simples
n Reutilización de funciones – se basa en bibliotecasestándar (el método más antiguo)
-
8/19/2019 Ingenieria de Software - 6
8/27
8
6.3 Diseño con reutilización Ventajas
n Incremento en la fiabilidad – los componentes anteriormente probados son habitualmente más confiables que los nuevoscomponentes
n Reducción en el riesgo – un componente existente da menosincertidumbre en los costos que el desarrollo de un nuevocomponente
n Utilización efectiva de especialistas – los especialistas nogastan tiempo repitiendo trabajo de rutina
n Conformidad con los estándares – los componentes
reutilizables favorecen los estándaresn Desarrollo rápido – acelera la producción de sistemas,
reduciendo el tiempo de desarrollo y validación
6.3 Diseño con reutilizaciónProblemas
n Encontrar y adaptar componentes reutilizables – loscomponentes tienen que buscarse en bibliotecas y a vecesadaptarse
n Confiar en los componentes – a veces los desarrolladoresconfían mas en su trabajo que en los componentes existentes
n Documentación asociada – existe? es completa? estáactualizada?
n Incremento en los costos de mantenimiento – a través deltiempo, los elementos reutilizables son cada vez másincompatibles con los cambios requeridos en el sistema
n Falta de herramientas CASE – el conjunto de herramientasCASE disponible no siempre permite el desarrollo conreutilización
-
8/19/2019 Ingenieria de Software - 6
9/27
9
6.3.1 Desarrollo basado en
componentesLos componentes:
n Son más abstractos que las clases de objetos
n Son proveedores independientes de servicios:n El componente es una entidad ejecutable independientemente, su
código fuente no esta disponible
n Los componentes publican su interfaz y todas las interacciones serealizan a través de ella
n Se definen a través de dos interfaces relacionadas:n Una interfaz que define los servicios que ofrece el componente
n Una interfaz que los servicios que el componente requiere
6.3.1 Desarrollo basado en
componentesProceso de desarrollo orientado a componentes
Diseñar laarquitectura del
sistemaEspecificar
componentes
Buscarcomponentes
reutilizablesIncorporar
componentesencontrados
-
8/19/2019 Ingenieria de Software - 6
10/27
10
6.3.1 Desarrollo basado encomponentes
Problemas
¡Mantenimiento y evolución!n Generalmente el código fuente de los
componentes no está disponible
n Los requerimientos cambian
n Es imposible adaptar los componentes paraque reflejan los nuevos requerimientos
6.3.1 Desarrollo basado en
componentesDesarrollo de componentes
Los componentes deben ser genéricas yreutilizables:
n Deben reflejar abstracciones estables del dominio
n Deben ocultar la forma en que se representa suestado
n Deben permitir acceso al estado y su actualización
n Deben ser independiente
-
8/19/2019 Ingenieria de Software - 6
11/27
11
6.3.1 Desarrollo basado encomponentes
Desarrollo de componentes
Compromiso reutilización – usabilidad
(generalidad - entendimiento):n Componente reutilizable: debe ofrecer una interfaz
general, con operaciones que se ajustan a las formasdiferentes en las que el componente se utilizará
n Componente utilizable: debe ofrecer una interfaz sencilla,fácil de comprender
¡La reutilización agrega complejidad y reduce lacomprensión de los componentes!
6.3.2 Familias de aplicaciones
Familia de aplicaciones: conjunto relacionado deaplicaciones que tienen una arquitectura común,de dominio específico
n Cada aplicación específica se especializa, de alguna forma
n El núcleo común se reutiliza cada vez que se requiere unanueva aplicación
n Desarrollar una nueva aplicación habitualmente implicadesarrollar algunos componentes adicionales y adaptaralgunos de los componentes, para cumplir los nuevosrequerimientos
-
8/19/2019 Ingenieria de Software - 6
12/27
12
6.3.2 Familias de aplicacionesTipos de especialización:
n Especialización de la plataforma – versiones distintas paradistintas plataformas (Windows, UNIX etc.)
n Especialización de la configuración – versiones distintas para manejar diversos dispositivos periféricos específicos
n Especialización de la funcionalidad – se desarrollandistintas versiones de la aplicación para clientes conrequerimientos específicos
6.3.2 Familias de aplicaciones
Etapas en la adaptación de una familia deaplicaciones, para crear una nueva aplicación:
n Obtener requerimientos de los stakeholders
n Elegir un miembro apropiado de la familia deaplicaciones
n Renegociar los requerimientos
n Adaptar el miembro existente
n Entregar el nuevo miembro
-
8/19/2019 Ingenieria de Software - 6
13/27
13
6.4 Diseño 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 debería diseñar las interfaces?
6.4 Diseño de la interfaz de
usuarioCaracterísticas de las interfaces GUI
n Ventana - múltiples ventanas que permiten eldespliegue simultaneo de varias informaciones
n Icono - representan de manera sugestiva variostipos de informaciones
n Menú – ofrece comandos accesibles
n Apuntador – permiten interacciones fáciles eintuitivas
n Gráfica - presentaciones gráficas, intuitivas
-
8/19/2019 Ingenieria de Software - 6
14/27
14
6.4 Diseño de la interfaz deusuario
Ventajas de las interfaces GUI
n ¿Fácil de aprender y utilizar?
n Posibilidad de ir de una tarea a otra sin perder la información
n Interacción rápida y acceso inmediatoa cualquier zona de la pantalla
6.4 Diseño de la interfaz de
usuarioEl proceso iterativo de diseño interfaces
Analizar ycomprender lasactividades del
usuario
Desarrollarprototipos en papel
Diseñar el prototipo
Evaluar el diseñocon los usuarios
Desarrollar el prototipodinámico
Prototipo ejecutable
Evaluar el diseñocon los usuarios
Implementar lainterfaz
-
8/19/2019 Ingenieria de Software - 6
15/27
15
6.4.1 Principios de diseño de
la interfaz de usuarion Familiaridad del usuario - debe utilizar términos y
conceptos cercanas a las personas que más utilizan elsistema
n Consistencia - las acciones similares deben activarse de lamisma forma
n Mínima sorpresa - el comportamiento del sistema no debe provocar sorpresa a los usuarios
n Recuperabilidad - debe incluir mecanismos pararecuperarse de los errores
n Guía al usuario - debe proveer ayuda (sensible al contexto)n Diversidad de usuarios - debe proveer características
apropiadas para cada tipo de usuarios
6.4.2 Estilos de interacción
n Manipulación directa - el usuario interactúadirectamente con los objetos (virtuales) de la pantalla
n Selección de menús - el usuario selecciona uncomando de una lista de posibilidades
n Llenado de formularios - el usuario llena loscampos de un formulario
n Lenguaje de comandos - el usuario escribecomandos y parámetros asociados
n Lenguaje natural - el usuario emite comandos enlenguaje natural
-
8/19/2019 Ingenieria de Software - 6
16/27
16
6.4.2 Interacción del usuarioManipulación directa
Ventajas:
n Interacción rápida e intuitiva
n Fácil de aprender
Inconvenientes:
n ¿Difícil de implementar?
n Adecuada solamente cuando existe una metáfora visual para tareas y objetos
Aplicaciones típicas:
n Sistemas CAD
n Videojuegos
6.4.2 Interacción del usuarioLlenado de formularios
Ventajas:
n Introducción sencilla de datos
n Fácil de aprender
Inconvenientes:
n
Requiere mucho espació en la pantallaAplicaciones típicas:
n Sistemas de gestión
-
8/19/2019 Ingenieria de Software - 6
17/27
17
6.4.2 Interacción del usuarioLenguaje de comandos
Ventajas:
n Poderoso
n Flexible
Inconvenientes:
n Difícil de aprender
n Difícil gestión de errores
Aplicaciones típicas:
n Sistemas operativos
6.4.2 Interacción del usuarioLenguaje natural
Ventajas:
n Accesible para usuarios casuales
n Fácil de ampliar
Inconvenientes:
n Lentos
n Los sistemas de comprensión de lenguaje natural
son poco fiablesAplicaciones típicas:
n Sistemas de búsqueda de información
-
8/19/2019 Ingenieria de Software - 6
18/27
18
6.4.3 Visualización de la
información
¡Separar la generación y la presentación de la
información!
n Permite cambiar la representación de la
información sin cambiar el sistema mismo
n Representaciones múltiples de los mismos datos
(un objeto modelo tiene asociados varios objetos
vistas)
6.4.3 Visualización de la
informaciónFactores para tomar en cuenta
n ¿El usuario está interesado en información precisa o en relaciones entre datos?
n ¿Qué tan rápido cambian los valores de lainformación?
n ¿Los cambios de valores se indicaran al usuariode forma inmediata?
n ¿El usuario tiene que reaccionar a los cambiosde la información?
n ¿La información es textual o numérica?
-
8/19/2019 Ingenieria de Software - 6
19/27
19
6.4.3 Visualización de lainformación
Uso de los colores
n Limitar el número de colores utilizados
n Utilizar un cambio de color para mostrar uncambio en el estado del sistema
n Utilizar el código de colores para apoyar la tareade los usuarios
n Utilizar el código de colores en una formaconsistente
n Utilizar cuidadosamente los pares de colores
6.4.3 Visualización de la
informaciónUso de los colores
Errores habituales:
n Asociar significados a colores particulares
(8% de los hombres y 1% de lasmujeres no perciben los colores)
n ¡Utilizar demasiados colores!
-
8/19/2019 Ingenieria de Software - 6
20/27
20
6.4.4 Soporte al usuario
n ¡Mensajes del sistema!
n Sistema de ayuda en línea
n Documentación suministrada junto con el
sistema
6.4.4 Soporte al usuarioDiseño del sistema de ayuda
Sistema navegable:
n Sistema con estructura de red compleja, jerárquica
n Varios puntos de entrada en el sistema de ayuda
n Cada marco de información se vincula con otrosmarcos
n La información general situada en la partesuperior de la jerarquía
n Despliegue de información en ventanasmúltiples
n Ventana historial
-
8/19/2019 Ingenieria de Software - 6
21/27
21
6.4.4 Soporte al usuarioDocumentación del usuario
n Descripción funcional
n Documentación de instalación
n Manual introductorio
n Manual de referencia
n Manual de administración
n Manual de documentación rápida, etc.
6.5 Diseño de sistemassoftware 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 crítico!
-
8/19/2019 Ingenieria de Software - 6
22/27
22
6.5 Diseño de sistemas
software de tiempo realCaracterísticas:
n El diseño está limitado por recursos(principalmente tiempo)
n Los sistemas son compactos y complejos (la partecrítica del software representa un porcentaje pequeño, pero compleja desde un punto de vistaalgorítmico)
n Las sistemas generalmente funcionan sin la presencia del usuario
6.5 Diseño de sistemassoftware de tiempo real
El sistema:
n Debe reaccionar en tiempo real a los eventosgenerados por el hardware (eventos que provienendel entorno del sistema)
n Debe emitir señales (de control) en respuesta aestos eventos
Sistemas en tiempo real:n Suaves – la operación se degrada si los resultados
no se producen en el tiempo especificado
n Duros – la operación es incorrecta si los resultadosno se producen en el tiempo especificado
-
8/19/2019 Ingenieria de Software - 6
23/27
23
6.5 Diseño de sistemas
software de tiempo realSistema de tiempo real:
n Sistema estimulo/respuesta
n Tiene que responder a estímulos que ocurren endistintos (cualquier) momentos
n Normalmente se diseñan como conjunto de procesos cooperativos concurrentes
6.5 Diseño de sistemassoftware de tiempo real
El comportamiento del sistema se define por:
n Todos los estímulos que el sistema recibe
n Las respuestas asociadas
n ¡El tiempo de respuesta!
-
8/19/2019 Ingenieria de Software - 6
24/27
24
6.5 Diseño de sistemas
software de tiempo realEstímulos – elementos centrales en el proceso de
diseño:
n Periódicos – ocurren en intervalos de tiempo
predecibles (el sistema examina un sensor en
momentos preestablecidos)
n Aperiódicos – ocurren de forma irregular
(habitualmente se indican a través del mecanismode interrupción del computador)
6.5 Diseño de sistemassoftware de tiempo real
Diseño de sistemas de tiempo real:
n Diseño de hardware de propósito especifico
n Diseño de software de tiempo real
¿Qué se implementa hardware? ¿Qué se implementa
software?¡Las decisiones de implementación
hardware/software deben retrasarse lo más que se
pueda!
-
8/19/2019 Ingenieria de Software - 6
25/27
25
6.5 Diseño de sistemas
software de tiempo realEtapas en el proceso de diseño de sistemas de tiempo real:
n Identificar estímulos que el sistema debe procesar y lasrespuestas asociadas
n Identificar las restricciones de tiempo para cadaestímulo/respuesta
n Incorporar el procesamiento de estímulos y las respuestasen varios procesos concurrentes
n Diseñar algoritmos de procesamiento para cadaestímulo/respuesta
n Diseñar un sistema de planeación que asegure que los procesos se inician a tiempo
n Integrar el sistema bajo el control de un sistema ejecutivode tiempo real
¡Proceso iterativo!
6.5 Diseño de sistemassoftware de tiempo real
Problemas en el proceso de diseño de sistemas de tiempo real:
n Los estímulos aperiódicos son impredecible, losdiseñadores deben hacer suposiciones sobre la probabilidad de que estos estímulos ocurran en unmomento determinado (¡las suposiciones pueden serincorrectas!)
n Los procesos del sistema deben ser coordinados (losmecanismos de coordinación deben asegurar la exclusiónmutua de uso de los recursos compartidos)
n No se recomienda utilizar técnicas de diseño que incluyensobrecarga de implementaciones adicionales (¡sin diseñoorientado a objeto!)
-
8/19/2019 Ingenieria de Software - 6
26/27
26
6.5 Diseño de sistemas
software de tiempo realLos sistemas operativos (ejecutivos) de tiempo real:
n Administran los subprocesos y la asignación de recursosen sistemas de tiempo real
n Inician y detienen los procesos apropiados para manejarestímulos, asignar memoria y recursos del procesador
n No incluyen recursos adicionales típicos para sistemasoperativos (como la administración de archivos)
n
No son de uso general, son orientados a sistemasespecíficos
n ¡Habitualmente se diseñan como parte del sistemamismo!
6.5 Diseño de sistemassoftware de tiempo real
n Los estímulos tienen niveles de prioridad
n El ejecutivo debe manejar dos niveles de prioridad:
n Nivel de interrupción – prioridad más alta, seasigna a procesos críticos (aperiódicos)
n Nivel de reloj – se asigna a procesos periódicos
-
8/19/2019 Ingenieria de Software - 6
27/27
6.5 Diseño de sistemas
software de tiempo realAdministrador de procesos periódicos:n Deben ejecutarse en intervalos de tiempo predefinidos
n El ejecutivo usa el reloj de tiempo real para determinar cuándo se debe ejecutar un proceso
n El reloj inicia una interrupción
n La interrupción programa el administrador de procesos, para llevar a cabo procesos periódicos
n Habitualmente el proceso de nivel de interrupción no esresponsable de la administración de procesos periódicos(¡solo de iniciarlos!)
6.5 Diseño de sistemassoftware de tiempo real
Enfoque global para el manejo deinterrupciones:
n Se guarda el estado del programa interrumpido
n Se determina la naturaleza de la interrupción
n Se atiende la interrupción
n
Se restaura el estado del programa interrumpidon Se vuelve al programa interrumpido