• Nenhum resultado encontrado

CAPÍTULO 4 SISTEMAS BASEADOS EM CONHECIMENTO

4.4 PROCESSO DE DESENVOLVIMENTO DE UM SBC

Segundo Sommerville (2004), um processo de desenvolvimento de software pode ser definido como um conjunto de atividades e resultados associados, que conduzem à produção de um produto de software. São processos complexos e dependem do julgamento humano como em qualquer processo intelectual. Por essa razão, existe uma grande diversidade de processos de desenvolvimento de software, nenhum ideal, e que devem estar adequados às necessidades do desenvolvedor, incluindo a opção por utilizar processos ad-hoc em vez de utilizar algum processo padronizado. No entanto, em todo processo de software existem atividades fundamentais comuns como:

● Especificação: definição das funcionalidades e restrições de operação do software;

● Projeto e Implementação: concepção e codificação do software de acordo com as especificações;

● Validação: avaliação de conformidade com os requisitos;

● Evolução: modificação do software para atender as novas exigências;

● Manutenção: correção de erros de sintaxe e/ou semântica (bug), ampliações da capacidade e atualizações do software;

Essas atividades definem o que é chamado de ciclo de vida do software e podem ser desenvolvidas de diferentes maneiras pelo engenheiro de software ou EC no caso de um SBC. Segundo Sommerville (2004) e Pressman (2004) existem diversos modelos para desenvolvimento de software. Os mais conhecidos são:

● Modelos seqüenciais: linear ou modelo em cascata ou ainda waterfall;

● Modelos evolucionários: incremental e espiral;

● Modelo de desenvolvimento baseado em componentes.

Este trabalho adotará o modelo evolucionário incremental, pois nele é possível que as etapas do ciclo de desenvolvimento do SBC sejam seguidas utilizando apenas pequenas partes de conhecimento em relação à totalidade do domínio do conhecimento, permitindo retornos às etapas anteriores, caso seja constatado algum tipo de erro ou inadequação em alguma tomada de decisão sobre o projeto do SBC, seguindo assim os conceitos de Engenharia Simultânea propostos por Silva (1998). O Apêndice B deste trabalho descreve os demais modelos.

Os modelos evolucionários são modelos interativos cujo objetivo é o refinamento sucessivo do software objetivando versões cada vez mais completas a partir de aplicações sucessivas do modelo seqüencial linear. Ao final de cada interação uma versão do software é produzida e avaliada, e novos requisitos e definições são levantados para iniciar um novo ciclo. O processo é repetido até que o software esteja completo. Isto permite ciclos de realimentação com informações advindas tanto por parte do EH como dos usuários, sendo, conseqüentemente mais flexível permitindo mudanças de paradigma nas etapas do ciclo de desenvolvimento, conforme seja exigido (SOMMERVILLE, 2004 e PRESSMAN, 2004).

Uma das diferenças entre o desenvolvimento de um programa computacional convencional e um programa de SBC está na origem e quantidade de conhecimento a ser pesquisado, que para os SBC’s dificilmente é totalmente conhecido mesmo para os EH’s, o que dificulta a determinação do esforço total a ser despendido. Estas particularidades dos SBC’s devem ser consideradas na escolha do seu modelo de desenvolvimento, sendo o incremental um bom exemplo a ser seguido (GONZALEZ e DANKEL, 1993).

Segundo Gonzalez e Dankel (1993), as etapas do ciclo de vida, no desenvolvimento de programas computacionais, utilizando o modelo incremental,podem ser seguidas conforme a Figura 4.4. O conhecimento é, portanto, dividido em pequenas partes, que em conjunto formam a base de conhecimento. Durante a formação da base de conhecimento, apesar desta não estar ainda concluída, pode-se obter uma funcionalidade parcial com algumas limitações, ao contrário dos programas convencionais que precisam estar totalmente concluídos para poderem ser utilizados e testados.

Figura 4.4 – Etapas de desenvolvimento de software utilizando o Modelo Incremental. Fonte: GONZALES e DANKEL, 1993.

Etapa 6 Ajuste de Projeto Etapa 7 Implementação Etapa 8 Teste Etapa 9 Manutenção Etapa 1 Análise Etapa 2 Especificação Etapa 3 Projeto Preliminar Etapa 4 Prototipagem Etapa 5 Projeto Detalhado

Dentro da seqüência metodológica de desenvolvimento dos SBC’s, pelo modelo incremental têm-se as seguintes características de cada uma das etapas de evolução do sistema, com base na Figura 4.4 (GONZALEZ e DANKEL, 1993):

● Análise: nesta etapa são definidos o domínio do problema, que deverá ser plenamente compreendido, e a adequação da técnica de SBC para este domínio, a análise pode ser auxiliada pela Tabela 4.2. No caso específico deste trabalho o domínio da aplicação é a MCC que devido à natureza e especificidade do conhecimento envolvido satisfaz de modo pleno todos os critérios de análise propostos na referida tabela;

● Especificação: define as fronteiras do campo de aplicação e identifica as funcionalidades desejadas no SBC. Quanto às fronteiras este trabalho abrange os fatores críticos da implantação e auditoria da MCC. Quanto à funcionalidade o SBC proposto deve ponderar as características do sistema/empresa e a partir de um processo de inferência Fuzzy avaliar os fatores críticos que podem interferir na implantação e auditoria da MCC e propor soluções ou regras de conduta para amenizar ou eliminar estes fatores críticos;

Tabela 4.2 – Critérios para Seleção de SBC’s. Fonte: WATERMAN, 1986.

Possibilidade de Desenvolvimento

Justificativa do

Desenvolvimento Desenvolvimento do SBC é Apropriado Tarefa não requer senso

comum Custo com EH grande EH’s podem articular

seus métodos Perda do EH

Existem EH’s EH raro

Natureza

Tarefa requer

manipulação simbólica Tarefa requer solução heurística

Há consenso entre EH’s Complexidade Tarefa não é trivial Tarefa requer também

habilidades heurísticas EH requerido em vários locais Todos os i te ns

devem ser sati

sfei

to

s

A tarefa é plenamente explorada e conhecida Pel

o menos 1 i

tem deve ser sati

sfei

to

Atuação do EH em ambiente hostil Todos os i

te

ns

devem ser sati

sfei

to

s

Escopo

Tarefa tem valor prático Tarefa é de proporção gerencial

● Projeto Preliminar: define a maneira como o conhecimento é inserido na base de conhecimento, escolha das ferramentas computacionais e do EH ou fontes de conhecimento alternativas a serem consultadas. Neste caso a ferramenta de desenvolvimento do SBC proposto é a shell FuzzyClips e as fontes de conhecimento especialistas na implantação da MCC, literatura técnica e normas;

● Prototipagem Inicial: é a construção de um SBC, com limitações de robustez e abrangência de atuação, porém com possibilidade de obter conclusões limitadas a base de conhecimento inicial e as decisões tomadas na etapa de projeto preliminar. Nesta fase inicia-se a Aquisição do Conhecimento (AC), incluindo sua identificação, conceituação e formalização para posterior armazenamento na base de conhecimento. Neste ponto uma primeira versão do SBC é concebida para testes e tomadas de decisão;

● Projeto Detalhado: faz a readequação das decisões tomadas na etapa de projeto preliminar, fundamentada nos resultados da prototipagem inicial;

● Implementação: inicia-se nesta etapa o ciclo de desenvolvimento incremental. Nesta fase o conhecimento adquirido deve ser representado formalmente. Concluída a representação parte-se para o desenvolvimento da interface, documentação e geração dos manuais do SBC;

● Teste: objetiva ter o retorno do desempenho do SBC. Pode ser subdividida em: etapa de verificação realizada pelo EC, e etapa de validação conduzida pelo EH e usuários do sistema. Estas atividades são complementares e necessárias para avaliar e assegurar a qualidade do SBC. Após a avaliação das características dinâmicas do SBC o sistema é refinado, corrigindo algum conhecimento incorreto ou ausente no modelo executável;

● Ajustes de Projeto: visa realizar pequenos ajustes a partir do retomo das conclusões da etapa de teste. Após esta etapa, inicia-se um novo ciclo de implementação e teste, que é conduzido para cada parte de conhecimento a ser inserido no SBC;

● Manutenção de Software: atingidas as metas de abrangência da base de conhecimento, o SBC é finalizado, e entra na etapa de manutenção que é realizada para correções de falhas

não identificadas durante a construção do SBC e atualizações ou expansões da base de conhecimento para as novas configurações do domínio do problema.

O desenvolvimento dos SBC’s inicia-se realmente após o término das etapas iniciais compreendidas entre a análise e o projeto detalhado que definem e justificam a sua aplicação, especificando os requisitos do programa computacional e projetando o SBC. Conforme as etapas de desenvolvimento incremental são percorridas, a base de conhecimento atinge a maturidade e a capacidade de resolução de problemas cada vez mais complexos e com grande amplitude de atuação. Devido a sua relevância, alguns dos componentes das etapas do ciclo de desenvolvimento do SBC serão abordados com mais detalhes nos tópicos que seguem.