Técnicas arquitectura del software - GitHub Pages

18
Arquitectura del Software Escuela de Ingeniería Informática Universidad de Oviedo Técnicas arquitectura del software Jose Emilio Labra Gayo Curso 2020/2021

Transcript of Técnicas arquitectura del software - GitHub Pages

Page 1: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o

Técnicas arquitectura del software

Jose Emilio Labra GayoCurso 2020/2021

Page 2: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o

Arquitecto del softwareLa disciplina evolucionaArquitecto debe conocer:

Avances en técnicas de construcciónEstilos y patrones

Mejor herramienta = experiencia (no silver bullet)Experiencia propiaExperiencia de la comunidad

Arquitecto

Page 3: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o

Papel del arquitecto de software

TácticasEstilos

PatronesAnti-patrones

Arquitectode SoftwareExperiencia

de la comunidad

Stakeholders

Tecnología

Arquitectura

ObjectivosRequisitos funcionales

Atributos de calidad

RestriccionesPreocupaciones

Page 4: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o

Tácticas

Técnicas de diseño para alcanzar una respuesta a algunos atributos de calidad

Las tácticas se enfocan en la respuesta a un Atributode calidadPueden chocar con otros atributos de calidad

Las tácticas intentan controlar respuestas a estímulos

Táctica para controlarrespuestaEstímulo Respuesta

Page 5: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o

Tácticas dependen del atributo de calidad Disponibilidad

FalloFallo enmascarado o reparación realizada

ModificabilidadLlegan cambios Cambios realizados, testeados, y

desplegados en tiempo y presupuesto

RendimientoLlegan eventos Respuesta generada dentro de las

restricciones temporales

SeguridadAtaque El Sistema detecta, resite o se

recupera del ataque

TestabilidadFallos detectadosSe finaliza un

incremento

UsabilidadEl usuario recibe feedback y

asistencia apropiadosPetición del

usuario

Page 6: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o

¿Dónde podemos encontrar tácticas?Propia experiencia del arquitectoExperiencia documentada de la comunidad

Libros, conferencias, blogs,...Las tácticas evolucionan con tiempo y tendencias

Libro "Software architecture in practice" contiene unalista de varias tácticas

http://www.ece.ubc.ca/~matei/EECE417/BASS/ch05lev1sec1.htmlhttps://www.cs.unb.ca/~wdu/cs6075w10/sa2.htm

Page 7: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o

Estilos arquitectónicos

Definen la forma general del sistemaContienen:

Elementos: Componentes que contienen funcionalidadRelaciones: Relaciones entre los elementosRestricciones: Limitan la integración entre elementosLista de atributos:

Ventajas/desventajas de un estilo

Page 8: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o

¿Existen estilos puros?Estilos puros = idealizaciónEn práctica, los estilos puros se dan pocas vecesNormalmente, los sistemas se desvían de estilos

puros......o combinan varios estilos arquitectónicosEs importante comprender los estilos puros para:

Comprender pros/cons de un estiloValorar las consecuencias de desviarse del estilo

Page 9: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o

Patrón arquitectónicoSolución general y reutilizable a algún problema

recurrente que aparece en un contextoParámetro importante: problema

3 tipos:Estructurales: Tiempo de construcción

Ejemplo: LayersRuntime (comportamiento)

Ejemplo: Pipes & filtersDespliegue

Ejemplo: Cluster de balanceo de carga

Page 10: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o

Patrón vs EstiloPatrón = solución a un problema

Estilo = genéricoNo tiene que estar asociado a un problema

Estilo define la arquitectura general de unaaplicaciónNormalmente, una aplicación tiene un estilo

...pero puede tener varios patronesLos patrones aparecen en escalas diferentes

Alto nivel (patrones arquitectónicos)Diseño (patrones de diseño)Implementación (idiomas). . .

Page 11: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o

Patrón vs EstiloLos estilos, en general, son independientes entre síUn patrón puede relacionarse con otros patrones

Un patrón puede estar compuesto de varios patronesPueden crearse interacciones entre patrones

Page 12: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o

Lenguajes y catálogos de patrones

Catálogo de patronesUn conjunto de patrones sobre un asunto

No tiene porqué ser exhaustivoLenguaje de patrones

Un catálogo de patrones completo sobre un temaObjetivo: documentar todas las posibilidadesNormalmente incluyen relaciones entre patrones

Mapa gráfico

Page 13: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o

Ejemplo de lenguaje de patrones

Source: "SOA with REST" book

Page 14: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o

Construir vs reutilizarEn algunos dominios, reutilizar arquitecturas

existentes puede ser más eficienteArquitecturas de referenciaComponentes desarrollados externamente

Calidad/ámbito

Esfuerzo/Coste Tiempo

Producto

Page 15: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o Arquitecturas de referenciaPlanos que proporcionan

una estructura general para ciertos tipos de aplicacionesPueden contener varios

patronesPueden ser un estándar

de-facto en algunos dominios

Fuente: Microsoft Application Architecture Guide, 2nd Ed.

Page 16: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o Arquitecturas de software de dominios específicosCombinación de:

• Arquitectura de referencia para un dominio• Librería de componentes para dicha arquitectura• Método para elegir y configurar componentes

para trabajar dentro de una instancia de dicha arquitectura de referencia

Especializados para un dominio concretoEjemplos:

ADAGE, MetaH

Page 17: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o

Componentes desarrollados externamentePilas tecnológicas o familias

MEAN (Mongo,Express,Angular,Node), LAMP (Linux,Apache,MySQL,PHP), ...Productos

COTS: Commercial Off The SelfFOSS: Free Open Source Software

¡Cuidado con las licencias!Marcos de aplicación

Componentes de software reutilizablesPlataformas

Proporcionan infraestructura completa para construir y ejecutar aplicacionesExample: JEE, Google Cloud

Page 18: Técnicas arquitectura del software - GitHub Pages

Arquitectura del SoftwareE

scu

ela

de

Inge

nie

ría

Info

rmát

ica

Un

iver

sid

ad d

e O

vied

o