Patrones y Antipatrones en las Arquitecturas de Software

Antipatrones

Patrones

Optimización de caché. Wrappers.

Programación Orientada a Aspectos

Inversión de control e inyección de dependencias

¿Qué es inversión de control?

Frameworks

Optimización de caché

Wrappers

Acorta tiempo de exploración

Optimiza los sistemas de archivos compartidos remotos

Reduce el tamaño de caché

Concepto

Ejemplos

Wrappers para acceder a bases de datos

Wrappers en la programación orientada a objetos

Wrappers como traductores de entradas de
usuarios

Se corresponden con las buenas experiencias, ya que reúnen resoluciones a problemas recurrentes encontrados en el diseño de software orientado a objetos.

Hacen referencia a programas o códigos que rodean otros
componentes de programa

Wrappers para diseñar documentos
HTML

Wrappers TCP en sistemas Linux

Se corresponden a las malas experiencias ya que reúnen soluciones que han producido efectos negativos.

La problemática

La refactorizada

aquélla con el impacto negativo

aquélla que transforma la situación negativa en una más saludable

es un paradigma de programación que permite una adecuada modularización de las aplicaciones y posibilita una mejor separación de responsabilidades

Aspecto

Punto de corte

funcionalidad transversal que será implementada de forma separada.

Es un esquema
(un esqueleto ,un patrón)
para el desarrollo y/o la
implementación de una aplicación.

Balanceo de Carga

Ventajas

es el que se encarga de especificar mediante expresiones regulares en qué parte del programa se debe de insertar un aspecto.

Ejemplos

¿Cuál es el sentido de un framework?

Attribute Driven Design (ADD):

Necesita que esa información esté estructurada de un modo conocido para poder manejarla: almacenarla, recuperarla, y todos los “-arla” que se requieran.

Consejo

es el código que ejecutará el
aspecto

Es un principio de diseño de software en el que el flujo de ejecución de un programa se invierte respecto a los métodos de programación tradicionales.

Concepto:

Métodos de Conexiones

método que mediante el análisis de los atributos de calidad definidos en la fase de requerimientos, obtiene una arquitectura inicial del sistema, identificando módulos, componentes y conectores.

Es un método para distribuir la carga de trabajo en varias computadoras separadas o agrupadas en un clúster

Ruby on Rails ofrece un marco para el desarrollo completo de una aplicación web.

Transparente para el usuario

Funcionalidad permanente

Bajo costo

Evita la saturación de servidores

Relación

JavaServer Faces está más orientado a la interfaz de usuario.

Weighted LeastConnection

Ip-hash

LeastConnection

Weighted Round-Robin

Round-Robin

La Inversión de control es el concepto central del Framework de Spring y usa la implementación por Inyección de dependencias

¿Qué ventajas tiene utilizar un ‘framework’?

¿Qué es inyección de dependencia?

Peticiones distribuidas entre servidores de forma cíclica

Las que se derivan de utilizar
un estándar; entre otras:

Este principio establece que los módulos de alto nivel de un software no deben depender de módulos de bajo nivel, sino que ambos deben depender de abstracciones.


La entrega de peticiones depende del peso

La atención de peticiones es atendida por el servidor con menos conexiones activas

Las entregas dependen del peso y número que conexiones que tengan

El programador no necesita plantearse una estructura global de la aplicación.

Facilita la colaboración. Cualquiera que haya tenido que “pelearse” con el código fuente de otro programador(¡o incluso con el propio ,pasado algún tiempo!

Las peticiones son atendidas según la ip-address, así son atendidas por un mismo servidor

“Plan,Do,and Check”

Do:

Es más fácil encontrar herramientas(utilidades ,librerías)

Check:

Plan:

Ventajas

El bajo acoplamiento entre los componentes

Fácil de adaptar en múltiples lenguajes de programación

Facilidad para pruebas

Más mantenible a medida que
va creciendo

son consideradas para seleccionar qué tipos de elementos se utilizan en la arquitectura.

Los elementos son instanciados para satisfacer los atributos de calidad, así como los requisitos funcionales.

El resultado es analizado para determinar si los requisitos son satisfechos.

Ventajas

Provee una fuerte herramienta para modularizar programas sin importar lo extensos y complicados que estos sean.

Es exitoso sí

Mejora el desempeño del servicio

Evita la saturación

Minimiza los tiempos de respuesta

Vuelve más limpio el código fuente.

Permite agilizar el proceso de creación de
programas

Puede mezclarse con cualquier otro paradigma
de programación.

Permite la comunicación entre diferentes lenguajes de programación que comparten aspectos

Formas de implementación

Basado en DNS

Basado en software

Dedicado