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