domingo, 24 de fevereiro de 2008

AULA 5 E 6 - GRASP

Grasp = General Responsability Assignement

5 formas que um sistema Grasp deve apresentar

1 - Especialista
2 - Criador
3 - Alta coesão
4 - Baixo Acoplamento
5 - Controlador

Tivemos um exemplo de um sistema especialista

Problema: A quem cabe a responsabilidade de conhecer?
Resposta: Atribuir a responsabilidade à classe que detém a informação

O que isso quiz dizer?
Que se deve ter um especialista(Classe) para cada funcionalidade do sistema, ou seja se precisamos fazer uma cirurgia de estomago, devemos ter um medico especializado em esse certo tipo de cirurgia, igual aos sistema, se desejarmos fazermos uma conta que envolva soma, devemos chamar a classe que efetua essa operação.






A figura acima demonstra um sistema especialista.

Como dito em aula, a exemplo de um sistema de supermerado temos 3 funções ObterTotal, ObterSubTotaol e ObterPreco

ObterTotal: Essa função é encarregada por pegar a quantidade e multiplicar pelo total de itens mas para isso precisamos da função ObterSubTotal, pois é ela que contém a quantidade de itens que o cliente adiquiriu.

ObterSubTotal: Essa função é a responsável por contar quantos itens o cliente levou e até o item qual foi o valor de sua compra, mas para isso precisamos do preço de cada produto, por isso devemos chamar a função ObterPreço. Essa função é importantissima em um sistema de supermercado pois é ele que a partir de que o cliente vai passando os produtos pelo sistema, na tela vai apresentando até aquele produto qual foi o valor da compra até aquele momento, isso serve para aqueles que tem um limite de compra, se quizeram para por ali, podem parar pois estão vendo na tela quanto foi o valor até aquele item.

ObterPreço: É a função responsável por ter a descrição de cada produto e seu preço

Um Sistema especialista na informação é o padrão mais usado nos dias de hoje. A informação desse sistema frequentemente se encontra espalhada pela fraco acoplamento, e existem menssagens para estabelecer contato entre as colaborações.

ACOMPLAMENTO = DEPENDENCIA

Um Sistema especialista é uma classe de programa de computador desenvolvido por pesquisadores de Inteligência artificial durante os anos 70 (1970) e aplicado comercialmente durante os anos 80 (1980). Em síntese, são programas constituídos por uma série de regras que analisam informações (normalmente fornecidas pelo usuário do sistema) sobre uma classe específica de problema (ou domínio de problema).
Um termo relacionado é wizard (software) (em inglês). Como um sistema especialista, um wizard também é um programa de computador interativo que auxilia o usuário a resolver um problema. Normalmente, o termo wizard é empregado para designar programas que pesquisam uma base de dados procurando por critérios informados pelo usuário. Infelizmente, a distinção entre essas duas definições não é universal, e alguns programas baseados em regras são também chamados de wizards.

Tipos de problemas solucionados por sistemas especialistas

Tipicamente, os problemas que podem ser solucionados por um sistema especialista são do tipo que seria atendido por um especialista humano - um médico ou outro profissional ( na maioria dos casos ). Especialistas reais no domínio do problema ( que normalmente é bem específico, como por exemplo "'diagnosticar doenças de pele em adolescentes'" ) fornecem regras gerais indicando como analisariam o problema, tanto explicitamente com a ajuda de um analista de sistema experiente, como implicitamente, fazendo com que estes especialistas analisem casos de teste e usando programas de computador para analisar os dados de teste e, de forma limitada, derivar regras dessa análise.
Sistemas simples utilizam uma lógica verdadeiro/falso simples para analisar os dados. Por outro lado, sistemas mais sofisticados são capazes de realizar pelo menos alguma avaliação levando em consideração incertezas do mundo real, utilizando métodos como lógica fuzzy. Tal sofisticação é de desenvolvimento difícil e ainda extremamente imperfeita.

Aplicação

Se por um lado sistemas especialistas se destacaram na pesquisa em IA por achar aplicação prática no mundo real, por outro lado essa aplicação tem sido restrita. Sistemas especialistas são notoriamente limitados no domínio do conhecimento - um exemplo interessante e divertido é aquele onde um pesquisador de IA utilizou o sistema especialista de "doença de pele" para diagnosticar sarampo em seu carro enferrujado - e portanto propenso a cometer erros que um especialista humano facilmente detectaria. Além disso, uma vez que a mística em torno do tema diminuiu, vários programadores perceberam que sistemas especialistas simples eram essencialmente versões ligeiramente mais elaboradas de programas procedurais que eles já vinham utilizando há bastante tempo. Sendo assim, algumas das técnicas de sistemas especialistas podem ser encontradas em vários programas complexos sem qualquer alarde em relação a isso.

Sistemas especialistas versus sistemas de solução de problemas

A principal diferença entre um sistema especialista e um programa tradicional está na maneira como o conhecimento sobre o domínio do problema é codificado. Em aplicações tradicionais, o conhecimento sobre o domínio do problema é codificado tanto nas instruções propriamente ditas quanto nas estruturas de dados.
Já na abordagem de sistema especialista, todo o conhecimento relativo ao domínio do problema é codificado exclusivamente nas estruturas de dados. Nenhum conhecimento é armazenado nas instruções ou nos programas propriamente ditos. Vários benefícios surgem imediatamente dessa estratégia.
Um exemplo pode ajudar a destacar a diferença entre a abordagem procedural tradicional e a abordagem de sistemas especialistas, como o exemplo do problema da declaração de imposto de renda.
Na abordagem tradicional, as estruturas de dados armazenam as informações do contribuinte e das alíquotas de imposto, e um programa representa o conhecimento necessário para a declaração de imposto de renda, contendo os comandos que relacionam as informações do contribuinte com as alíquotas e os cálculos necessários para realizar a declaração. É essa representação do conhecimento que é difícil para um especialista em impostos compreender ou modificar.
Na abordagem de sistema especialista, a informação sobre o contribuinte e as alíquotas, bem como os cálculos necessários, estão novamente armazenadas em estruturas de dados, mas o conhecimento que descreve o relacionamento entre elas também é armazenado nas estruturas de dados. O programa de um sistema especialista é independente do conhecimento do domínio do problema ( no nosso exemplo, do conhecimento das alíquotas e rendas do contribuinte e do relacionamento entre elas, os cálculos ) e serve para processar estruturas de dados independente da natureza do problema que essas estruturas descrevem.
Por exemplo, há programas interativos específicos para capturar descrição de dados, programas para capturar e organizar as descrições, programas para processar as declarações que representam relacionamentos semânticos dentro do domínio do problema e um algorítimo para controlar a sequência de processamento e o foco.
A arquitetura geral de um sistema especialista compreende dois componentes principais : um conjunto de declarações totalmente dependentes do domínio do problema e que é chamado de base de conhecimento ou base de regras, e um programa independente do domínio do problema ( apesar de altamente dependente das estruturas de dados ) chamado de motor de inferência.

Bibliografia:

Professor Bosco

http://pt.wikipedia.org/wiki/Sistema_especialista