31
Mario González

Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

  • Upload
    vulien

  • View
    223

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Mario González

Page 2: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

AgendaIntroducción histórica¿Qué es la arquitectura de software?Arquitectura y sus efectos en los StakeholdersEstructuras arquitectónicas

Vista lógicaVista de códigoVista de desarrolloVista de coincidenciaVista física

Escenarios

Page 3: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Agenda (Cont.)

Lenguajes de descripción arquitectónica (ADLs)Arquitectura como decisiones prematuras de diseñoEstilos arquitectónicosArquitecturas para líneas de producciónDiseño y análisis de la arquitecturaDiseño basado en arquitectura

Page 4: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Agenda (Cont.)

Análisis basado en arquitecturaAnalizando los Impactos en el negocio de las decisiones arquitectónicasIngeniería en reversa de la arquitecturaEl futuro

Page 5: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Introducción histórica

Se comenzó a usar desde 1990 debidoal tamaño y complejidad de los sistemasque comenzaron a surgir.

Razones:Comunicación entre stakeholdersDecisiones de diseñoAbstracción transferible de un sistema

Page 6: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

¿Qué es la arquitectura de software

La arquitectura de software de unprograma o sistema de computación esla(s) estructura(s) del sistema quecomprende los componentes del software,las propiedades visibles de esoscomponentes y las relaciones entre ellos.

Page 7: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Arquitectura y sus efectos en los Stakeholders

La arquitectura afecta a todos losrelacionados con el proyecto, afecta a losclientes, al gerentes, al equipo dedesarrollo, al equipo de pruebas, etc. Cadastakeholder se preocupa por partesespecificas del sistema, y esto se vereflejado en la arquitectura del sistema. Laarquitectura provee un lenguaje medianteel cual los stakeholders comprenden elsistema y se comunican para tomardecisiones importantes.

Page 8: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Estructuras arquitectónicas

Existen diferentes tipos de vistas que permiten ver la arquitectura de un sistema más en detalle

Vista lógicaVista de códigoVista de desarrolloVista de coincidenciaVista física

Page 9: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Vista lógica

Abstracción de las funciones el sistema y sus relaciones.

Page 10: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Vista de código

Esta vista es la que ve elprogramador, los elementos quetiene este tipo de vista sonclases, objetos, métodos yfunciones y su composición paraformar subsistemas, capas ymódulos

Page 11: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Vista de código (Cont.)

Page 12: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Vista de desarrollo

La vista de desarrollo la usan losdesarrolladores, pero es diferentea la vista de código, esta es unavista de la estructura del códigofuente, como un repositorio elcual varios usuarios(programadores y demantenimiento) crean, modificany administran

Page 13: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Vista de desarrollo (Cont.)

Page 14: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Vista de coincidencia

Esta vista permite deducir los procesose hilos que se van a crear y como sevan a comunicar y a compartir recursos.

Page 15: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Vista física

La vista física describe losrecursos de HW del sistema.En sistemas pequeños estrivial la vista física puestoque un solo computador es elque se encarga de manejartodos los procesos

Page 16: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Vista física (Cont.)

Page 17: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Escenarios

Page 18: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Escenarios (Cont.)

Los escenarios se usan para:Entender y validar la arquitectura.Establecer cierta comunicación entre la arquitectura y aquellos que no tuvieron mucho que ver con su creación.Unir las diferentes vistas.Entender los límites de la arquitectura.

Page 19: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Lenguajes de descripción arquitectónica (ADLs)

Debido a la gran importancia de ladescripción arquitectónica, y a suuso como medio de comunicaciónentre los diferentes stakeholders, sehan tratado de desarrollar diferenteslenguajes para soportar estadescripción, algunos han tenidoéxito, y otros han fracasado.

Page 20: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Decisiones tempranas de diseño

El diseño de la arquitectura describela forma en que el sistema estácompuesto. Esto hace que se creenuna serie de restricciones a laimplementación como la forma decomunicación, y como se van aasignar los recursos.

Page 21: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Estilos arquitectónicosDescriben una clase de arquitecturas,

o piezas significantes de una arquitectura.

Son muy usados en la práctica.

Es un paquete coherente de decisiones de diseño.

Tienen propiedades identificadas que permiten el re-uso.

Page 22: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Estilos arquitectónicos (Cont.)

Algunos estilos arquitectónicos considerados por Shaw y Garlan:

Componentes independientes: procesos de comunicación, invocación explicita e invocación implícita.Flujo de datos: batch sequential, pipe and filter.Centralización de datos: repositorio, blackboard.Maquina virtual: Interpreter, sistema basado en reglas.Call/return: programa principal y subrutina, Orientado a objetos, por capas.

Page 23: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Estilos arquitectónicos (Cont.)

Deben tener por lo menos la siguiente información:

Un conjunto de tipos de componentes.Un conjunto de tipos de mecanismos de conexión.Una disposición topológica de los componentes.Una serie de restricciones topológicas y de comportamiento.Una descripción acerca de los costos y beneficios de cada uno de los estilos.

Page 24: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Diseño y análisis de la arquitectura

Asegurar que nuestras decisiones de diseño son coherentes con las metas de calidad establecidas.Predecir los atributos de calidad que el sistema tendrá.Asegurar que el sistema satisface las necesidades de su stakeholder.Asegurar que as decisiones de diseño traen el mayor beneficio a la organización.

Page 25: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Diseño basado en arquitectura

Propone un método detransformar un conjunto derequerimientos del cliente en unaarquitectura para un sistema opara una línea de producción, através de descomposiciones yrefinamientos.

Page 26: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Diseño basado en arquitectura (Cont.)

Lista de requerimientos.

Descomponer diseño

arquitectónico.

Se satisfacen los atributos de calidad asociando estilos

arquitectónicos con los requerimientos.

Page 27: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Diseño basado en arquitectura (Cont.)

El diseño se concentra en tres vistas arquitectónicas:

la funcionalla de coincidenciala física.

Page 28: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Análisis basado en arquitectura

Se hace un análisis al diseño conel fin de asegurar que lascualidades que el arquitecto haplaneado para la arquitectura sepuedan realizar. Este análisis sehace basándose en escenarios,de los cuales se sacan los datosque se quieren medir.

Page 29: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Ingeniería en reversa de la arquitectura

Razones:Las arquitecturas pueden no haber sidodocumentadas nunca, y los únicos queentienden la arquitectura son empleadosque ya dejaron la organización.Se adquieren nuevos productos sindocumentación arquitectónica.El trabajo de los programadores hacambiado algunas de las restriccionespreviamente establecidas por el arquitecto.

Page 30: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Futuro

Page 31: Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten ver la arquitectura de un sistema más en detalle y Vista lógica y Vista de código

Referencias

Rick Kazman, Software Architecture, Handbook of Software Engineering and Knowledge Engineering, 2001.