Proposta de Solução

Tratar o problema do ano 2000 de uma forma sistemática e semi-automatizada, buscando o desenvolvimento incremental com o objetivo de utilizar o conhecimento obtido nos incrementos anteriores. As atividades a serem executadas são as apresentadas na Figura 1 e detalhadas nos itens a seguir. É importante salientar que o diferencial que podemos oferecer é um sistema de identificação que utiliza heuristícas flexíveis para procurar as diferentes ocorrências de problemas de datas, tanto na parte de definição como na parte de procedimentos. Hoje dispomos de ferramental para a linguagem Cobol, mas face a arquitetura da máquina Draco-PUC é possível aplicar a estratégia para outras linguagens.

Figura 1 - Processo de Solução

Levantamento Preliminar

Objetivo:

Levantar as informações necessárias ao planejamento e particionamento dos trabalhos de correção do Problema do Ano 2000.

Atividades:

  1. Coletar informações dos usuários sobre os diversos componentes da aplicação, sua arquiterura e outros sistemas interligados.
  2. Construir o Modelo do Sistema. Este modelo apresenta os diversos módulos (arquivos fontes) do sistema, suas interligações e dependências em termos de módulos, arquivos de dados e outros sistemas.

Ferramentas / Técnicas

Esta fase será executada semi-automaticamente com o uso da Máquina Draco na construção do Modelo do Sistema. É necessária o auxilio dos usuários do sistema principalmente quando da inexistência de documentações do sistema. O produto final desta fase é o Modelo do Sistema.

A figura 2 mostra a fase de Levantamento Preliminar.

Figura 2 - Levantamento Preliminar

Planejamento

Objetivo:

Planejar a estratégia de correção do Problema do Ano 2000 definindo os componentes a serem corrigidos, requisitos a serem alcançados, restrições, prazos e custos.

Atividades:

  1. Particionar o trabalho a ser executado, definindo os componentes que serão:
  2. Definir estratégias de correção, testes e re-implantação dos módulos corrigidos.
  3. Definir prioridades, cronogramas, custos e necessidades de pessoal.

Ferramentas / Técnicas

Esta fase será feita manualmente pelo Engenheiro de Software que identificará e ordenará em ordem de prioridade os componentes a serem corrigidos. Para tanto irá utilizar o Modelo do Sistema criado na fase anterior no qual poderá identificar conjuntos de componentes que possuam pouco acoplamento com os demais.

Os produtos finais desta fase são:

Localização de Problemas

Objetivo:

Localizar pontos de ocorrência de problemas referentes ao Ano 2000.

Atividades:

  1. Obtenção das árvores de sintaxe dos programas fonte e dos esquemas de bancos de dados
  2. Aplicação das transformações de localização de problemas utilizando as heurísticas armazenadas na Base de Conhecimento
  3. Propagação dos problemas identificados para os outros módulos do sistema utilizando o Modelo do Sistema
  4. Refinamento da Base de Conhecimento através da adição de novas heurísticas

Ferramentas / Técnicas

A localização dos problemas será executada através da aplicação de transformações nos arquivos fontes e de esquemas de bancos de dados. Estas transformações utilizam heurísticas armazenadas na Base de Conhecimento que pode ser refinada pelo Engenheiro de Software com o próprio conhecimento adquirido no sistema que estiver sendo corrigido.

Utilizando-se o Modelo do Sistema os problemas localizados são propagados aos outros módulos. Esta propagação baseia-se no fato que os procedimentos que estiverem utilizando um dado errado se constituem em outra ocorrência de problemas.

O produto final desta fase é uma lista de problemas identificados, suas localizações e tipos de problemas. Esta lista irá orientar a fase de correção dos problemas.

A figura 3 mostra a fase de Localização de Problemas.

Figura 3 - Fase de Localização de Problemas

Correção de Problemas

Objetivos:

Executar semi-automaticamente as transformações necessárias a correção dos problemas identificados e criar os procedimentos necessários aos testes e re-implantação do sistema na plataforma original.

Atividades:

  1. Executar as transformações para correção dos problemas identificados nos arquivos fontes do sistema original
  2. Executar as transformações para modificação dos arquivos de dados utilizados pelo sistema
  3. Refinar a Base de Conhecimentos através da adição de novas heurísticas

Ferramentas / Técnicas

A correção dos problemas será executada através da aplicação de transformações nos componentes do sistema original. A transformação a ser aplicada é definida pelo tipo do problema identificado na fase anterior e pelas técnicas armazenadas na Base de Conhecimento. O Engenheiro de Software pode interferir na seleção da técnica a ser utilizada na correção de cada problema.

A máquina Draco mantém um registro (Log de Modificações) de todas as transformações realizadas de maneira a permitir ações de undo, ou seja, o analista pode desfazer qualquer modificação realizada.

Na aplicação das transformações nos arquivos de dados é utilizado o Log de Modificações de maneira a poder selecionar quais dados modificar e que tipos de transformações utilizar.

Os produtos finais obtidos nesta fase são:

A figura 4 apresenta a Fase de Correção de Problemas

Figura 4 - Fase de Correção de Problemas

Testes de Unidades

Objetivo:

Testar as modificações realizadas no conjunto de componentes modificados

Atividades:

  1. Analisar cada problema constante da Lista de Problemas verificando quais modificações foram feitas
  2. Comparar os componentes originais com os modificados verificando a corretude das transformações
  3. Executar testes sobre os componentes modificados utilizando as especificações de testes.
  4. Executar o undo das modificações que forem incorretas

Ferramentas / Técnicas

Esta fase é executada manualmente pelo Engenheiro de Software com a ajuda de algumas ferramentas, como por exemplo o diff do Unix. O trabalho do engenheiro é guiado pela Especificação de Testes que mantém um regsistro das tarefas já executadas e dos componetes que já foram certificados.

O mecanismo de undo é executado pela Máquina Draco e não deve ser feito manualmente pois criaria inconsistência entre o Log de Modificações e o Sistema Modificado.

Pode ser necessária a modificação manual do sistema pelo analista. Estas modificações devem ser registrados, na forma de comentário, no Log de Modificações.

Os produtos finais desta fase são:

A figura 5 apresenta as Fases de Teste de Unidades e de Teste de Integração que possuem os mesmos componentes sendo que a principal diferença entre elas é o enfoque e abrangência do sistema em teste.

Figura 5 - Fases de Teste de Unidades e Teste de Integração

Testes de Integração

Objetivo:

Integrar o conjunto de componentes modificados a porção do sistema original que já foi corrigida e testada em incrementos anteriores procedendo os testes necessários.

Atividades:

  1. Executar os testes previstos na Especificação de Testes sobre todo o sistema que já foi modificado
  2. Executar o undo das modificações que forem incorretas

Ferramentas / Técnicas

Esta fase utiliza as mesmas ferramentas da fase anterior, apresentadas na Figura 2.5. A principal diferença é que nesta fase procedemos aos testes de todos os componentes que já foram modificados.

Reimplantação

Objetivo:

Colocar o sistema modificado em produção na plataforma original.

Atividades:

  1. Importar os dados para a plataforma original
  2. Executar as conversões nos dados originais que não puderam ser feitas na plataforma de correção. Alguns arquivos como os de Bancos de Dados e os arquivos que estavam sendo utilizados durante a correção do sistema, devem ser modificados na plataforma original. São utilizados scripts gerados e constantes dos Arquivos de Importação para automatizar estas tarefas.
  3. Compilar os arquivos fontes modificados
  4. Executar testes simulando a mudança da data atual para 01/01/2000 e verificar os pontos de ocorrência de problemas identificados durante o processo de correção. Esta simulação nem sempre é possível embora seja altamente recomendável. Técnicas podem ser utilizadas para permitir estes testes, tais como a criação de sistemas em paralelo, sombras dos dados e utilização de outras máquinas semelhantes as originais.

Ferramentas / Técnicas

Esta fase é realizada com o auxílio dos usuários do sistema. São utilizandos os Arquivos de Importação que indicam as diversas atividades a serem executadas na re-implantação do sistema e na transição do sistema original para o modificado.

A figura 6 apresenta a Fase de Reimplantação.

Figura 6 - Fase de Re-Implantação

Verifique o exemplo do uso da Máquina Draco-PUC na localização de problemas de datas.