Introducción a la Arquitectura de Software

Slides:



Advertisements
Presentaciones similares
Ciclo de vida de desarrollo de software
Advertisements

Introducción a la Arquitectura de Software
U.M.L A/Gx. Diego Gutiérrez Application Analysis and Design.
INGENIERÍA DE SOFTWARE Introducción Arquitectura de Software
Architect Academy: Seminario de Arquitectura de Software
Metodologías ágiles.
Fundamentos de Diseño de Software INFT.1
ANÁLISIS DE REQUERIMIENTOS
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de Metodologías ágiles.
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Metodologías OMT Republica bolivariana de Venezuela
Fundamentos de Ingeniería de Software
Ingeniería del Software
Ingeniería del Software
INTRODUCCION A LA ARQUITECTURA
M.S.C. Ivette Hernández Dávila
ARQUITECTURA DE SOFTWARE INTRODUCCION
Unified Modeling Language (Lenguaje de Modelamiento unificado)
HERRAMIENTAS CASE.
Trabajo Práctico Taller de Desarrollo de Proyectos 2 Septiembre 2009.
Contexto: Aplicación gráfica.  Siempre que se piensa en separar la funcionalidad de una aplicación de su interacción con el usuario, bien sea una aplicación.
Laura Patricia Pinto Prieto Ingeniera de sistemas.
DEPARTAMENTO DE INGENIERÍA INFORMÁTICA
LEDA Un Lenguaje para la Especificación y Validación de Arquitecturas de Software Carlos Canal Velasco Depto. de Lenguajes y Ciencias de la Computación.
(c) P. Gomez-Gil, INAOE DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP.
* FRAUSTO JIMENEZ GABRIELA * * HERNANDEZ TORRES ANA LAURA * * MANDUJANO JUAN CARLOS * * NOVA MARIN YARELI PAULINA * * ZAVALA CORTE JOCELYN ARELI *
Ingeniería de Software
Arquitectura de una aplicación
Ingeniería de Software Orientado a Objetos
DISEÑO DE SOFTWARE 1ª. Parte
 Docentes ◦ Jonathan Erlich  ◦ Ariel Glikman   Organización de la materia ◦ Idesmaimonides.wikidot.com.
Ingenieria de software
METODOLOGÍA OMT Diseño de sistemas.
3.- Introducción a Patrones de Diseño
Ingeniería de Software: Metodologías Agustín J. González ElO329: Diseño y Programación Orientados a Objeto Adaptado de:
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Vista de interacción  Una vista de interacción muestra el flujo de control requerido que se establece entre los objetos.
Eva Lleonart Martín Asunción García-Menacho Rovira
Ingeniería de software
FRAMEWORK VS Código fuente
Diseño de Software y su Proceso
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
El modelo de análisis tiene como objetivo generar una arquitectura de objetos que sirva como base para el diseño posterior del sistema. Dependiendo del.
Diseño Arquitectonico
Diseño de Sistemas.
Diseño Arquitectónico
Ingeniería de Software Agustín J. González ElO329: Diseño y Programación Orientados a Objeto Adaptado de: material asignatura CS169,Software Engineering,
Introducción a UML Departamento de Informática Universidad de Rancagua
INGENIERÍA DEL SOFTWARE GESTIÓN DE PROYECTOS
Ingeniería de Requisitos
Proceso de desarrollo de software Pablo Gervás F. Informática, UCM, noviembre 2007.
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Actividades en el Proceso de desarrollo de Software
Tecnologías Cliente / Servidor Capitulo II Richard Jiménez V. clienteserver.wordpress.com.
Unified Modeling Language (Lenguaje de Modelamiento unificado)
UNIDAD 2: “Características del Modelado UML” CONTENDIDO Elaborado por: Ingeniero Harold Cabrera Meza Actualizado por: Ingeniero Nilson Albeiro Ferreira.
Un requerimiento es una condición o capacidad a la que el sistema (siendo construido) debe conformar [ Rational ]. Un requerimiento de software puede.
INGENIERIA DE SOFTWARE
Arquitectura de una aplicación Arquitectur a: desarrolla un plan general del sistema, asegurando que las necesidades de los usuarios sean atendidas. Ingeniería.
¿Qué es la Ingeniería De Software? Ingeniería de Software.
Capas de ingeniería del Software. Rosendo Antonio Manuel Ingeniería en Sistemas Computacionales.
República Bolivariana de Venezuela Universidad Nacional Experimental Politécnica de la Fuerza Armada (UNEFA) Carrera: Ingeniería de Sistemas Cátedra: Análisis.
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
Ingeniería de Software Agustín J. González ElO329: Diseño y Programación Orientados a Objeto Adaptado de:
Maestría en Gerencia en Tecnología de la Información Cátedra Ingeniería de Software Profesora: Mary Carmen Milano. Integrantes: Rosa Arellano Osbaldo Goitia.
Fundamentos de Ingeniería de Software
Universidad Nacional de Ingeniería Comprendiendo los Fundamentos de
Profesor: Jesús Chaparro Bachilleres: Perez, emibeliz Prada, Rainer Villahermosa, José Abril 2014.
Fase de Inicio Proceso Unificado de Desarrollo de Software.
Transcripción de la presentación:

Introducción a la Arquitectura de Software Carlos Reynoso UNIVERSIDAD DE BUENOS AIRES Billyreyno@hotmail.com

Temario Contexto Estereotipos Antecedentes históricos Definición Corrientes principales Conceptos fundamentales Estilos arquitectónicos Lenguajes de Descripción Arquitectónica (ADLs) Métodos clásicos, arquitectónicos y ágiles Situación & Roadmap http://www.microsoft.com/spanish/msdn/arquitectura Paper

Contexto Los 3 grandes temas de ingeniería de software Otros: 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) Arquitectura de Software Métodos heterodoxos (eXtreme Programming, Scrum, Evo, FDD, DSDM, RUP, AM, Crystal, LD, ASD…) Otros: Refactorización (Fowler) AOP..

Estereotipos Arquitectura como normativa madura Herramientas de diseño arquitectónico Lenguajes arquitectónicos iguales en la academia y la industria UML como lenguaje formal de modelado Arquitectura vinculada con ingeniería & ciclo de vida Arquitectura vinculada a metodología (RUP) La AS tiene que ver con modelado OO Hay vínculo “natural” entre requerimientos (casos de uso) y clases Las herramientas arquitectónicas generan el código de la aplicación

Antecedentes históricos Edsger Dijkstra, 1968 Ciencias de la computación como rama aplicada de las matemáticas Niveles de abstracción NATO, 1969 P. I. Sharp, “Arquitectura de software” Fred Brooks, 1975 – MMM Arquitectura como interfaz usuario David Parnas 1972: Módulos – Ocultamiento de información 1974: Estructuras de software 1976: Familias de programas (Árbol de decisión)

Antecedentes históricos 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) Mary Shaw, David Garlan, Paul Clements, Robert Allen Bibl…

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. Ingeniería - IEEE 610.12.1990: 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 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

Corrientes principales Arquitectura como etapa de la ingeniería de software orientada a objetos James Rumbaugh, Grady Booch, Ivar Jacobson (“los 3 amigos”), Craig Larman… Arquitectura estructural – SEI Garlan, Shaw, Clements Variantes con modelos de datos (Medvidovic), variantes radicales, formales (Moriconi-SRI), etc Arquitectura basada en patrones – SEI Arquitectura procesual Kazman, Bass (SEI)

Vistas 1977, análisis estructurado (Douglas Ross) Separación de incumbencias Habitualmente 2 (funcional y de datos – ninguna aparece en AS) La AS clásica no habla de vistas Se basa en vista única e implícita, de carácter estructural Muchos arquitectos evitan hablar de vistas Cuando las vistas proliferan, se requieren lenguajes formales específicos para cada clase de vista Las vistas son una abstracción conveniente, pero su abundancia involucra problemas de sincronización Lista corta (3 a 6) – Lista larga (8 o 9…) Viewpoints’96

Conceptos fundamentales Vistas & frameworks

Vistas de UML…

Vistas de UML… Vistas y puntos de vista no están homogeneizados en textos y autores Cuando los “3” hablan de AS, las vistas no se refieren a viewpoints o concerns, sino a niveles de abstracción Definición diferente de “arquitectura” Interfaces en vez de conectores Objetos en lugar de componentes

Estilos Arquitectónicos Perry & Wolf, 1992 Rumbaugh & al 1991 (1) transformaciones en lote, (2) transformaciones continuas, (3) interfaz interactiva, (4) simulación dinámica de objetos del mundo real, (5) sistemas de tiempo real, (6) administrador de transacciones con almacenamiento y actualización de datos Pero: “estilos arquitectónicos”, “arquitecturas comunes”, “marcos de referencia arquitectónicos prototípicos”, “formas comunes”, “clases de sistemas” Incluyen: Componentes Conectores Estructuras (topologías) Restricciones (constraints)

Estilos Flujo de datos Llamada y Retorno Procesos interactivos Secuencial en lotes Red de flujo de datos (tuberías & filtros) Bucle de control cerrado Llamada y Retorno Programa principal / subrutinas Ocultamiento de información (ADT, objeto, cliente/servidor elemental) Procesos interactivos Procesos comunicantes Sistemas de eventos (invocación implícita, eventos puros) Repositorio Orientado a Datos Bases de datos transaccionales (cliente/servidor genuino) Pizarra Compilador moderno Datos Compartidos Documentos compuestos Hipertexto Fortran COMMON Procesos LW Jerárquicos - En capas (intérpretes)

Tubería y filtros Pizarra

Modelo-Vista-Controlador

Arquitectura en Capas

Máquina virtual

Modelo REST

Estilos Presentación específica el segundo cuatrimestre Documento sobre Estilos Arquitectónicos Billyr@microsoft.com.ar http://www.microsoft.com/spanish/msdn/arquitectura Estilos…

Estilos y patrones POSA 96, Shaw 96 Patrones: Christopher Alexander 1977 Elementos que se repiten Como un elemento en el mundo, cada patrón es una relación entre cierto contexto, cierto sistema de fuerzas que ocurre repetidas veces en ese contexto y cierta configuración espacial que permite que esas fuerzas se resuelvan. Como un elemento de lenguaje, un patrón es una instrucción que muestra la forma en que esta configuración espacial puede usarse, una y otra vez, para resolver ese sistema de fuerzas, donde quiera que el contexto la torne relevante El patrón es, en suma, al mismo tiempo una cosa que pasa en el mundo y la regla que nos dice cómo crear esa cosa y cuándo debemos crearla. Es tanto un proceso como una cosa; tanto una descripción de una cosa que está viva como una descripción del proceso que generará esa cosa.

Comentario Problemas Soluciones Fase de Desarrollo Patrones de Arquitectura Relacionados a la interacción de objetos dentro o entre niveles arquitectónicos Problemas arquitectónicos, adaptabilidad a requerimientos cambiantes, performance, modularidad, acoplamiento Patrones de llamadas entre objetos (similar a los patrones de diseño), decisiones y criterios arquitectónicos, empaquetado de funcionalidad Diseño inicial Patrones de Diseño Conceptos de ciencia de computación en general, independiente de aplicación Claridad de diseño, multiplicación de clases, adaptabilidad a requerimientos cambiantes, etc Comportamiento de factoría, Clase-Responsabilidad-Contrato (CRC) Diseño detallado Patrones de Análisis Usualmente específicos de aplicación o industria Modelado del dominio, completitud, integración y equilibrio de objetivos múltiples, planeamiento para capacidades adicionales comunes Modelos de dominio, conocimiento sobre lo que habrá de incluirse (p. ej. logging & reinicio) Análisis Patrones de Proceso o de Organización Desarrollo o procesos de administración de proyectos, o técnicas, o estructuras de organización Productividad, comunicación efectiva y eficiente Armado de equipo, ciclo de vida del software, asignación de roles, prescripciones de comunicación Planeamiento Idiomas Estándares de codificación y proyecto Operaciones comunes bien conocidas en un nuevo ambiente, o a través de un grupo. Legibilidad, predictibilidad. Sumamente específicos de un lenguaje, plataforma o ambiente Implementación, Mantemimiento, Despliegue

Lenguajes de Descripción Arquitectónica (ADLs) Lenguajes para el modelado, la descripción y (eventualmente) la prueba de la arquitectura Presentación específica el segundo cuatrimestre… ADLs

Métodos Clásicos, Arquitectónicos y Ágiles

Manifesto ágil (2001) Estamos poniendo al descubierto formas mejores de desarrollo de software, haciéndolo y ayudando a otros a que lo hagan. A través de este trabajo hemos llegado a valorar: Los individuos y la interacción por encima de los procesos y herramientas. El software que funciona por encima de la documentación abarcadora. La colaboración con el cliente por encima de la negociación contractual. La respuesta al cambio por encima del seguimiento de un plan. Aunque hay valor en los elementos a la derecha, valorizamos más los de la izquierda. Documento…

Campos de AS Fundamentos formales de la AS (bases matemáticas, caracterizaciones formales de propiedades extra-funcionales tales como mantenibilidad, teorías de la interconexión, etc). Técnicas de análisis arquitectónicas Métodos de desarrollo basados en arquitectura Recuperación y reutilización de arquitectura Codificación y guía arquitectónica Herramientas y ambientes de diseño arquitectónico Estudios de casos

Situación

Problemas de AS Falta de criterio unificado Desarrollo en paralelo de conceptos antagónicos o no coordinados Métodos ágiles Metodologías de ciclo de vida Patrones Poca masa crítica de herramientas y lenguajes de modelado arquitectónico (de alto nivel, con conectores de primera clase)

Beneficios Decisiones tempranas Análisis de consistencia Análisis de tradeoff antes de escribir código Mary Shaw y David Garlan [1996] comparan una misma solución de indexación de palabras claves en cuatro estilos diferentes (datos compartidos, tubería y filtro, tipos abstractos de datos e invocación implícita). El modelo permite estimar relaciones de dependencia, modularidad, refinamiento, reutilización, ventajas y desventajas de cada arquitectura antes de escribir una sola línea de código; demuestra también de qué manera los diferentes estilos definen tácticas específicas de descomposición funcional y establecen la pauta que habrá de seguirse en el desarrollo. Finalmente, SG aplican diversas tablas de comparación de atributos, en un ejercicio de evaluación de decisiones estilísticas que se ha convertido en un modelo en su género Re-utilización

Oportunidades de carrera -Programación. NET -Arquitectura de Software Oportunidades de carrera -Programación .NET -Arquitectura de Software .NET http://www.microsoft.com/spanish/msdn/arquitectura Billyr@microsoft.com.ar

¿Preguntas? Billyr@microsoft.com.ar