• Nenhum resultado encontrado

CAPÍTULO 2 SISTEMAS ESPECIALISTAS

2.11 Metodologia para o desenvolvimento

Sistemas especialistas, como outros tipos de software, têm o objetivo de criar soluções computacionais para problemas. Seu desenvolvimento está intimamente relacionado com a engenharia de software tradicional, embora tenham algumas características peculiares.

A engenharia de software oferece metodologias que provaram ser relativamente bem sucedidas. Segundo GONZALEZ e DANKEL (1993), um dos modelos de desenvolvimento de software mais populares é o waterfall, que é de natureza seqüencial e consiste nas etapas mostradas na Figura 2.5. Análise Especificação Projeto Implementação Teste Manutenção Análise Especificação Projeto Implementação Teste Manutenção

Figura 2.5 - Modelo waterfall para desenvolvimento de software

Resumidamente, pode-se descrever as etapas do modelo waterfall como a seguir:

Análise do problema – faz-se uma investigação do problema para verificar se é possível

resolvê-lo computacionalmente. Os custos e benefícios do sistema proposto são determinados para saber se o seu desenvolvimento é justificável.

Especificação dos requisitos do sistema – com base na análise feita previamente, deve-se

definir as características principais do sistema, tais como, objetivos, funções, futuros usuários e restrições gerais, que podem afetar o sucesso da versão final.

Projeto – é uma fase crítica do desenvolvimento. Consiste em definir a equipe de

desenvolvimento, as ferramentas a serem usadas, a estrutura do código e a interface com o usuário. Um projeto bem executado deve alcançar as metas definidas na especificação dos requisitos para o sistema e, conseqüentemente, satisfazer as expectativas do usuário.

Implementação – consiste em codificar e depurar o programa, unificar seus módulos e

Teste – os testes visam garantir que o sistema implementado satisfaz os requisitos e fornece

as saídas apropriadas para o problema.

Manutenção – compreende as modificações posteriores ao desenvolvimento do sistema.

Inclui a correção de erros não identificados nas fases de implementação e teste, e a adição ou modificação de funções, devido a mudanças na natureza do problema.

Existem, porém, algumas diferenças entre o desenvolvimento de sistemas especialistas e engenharia de software. A maior diferença é o tipo de conhecimento a ser representado, que, no caso de sistemas especialistas, é de natureza heurística e, geralmente, indefinido. Uma segunda diferença envolve a extensão do conhecimento. Enquanto a extensão do conhecimento requerido para algoritmos tradicionais pode ser estimada, isto não se verifica para sistemas especialistas. Em geral, natureza e quantidade de conhecimento requerida para um sistema especialista não podem ser definidas nem mesmo pelo especialista. Além de dificultar a previsão dos recursos necessários para o desenvolvimento do sistema, isto dificulta uma definição razoável do projeto nas fases iniciais.

As dificuldades apresentadas podem levar o engenheiro de conhecimento a descobrir, no meio do processo de desenvolvimento, que a estrutura de representação de conhecimento utilizada é inadequada.

Para superar estes obstáculos, utiliza-se técnicas de desenvolvimento chamadas criação rápida de protótipos e desenvolvimento incremental. Embora essas técnicas não se restrinjam ao desenvolvimento de sistemas especialistas, elas se tornaram bastante populares nesta aplicação, pois auxiliam no processo de elucidar o conhecimento do especialista quando o sistema protótipo comete erros.

GONZALEZ e DANKEL (1993) definem desenvolvimento incremental como o processo interativo de aquisição, representação e confirmação de conhecimento, em uma parte limitada do domínio do problema, com o objetivo de construir gradualmente a base de conhecimento do sistema especialista.

O modelo de desenvolvimento waterfall, mencionado anteriormente, não prevê a aplicação das técnicas de criação rápida de protótipos e desenvolvimento incremental.

Buscando unir várias técnicas existentes, GONZALEZ e DANKEL (1993) apresenta um modelo de desenvolvimento para sistemas especialistas, baseado no modelo waterfal, que combina criação rápida de protótipos, desenvolvimento incremental, e desenvolvimento cíclico. Este modelo é mostrado na Figura 2.6.

Análise Especificação Projeto preliminar Protótipo inicial Projeto detalhado Ajustes no projeto Aquisição Implementação V & V (teste) Manutenção Análise Especificação Projeto preliminar Protótipo inicial Projeto detalhado Ajustes no projeto Aquisição Implementação V & V (teste) Manutenção

Figura 2.6 - Modelo de desenvolvimento para sistemas especialistas

Este modelo busca unir a sistemática do desenvolvimento de programas convencionais ao conceito de engenharia de conhecimento. Apresenta duas diferenças fundamentais em relação ao modelo waterfall: 1) propõe a criação de um protótipo inicial; 2) estabelece um ciclo de desenvolvimento para o sistema.

A criação do protótipo inicial tem por objetivo testar as definições feitas para o projeto, verificando sua validade no contexto do problema. Utilizando-se o resultado da avaliação deste protótipo, assim como o conhecimento adquirido em seu desenvolvimento, é possível identificar a necessidade de ajustes no projeto, como a ferramenta ou o paradigma de representação de conhecimento adotados. A fase de projeto fica, então, dividida em “projeto preliminar” e “projeto detalhado”. Eventuais “correções de rumo”, advindas de um entendimento inadequado do problema, podem ser feitas na fase inicial do desenvolvimento, minimizando o desperdício de esforços.

Uma vez desenvolvido o protótipo inicial da base de conhecimento, esta pode ser aperfeiçoada através de um ciclo contínuo, conhecido como desenvolvimento incremental. A aplicação do desenvolvimento incremental consiste na repetição iterativa das etapas de aquisição do conhecimento do especialista, implementação do conhecimento no sistema,

validação dos resultados com os especialistas e refinamento da implementação para corrigir problemas ocultos.

No presente trabalho, aplicou-se a metodologia de desenvolvimento proposta por GONZALEZ e DANKEL. As fases de desenvolvimento do sistema especialista buscaram cumprir, da melhor maneira possível, as etapas mostradas na Figura 2.6. A descrição destas etapas é feita no capítulo 4, onde se apresenta detalhadamente as várias fases de desenvolvimento do sistema SEGRED-SCGAS.

Informações referentes à aquisição de conhecimento são apresentadas no capítulo 3. Aspectos relativos à manutenção do sistema implementado não serão abordados neste trabalho.