Ciclo de vida guiados por la Arquitectura

Anuncio
Ciclos de Vida guiados por
la Arquitectura:
Arquitectura
Balanceando entre agilidad,
eficiencia y calidad
Alejandro J Bianchi
ATAM Evaluator Certificate
Software Architecture Professional Certficate
Software Engineering Institute, CMU University
22 de marzo, 2012
Agenda
Objetivos de la conferencia
Los desafíos de la sociedad y las oportunidades para el
Software
La evolución de la producción de Software
El rol de la Arquitectura de Software
Los ciclos de vida guiados por Arquitecturas
Algunas conclusiones
Reconocimientos
PSM, (Practical Software and System Measurement Method), es
marca registrada del US Army, USA
PALM, QAW, ADD, CBAM, ARID, AIW y ATAM, son marcas
registradas del Software Engineeering Institute, CMU University, USA
CMMI, TSP son marcas registradas del Software Engineeering
Institute, CMU University, USA
3
Acrónimos
ADD: Attribute Driven Design
AIW: Architectural Improvement Workshop
ARID: Active Review Intermediate Design
ATAM: Architecture Trade off Analysis Method
CBAM: Cost Benefit Analysis Method
CMMI: Capability Maturity Model Integrated
PSM: Practical Software and System Measurement
PALM: Pedigreed Attribute eLicitacion Method
QAW: Quality Attribute Workshops
4
Objetivos de la Conferencia
Compartir con los asistentes:
Las tendencias y oportunidades del desarrollo de software
La importancia de la calidad de producto
El rol del diseño de Arquitectura en el desarrollo de Software
Que los asistentes puedan incorporar:
Algunas ideas acerca de los ciclos de vida guiados por Arquitectura
De que manera la Arquitectura y la agilidad se complementan
De que forma se puede implantar esta asociación
Sintetizar a través de esos conceptos la visión de un proceso
superior para el desarrollo de Software
Los desafíos de la sociedad global
Mejora del medio ambiente
La vida en las grandes ciudades
Problemas sanitarios y Salud Pública
Transporte y energía
Seguridad pública
Nuevas tendencias de los negocios tradicionales
El desarrollo de Software
El cambio es una constante en el desarrollo de aplicaciones
Aplicaciones multi-capas, multi-plataformas, varios lenguajes, varios
proveedores trabajando en un mismo proyecto
Integración de componentes a través de interfaces complejas
Software abierto conviviendo con aplicaciones propietarias
Las aplicaciones son orientadas al cliente “no hay red”
Cloud Computing y Orientación a Servicios
Nuevas formas de hacer negocios con el software
Adaptado de Bill Curtis,
PSM User Conference
2011, Mystc, USA
Arquitectura, atributos de calidad, Reuso
La evolución de la Producción
2000 y el futuro
4
Productos
3
Procesos
2
Métodos
1
Lenguajes
Para asegurar que el software es
construido para satisfacer más que la
funcionalidad requerida
CMMI, ITIL, Six Sigma
1990-2000
Más disciplina para poder aprovechar mejores
prácticas
Métodos de diseño y herramientas CASE
1980-1990
Proveer a los desarrolladores de más herramientas
y ayudas para producir sistemas basados en software
Lenguajes de 3 y 4 generación, programación estructurada
Adaptado de Bill Curtis, 2006
1965-1980
Barry Bohem, 2008
Mayor poder de expresión en la programación
La evolución de la demanda
Hoy calidad no es solo satisfacer los requerimientos
funcionales
Los atributos de calidad definen el éxito de un producto de
software, (performance, escalabilidad, seguridad,
modificabilidad, etc.)
Los clientes no entienden o minimizan los requerimientos no
funcionales o atributos de calidad
Resolver problemas de atributos de calidad con el sistema en
producción implica costos difíciles de estimar y la cobertura de
las pruebas no es garantía de calidad
Definiendo Arquitectura - 1
“La arquitectura de un programa o sistema es la estructura o
las estructuras del sistema que contienen a los componentes,
las propiedades visibles de esos componentes y las relaciones
entre ellos”
[Bass, Clements & Kazman , “Software Architecture in Practice”, 1998]
Una extensión de la definición:
La arquitectura de una aplicación es un “puente” entre las
necesidades de los stakeholders y los grupos de producción de software, en
donde el arquitecto reflejó las soluciones y decisiones técnicas, resolvió
conflictos y buscó consensos entre todos los interesados/afectados para
lograr un diseño adecuado a los objetivos de negocios
10
Arquitectura: Estructuras + decisiones
Arquitectura es más que:
Componentes
Conectores
Tácticas
Patrones
Modelos de referencia
Vistas y perspectivas
El diseño de Arquitectura es la suma
de conocimiento arquitectural más
decisiones técnicas
11
Todo Sistema tiene una Arquitectura
Las Arquitecturas pueden ser:
Intencionales
Accidentales
Una Arquitectura intencional
puede/debería reflejar los
objetivos del negocio
Una Arquitectura accidental
resulta en una estrategia de
negocios de hecho, (puede ser
buena o no… es difícil de conocer y
sostener)
Adaptado de Grady Booch,
Handbook of Software Architecture
Importancia de la Arquitectura - 1
La arquitectura es importante por tres razones primarias:
Provee un vehículo para la comunicación entre diferentes
stakeholders:
Clientes
Usuarios
Gerentes y desarrolladores
Responsables de operación y mantenimiento
Es la manifestación temprana de decisiones de diseño que
fueron tomadas para satisfacer los atributos de calidad
esperados por los stakeholders
Es una abstracción reusable y transferible de un sistema.
13
Importancia de la Arquitectura - 2
Si, pero hacer diseño de arquitectura es caro y poco ágil…
Y, depende… contra que lo comparamos:
Análisis del contexto del producto/ambiente de
desarrollo/mercado, etc.
Coordinación del trabajo y de los equipos
Anticipar conflictos técnicos y reducir defectos
Administrar la “deuda técnica”, (Technical debt)
14
Ciclo guiados por la Arquitectura
Los métodos y procesos que usamos fallan, entre otras
causas, debido a:
Incremento del tamaño y complejidad de los sistemas
Diversidad de tipos de interfaces entre elementos
Fuertes restricciones impuestas por el negocio
Adherencia a planes y presupuestos
Complejos modelos de calidad, (performance, seguridad,
mantenibilidad, portabilidad, interoperabilidad, etc.)
Integración y reuso de componentes externos
Imposibilidad de sostener la integridad de la arquitectura
a lo largo del ciclo de vida
Nuevas especialidades en el proceso, (seguridad, etc.)
15
Ciclo guiados por la Arquitectura - 2
Un ciclo guiado por la Arquitectura,
es aquel que utiliza el diseño
arquitectural como punto de
referencia para la ejecución de las
demás actividades de
producción/evolución:
Planificación y seguimiento
Diseño de detalle y código
Verificación & Validación
Implantación
Operación y mantenimiento
16
Ciclos guiados por la Arquitectura - 3
Implementa y
evoluciona
Diseña
Objetivos del
Negocio
Implementa
Arquitectura
Satisface
Sistema/Aplicación
Respeta
Satisface
17
Ciclo guiados por la Arquitectura - 4
Más allá de la escala del sistema, la arquitectura es una
abstracción apropiada para razonar acerca como se
satisfacen los objetivos del negocio
Suficiente detalle para razonar acerca de los objetivos de
negocios y las restricciones de implantación
Adecuado nivel de abstracción para que un equipo
pequeño de arquitectos entienda los aspectos
conceptuales del sistema
Los atributos de calidad tienen una influencia dominante
en la arquitectura de un sistema
Los atributos de calidad surgen de los objetivos del
negocio
Los atributos de calidad críticos deben ser caracterizados
de un manera sistemática
18
Ciclo guiados por la Arquitectura - 5
Métodos basados en escenarios son una herramienta
poderosa para caracterizar los atributos de calidad y
representar la visión de cada uno de los stakeholders
La implementación del producto debe reflejar las
decisiones de diseño arquitectural
La Arquitectura debe ser el centro de las actividades de
desarrollo
El ciclo de desarrollo debe tener un foco explícito en
satisfacer los atributos de calidad
Los stakeholders deben participar del desarrollo
La arquitectura debe ser DESCRIPTIVA y PRESCRIPTIVA
Los arquitectos de Software deben ser agentes de
cambio
19
Ciclo guiados por la Arquitectura - 6
ACTIVIDAD
METODOS / Procesos
Crear el caso de negocios para el Sistema
PALM
Entender los requerimientos
QAW, IPPD, QFD
Crear y/o seleccionar la Arquitectura
ADD, 4+1
Documentar y comunicar la Arquitectura
Views & Beyond, Views+Perspectives,
AADL
Analizar/evaluar la Arquitectura
ATAM, basada en cuestionarios,
prototipos, simulación, CBAM
Implementar el Sistema basado en la Arquitectura
Agile, RUP, incremental, cascada
Asegurar que la implementación satisface la Arquitectura
ARID, Inspecciones de diseño basadas
en cuestionarios
Evolucionar la Arquitectura para asegurar que continua
alineada a los objetivos de negocios
Workshops para mejorar la
Arquitectura, AIW
Asegurar un uso efectivo de las prácticas de Arquitectura
Evaluación de competencias en Diseño
de Arquitecturas
20
Basado en Architecting Software Intensive System, Anthony J. Lattanze, 2009, CRC Press
Ciclo guiado por la Arquitectura - 7
El diseño de Arquitectura es un elemento importante al momento
de ajustar el proceso de desarrollo, (visión desde CMMI)
A partir de la vistas, perspectivas y decisiones de diseño es posible:
1.
2.
3.
4.
5.
6.
7.
8.
9.
Identificar la estructura de los equipos de desarrollo
Facilitar la estimación del desarrollo
Identificar nuevos roles/especialidades en el proceso
Incorporar nuevas actividades en el proceso, (ej. Migración de datos)
Planificar el paralelismo de actividades
Utilizar más de un ciclo de vida para un mismo proyecto
Anticipar actividades de verificación, (casos de prueba a partir de los
escenarios)
Definir el Plan de pruebas y los ambientes
Ajustar las actividades de Configuration Management
22
Ciclo guiados por la Arquitectura - 8
La Arquitectura permite en un, contexto ágil, reducir el esfuerzo de
“refactoring”
Gestionar de manera proactiva la “deuda técnica”
Balancear entre las necesidades del producto y las necesidades del
cliente/usuario
Por otro lado, la única manera de ganar velocidad de desarrollo,
más allá de la agilidad, es construyendo menos software o sea
POTENCIAR el REUSO. Sin arquitectura el nivel de reuso siempre
será mínimo.
23
Algunas cuestiones para ver
Si bien está claro el beneficio que aporta diseñar la
Arquitectura, quedan algunos temas que merecen atención:
1.
Cómo estimamos el esfuerzo para diseñar una Arquitectura?
2.
En un contexto ágil o tradicional, cómo identificamos cuándo un diseño
de Arquitectura está completo?
3.
En sistemas complejos, cómo gestionamos las propiedades
emergentes?
4.
Qué nivel de documentación es adecuado y con que notación?
5.
Cómo evaluamos la calidad de un diseño de Arquitectura, desde la
perspectiva de producto y del proceso?
6.
Qué alcance debe tener la formalización de las decisiones?
7.
Cómo identificamos a un buen Arquitecto?
24
Un Proceso Superior: Simple…
Control de los costos y
predicibilidad de los planes
Responder a las
necesidades de cambio
Minimizar costos de
desarrollo y de los planes
Que sea escalable
dependiendo del tamaño
del producto
Desarrollar productos de
calidad predecible
Conclusiones
A la producción de software se le exige agilidad, que sea abierta al cambio y
buscando siempre la manera de ser más eficiente y útil para sus clientes
La combinación de conocimiento, ambiente de trabajo, procesos
adecuados con foco en los objetivos de negocios son ingredientes básicos
para lograrlo y agregar valor
Lo que se espera de un proceso de desarrollo es que provea a la
organización y a los grupos de desarrollo de:
VISION
RITMO
COOPERACION
ANTICIPACION
SIMPLICIDAD
Pensar en integrar prácticas de diseño de Arquitectura es una manera de
facilitar un proceso superior
Más información…
www.sei.cmu.edu : reportes, papers, webinars, presentaciones en las
diferentes ediciones SATURN
www.bredemeyer.com
www.handbookofsoftwarearchitecture.com
Muchas gracias
alejandro.bianchi@liveware.com.ar
Descargar