Arquitectura de software

Anuncio
Mario González
Agenda
€
€
€
€
Introducción histórica
¿Qué es la arquitectura de software?
Arquitectura y sus efectos en los
Stakeholders
Estructuras arquitectónicas
y
y
y
y
y
€
Vista lógica
Vista de código
Vista de desarrollo
Vista de coincidencia
Vista física
Escenarios
Agenda (Cont.)
Lenguajes de descripción arquitectónica
(ADLs)
€ Arquitectura como decisiones
prematuras de diseño
€ Estilos arquitectónicos
€ Arquitecturas para líneas de producción
€ Diseño y análisis de la arquitectura
€ Diseño basado en arquitectura
€
Agenda (Cont.)
Análisis basado en arquitectura
€ Analizando los Impactos en el negocio
de las decisiones arquitectónicas
€ Ingeniería en reversa de la arquitectura
€ El futuro
€
Introducción histórica
€
Se comenzó a usar desde 1990 debido
al tamaño y complejidad de los sistemas
que comenzaron a surgir.
€
Razones:
y Comunicación entre stakeholders
y Decisiones de diseño
y Abstracción transferible de un sistema
¿Qué es la arquitectura de
software
€
La arquitectura de software de un
programa o sistema de computación es
la(s) estructura(s) del sistema que
comprende los componentes del software,
las propiedades visibles de esos
componentes y las relaciones entre ellos.
Arquitectura y sus efectos en los
Stakeholders
€
La arquitectura afecta a todos los
relacionados con el proyecto, afecta a los
clientes, al gerentes, al equipo de
desarrollo, al equipo de pruebas, etc. Cada
stakeholder se preocupa por partes
especificas del sistema, y esto se ve
reflejado en la arquitectura del sistema. La
arquitectura provee un lenguaje mediante
el cual los stakeholders comprenden el
sistema y se comunican para tomar
decisiones importantes.
Estructuras arquitectónicas
€
Existen diferentes tipos de vistas que
permiten ver la arquitectura de un
sistema más en detalle
y Vista lógica
y Vista de código
y Vista de desarrollo
y Vista de coincidencia
y Vista 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 el
programador, los elementos que
tiene este tipo de vista son
clases, objetos, métodos y
funciones y su composición para
formar subsistemas, capas y
módulos
Vista de código (Cont.)
Vista de desarrollo
€ La
vista de desarrollo la usan los
desarrolladores, pero es diferente
a la vista de código, esta es una
vista de la estructura del código
fuente, como un repositorio el
cual
varios
usuarios
(programadores
y
de
mantenimiento) crean, modifican
y administran
Vista de desarrollo (Cont.)
Vista de coincidencia
€
Esta vista permite deducir los procesos
e hilos que se van a crear y como se
van a comunicar y a compartir recursos.
Vista física
€ La
vista física describe los
recursos de HW del sistema.
En sistemas pequeños es
trivial la vista física puesto
que un solo computador es el
que se encarga de manejar
todos los procesos
Vista física (Cont.)
Escenarios
Escenarios (Cont.)
€ Los escenarios se usan para:
y Entender y validar la arquitectura.
y Establecer cierta comunicación
entre la arquitectura y aquellos que
no tuvieron mucho que ver con su
creación.
y Unir las diferentes vistas.
y Entender los límites de la
arquitectura.
Lenguajes de descripción
arquitectónica (ADLs)
€ Debido
a la gran importancia de la
descripción arquitectónica, y a su
uso como medio de comunicación
entre los diferentes stakeholders, se
han tratado de desarrollar diferentes
lenguajes
para
soportar
esta
descripción, algunos han tenido
éxito, y otros han fracasado.
Decisiones tempranas de diseño
€ El
diseño de la arquitectura describe
la forma en que el sistema está
compuesto. Esto hace que se creen
una serie de restricciones a la
implementación como la forma de
comunicación, y como se van a
asignar los recursos.
Estilos arquitectónicos
Describen 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:
y Componentes independientes: procesos de
y
y
y
y
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:
y Un conjunto de tipos de componentes.
y Un conjunto de tipos de mecanismos de
conexión.
y Una disposición topológica de los
componentes.
y Una serie de restricciones topológicas y de
comportamiento.
y 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
de
transformar un conjunto de
requerimientos del cliente en una
arquitectura para un sistema o
para una línea de producción, a
través de descomposiciones y
refinamientos.
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:
y la funcional
y la de coincidencia
y la física.
Análisis basado en arquitectura
€ Se
hace un análisis al diseño con
el fin de asegurar que las
cualidades que el arquitecto ha
planeado para la arquitectura se
puedan realizar. Este análisis se
hace basándose en escenarios,
de los cuales se sacan los datos
que se quieren medir.
Ingeniería en reversa de la
arquitectura
€
Razones:
y Las arquitecturas pueden no haber sido
documentadas nunca, y los únicos que
entienden la arquitectura son empleados
que ya dejaron la organización.
y Se adquieren nuevos productos sin
documentación arquitectónica.
y El trabajo de los programadores ha
cambiado algunas de las restricciones
previamente establecidas por el arquitecto.
Futuro
Referencias
€
Rick Kazman, Software Architecture,
Handbook of Software Engineering and
Knowledge Engineering, 2001.
Descargar