Você está na página 1de 45

Reengenharia Reengenharia de Software de Software

Setembro 2002

Eliane Martins - Instituto de Computao - UNICAMP

Tpicos Tpicos
Converso de cdigo Engenharia Reversa Re-estruturao de cdigo Modularizao de cdigo Re-estruturao dos dados Recuperao da documentao

Eliane Martins - Instituto de Computao - UNICAMP

Referncias Referncias
I.Sommerville. Sw Engineering, 6a. Edio, 2001, c. 28. R.S.Pressman. Sw Engineering: a Practitioner Approach. McGraws Hill, 3 ed, 1992.

Sobre refatorao:
http://c2.com/cgi/wiki

Eliane Martins - Instituto de Computao - UNICAMP

Re-engenharia: o que Re-engenharia: o que

Reorganizao e modificao do sw com o objetivo de torn-lo mais fcil de manter

Eliane Martins - Instituto de Computao - UNICAMP

Re-engenharia: porqu? Re-engenharia: porqu?


Para aumentar a sobrevida de si stemas legados:
em 1990 foi estimada a existncia de ? 120 milhes de LOCs, a maioria em Cobol e Fortran
a estruturao dos programas muito baixa a documentao dos sistemas pouca ou inexistente

apesar de muitos desses programas j terem sido substitudos, ainda restam muitos em uso ... ... e novos programas so desenvolvidos, usando processos rpidos de desenvolvimento, nos quais estruturao e documentao no soa principal preocupao (ex.: XP)

Eliane Martins - Instituto de Computao - UNICAMP

Vantagens Vantagens
Melhora a estrutura do sistema Cria ou atualiza a documentao Facilita o entendimento do sistema Melhora a motivao da equipe de manuteno

Eliane Martins - Instituto de Computao - UNICAMP

Re-engenharia de sistemas Re-engenharia de sistemas


Re-estruturar ou re-escrever um sistema legado (ou parte dele) sem alterar sua funcionalidade Recomendada quando alguns sub-sistemas sofrem alteraes com muita freqncia Requer esforo para re-escrever e re-estruturar o sistema com o intuito de tornar mais fcil a manuteno (ou evoluo) do mesmo

Eliane Martins - Instituto de Computao - UNICAMP

Quando fazer? Quando fazer?


Quando as alteraes esto restritas a partes do sistema, vale a pena fazer re-engenharia nessas partes Quando a plataforma de hw ou sw se torna obsoleta Quando existe a possibilidade de se usar ferramentas que auxiliem na re-estruturao do sistema
Eliane Martins - Instituto de Computao - UNICAMP 8

Reestruturar ou refazer? Reestruturar ou refazer?


? Ri scos reduzidos:
? existem muitos riscos na elaborao de novos sistemas: problemas no desenvolvimento, problemas com pessoal, problemas com os requisitos ? Prottipo j existente (sistema legado) facilita o desenvolvimento de novos sistemas ? O usurio j conhece o sistema ? muitos requisitos j so conhecidos ? Muitas alteraes acabam degradando a qualidade do sistema ? H limites para a reengenharia
9

? Custos mais baixos:


? mais barato alterar do que refazer

Eliane Martins - Instituto de Computao - UNICAMP

Reengenharia do processo de negcio Reengenharia do processo de negcio


Reengenharia de sistemas foi inspirada na rea administrativa, onde:
processos so redefinidos de forma a eliminar atividades redundantes e aumentar eficincia melhorias so geralmente conseqncia da introduo ou da melhoria do si stema computacional que apia o processo como conseqncia, a reengenharia do si stema pode ser necessria para responder s alteraes no processo de negcio
Eliane Martins - Instituto de Computao - UNICAMP 10

Engenharia Progressiva e Reengenharia Engenharia Progressiva e Reengenharia


Engenharia Progressiva
Especificao do Sistema Projeto e Implementao Novo sistema

Reengenharia
Sistema Antigo Compreenso e Transformao Sistema Melhorado

Eliane Martins - Instituto de Computao - UNICAMP

11

O processo O processo
Sistema Original Documentao Cdigo Remodularizado Dados originais

Converso de Cdigo

Engenharia Reversa

Remodularizao do Cdigo

Reestruturao dos Dados

Reestruturao do Cdigo

Cdigo Reestruturado

Dados reestruturados

Eliane Martins - Instituto de Computao - UNICAMP

12

Fatores de custo Fatores de custo


Qualidade do sw:
quanto menor a qualidade do sw e da documentao associada, maiores os custos com reengenharia

Disponibilidade de ferramentas:
sem ferramentas os custos so muito elevados

O volume de dados a serem convertidos A disponibilidade de equipe treinada e com conhecimento sobre o sistema
Eliane Martins - Instituto de Computao - UNICAMP 13

Tpicos Tpicos
Converso de cdigo Engenharia Reversa Re-estruturao de cdigo Modularizao de cdigo Re-estruturao dos dados Recuperao da documentao

Eliane Martins - Instituto de Computao - UNICAMP

14

Converso de cdigo Converso de cdigo


Consiste em converter o cdigo para uma nova verso da mesma linguagem (Cobol74 ? Cobol85) ou para uma nova linguagem (Fortran ? C) Pode ser necessria devido a:
mudana na plataforma de hw falta de pessoal que conhea a linguagem original mudana na poltica da organizao, que decide adotar uma linguagem como padro para facilitar a manuteno falta de suporte do fornecedor do compilador

? S economicamente interessante se puder ser automatizada

Eliane Martins - Instituto de Computao - UNICAMP

15

O processo O processo

Cdigo original Cdigo original Cdigo convertido

Identificar diferenas entre as linguagens

Projetar um tradutor

Converter automaticamente

Ajustar manualmente

Eliane Martins - Instituto de Computao - UNICAMP

16

Tpicos Tpicos
Converso de cdigo Engenharia Reversa Re-estruturao de cdigo Modularizao de cdigo Re-estruturao dos dados Recuperao da documentao

Eliane Martins - Instituto de Computao - UNICAMP

17

Engenharia Reversa Engenharia Reversa


Consiste em analisar o cdigo com o objetivo de obter o projeto e especificao do si stema
para obter a especificao necessria interveno manual

Cria banco de dados com informaes sobre o si stema mais eficaz quando feita com auxlio de ferramentas: engenharia reversa, anlise esttica, referncias cruzadas, navegadores de programas (program browsers) ...

Eliane Martins - Instituto de Computao - UNICAMP

18

O processo O processo
Anlise esttica (automtica) Sistema original Anotao manual
Complementa informao contida nos grafos Mostra onde entidades do sistema so definidas e referenciadas
19

Obtm grafos da estrutura do sistema

Diagramas de estrutura do cdigo Diagramas de estrutura dos dados

Informaes sobre o sistema

Elaborao da documentao

Matrizes de rastreabilidade

Eliane Martins - Instituto de Computao - UNICAMP

Quando usar? Quando usar?


Como parte do processo de Reengenharia Como parte do processo de substituio do sistema Como parte do processo de manuteno

Eliane Martins - Instituto de Computao - UNICAMP

20

Tpicos Tpicos
Converso de cdigo Engenharia Reversa Re-estruturao de cdigo Modularizao de cdigo Re-estruturao dos dados Recuperao da documentao

Eliane Martins - Instituto de Computao - UNICAMP

21

Reestruturao de cdigo Reestruturao de cdigo


Com a manuteno a estrutura do cdigo vai sendo corrompida, o que dificulta o entendimento e futuras alteraes. O cdigo pode ser reestruturado, automaticamente, para eliminar desvios incondicionais (goto):
Bohm e Jacopini mostraram, em 1966, que programas podem ser escritos usando-se somente construes do tipo seqncia, seleo (if-the-else, case) e repetio (while-repeat-for)

Condies tambm podem ser simplificadas, o que facilita o seu entendimento


Eliane Martins - Instituto de Computao - UNICAMP 22

Cdigo espaguete Cdigo espaguete


Start: get (time_on, time_off, time, setting, temp, switch) if switch = off goto Off if switch = on goto On goto Cntrld if heating_status = on goto Sw_off goto Loop if heating_status = off goto Sw_on goto Loop if time = time_on goto On if time = time_off goto Off if time < time_on goto Start if time > time_off goto Start if temp > setting goto Off if temp < setting goto On Sw_off: Sw_on: Switch: Loop: heating_status := off goto Switch heating_status := on Switch_heating ( ) goto Start

Off: On: Cntrld:

Eliane Martins - Instituto de Computao - UNICAMP

23

Cdigo estruturado Cdigo estruturado


loop -- get: atribui valores para variveis conforme -- o ambiente do sistema get (time_on, time_off, time, setting, temp, switch) case switch of when On ? if heating_status = off then Switch_Heating ( ); heating_status := On; end_if; when Controlled ? if time ? time_on and time ? time_off then if temp > setting and heating_status = On then Switch_heating ( ); heating_status := Off; elsif temp < setting and heating_status = Off then Switch_heating ( ); heating_status := On; end_if; end_if; end_case; end loop;
Eliane Martins - Instituto de Computao - UNICAMP 24

Simplificao de condies Simplificao de condies


-- Condio complexa: if not (A > B and (C < D or not ( E > F) ) )... -- Condio simplificada: if (A <= B and (C>= D or E > F)...

Eliane Martins - Instituto de Computao - UNICAMP

25

O processo O processo
Cdigo desestruturado Cdigo estruturado Gerao de Cdigo a partir do grafo

Anlise e construo do grafo Grafo de Fluxo de Controle

Eliane Martins - Instituto de Computao - UNICAMP

26

Dificuldades Dificuldades
A reestruturao automtica apresenta algumas dificuldades:
perda de comentrios, em especial, os que esto na linha de comando (in-line) perda da correspondncia entre o cdigo e a documentao associada complexidade dos algoritmos de reestruturao ? procedimento longo, mesmo em hw mais velozes as ferramentas podem no reconhecer dialetos (construes no padronizadas) cdigos contendo mdulos altamente acoplados, com estruturadas de dados compartilhadas ? a reestruturao no traz grandes melhorias
Eliane Martins - Instituto de Computao - UNICAMP 27

Quando reestruturar? Quando reestruturar?


Nem sempre vantajoso reestruturar todo o cdigo:
a qualidade do mdulo ruim? o mdulo alterado com freqncia? o mdulo atende algum requisito no funcional (ex.: eficincia ? estruturao)? o mdulo est de acordo com padro? ? Obteno de mtricas ajuda na seleo dos mdulos candidatos a uma reestruturao
Eliane Martins - Instituto de Computao - UNICAMP 28

Exerccio Exerccio
Reestruturar o cdigo a seguir: begin k := 0; l := 0; t := 0; L1: read (A); if A = 0 then goto L3; if A > 0 then goto L2; l := l + 1; goto L1; L2: k := k + 1; t := t + A; if t <= 1000 then goto L1; L3: write (k, l, t); end. Sugira nomes mais adequados para as variveis. Construa um dicionrio de dados descrevendo as variveis.

Eliane Martins - Instituto de Computao - UNICAMP

29

Tpicos Tpicos
Converso de cdigo Engenharia Reversa Re-estruturao de cdigo Modularizao de cdigo Re-estruturao dos dados Recuperao da documentao

Eliane Martins - Instituto de Computao - UNICAMP

30

Modularizao de cdigo Modularizao de cdigo


O que :
Processo de reorganizao de um programa de forma que partes relacionadas so colocadas em um mesmo mdulo

Porqu?
Componentes relacionados ficam dispersos pelo programa

Como?
Geralmente manual: inspeo e re-edio do cdigo, mas j existem ferramentas que apoiam partes do processo

Eliane Martins - Instituto de Computao - UNICAMP

31

Tipos de mdulos Tipos de mdulos


Abstrao de dados
tipos abstratos de dados agrupando estruturas de dados com funes que fazem acesso a elas

Controle do hardware
mdulos que agrupam funes de acesso a um dispositivo de hw

Mdulos funcionais
mdulos que contm funes que realizam tarefas similares ou que esto altamente relacionadas. Usados quando impraticvel recuperar tipos abstrato de dados.
Ex.: mdulo que agrupa funes de leitura e validao dos dados de entrada

Mdulos de apoio a processos


mdulos cujas funes apoiam todo ou parte de um processo de negcio.

Eliane Martins - Instituto de Computao - UNICAMP

32

Obteno de tipos abstratos de dados Obteno de tipos abstratos de dados


Muitos sistemas legados usam tabelas compartilhadas e dados globais para economizar memria
? mudanas nesses dados so custosas pois tm grande impacto sobre o sistema

Dados compartilhados podem ser convertidos em tipos abstratos de dados (TAD) ou objetos:
TADs ocultam a representao dos dados: criao, acesso e modificao dos mesmos so feitos atravs de funes impacto de mudanas diminui: se a interface de acesso mantida, mudanas na representao dos dados no afetam outras partes do programa
Eliane Martins - Instituto de Computao - UNICAMP 33

Passos para obteno de TAD Passos para obteno de TAD


? Analise reas de dados comuns para identificar abstraes de dados
uma rea compartilhada pode conter mais de uma abstrao de dados.

? Crie TAD ou objetos para cada abstrao encontrada


se a linguagem no oferece ocultao de dados, crie funes de atualizao e acesso aos campos da estrutura de dados.

? Substitua todas as referncias a esses dados por chamadas s funes de atualizao e acesso
use um navegador de programas ou um gerador de referncias cruzadas para encontrar essas referncias
Eliane Martins - Instituto de Computao - UNICAMP 34

Tpicos Tpicos
Converso de cdigo Engenharia Reversa Re-estruturao de cdigo Modularizao de cdigo Re-estruturao dos dados Recuperao da documentao

Eliane Martins - Instituto de Computao - UNICAMP

35

Re-estruturao dos dados Re-estruturao dos dados


O que
processo de analisar e reorganizar estruturas de dados (eventualmente, os valores dos dados) de um programa

Objetivo
melhorar compreenso dos dados usados pelo programa facilitar o controle dos dados

Eliane Martins - Instituto de Computao - UNICAMP

36

Porqu reestruturar os dados? Porqu reestruturar os dados?


Degradao dos dados
existncia de dados duplicados ou redundantes, armazenados em diferentes partes do programa com diferentes formatos os dados podem no refletir alteraes no ambiente externo

Limites impostos aos programas


o sistema precisa tratar um volume maior de dados do que originalmente previsto pelos projetistas ? aumento de tabelas, de campos, de nmero de campos

Evoluo da arquitetura
na migrao de arquitetura centralizada para distribuda, o acesso aos dados pode ser feito remotamente, por vrios usurios
Eliane Martins - Instituto de Computao - UNICAMP 37

Abordagens Abordagens
Reorganizao dos dados
eliminar duplicaes e redundncias estabelecer um formato consistente para os registros

Extenso dos dados


eliminar os limites, aumentando tamanho de campos, de tabelas, e outros

Migrao dos dados


si stema de arquivos ? banco de dados SGBD antigo ? novo SGBD
Eliane Martins - Instituto de Computao - UNICAMP 38

Problemas com dados legados Problemas com dados legados


Nomeao dos dados
dados tm nomes difceis de entender dados podem ter nomes diferentes em ao longo das diferentes partes do sistema

Tamanho de campos
o mesmo item pode ter tamanhos diferentes em diferentes partes do sistema

Organizao dos registros


registros que representam a mesma entidade podem ter formatos diferentes ao longo do sistema

Constantes embutidas Inexistncia de um dicionrio de dados


Eliane Martins - Instituto de Computao - UNICAMP 39

Inconsistncia dos Dados Inconsistncia dos Dados


Valores default inconsistentes
programas diferentes atribuem valores diferentes ao mesmo item de dados

Unidades inconsistentes
a mesma informao representada usando unidades diferentes (ex.: peso em libras ou kg)

Regras de validao inconsistentes


regras de validao diferentes podem fazer com que dados aceitos por um programa sejam rejeitados por outros

Convenes de representao inconsistente


diferenas na conveno usada para representar os dados (ex.: alguns programas podem assumir que dados iniciados com maisculas representam endereo)

Uso inconsistente de valores negativos:


alguns programas podem rejeitar tais valores, outros aceit-los como vlidos e outros ainda podem no reconhec-los como sendo negativos e convert-los errneamente para positivo

Eliane Martins - Instituto de Computao - UNICAMP

40

O processo O processo
Sistema legado Modificao de nomes de entidades Anlise dos dados Substituio de literais por constantes Reordenao das definies dos dados Reformatao dos dados Converso de valores default Modificao das regras de validao Dados reestruturados Converso dos dados Ferramentas de anlise de dados

Tabelas de sumrio das alteraes

Eliane Martins - Instituto de Computao - UNICAMP

41

Converso de dados Converso de dados


A reengenharia dos dados pode simplesmente reestruturar os dados, sem mudar seus valores A converso de valores pode ser extremamente custosa sem a ajuda de programas construdos especificamente para esse fim.

Eliane Martins - Instituto de Computao - UNICAMP

42

Tpicos Tpicos
Converso de cdigo Engenharia Reversa Re-estruturao de cdigo Modularizao de cdigo Re-estruturao dos dados Recuperao da documentao

Eliane Martins - Instituto de Computao - UNICAMP

43

Recuperao da documentao Recuperao da documentao


O que :
(re)escrever a documentao: especificaes, manual de usurio, ...

Porqu:
documentao inexistente ou desatualizada

Refazer a documentao tem um custo, portanto importante planejar:


deixar como est: interessante se sistemas no so crticos ou so pouco alterados (re)escrever s as partes alteradas: reescrita na medida em que as alteraes so solicitadas documentar tudo: interessante para sistemas crticos para a empresa

Eliane Martins - Instituto de Computao - UNICAMP

44

Sumrio Sumrio
Reengenharia o processo de reorganizao de um si stema para torn-lo mais fcil de manter A reengenharia compreende as seguintes atividades: converso de cdigo; engenharia reversa; reestruturao da documentao, do cdigo e dos dados; remodularizao do cdigo complete, levantando os principais pontos estudados:

Eliane Martins - Instituto de Computao - UNICAMP 45

Você também pode gostar