Sei sulla pagina 1di 38

ARQUITECTURA DE

SOFTWARE
¿Qué es la Arquitectura de Software?
Según IEEE Std 1471:

La Arquitectura de Software es la organización fundamental de un


sistema encarnada en sus componentes, las relaciones entre ellos y el
ambiente y los principios que orientan su diseño y evolución.
¿Qué es la Arquitectura de Software?
Garlan y Shaw (1993) sugieren que es

Un nivel de diseño que trasciende algoritmos y estructuras de datos. Factores


estructurales que incluyen:

• Organización general y estructura global de control


• Protocolos de comunicación, sincronización y acceso a datos
• Asignación de funcionalidades a elementos de diseño
• Distribución física
• Composición de elementos de diseño
• Escalamiento y rendimiento
• Selección entre alternativas de diseño
¿Qué incluye la Arquitectura de un Software?
• Modelo que contiene un conjunto de componentes y sus relaciones.
• Define el marco para el diseño y desarrollo de un sistemas de
información.
• Da guías de diseño.
• Permite enfocar esfuerzos para la implementación.
• Se concentra en requisitos no funcionales. Los requerimientos
funcionales se satisfacen mediante modelado y diseño de la
aplicación.
Posibles problemas al carecer de Arquitectura

• Rendimiento inadecuado de las aplicaciones


• Mantenimiento costoso
• Diseño inadecuado para evolucionar
• Reutilización limitada
• Proyectos ineficientes
• Afecta la calidad de los sistemas de software
• No hay interoperabilidad
Tipos de arquitecturas de software
• Arquitecturas centradas de datos
• Arquitecturas de flujo de datos
• Arquitecturas orientadas a objetos
• Arquitecturas estratificadas (por capas).
Arquitecturas centradas de datos
• Arquitecturas centradas de datos. Algunas veces llamado Blackboard.
En el centro de esta arquitectura se encuentra un almacén de datos
(por ejemplo, un documento o una base de datos) al que otros
componentes acceden con frecuencia para actualizar, añadir, borrar o
bien modificar los datos del almacén.

Hearsay Speech Understanding


ftp://shelob.cs.umass.edu/pub/Erman_Hearsay8
0.pdf
Arquitecturas de flujo de datos
• Esta arquitectura se aplica cuando los datos de entrada son
transformados a través de una serie de componentes
computacionales o manipulativos en los datos de salida.

Típicamente usada en
procesamiento de señales y
transformación de flujos de
datos.
Arquitecturas estratificadas (por capas).
• Crean diferentes capas y cada
una realiza operaciones
diferentes. La ventaja
principal de este estilo es que
el desarrollo se puede llevar a
cabo en varios niveles y, en
caso de que sobrevenga algún
cambio, sólo se ataca al nivel
requerido sin tener que
revisar entre código mezclado.
Tipos de arquitecturas
Aplicaciones standalone

Cliente – servidor

Modelo-Vista-Controlador (MVC)

Plataforma Multi-capas

SOA (Service Oriented Architecture)

Microservicios (Microservices)

API Oriented Architecture


MODELADO ARQUITECTONICO
• Diagrama Arquitectónico OVERVIEW
• Diagrama de componentes
• Diagrama de despliegue
• Desiciones arquitectonicas.
Gmail API
Microservicios
PATRONES ARQUITECTÓNICOS
¿Qué es un patrón de software?
“Un patrón describe un problema de diseño recurrente, que surge en
contextos específicos de diseño, y presenta un esquema genérico
probado para la solución de este. El esquema de la solución describe
un conjunto de componentes, responsabilidades y relaciones entre
éstos, y formas en que dichos componentes colaboran entre sí.”
[Buschmann]
Tipos de patrones (Catálogos)
• De diseño (GoF)
• De arquitectura
• De plataforma
Patrones de Diseño - Catálogo de GOF
Patrones de Presentación o de Arquitectura.
Busca apoyar las arquitecturas por capas. Algunos patrones mas
comunes son:
• MVC (Modelo – Vista - Controlador)
• MVP (Modelo – Vista - Presentador)
• MVVM (Modelo – Vista – Modelo de Vista)
PATRÓN DAO
PATRONES GRASP
El acrónimo fue utilizado por primera vez por Craig Larman, un científico
computacional canadiense. Considerado uno de los lideres del desarrollo ágil.

object-Oriented
eneral design
esponsibility
ssignment
oftware
atterns
PRINCIPIOS SOLID
Se originan al inicio del 2000, son cinco patrones de diseño cuyo su
principal objetivo es lograr elaborar sistemas fáciles de mantener y
expandibles en el tiempo.
PRINCIPIO DE INVERSION DE
CONTROL
• PRINCIPIO DE INYECCIÓN DE DEPENDENCIAS: es
un patrón de diseño orientado a objetos, en el que se suministran
objetos a una clase en lugar de ser la propia clase la que cree el
objeto. El término fue acuñado por primera vez por Martin Fowler.
Principios de POO
• Abstracción (Herencia)
• Polimorfismo
• Encapsulamientos
• Sobreescritura
• Sobrecarga
• Modularidad
ESTANDARES DE DESARROLLO
• Logs
• I18N
• Manejo de excepciones
• Experiencia de usuario – Diseño UI
• Buenas Practicas (Clean Code) – Principios – Patrones
Arquitecturas desarrolladas por terceros
• Otra opción es utilizar como arquitectura de referencia un Framework
de software desarrollado por terceros.
Ventajas
• Poseen un árbol de carpetas estructurado.

• Reutilización de código (no hay que reinventar la rueda).

• Acceso a tutoriales y documentación sobre como crear aplicaciones.

• Poseen patrones de diseño y de arquitectura integrados.

• Poseen componentes y librerías pre-instaladas que facilitan la programación.

• Evolucionan continuamente para adaptarse a las nuevas necesidad o corregir errores de


versiones anteriores.
3 patrones de diseño imprescindibles que deberías
conocer para tu sistema en cloud: Retry, Valet Key y
Sharding
• https://www.genbetadev.com/programacion-en-la-nube/3-patrones-
de-diseno-imprescindibles-que-deberias-conocer-para-tu-sistema-en-
cloud-retry-valet-key-y-sharding
Cloud Design Patterns: Prescriptive
Architecture Guidance for Cloud Applications
• https://msdn.microsoft.com/en-
us/library/dn568099.aspx?f=255&MSPPError=-2147217396
Patrones y Antipatrones: una Introducción -
Parte II
• https://msdn.microsoft.com/es-es/library/bb972251.aspx#tabla04
Pattern: Backends For Frontends
• http://samnewman.io/patterns/architectural/bff/
PERSISTENCIA

Potrebbero piacerti anche