Um framework para sistemas de apoio a decisão

Sistemas de apoio a decisão são utilizados para auxiliar na resolução de problemas complexos e específicos, problemas que lidam com volumes elevados de informações e que exijem tratamentos e interpretações para a obtenção das respostas esperadas.
A sua utilização pode se dar em qualquer tamanho de escala, desde a otimização de uma equipe de garçons em uma festa, ou a melhoria no desempenho de distribuição de energia elétrica.
A base de dados de tais sistemas precisa ser atualizada constantemente, porque as situações analisadas são dinâmicas e podem se alterar continuamente, como no caso do gerenciamento da frota de ônibus em uma metrópole, ou da análise de ações da bolsa de valores. Todos esses dados existem de alguma maneira em formato digital, e para alimentar um sistema de apoio a decisão, pode-se utilizar robôs que executem essa tarefa em tempo real, ou processos em lote quando o processamento for assíncrono. Um sistema de grande complexidade geralmente envolve processos síncronos e assíncronos.

Esse tipo de sistema, mediante solicitações específicas, retornam informações que ajudam o usuário a tomar decisões.
Para que os usuários interajam com o sistema, é necessário que as regras de negócio que se aplicam ao processamento dos dados sejam armazenadas e possam ser alteradas pelos usuários, mesmo que o usuário não saiba como alterar um programa diretamente no seu código. Portanto um sistema especialista deve possuir uma interface de entrada e manipulação de regras de negócios.

Pode-se utilizar conceitos ou processos de um motor de inferência para a construção de um sistema de apoio a decisão, como um validador de consistência, que verifica continuamente a efetividade do sistema, controlado por um agendador, que entre outras atribuições, realiza a manutenção da integridade dos dados armazenados, via atualizações programadas, processamentos internos para a geração de dados intermediários e finais, esses últimos utilizados por mais de um usuário do sistema, portanto processados em lotes para otimização da performance.

A linguagem de programação deve oferecer acesso a manipulação de dados na memória, seja através de ponteiros ou de referências. Apesar de sistemas desse tipo se caracterizar por possuir uma estrutura de dados simples o volume de informações é muito elevado. Transporte de dados desnecessários entre as etapas do processamento pode causar lentidão no sistema e desperdício de recursos.
A camada de abstração dos dados deve ser modelada com cuidado, seja através da utilização de objetos ou de estruturas de dados como listas, tuplas e dicionários em Python, ou hash, arrays, arrays de hashes etc, em Perl. Linguagem puramente orientada a objetos como Java pode ser utilizada, sem porém trazer vantagens frente a linguagens como Perl e Python que possuem estruturas de dados versáteis e não obrigam o formalismo do Java.
O cuidado na modelagem da camada de abstração dos dados é fundamental, pois o processamento exige uma manipulação intensa dos dados. A modelagem de estruturas de dados deve ser enxuta, pois qualquer acréscimo de objetos desnecessários multiplica a alocação de recursos várias vezes em tempo de execução.

Resumindo o que foi dito acima, um sistema dessa natureza se presta a ajudar na resolução de questões que lidam com grandes quantidades de informações. Essas informações geralmente já existem em formato digital e se encontram distribuídas em sistemas distintos, e portanto devem ser agrupadas por robôs sícronos ou por processamento em lotes.
As regras de negócios devem ser passíveis de alteração por parte dos usuários, para a parametrização das consultas.
Deve-se dedicar atenção especial a modelagem das estruturas de dados, pois o elvevado volume de informações analisadas impacta a utilização de recursos no processamento dos dados.

Quanto mais precisão se espera de um sistema de apoio a decisão, maiores são as análises que o mesmo deve efetuar. É possível que o sistema tome algumas decisões por sí, mas como o próprio nome diz eles se adequam melhor a situações que exijam a intervenção de um especialista no assunto, fornecendo subsídios para decisões assertivas.

Popular posts from this blog

Atom - Jupyter / Hydrogen

Design Patterns

Robson Koji Moriya disambiguation name