Os 3 R
Autor: Vanderlei Vilhanova Ortêncio
Se você não fizer alguma coisa para resolver o seu problema com a manutenção, o mais provável é que daqui a dez anos você esteja fazendo a mesma coisa.
Existem 3 tecnologias se consolidando dentro do contexto, a partir do final da década de 80 e que prometem para os anos 90.
1 – Reestruturação
2 – Re-engenharia
3 – Engenharia Reversa
REESTRUTURAÇÃO
Reestruturar: Dar nova estrutura” Aurélio
É um processo de reorganização do código de programas, visando converter código tipo espaguete em código estruturado, que se baseia nas teorias de programação estruturada proposta pelo Dr. Djikstrota, em 1996.
Este processo pode eliminar muito código morto ( trechos de programas nunca executados), mas mesmo assim ainda aumenta o código fonte em 10 a 15% (Yourdon, 89). O tempo de manutenção pode ser reduzido em 10% (Yourdon89) com benefícios maiores na manutenção de longo prazo, mas ajudando bastante na de curto prazo ( crise).
Uma observação importante e dita por muitos autores:
“Não transforma código ruim em código bom”
Esta área é atendida por muitos produtos de acordo com a literatura estrangeira, mas não tenho notícias de uso desta ferramentas no Brasil.
Dificuldades a serem enfrentadas:
* resistência dos programadores de manutenção que estejam “familiarizados” com os programas;
* ceticismo inicial de que o programa estruturado resultante, seja funcionalmente equivalente.
Re-Engenharia
O termo Re-Engenharia ( que não consta no Aurélio) é mais uma adição ao nosso jargão técnico como tradução da palavra Re-Engeneering ( que também não esta no Webster).
Não é simples substituição ao termo MANUTENÇÃO. Tem o sentido de incorporar aos sistemas já existentes as características decorrentes da Engenharia de Software, tanto técnicas ( por exemplo – estruturação de programas) como gerenciais ( medições e controle de qualidade).
Desta forma, se reconstrói o software preservando todos os requisitos e todos os fluxos de entrada e saída.
Yourdon (1989)- propõe os seguintes objetivos e procedimentos:
a – ASSEGURAR A QUALIDADE DO SOFTWARE EXISTENTE
Promover uma análise estática dos programas observando tamanho de módulos, quantidade de desvios etc, ou ainda promovendo medições mais sofisticadas utilizando tecnologia de MÉTRICA DE SOFTWARE.
Este trabalho pode até alavancar e prover subsídios para um plano gerencial mais amplo par elevar a qualidade do software existente na organização.
b- ANALISAR O COMPORTAMENTO DOS PROGRAMAS EXISTENTES DE FORMA ESTÁTICA, DINÂMICA OU AMBAS
Por exemplo, responder questões como:
* quais são todos os meios de se acessar determinado trecho do programa?
* quais os trechos no programa que acessam determinado elemento de dados?
A disponibilização desta análise traz muitos benefícios à manutenção de curto prazo (crise).
c- MELHORAR GRADUALMENTE OS PROGRAMAS EXISTENTES
* reestruturação dos programas;
* reformulação das listagens de código-fonte enriquecendo comentários etc;
* trocar IF's aninhados por CASE's;
* racionalizar nomes dos dados;
* reescrever toda lógica identificada como complexa.
D – ELEGER OS SISTEMAS QUE DEVEM PASSAR PELA RE-ENGENHARIA PRIMEIRO
Com que critério? O mais velho? O mais novo? O maior? O menor? Com mais erros?
1 – avaliar a qualidade dos programas com uma análise suscinta ( ver item a);
2 – avaliar satisfação do usuário com questionários para verificar o grau de importância do sistema para o usuário:
3 – montar um gráfico conforme a figura na coluna ao lado:
Quad Ação Conclusão
A Reespecificar Mau serviço de análise
B Re-engenharia É o vencedor
C Refazer completamente Mau serviço de análise e construção
D Reestruturar Após a Re-Estruturação
provavelmente passará ao quadrante
B. Aí então Re- Engenharia
ENGENHARIA REVERSA
O propósito de engenharia reversa é trilhar o caminho inverso ao de desenvolvimento, derivando os modelos de especificação a partir da implementação física, ou seja dos códigos de programas e das estruturas de dados.
Por exemplo:
* das descrições de dados, derivar o modelo de entidades e relacionamentos;
* dos módulos de programas, obter as especificações dos processos em inglês ou português estruturado e assim sucessivamente...
Para poder fazer Engenharia Reversa é necessário que antes se tenha feito a Re-estruturação e a Re-engenharia.
Esta é uma área nova na qual existem muito poucos produtos de apoio e é onde há muito espaço para o emprego de tecnologia de inteligência Artificial (IA).
Se você não fizer alguma coisa para resolver o seu problema com a manutenção, o mais provável é que daqui a dez anos você esteja fazendo a mesma coisa.
Existem 3 tecnologias se consolidando dentro do contexto, a partir do final da década de 80 e que prometem para os anos 90.
1 – Reestruturação
2 – Re-engenharia
3 – Engenharia Reversa
REESTRUTURAÇÃO
Reestruturar: Dar nova estrutura” Aurélio
É um processo de reorganização do código de programas, visando converter código tipo espaguete em código estruturado, que se baseia nas teorias de programação estruturada proposta pelo Dr. Djikstrota, em 1996.
Este processo pode eliminar muito código morto ( trechos de programas nunca executados), mas mesmo assim ainda aumenta o código fonte em 10 a 15% (Yourdon, 89). O tempo de manutenção pode ser reduzido em 10% (Yourdon89) com benefícios maiores na manutenção de longo prazo, mas ajudando bastante na de curto prazo ( crise).
Uma observação importante e dita por muitos autores:
“Não transforma código ruim em código bom”
Esta área é atendida por muitos produtos de acordo com a literatura estrangeira, mas não tenho notícias de uso desta ferramentas no Brasil.
Dificuldades a serem enfrentadas:
* resistência dos programadores de manutenção que estejam “familiarizados” com os programas;
* ceticismo inicial de que o programa estruturado resultante, seja funcionalmente equivalente.
Re-Engenharia
O termo Re-Engenharia ( que não consta no Aurélio) é mais uma adição ao nosso jargão técnico como tradução da palavra Re-Engeneering ( que também não esta no Webster).
Não é simples substituição ao termo MANUTENÇÃO. Tem o sentido de incorporar aos sistemas já existentes as características decorrentes da Engenharia de Software, tanto técnicas ( por exemplo – estruturação de programas) como gerenciais ( medições e controle de qualidade).
Desta forma, se reconstrói o software preservando todos os requisitos e todos os fluxos de entrada e saída.
Yourdon (1989)- propõe os seguintes objetivos e procedimentos:
a – ASSEGURAR A QUALIDADE DO SOFTWARE EXISTENTE
Promover uma análise estática dos programas observando tamanho de módulos, quantidade de desvios etc, ou ainda promovendo medições mais sofisticadas utilizando tecnologia de MÉTRICA DE SOFTWARE.
Este trabalho pode até alavancar e prover subsídios para um plano gerencial mais amplo par elevar a qualidade do software existente na organização.
b- ANALISAR O COMPORTAMENTO DOS PROGRAMAS EXISTENTES DE FORMA ESTÁTICA, DINÂMICA OU AMBAS
Por exemplo, responder questões como:
* quais são todos os meios de se acessar determinado trecho do programa?
* quais os trechos no programa que acessam determinado elemento de dados?
A disponibilização desta análise traz muitos benefícios à manutenção de curto prazo (crise).
c- MELHORAR GRADUALMENTE OS PROGRAMAS EXISTENTES
* reestruturação dos programas;
* reformulação das listagens de código-fonte enriquecendo comentários etc;
* trocar IF's aninhados por CASE's;
* racionalizar nomes dos dados;
* reescrever toda lógica identificada como complexa.
D – ELEGER OS SISTEMAS QUE DEVEM PASSAR PELA RE-ENGENHARIA PRIMEIRO
Com que critério? O mais velho? O mais novo? O maior? O menor? Com mais erros?
1 – avaliar a qualidade dos programas com uma análise suscinta ( ver item a);
2 – avaliar satisfação do usuário com questionários para verificar o grau de importância do sistema para o usuário:
3 – montar um gráfico conforme a figura na coluna ao lado:
Quad Ação Conclusão
A Reespecificar Mau serviço de análise
B Re-engenharia É o vencedor
C Refazer completamente Mau serviço de análise e construção
D Reestruturar Após a Re-Estruturação
provavelmente passará ao quadrante
B. Aí então Re- Engenharia
ENGENHARIA REVERSA
O propósito de engenharia reversa é trilhar o caminho inverso ao de desenvolvimento, derivando os modelos de especificação a partir da implementação física, ou seja dos códigos de programas e das estruturas de dados.
Por exemplo:
* das descrições de dados, derivar o modelo de entidades e relacionamentos;
* dos módulos de programas, obter as especificações dos processos em inglês ou português estruturado e assim sucessivamente...
Para poder fazer Engenharia Reversa é necessário que antes se tenha feito a Re-estruturação e a Re-engenharia.
Esta é uma área nova na qual existem muito poucos produtos de apoio e é onde há muito espaço para o emprego de tecnologia de inteligência Artificial (IA).