Tacticas

Anuncio
Arquitectura de Proyectos de IT
Tacticas
Ing. Nicolás Passerini
Ing. Gustavo Andrés Brey
Gastón Coco
© 2005
Agenda
2
#
Tema
Duración
1
Introducción
5 min
2
Atributos de Calidad
2.1
Performance
30 min
2.2
Disponibilidad
30 min
2.3
Modifiability
30 min
2.4
Seguridad
10 min
2.5
Testability
20 min
2.6
Usabilidad
10 min
3
Restricciones de Arquitectura
10 min.
4
Conflictos y Restricciones de Negocio
10 min.
Arquitectura de Proyectos de IT
Agenda
3
#
Tema
1
Introducción
2
Atributos de Calidad
2.1
Performance
2.2
Disponibilidad
2.3
Modifiability
2.4
Seguridad
2.5
Testability
2.6
Usabilidad
3
Restricciones de Arquitectura
4
Conflictos y Restricciones de Negocio
Arquitectura de Proyectos de IT
Introducción
Las tácticas son decisiones de que tienen como objetivo lograr los
atributos de calidad.
Las podemos agrupar por los requerimientos que atacan:
– Atributos de Calidad
– Performance
– Modifiability
– Availability
– Security
– Testability
– Usability
– Restricciones de Arquitectura
– Conceptual Integrity - Robustness
– Buildability
4
Arquitectura de Proyectos de IT
Agenda
5
#
Tema
1
Introducción
2
Atributos de Calidad
2.1
Performance
2.2
Disponibilidad
2.3
Modifiability
2.4
Seguridad
2.5
Testability
2.6
Usabilidad
3
Restricciones de Arquitectura
4
Conflictos y Restricciones de Negocio
Arquitectura de Proyectos de IT
Performance – Pasos previos
Requerimientos
– Evitar el “lo más rápido posible”.
¿Qué se puede medir?
– Consumo de recursos
– Procesador, memoria, disco, red, etc
– Latencia
– Contention, Availability, Dependency in another Computation
– Escalabilidad
Medición y profiling
– Medición del consumo de los recursos durante la ejecución.
– Se necesitan datos de prueba realistas (no necesariamente “reales”)
6
Arquitectura de Proyectos de IT
Tácticas para lograr Performance
Demanda
– Incrementar la eficiencia computacional
– Eliminar el overhead computacional
– Bound Execution Times - Bound Queue Size
Resource Management
– Concurrencia
– threads especializados por tarea
– múltiples threads equivalentes
– Tamaño de transacciones
– Múltiples copias de los datos. Caching
– Incrementar los Recursos disponibles
7
Arquitectura de Proyectos de IT
Tácticas para lograr Performance
Resource Arbitration
– First-in / First-out (FIFO)
– Fixed Priority
– Dynamic priority
– Static Scheduling
8
Arquitectura de Proyectos de IT
Agenda
9
#
Tema
1
Introducción
2
Atributos de Calidad
2.1
Performance
2.2
Disponibilidad
2.3
Modifiability
2.4
Seguridad
2.5
Testability
2.6
Usabilidad
3
Restricciones de Arquitectura
4
Conflictos y Restricciones de Negocio
Arquitectura de Proyectos de IT
Tácticas para lograr Disponibilidad
Detección de fallas
– Ping + Echo / Heartbeat
– Exceptions
Recuperación
– Preparación y reparación
– Voting / Cluster / Redundancia activa / pasiva /
spare
– Transparent Failover. Session replication.
– Reinserción
– Shadow / Resynchronization / Checkpoint
10
Arquitectura de Proyectos de IT
Tácticas para lograr Disponibilidad
Prevención
– Removal from Service / Process Monitor
– Transacciones
– Tácticas de Integración
– Colas
– Replicación de datos
– Dejarlo en un estado intermedio y después
terminar.
11
Arquitectura de Proyectos de IT
Agenda
12
#
Tema
1
Introducción
2
Atributos de Calidad
2.1
Performance
2.2
Disponibilidad
2.3
Modifiability
2.4
Seguridad
2.5
Testability
2.6
Usabilidad
3
Restricciones de Arquitectura
4
Conflictos y Restricciones de Negocio
Arquitectura de Proyectos de IT
Tácticas para lograr Modifiability
La mayoría de las tácticas pasan por “localizar” las
modificaciones, evitando los “ripple effects”
Para eso se trabaja sobre la calidad del diseño
– Cohesión y acoplamiento
– Coherencia semántica
– Generalización
– Anticiparse a los cambios
– Limitar las opciones posibles
13
Arquitectura de Proyectos de IT
Tácticas para lograr Modifiability
Efecto “ripple” (ondas)
– Es la aparición de efectos inesperados en lugares
posiblemente remotos del sistema después de hacer un
cambio .
– Muestra un acoplamiento indeseado.
Tipos de “ripples”
– Sintaxis de datos o servicios
– Semántica de datos o servicios
– Secuencia
– Identidad / Ubicación / Existencia
– Calidad de servicio
– Comportamiento
14
Arquitectura de Proyectos de IT
Tácticas para lograr Modifiability
Prevent Ripple Efects
– Restrict Communication Paths
– Encapsular información
– Intermediarios (Data / Service / Identity / Location /
Existence)
– Mantener Interfaces Existentes
– Agregar Interfaces, Adapters, Stubs
Defer Binding Time
– Polimorphism
– Adherence To Defined Protocols
– Configuration Files – Dependency Injection
– Runtime Registration
15
Arquitectura de Proyectos de IT
Agenda
16
#
Tema
1
Introducción
2
Atributos de Calidad
2.1
Performance
2.2
Disponibilidad
2.3
Modifiability
2.4
Seguridad
2.5
Testability
2.6
Usabilidad
3
Restricciones de Arquitectura
4
Conflictos y Restricciones de Negocio
Arquitectura de Proyectos de IT
Tácticas para lograr Seguridad
Resistencia frente a ataques
– Autenticación de usuarios
– Autorización de usuarios
– Confidencialidad de los datos (encripción, VPN, SSL)
– Integridad de los datos (redundancia, checksums, hash, firmas)
– Limitar la exposición o el acceso (DMZ)
Detección de ataques
Recuperación
– Recuperación, restoration
– Identificación, Auditoría
17
Arquitectura de Proyectos de IT
Agenda
18
#
Tema
1
Introducción
2
Atributos de Calidad
2.1
Performance
2.2
Disponibilidad
2.3
Modifiability
2.4
Seguridad
2.5
Testability
2.6
Usabilidad
3
Restricciones de Arquitectura
4
Conflictos y Restricciones de Negocio
Arquitectura de Proyectos de IT
Tacticas para lograr Testability
Tipos de Test
– Unitario
– Integración
– Aceptación
– Performance / Carga / Stress
– Regresión
Escenarios
– Casos de test
– Juegos de datos
– casos básicos,
– casos extremos.
– Test Driven Design (contract first)
19
Arquitectura de Proyectos de IT
Tacticas para lograr Testability
Test Unitario
– Modularidad
– Separar interfaz de implementación
– Mock Objects
– Configuración específica para testing
– Inversion Of Control / Dependency Injection
– Interfaces de testing especializadas
Regresión
– Automatización de tests
– Automatización de los juegos de datos
– Manejo de las dependencias de ejecución
– Automatización de la corrida, periódica o por eventos
20
Arquitectura de Proyectos de IT
Tacticas para lograr Testability
Integración
– Manejo de las dependencias de ejecución
– Transacciones individuales
– Transacción global.
Aceptación
– Automatización de Input / Output
– Record / playback
– Simulación de pedidos http
– Simulación de teclado/mouse
– Scripts
Performance
– Monitoreo (procesador, memoria, red)
– Simulación de tráfico usando robots
21
Arquitectura de Proyectos de IT
Tacticas para lograr Testability
Otras Tácticas
– Debugging
– Breakpoints
– Avance paso a paso
– Exploración del estado de variables
– Logging
– Manejo de excepciones y mensajes
– Capacidad de modificar el programa en runtime
– Lenguaje
– Arquitectura
– Similitud de entornos de desarrollo / test / producción
– Acceso a los entornos de test / producción
22
Arquitectura de Proyectos de IT
Agenda
23
#
Tema
1
Introducción
2
Atributos de Calidad
2.1
Performance
2.2
Disponibilidad
2.3
Modifiability
2.4
Seguridad
2.5
Testability
2.6
Usabilidad
3
Restricciones de Arquitectura
4
Conflictos y Restricciones de Negocio
Arquitectura de Proyectos de IT
Tácticas para lograr Usabilidad
Intuitividad, ¿¿qué es intuitivo??
– Adecuación a estándares
– Consistencia
– Metáfora de Interación
– Información de contexto
– Cantidad de información, evitar información supérflua
Adaptación al nivel de usuario
– Menúes para usuarios básicos
– Comandos y shortcuts para usuarios avanzados
– Accesibilidad
– Aprendizaje, configurabilidad
Velocidad
24
Arquitectura de Proyectos de IT
Agenda
25
#
Tema
1
Introducción
2
Atributos de Calidad
2.1
Performance
2.2
Disponibilidad
2.3
Modifiability
2.4
Seguridad
2.5
Testability
2.6
Usabilidad
3
Restricciones de Arquitectura
4
Conflictos y Restricciones de Negocio
Arquitectura de Proyectos de IT
Tácticas para lograr Buildability
Brindar al equipo de fábrica un conjunto de herramientas que le
resulten útiles y suficientes a la hora de construir la aplicación, y
que permitan construirla en forma eficiente
Claridad
– Resolución de servicios genéricos
Expresividad
– Declaratividad
– Lenguajes y abstracciones
Consistencia
– Reusabilidad
– Motores de reglas
Simplicidad
26
Arquitectura de Proyectos de IT
Tácticas para lograr Robustez
Conceptual Integrity
Centralización de servicios
– Manejo de transacciones
– Manejo de situaciones excepcionales
– Administración de recursos (por ej: conecciones de base de datos)
Proceso de desarrollo
– Estructura de tests de arquitectura
– Source Configuration Management
– Políticas de uso del repositorio de código
– Políticas de liberación de entregables
– Automatización
27
Arquitectura de Proyectos de IT
Agenda
28
#
Tema
1
Introducción
2
Atributos de Calidad
2.1
Performance
2.2
Disponibilidad
2.3
Modifiability
2.4
Seguridad
2.5
Testability
2.6
Usabilidad
3
Restricciones de Arquitectura
4
Conflictos y Restricciones de Negocio
Arquitectura de Proyectos de IT
Conflictos Entre los Atributos de Calidad
A veces los atributos conflictúan entre sí y hay que elegir.
Una táctica pude beneficiar a un atributo y perjudicar a otro.
Otras veces conflictúan con los requerimientos del negocio
– Cost
– Time To Market
Dos principios
– Utilidad
– Simplicidad
La habilidad del arquitecto consiste en seleccionar una
combinación de tácticas que permita satisfacer todas las
necesidades.
29
Arquitectura de Proyectos de IT
Referencia
Software Architecture in Practice, Second Edition. Len Bass, Paul
Clements, Rick Kazman. Addison Wesley, 2003, ISBN 0-32115495-9.
30
Arquitectura de Proyectos de IT
Descargar