Você está na página 1de 36

Engenharia Reversa e

Reengenharia
SCE 186 Engenharia de Software
Profa Rosana T. Vaccare Braga
(material adaptado a partir do concedido pela
Profa.: Rosngela Penteado, DC - UFSCar)

Fases Genricas do Ciclo de Vida


Engenharia
Sistemas

Sistema

Anlise

Projeto

Requisitos

Sistema
Requisitos
Desenvolvimento

Codificao

Testes

Desenvolvimento

porque?
o que?
como?

Manuteno

Abstrao
Definio de Abstrao: habilidade de se ignorar os aspectos de assuntos no
relevantes para o propsito em questo
Nvel de Abstrao: Cada passo no processo de desenvolvimento de software
um refinamento do nvel de abstrao do software. Nos estgios iniciais do ciclo
de vida as informaes possuem alto nvel de abstrao e nos estgios finais baixo
nvel de abstrao
Grau de Abstrao: Est relacionado a uma mesma atividade no ciclo de vida
do software. Informaes numa forma mais global possuem alto grau de
abstrao, numa forma mais detalhada possuem baixo grau de abstrao
alto

Sistema

Requisitos

Desenvolvimento

Grau de
Abstrao
baixo
alto

Nvel de Abstrao

baixo

Engenharia Progressiva x Engenharia Reversa


Engenharia Progressiva: Processo tradicional de engenharia de software,
caracterizado pelas atividades progressivas do ciclo de vida, que partem de um
alto nvel de abstrao, para um baixo nvel de abstrao.
Engenharia Reversa: O processo inverso a Engenharia Progressiva,
caracterizado pelas atividades retroativas do ciclo de vida, que partem de um
baixo nvel de abstrao para um alto nvel de abstrao.
alto

Sistema

Requisitos
Eng.
Progressiva

Grau de
Abstrao

Eng. Reversa

Desenvolvimento
Eng.
Progressiva
Eng. Reversa

baixo
alto

Nvel de Abstrao

baixo

Software Produzido
Anlise - o qu o sistema deve fazer.
Documento de Especificao

Projeto - Utiliza o documento de especificao


e define como o comportamento especificado
ser obtido
Documento de Arquitetura

Implementao - Utiliza uma linguagem de


programao
Cdigo

Mas nem sempre funciona assim


Sistemas sem documentao
Dificuldade de manuteno
Erros gerando outros erros
Cdigo duplicado

Necessidade de Manuteno no Software


O qu fazer ???
Quem poder
me ajudar ????

Cad o programador ????


O qu ser que ele quis
fazer aqui?????

A cura ....

Engenharia Reversa

Reengenharia

Ser possvel ????


Na construo civil, ok
E com sistemas de
software?

Engenharia Reversa
o
c
i
g
L
lo
e
d
o
M

Reengenharia

Engenharia Reversa
O termo Engenharia Reversa tem sua origem na
anlise de hardware, pois comum a prtica de
decifrar projetos de produtos finalizados com
intuito de duplic-los.
O conceito de Engenharia Reversa de Software
similar. Porm, tradicionalmente o objetivo da dessa
engenharia reversa obter apenas um entendimento
do sistema

Engenharia Reversa
Definio de Engenharia Reversa: Processo de exame e
compreenso do software existente, para recapturar ou
recriar o projeto e decifrar os requisitos atualmente
implementados pelo sistema, apresentando-os em um nvel
ou grau mais alto de abstrao
Por meio da engenharia reversa um software pode ser
visualizado em diferentes nveis de abstrao. Cada
VISUALIZAO abstrai caractersticas prprias da fase
do ciclo de vida correspondente abstrao.

Elementos da Engenharia Reversa


1) NVEL DE ABSTRAO
conforme o nvel de abstrao aumenta, mais
compreensveis se tornam as informaes.

Elementos da Engenharia Reversa


2) COMPLETITUDE DO PROCESSO
refere-se ao nvel de detalhes que fornecido
em cada nvel de abstrao.

Elementos da Engenharia Reversa


3) INTERATIVIDADE
refere-se ao grau de participao do ser humano
no processo de engenharia reversa.
conforme o nvel de abstrao aumenta, a
interatividade deve aumentar ou a completitude
ser prejudicada

Elementos da Engenharia Reversa


4) DIRECIONALIDADE
se a direcionalidade tem sentido nico, toda
informao extrada a partir do cdigo fonte
usada durante as atividades de manuteno
se a direcionalidade tem sentido duplo, a
informao usada para "alimentar" uma
ferramenta de reengenharia.

Requisitos
(restries,
objetivos,
regras do negcio)
Engenharia
Avante

Engenharia
Avante

Engenharia
Reversa

Engenharia
Reversa
Projeto
Recuperado

Projeto
Recuperado

Reestruturao

Reengenharia
(Renovao)

Implementao

Projeto

Reestruturao

Reengenharia
(Renovao)

Reestruturao

Relacionamento entre os termos

Engenharia Reversa
Quais os documentos utilizados para realizar
engenharia reversa ?
- cdigo fonte
- informaes de usurios e/ou analista
- documentao existente (manual de usurio,
manual de sistema, DFDs, fluxogramas, etc.)

Como comea a engenharia reversa?


- obtendo-se as informaes necessrias para o
completo entendimento do sistema

O que fazer com essas informaes?


s para manuteno
mesmo paradigma e mudana de linguagem
mudana de paradigma (s modelo lgico)
mudana de paradigma e de linguagem

Reengenharia

Finalidade: manuteno do sistema


Reunir todas as informaes de modo que sejam
expressas atravs de alguma ferramenta disponvel.

Pseudocdigos
DFDs (se abordagem for procedimental)
outros mtodos de anlise existentes

Propsitos da Engenharia Reversa


1. ENGENHARIA REVERSA X MANUTENO
As atividades de manuteno fornecem a motivao para muitas ferramentas de
engenharia reversa. Essa motivao proveniente da elevada proporo de tempo e
custos despendida no entendimento e exame do software a ser mantido.
estimado que mantenedores gastam entre 42 a 67% de seu tempo tentando
entender o software.
Nas manutenes adaptativas (adequar o software a novo ambiente) e evolutivas
(adicionar novas funcionalidades ao software), as tcnicas de engenharia reversa so
usadas indiretamente, atravs do fornecimento de vises do software, para localizar
os componentes onde sero realizadas as mudanas e adies necessrias, e para
auxiliar no controle da estrutura global do sistema modificado, atravs da produo
de documentao.

Propsitos da Engenharia Reversa


1. ENGENHARIA REVERSA X MANUTENO
Nas manutenes corretivas (correo de erros), as tcnicas de engenharia reversa
no servem para detectar, remover ou corrigir erros, porm auxiliam indiretamente o
programador na localizao do componente defeituoso, atravs de melhorias da
compreensibilidade do software.
Para mudanas preventivas (reduo de esforos em futuras mudanas), ferramentas
de engenharia reversa podem fornecer um discernimento de onde e como realizar
mudanas apropriadas, atravs da produo de vises do software.
Os maiores benefcios de engenharia reversa sero mais reconhecidos quando
manutenes futuras tiverem como apoio a documentao produzida numa
manuteno anterior.

Propsitos da Engenharia Reversa


2. ENGENHARIA REVERSA X REUSO
Reuso uma atividade que se destina a identificar software reutilizvel. Envolve
tambm a correta importao, reconfigurao e adaptao deste software para uma
nova aplicao em um sistema de computao.
O processo de reuso descrito por meio das atividades: Reconhecimento,
Decomposio, Classificao (para povoar as bibliotecas de reuso); Seleo,
Adaptao e Composio
Tcnicas de engenharia reversa disputam o papel principal no apoio a esses passos,
contudo, o foco principal nos trs primeiros passos.
Componentes candidatos a reuso podem ser mais facilmente reconhecidos, se forem
convertidos para uma notao ou forma padro. Mesmo que as tcnicas de
engenharia reversa no sejam focalizadas na identificao e composio de
componentes a partir de partes reutilizveis, ela pode ser proveitosa em completar a
documentao dos novos sistemas compostos.

Reengenharia de Software
qualquer atividade que:
(1) Melhore o entendimento do software
(2) Prepare ou melhore o software em si, aumentando sua
manuteno, seu reuso e sua extenso
Chikofsky e Cross definem reengenharia:
o exame e a alterao de um sistema para reconstitu-lo de
uma nova forma, seguida pela sua implementao
Sinnimos de Reengenharia: melhoramento, renovao,
modernizao, engenharia de re-desenvolvimento,
engenharia de reuso

Modelo de Processo de
Reengenharia de Software
Engenharia
avante
Reestruturao
dos dados
Reestruturao
do cdigo

Anlise do
inventrio
Reestruturao
de documentos
Engenharia
reversa

Finalidade: Reengenharia
Passos para se realizar reengenharia
Engenharia Reversa
Estudo das possibilidades existentes
Reengenharia:
sem mudana de funcionalidade,
mudana parcial de funcionalidade,
mudana total de funcionalidade 

Deciso:

Processo de Reengenharia
Conhecimento
do Usurio

Sistema Legado
(cdigo fonte)
Eng. de
Software

ReDocumentao

Engenharia
Reversa

=
Reengenharia
Documentao?

Recuperao do
Projeto

Reengenharia: Sem mudana de funcionalidade,


Mesmo paradigma com Mudana de Linguagem
de Programao
Sistema Existente

J existia

Recuperado do
cdigo legado

Modelo Lgico

Linguagem
Escolhida

Reengenharia com mudana parcial


de funcionalidade
Parte do sistema continua com a sua funcionalidade
e uma parte ser alterada.
O que necessrio nesse caso?

Mesmo Paradigma:
Que haja integrao entre as duas partes.
Integrar as duas partes.

Reengenharia com mudana


total de funcionalidade

Engenharia Avante
escolha o seu!

Mtodos de
Desenvolvimento

Reengenharia com Mudana de Orientao


necessrio que se conhea bem o modelo existente
para que se consiga criar o mesmo modelo porm
com abordagem (paradigma) diferente.

Obter o modelo de anlise do sistema no paradigma


desejado. Orientado a Objetos
Orientado a Procedimentos
etc

Reengenharia com Mudana de Orientao

Orientada a
Procedimentos

FUSION/RE
(Modelos UML)
COREM

Orientada a Objetos

Segmentao
(Sneed)

Reengenharia com mudana


parcial de funcionalidade
Pode ocorrer que parte do sistema continue operando
na abordagem antiga e novas funes sejam inseridas
de acordo com a nova abordagem

Mudana de Paradigma em parte do sistema


Obter o modelo do sistema atual de acordo
com a nova abordagem.
Deve-se escolher linguagens compatveis
Integrar as duas partes.

Questes Econmicas de Engenharia Reversa


O benefcio fundamental da tecnologia de ER o aumento do
entendimento de um sistema o que facilita a atividade de
manuteno e conseqentemente causa o aumento da
produtividade (vantagens financeiras)
Aumento da produtividade na etapa de desenvolvimento de
software atravs do reuso e garantia de qualidade
A ER pode facilitar novos desenvolvimentos pelo exame de
como sistemas similares foram construdos e assim as equipes
de projetistas podem obter mais informaes para as decises
a serem tomadas nos novos projetos

Questes Econmicas de Engenharia Reversa


Aplicar ER infringe a lei de propriedade intelectual?
ER do prprio software correta e legal
Quando o software envolvido de propriedade alheia?
1) direito exclusivo do proprietrio
2) cpia para estudo legal

Exerccio optativo
Obtenha propaganda sobre trs ferramentas de
engenharia reversa e faa um resumo de suas
caractersticas
O mesmo para ferramentas de manuteno.
O mesmo para estudos sobre reengenharia de
computador de grande porte para
cliente/servidor

Você também pode gostar