ingenieria de software - 6

Upload: alejandro-encina

Post on 07-Jul-2018

215 views

Category:

Documents


0 download

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