Arquitectura de software - LDC Noticiasabianc/materias/ci4712/Software Architecture... · permiten...

Post on 19-Sep-2018

225 views 0 download

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.