Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten...
Transcript of Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten...
Mario González
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
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
Agenda (Cont.)
Análisis basado en arquitecturaAnalizando los Impactos en el negocio de las decisiones arquitectónicasIngeniería en reversa de la arquitecturaEl futuro
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
¿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.
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.
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
Vista lógica
Abstracción de las funciones el sistema y sus relaciones.
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
Vista de código (Cont.)
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
Vista de desarrollo (Cont.)
Vista de coincidencia
Esta vista permite deducir los procesose hilos que se van a crear y como sevan a comunicar y a compartir recursos.
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
Vista física (Cont.)
Escenarios
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.
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.
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.
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.
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.
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.
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.
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.
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.
Diseño basado en arquitectura (Cont.)
El diseño se concentra en tres vistas arquitectónicas:
la funcionalla de coincidenciala física.
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.
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.
Futuro
Referencias
Rick Kazman, Software Architecture, Handbook of Software Engineering and Knowledge Engineering, 2001.