Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Arquitectura software
La arquitectura de software nos proporciona una visión global del sistema, identifica
los elementos y las relaciones entre estos, lo que permite entender el sistema,
organizar su desarrollo, plantear una posible reutilización del software.
¿Qué es un patrón?
Los expertos normalmente no crean nuevas soluciones para cada problema que se
presenta, sino que se basan en su experiencia para ajustar soluciones de problemas
anteriores (patrones) aplicando estás en los nuevos problemas.
Otros autores señalan que los patrones son relaciones estructurales entre
componentes de un sistema que acarrea un equilibrio de demandas en el sistema,
Bergin (2000) y que es un modo de generar conductas complejas desde reglas
simples.
Bergin señala que los patrones capturan las practicas de los expertos, comunican
este conocimiento a otros volviéndose una herramienta para los no expertos,
resuelven problemas a problemas recurrentes, es un vocabulario de soluciones,
equilibra un conjunto de fuerzas y pueden trabajar con otros patrones.
Un patrón es, pues, una solución útil, usable y reutilizable de forma eficiente. Los
patrones y los correspondientes lenguajes de patrones son, pues formas de describir
métodos excelentes y buenos diseños.
Patrones de Arquitectura
Ochoa (2005) señala que los patrones arquitectónicos proporcionan una alternativa
(genérica) sobre cómo resolver algunos de los problemas arquitectónicos más
comunes. Y proporciona la siguiente clasificación:
Patrones Simples
El patrón de arquitectura de layers o capas ayuda a estructurar aplicaciones que pueden
descomponerse en grupos de subtareas con diferentes niveles de abstracción.
El patrón de arquitectura de pipes y filtros provee una estructura para procesar flujos de
datos. Cada paso de procesamiento se encapsula en un filtro. Los datos se pasan usando los
“pipes” entre filtros adyacentes. Recombinando los filtros pueden construirse distintas
familias de sistemas relacionados.
El patrón de arquitectura de pizarrón es útil para problemas en que no se conoce una
estrategia determinística para calcular la solución. Varios subsistemas especializados reúnen
su conocimiento para construir una solución parcial aproximada.
Sistemas Interactivos
El patrón de arquitectura de modelo-view-controlador (MVC) divide una aplicación interactiva
en tres partes. El modelo contiene los datos y la funcionalidad esencial. Las views despliegan
la información al usuario. Los controladores manejan el input. Las views y los controladores
juntos componen la interfaz con el usuario. El mecanismo de cambio-propagación asegura la
consistencia de la interfaz con el modelo.
El patrón de arquitectura PAC define una estructura jerárquica de agentes cooperativos. Cada
agente es responsable de un aspecto específico de la funcionalidad de la aplicación y está
compuesto por tres componentes: presentación-abstracción-control. Esta subdivisión separa
los aspectos de HCI de los agentes, del núcleo funcional de cada uno y de los mecanismos
de comunicación con otros agentes.
Patrones Adaptables
MicroKernel: Es usado en sistemas de software que deben adaptarse a los cambios en los
requisitos. Este separa el núcleo funcional, la funcionalidad extendida y los aspectos relativos
al cliente.
Reflexión: Provee un mecanismo para cambiar la estructura y el comportamiento de un
sistema de software, en forma dinámica.
Este patrón divide a una aplicación en dos partes: un meta nivel que provee información
acerca de las propiedades del subsistema seleccionado, y un nivel base que provee la lógica
de la aplicación.
El tipo de patrón de arquitectura que debe de usarse depende del tipo de sistema
que se quiera construir y de la prioridad de los requisitos en cuanto a desempeño,
seguridad, protección, disponibilidad y mantenibilidad.
La arquitectura de cualquier sistema está muy relacionada con lo que dicho sistema
tiene que hacer es por eso que el uso de patrones nos permite obtener de una forma
sencilla la arquitectura base que buscamos durante la fase de diseño arquitectónico.
Patrones de Diseño
En el desarrollo software el patrón de diseño describe las clases y objetos que se
comunicarán entre sí de manera que puedan resolver un problema general de
diseño en un contexto particular.
Los patrones de diseño deben de comprimir experiencias que nos permitan mejorar
la calidad del diseño de un sistema, determinando elementos que soporten roles
útiles en dicho contexto, encapsulando complejidad, y haciéndolo más flexible.
Por esta razón los sistemas con objetivos similares comparten también una
arquitectura común (patrones de arquitectura), unos procesos bien definidos, y un
conjunto de elementos similares (patrones de diseño).
Patrones de Interacción
Un patrón de interacción modela un aspecto referente a la interfaz de un SI en
función de los requerimientos del usuario.
En comparación con los patrones de diseño de la ingeniería de software, el estudio
de patrones de interacción en el campo de la Interacción Humano-Computadora es
reciente.
Los patrones de interacción ayudan a diseñar sistemas fáciles de usar para las
personas por lo que una de las principales características generales es el de respetar
uno o más criterios de usabilidad provenientes de la ergonomía de interfaces del
usuario.
Nombre del patrón: el cual debe ser representativo, claro y conciso del
concepto a comunicar.
Problema: Una descripción del problema desde el punto de vista del usuario
Principios de usabilidad: Describe los principios o criterios ergonómicos en
los cuales se basa el patrón.
Contexto: Una descripción de la situación en la cual puede usarse el patrón,
cuales son las características del contexto, en términos de las tareas, del
usuario.
Fuerza: aspectos del contexto que necesitan ser optimizados.
Solución: Descripción clara de la solución propuesta (otros patrones pueden
ser necesarios para completar la solución completa del problema)
Consecuencias: Describe los resultados de aplicar el patrón.
Ejemplo: Una muestra ilustrativa de una solución exitosa.
Lenguajes de patrones
Describir un patrón de forma genérica es algo difícil muchas veces lo que se hace es
documentar la implementación de patrones existentes, para esto se tienen que
realizar diversas versiones de éstos patrones de manera que la versión final del
patrón se pueda utilizar en diferentes contextos.
Al identificar nuestro sistema como de cierto tipo, es muy útil consultar lenguajes de
patrones que nos sirva como referencia conceptual del dominio del problema, ya
que generalmente éstos parten como solución a un conjunto de casos de uso, e
interacciones con actores específicos.
Alexander, C. , Ishikawa, S., Silverstein, M., Jacobson, M., Fiksdahl-King, I., and
Angel, S., Oxford University Press, New York , 1977.
Díaz Toledano, M.D. (n.d.). Cómo desarrollar una arquitectura software: los
lenguajes de patrones. Consultado en:
http://www.moisesdaniel.com/es/wri/ComoDesArqSoft.htm