Objetivos
Suministrar una visión estructurada de la Arquitectura de Software contemporánea
No es pedagogía Arquitectura 101, sino más bien un survey de lo que significa AS, una evaluación de lo que ha llegado a ser y una puntualización sobre lo que no es
Despejar malos entendidos sobre arquitectura como diseño de aplicaciones
Vincular perspectivas de la academia y la industria
Privilegiar elaboraciones de la corriente teórica de CMU/SEI
Describir desarrollos de estado de arte, problemas pendientes y tendencias
Proporcionar referencias a recursos, documentación y herramientas
Temario
Objetivos
Contexto
Errores de concepto habituales
Antecedentes históricos
Definición – Repositorio de definiciones
Corrientes principales
Conceptos fundamentales (CMU/SEI)
Estilos arquitectónicos
Estilos y patrones
Lenguajes de Descripción Arquitectónica (ADLs)
Atributos de calidad, escenarios y tácticas
Métodos basados en arquitectura
Situación, conclusiones y referencias
Contexto – 1995-2005
Los 3 grandes temas de ingeniería de software
Patrones
Design patterns (GoF) – 1995
Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides
Architectural patterns (POSA) – 1996
Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad y Michael Stal
Organizational patterns (Coplien)
Métodos heterodoxos (eXtreme Programming, Scrum, Evo, FDD, DSDM, RUP, AM, Crystal, LD, ASD.)
Arquitectura de Software
Otros:
Refactorización
AOP, SOA, Grid Computing, Semantic Web…
Conceptos cuestionables (1/2)
Arquitectura como normativa madura
Abundancia de herramientas de diseño arquitectónico
Semántica y lenguajes arquitectónicos iguales en la academia y la industria
UML como lenguaje formal de modelado "arquitectónico"
Posición de la AS bien definida en ingeniería & ciclo de vida
Ocurre en algún punto entre la elicitación de requerimientos y la especificación de casos de uso, o entre éstos y el diseño
Arquitectura vinculada a metodología y proceso RUP
La AS está formalmente desarrollada las disciplinas de RUP (cf. Kazman, Kruchten et al 2004)
Conceptos cuestionables (2/2)
La AS tiene que ver con modelado OO
La AS no admite ni requiere otros paradigmas
No hay urgencia en considerar otros paradigmas (Berners-Lee)
Las herramientas arquitectónicas generan la estructura de la aplicación e incluso el código (analogía con modelos CASE)
El dilema del roundtrip engineering está resuelto
Hay que considerar modelo de DSL
Antecedentes históricos (1/5)
Edsger Dijkstra, 1968
Ciencias de la computación como rama aplicada de las matemáticas
Niveles de abstracción
Stacks, abrazos mortales, semáforos, algoritmo de camino más corto
NATO, 1968
F. L. Bauer "Ingeniería de software"
NATO, 1969
P. I. Sharp, "Arquitectura de software"
C.R. Spooner, 1971
"Una arquitectura de software para los 70s"
Referencia accidental
Antecedentes históricos (2/5)
Niklaus Wirth, 1971
Niveles de abstracción ? Stepwise refinement
DeRemer & Kron, 1976
Programming in the large
Fred Brooks, 1975 – MMM
Diseñador del OS/360, Premio Turing 2000
Arquitectura como interfaz usuario
El arquitecto es un agente del usuario, igual que quien diseña su casa
Importancia de las estructuras de alto nivel y de decisiones tomadas al principio
Arquitectura: qué hacer – Implementación: cómo hacerlo
Antecedentes históricos (3/5)
David Parnas
1972: Módulos – Ocultamiento de información
1974: Estructuras de software
1976: Familias de programas (Árbol de decisión) – Descomposición – Alternativa a diagramas de flujo, propensión estructural (no funcional)
"Una familia de programas es un conjunto de programas (no todos los cuales han sido construidos o lo serán alguna vez) a los cuales es provechoso o útil considerar como grupo. Esto evita el uso de conceptos ambiguos tales como "similitud funcional" que surgen a veces cuando se describen dominios. Por ejemplo, los ambientes de ingeniería de software y los juegos de video no se consideran usualmente en el mismo dominio, aunque podrían considerarse miembros de la misma familia de programas en una discusión sobre herramientas que ayuden a construir interfaces gráficas, que ambos casualmente utilizan".
Antecedentes históricos (4/5)
Línea de Dijkstra-Parnas-Hoare
Fundamentación matemática
Métodos formales
Programa fuerte
Línea de Brooks
Ambiente humano
Visión cualitativa
Pensamiento no lineal
Programa crítico y heterodoxo
Antecedentes históricos (4/5)
Dewayne Perry, Alexander Wolf – 1992
"Foundations for the study of software architecture"
"La década de 1990, creemos, será la década de la arquitectura de software. Usamos el término "arquitectura" en contraste con "diseño", para evocar nociones de codificación, de abstracción, de estándares, de entrenamiento formal (de los arquitectos de software) y de estilo. ? Es tiempo de re-examinar el papel de la arquitectura de software en el contexto más amplio del proceso de software y de su administración, así como señalar las nuevas técnicas que han sido adoptadas".
Escuela de Carnegie Mellon (CMU-SEI)
Sin conexión explícita con CMMI®
Mary Shaw, David Garlan, Paul Clements, Robert Allen, Rick Kazman
Definición
http://www.sei.cmu.edu/architecture/definitions.html
(1) Proceso dentro del ciclo de vida, (2) Topología, (3) Disciplina.
Arquitectura – IEEE 1471-2000:
La Arquitectura de Software es la organización fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y el ambiente y los principios que orientan su diseño y evolución.
Adoptada por Microsoft en estrategia arquitectónica / MSF 3 & 4
Ingeniería – IEEE 610.12.1990:
[La Ingeniería de Software es] la aplicación de una estrategia sistemática, disciplinada y cuantificable al desarrollo, aplicación y mantenimiento del software; esto es, la aplicación de la ingeniería al software.
Otras definiciones
Paul Clements, 1996:
"La AS es, a grandes rasgos, una vista del sistema que incluye los componentes principales del mismo, la conducta de esos componentes según se la percibe desde el resto del sistema y las formas en que los componentes interactúan y se coordinan para alcanzar la misión del sistema. La vista arquitectónica es una vista abstracta, aportando el más alto nivel de comprensión y la supresión o diferimiento del detalle inherente a la mayor parte de las abstracciones".
* Vista – * Componente
Página siguiente |