Arquitecturas y Calidad de Software:...

36
1 Arquitecturas y Calidad de Software: Tactics Humberto Cervantes Maceda Abril 2008 V1.0

Transcript of Arquitecturas y Calidad de Software:...

Page 1: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

1

Arquitecturas y Calidad de Software: Tactics

Humberto Cervantes MacedaAbril 2008

V1.0

Page 2: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

2

Introduciendo las Tácticas

¿ Qué son las tácticas ?Son decisiones de diseño que influencian el control de la respuesta de un atributo de calidad.

Las tácticas buscan controlar respuestas a estímulos

Las tácticas que se presentan a continuación han sido usadas por los arquitectos durante años

Consideraciones adicionalesLas tácticas pueden organizarse de forma jerárquica donde cada táctica refina aquella de la cual se derivaLos patrones arquitectónicos empaquetan a las tácticas.

Un patrón puede empaquetar varias tácticas

Page 3: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

3

Disponibilidad

RecordandoDisponibilidad: Se concentra en las fallas del sistema y consecuencias asociadas

VocabularioUn problema (failure) ocurre cuando un sistema deja de entregar un servicio de acuerdo a la especificación. El problema es observable por los usuarios.Una falla (fault) o una combinación de ellas puede causar un problema. No son observables por usuarios.La recuperación o reparación es un aspecto importante en la disponibilidad

Las tácticas que se presentan tratan de evitar que las fallas se vuelvan problemas o bien limitar los efectos de las fallas para facilitar la reparación

Page 4: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

4

Tácticas de disponibilidad

Escenarios generales de disponibilidad

Objetivo de tácticas de control de disponibilidad

Page 5: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

5

Tácticas de disponibilidad (2)

Detección de fallasPing / echo

Un componente emite un ping y espera recibir un eco en un tiempo definido. Generalmente usado para asegurarse si el canal de comunicación funciona adecuadamente o si distintos participantes de una colaboración están presentes.

Latido (heartbeat)Un componente emite una señal de latido de forma periódica y otro componente la escucha. Si no se recibe el latido, se asume que el componente falló y se notifica a un componente de corrección. El latido puede además cargar datos.

ExcepcionesLas excepciones permiten reconocer fallas

Page 6: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

6

Tácticas de disponibilidad (3)

Recuperación de fallasConsisten en prepararse para la recuperación y realizar la reparación del sistema.Voto

Varios procesos que reciben entradas equivalentes realizan un calculo y envían el resultado a un votante. Si el votante detecta un comportamiento erróneo de un proceso, lo declara fallido.

Redundancia activaVarios componentes redundantes responden a eventos de forma paralela, es decir, todos están en el mismo estado. La respuesta de uno de los componentes es usada y las demás desechadas. Si ocurre una falla, el tiempo de recuperación es muy corto.

Es necesario un mecanismo de sincronización para asegurar que los mensajes enviados a uno de los componentes redundantes lleguen a todos

Page 7: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

7

Tácticas de disponibilidad (4)

Recuperación de fallas (2)Redundancia pasiva

Un componente (primario) responde a eventos e informa a otros componentes (backups) de actualizaciones que deban realizar en su estado. Si ocurre una falla en el primario, el sistema debe asegurar que el estado del backup sea suficientemente reciente antes de que tome el mando.

La sincronización es responsabilidad del componente primario

RepuestoUna plataforma de repuesto en reposo es configurada para remplazar componentes que fallan. Debe ser rebooteada a la configuración adecuada y el estado debe ser inicializado cuando ocurre una falla.

La realización de checkpoints y el registro en bitácora de los cambios del estado permiten llevar al repuesto al estado correcto.

Page 8: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

8

Tácticas de disponibilidad (5)

Recuperación de fallas (3)Operación en “sombra”

Un componente que falló previamente puede ejecutarse en “modo sombra” por un periodo para asegurarse de su buen funcionamiento antes de que se restaure el servicio.

Re-sincronización de estadoLas tácticas de redundancia activa y pasiva requieren que el estado del componente sea restablecido antes de que retome servicio. Existen distintos enfoques, pero es preferible que la restauración se haga con un solo mensaje.

Checkpoint / rollbackUn checkpoint es un registro de un estado consistente creado de forma periódica o en respuesta a eventos específicos. Si un sistema falla de manera inusual con un estado que se puede detectar como inconsistente, se puede restaurar usando un checkpoint y una bitácora de transacciones que ocurrieron a partir de la falla.

Page 9: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

9

Tácticas de disponibilidad (6)

Prevención de fallasRetiro de servicio

Esta táctica implica el retiro a nivel de la operación de un componente del sistema para realizar actividades de prevención de fallas. El retiro puede ser automático o manual, y en ambos casos el sistema debe ser diseñado para soportar esto.

TransaccionesUna transacción es la agrupación de varios pasos secuenciales de tal forma que se puedan deshacer de un solo golpe. Se usan para evitar que queden datos afectados si un paso del proceso falla y para evitar colisiones entre hilos simultáneos que acceden recursos compartidos.

Monitor de procesosCuando se detecta una falla en un proceso, un proceso de monitoreo puede retirar el proceso defectuoso y crear una nueva instancia de este a un estado apropiado.

Page 10: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

10

Tácticas de disponibilidad (7)

Resumen de tácticas

Page 11: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

11

Modificabilidad

RecordandoLa modificabilidad se enfoca en el costo del cambio. Se concentra en

Qué artefacto puede cambiar y cómo puede cambiarCuándo ocurre el cambio y quien lo hace

Escenarios generales de modificabilidad

Page 12: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

12

Tácticas de modificabilidad (1)

Objetivo tácticas de modificabilidad

Tacticas organizadas de acuerdo a objetivosLocalizar modificaciones: Reducción de cantidad de módulos afectados por un cambioPrevenir efecto de ondas: Limitar modificaciones a ciertos módulosDeferir tiempo de ligado: Controlar tiempos y costos de implantación

Page 13: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

13

Tácticas de modificabilidad (2)

Localización de modificacionesMantener coherencia semántica

Se refiere a relaciones entre responsabilidades de un módulo. El objetivo es que estas responsabilidades trabajen juntas sin depender mucho de otros módulos. Se puede lograr al abstraer servicios comunes (ej. middleware)

Anticipar cambios esperadosLa asignación de responsabilidades de los módulos se puede hacer evaluando los cambios previstos con el fin de evitar modificar demasiados módulos

Generalizar el móduloEl módulo es configurado por parámetros o un lenguaje

Limitar opciones posiblesLas modificaciones pueden afectar muchos módulos. Esto se puede limitar mediante la restricción de posibles opciones. Ej. plugin de navegador.

Page 14: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

14

Tácticas de modificabilidad (3)

Prevención de efecto de ondaUn “efecto de onda” es la necesidad de realizar cambios a módulos que no se ven afectados directamente por el cambio.Tipos de dependencias entre módulos

Sintaxis de datos enviados o recibidos y de interfacesSemántica de datos y servicios (interfaces)Secuencia de datos y de controlIdentidad de interfaz (A tiene varias interfaces, B espera una en particular)Emplazamiento. Un módulo espera encontrar a otroCalidad de servicio / datos provistos (ej. precisión)Presencia de AComportamiento con respecto a recursos

Page 15: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

15

Tácticas de modificabilidad (4)

Prevención de efecto de onda (2)Encapsulamiento

Responsabilidades públicas disponibles a través de interfaces con el fin de evitar propagación de cambios

Conservación de interfaces existentesSe pueden agregar interfaces, adaptadores, substitutos de interfaz requerida que debe ser borrada

Restringir rutas de comunicaciónMinimizar número de módulos con quien que consumen datos producidos por un modulo

Uso de intermediarioRepositorios (datos), patrones de diseño diversos (fachada, puente, mediador), trader, administrador de recursos

Dependencias entre componentes que no sean semánticas

Page 16: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

16

Tácticas de modificabilidad (5)

Retraso de tiempo de ligadoEl retrasar el tiempo de ligado permite satisfacer el momento de implantación del cambio y el hecho de que sea gente que no desarrolla quien los haga

Algunas tácticasRegistro en tiempo de ejecuciónArchivos de configuraciónPolimorfismoRemplazo de componentes en tiempo de cargadoAdherencia a protocolos definidos para ligado en tiempo de ejecución

Page 17: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

17

Tácticas de modificabilidad (6)

Resumen de tácticas

Page 18: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

18

Desempeño

Escenarios generales de desempeño

Page 19: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

19

Tácticas de desempeño

RecordandoEl objetivo de las tácticas de desempeño es generar la respuesta a un evento que llega al sistema dentro de un tiempo definido

La latencia es el tiempo entre la llegada y la generación de la respuesta

Cuando llega un evento, el sistema lo procesa o está bloqueado

Dos contribuyentes básicos al tiempo de respuesta son el demanda de recursos y el tiempo bloqueado

Tres categorías de tácticasDemanda, administración y arbitraje de recursos

Page 20: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

20

Tácticas de desempeño (2)

Demanda de recursosSe puede reducir la latencia mediante la reducción de recursos requeridos para procesar los eventosAumento de eficiencia computacional

Mejora de algoritmosReducción de encabezados (overhead)

Ej. Reducción de intermediariosAdministrar cantidad de eventos

Ej. Reducción de tiempo de muestreo de variables produce menos eventos

Control de frecuencia de muestreoEj. Poleo menos frecuente de colas de eventos que han llegado al sistema (para eventos que llegan al sistema)

Limitar tiempos de ejecuciónEj. número de iteraciones de algorítmo

Limitar tamaño de colas

Page 21: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

21

Tácticas de desempeño (3)

Administración de recursosAún si demanda de recursos no se puede controlar, su administración puede afectar el tiempo de respuestaIntroducir concurrencia

Procesamiento paralelo de peticiones puede permitir reducción de tiempo bloqueado. Concurrencia se puede complementar con balanceo de carga.

Mantener copias múltiples de datos o cálculosEj. realizar cálculos en clientes pesados, caches (pero hay que tener cuidado con sincronización)

Aumentar recursos disponiblesProcesadores más veloces, más memoria, redes más rápidas... Se debe sin embargo hacer una evaluación del costo incurrido.

Page 22: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

22

Tácticas de desempeño (4)

Arbitraje de recursosEn el momento en que hay competencia por un recurso, este debe ser calendarizado. El arquitecto debe escoger una estrategia de calendarización apropiada.Una política de calendarización se compone de dos partes: asignación de prioridad y despacho.

La asignación puede ser tan simple como FIFO o bien estar atada a la petición o su significado semántico

Políticas de calendarizaciónFIFOCalendarización con prioridad fijaCalendarización con prioridad dinámicaPrioridad estática

Page 23: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

23

Tácticas de desempeño (5)

Resumen de tácticas

Page 24: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

24

Seguridad

Escenarios generales de seguridad

Page 25: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

25

Tácticas de seguridad

Categorías de tácticas de seguridadResistencia a los ataquesDetección de ataquesRecuperación de ataques

Objetivo de las tácticas de seguridad

Page 26: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

26

Tácticas de seguridad (2)

Resistencia a los ataquesAutentificación de usuarios

Passwords, certificados digitales, etc...Autorización de usuarios

Significa asegurar que un usuario autentificado tiene derechos de acceso y modificación a datos y servicios

Patrones de control de accesoMantenimiento de confidencialidad de datos

Aplicación de encriptamiento a lazos de comunicaciónMantenimiento de integridad

Información redundante, checksums...Limitar exposición

Limitar servicios asignados a cada hostLimitar acceso

Ej. Firewalls

Page 27: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

27

Tácticas de seguridad (3)

Detección de ataquesDetección de intrusos

Sistema de detección de intrusos.

Recuperación de ataquesRestauración de estado

Tácticas se empalman con las de disponibilidad

Identificación de ataquesMantenimiento de traza para auditorías. La traza contiene una lista de transacciones junto con identificación de información.

Page 28: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

28

Tácticas de seguridad (4)

Resumen de tácticas

Page 29: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

29

Facilidad de prueba

Escenarios generales de facilidad de prueba

Page 30: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

30

Tácticas de facilidad de prueba

El objetivo de las tácticas de facilidad de prueba es facilitar las pruebas cuando un incremento en el desarrollo es completado

Categorías de las tácticasProveer entradas y salidasMonitoreo interno

Page 31: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

31

Tácticas de facilidad de prueba (2)

Administración de entradas y salidas para pruebasGrabación / reproducción

Captura de información que cruza una interfaz que se usa como entrada para una prueba

Separación de interfaz e implementaciónFacilita la substitución de implmentaciones para fines de pruebas. En particular reemplazo por stubs

Interfaces de prueba especializadasInterfaces distintas a las interfaces funcionales de los componentes que facilitan la realización de pruebas

Page 32: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

32

Tácticas de facilidad de prueba (3)

Monitoreo internoMonitores incorporados

Se pueden introducir interfaces de monitoreoEj: JMX

Resumen de tácticas de facilidad de prueba

Page 33: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

33

Usabilidad

Escenarios generales de usabilidad

Page 34: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

34

Tácticas de usabilidad

La usabilidad se enfoca en que tan sencillo es para el usuario realizara una tarea deseada y el tipo de soporte que el sistema le provee al usuario

Dos tipos de tácticas soportan usabilidadTácticas de tiempo de ejecuciónTácticas de tiempo de diseño

Page 35: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

35

Tácticas de usabilidad (2)

Tácticas de tiempo de ejecuciónLa usabilidad se ve mejorada al dar retroalimentación al usuario sobre lo que hace el sistema y al permitirle realizar operaciones tales como cancelar, deshacer, etc..La iniciativa de la interacción entre humano y máquina la puede tomar el usuario, el sistema o ambos

Ej. Botón “Cancel” es inciativa de usuario. Mensaje de “Cancelling” es del sistema, es entonces iniciativa mixta

Cuando el sistema toma la iniciativa, necesita de un modelo que puede ser

Modelo del usuario (conocimiento, comportamiento)Modelo de la tarea (ej. asistente word)Modelo del estado del sistema (ej. tiempo para copiar archivos en windows)

Page 36: Arquitecturas y Calidad de Software: Tacticsliim.izt.uam.mx/~humberto/cursos/is1/download/tacticas.pdf · 2019. 9. 2. · Recuperación de fallas (2) Redundancia pasiva Un componente

36

Tácticas de usabilidad (3)

Tácticas de tiempo de diseñoSeparación de la interfaz de usuario del resto de la aplicación

Es un refinamiento de la táctica de coherencia semántica dentro de la modificabilidad ya que se localizan los cambios esperadosSe implementa con patrones tales como Model View Controller

Resumen de tácticas