Descargar

Introducción a la arquitectura de software

Enviado por Pablo Turmero


Partes: 1, 2

    edu.red

    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

    edu.red

    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

    edu.red

    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

    edu.red

    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)

    edu.red

    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

    edu.red

    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

    edu.red

    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

    edu.red

    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".

    edu.red

    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

    edu.red

    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

    edu.red

    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.

    edu.red

    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

    Partes: 1, 2
    Página siguiente