Arquitectura en repositorio

A arquitectura en repositorio é un modelo estrutural para sistemas informáticos no que se deseña un compoñente central, encargado do almacenamento da información relevante para o funcionamento global do sistema, e unha serie de compoñentes periféricos, que implementan os servizos do sistema apoiándose no uso do compoñente central, que recibe o nome de repositorio[1]. Este modelo emprégase habitualmente en aplicacións onde un ou varios compoñentes xeran datos que outros compoñentes queren consumir, e nos que non se quere establecer comunicación explícita nin directa entre os produtores e os consumidores de información[2]. Exemplos de sistemas nos que esta arquitectura adoita aparecer son sistemas de control, sistemas de información administrativa e sistemas en contornas interactivas.

Características editar

 
Exemplo de representación dun sistema con arquitectura en repositorio.

A arquitectura en repositorio organiza os compoñentes do sistema en dous tipos de elementos:

  • Repositorio: adoita ser un compoñente único no sistema, e constitúe un almacenamento de datos centralizado. Este almacenamento de datos centralizado ou repositorio é accesible a todos os compoñentes do sistema, que poden engadir, actualizar ou borrar información nel.
  • Compoñente: representa un elemento que implementa un servizo ou funcionalidade do sistema, para o cal interactúa co repositorio. Os compoñentes non interactúan entre si, senón que empregan o repositorio para comunicarse de xeito indirecto.

Este modelado e estruturación do sistema arredor do repositorio de información require dunha visión do sistema centrada na información, e permite modelar facilmente sistemas onde a aparición, desaparición ou cambio na información é a orixinadora de accións por parte dos compoñentes que acceden ao repositorio.

Vantaxes editar

As principais vantaxes da arquitectura en repositorio son as seguintes:

  • Os compoñentes poden ser completamente independentes uns doutros, favorecendo a ausencia de dependencias tanto no seu desenvolvemento coma no funcionamento, mantemento e reutilización.
  • Os cambios producidos na información almacenada no repositorio resultan inmediatamente accesibles a todos os compoñentes do sistema, sen necesidade de comunicárllela explicitamente.
  • Toda a información pódese xestionar uniforme e consistentemente (por exemplo, copias de seguridade).

Inconvenientes editar

Os principais inconvenientes da arquitectura en repositorio son os seguintes:

  • O repositorio é un punto crítico do sistema, un punto único de fallo, de xeito que un problema no repositorio vai a afectar ao funcionamento de todos os compoñentes e á dispoñibilidade do sistema ao completo.
  • Distribuír ou replicar o repositorio pode ser complexo polas necesidades de sincronización que poida carrexar, o que dificulta a escalabilidade do sistema.
  • A eficiencia do repositorio á hora de atender o acceso de todos os demais compoñentes tamén é un limitante no rendemento global do sistema.
  • A atención concorrente de peticións de diferentes compoñentes por parte do repositorio pode levar a conflitos na actualización da información.

Variantes e usos editar

Nunha arquitectura en repositorio, o almacén de datos pode comportarse de dúas maneiras diferentes:

  • Repositorio pasivo: no que o cliente (cada un dos compoñentes) accede aos datos independentemente dos cambios ou accións dos outros clientes ou compoñentes.
  • Repositorio activo: no que o repositorio envía proactivamente información ou notificación aos clientes ou compoñentes cando os datos do seu interese cambian.

A interacción entre o repositorio e os demais compoñentes tamén é variable, xa que a entrada dos datos é seleccionada polos compoñentes e pode que o estado dos datos do repositorio seleccione o proceso a executar.

Sistemas baseados no coñecemento editar

Un uso común da arquitectura en repositorio consiste en desenvolver sistemas baseados no coñecemento (ou sistemas expertos), onde as entidades individuais non son capaces de aproximarse a unha solución, ou ben esta é inviable polo tamaño do espazo de procura. Este tipo de sistemas constan dos seguintes elementos:

  • Axentes (compoñentes), que adoitan estar especializados nunha tarefa concreta ou elemental.
  • Lousa (repositorio), que é un elemento de control.

Os axentes traballan sobre os mesmos datos (os presentes na lousa, sempre actualizados): examinan a lousa, executan cadansúa tarefa e escriben as súas conclusións na mesma lousa. Unha vez que un axente escribe as súas conclusións na lousa, todos os demais verán os novos datos e traballarán sobre estes..

Notas editar

  1. Braude, Eric J. (2001). Software Engineering, An Object-Oriented Perspective. John Wiley & Sons, Inc. 
  2. Sommerville, Ian (2011). Ingeniería de software. Pearson Education.