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