Você está na página 1de 27

Engenharia de Software

A reengenharia de Software uma das


estratgias de evoluo de software.

Se ocupa de reimplementar sistemas
legados, para que sua manuteno seja fcil.
Pode envolver:
Redocumentar;
Organizar e reestruturar o sistema;
Traduzir o sistema para uma linguagem de
programao mais moderna;
Modificar e atualizar a estrutura e os valores dos
dados do sistema.

A funcionalidade do software no modificada
e, normalmente, a arquitetura do sistema
permanece a mesma.
A manuteno de sistemas legados cada
vez mais dispendiosa, e a reengenharia torna
desses sistemas prolonga seu tempo de vida
til.
A reengenharia eficaz em termos de custo
quando ele tem alto valor de negcios, mas
dispendioso manter.
A reengenharia melhora a estrutura do
sistema, cria uma nova documentao
relacionada e faz com que ela seja de mais
fcil compreenso.
Tem duas vantagens principais:
1. Riscos reduzidos: Isto porque, durante o
redesenvolvimento de um software podem ser
inseridos erros na especificao, no
desenvolvimento, etc.
2. Custos reduzidos: O custo da reengenharia
significativamente menor do que os custos de
desenvolvimento.
Especificao do
Sistema
Projeto e
implementao
Novo Sistema
Software j
existente
Compreenso
e
transformao
Sistema
reengenheirado
Distino entre o desenvolvimento de um novo sistema (1) e reengenharia (2).
Fonte: SOMMERVILLE
(1)
(2)
Um processo de reengenharia tem como
entrada um programa legado e a sada uma
verso estruturada e modularizada do
mesmo programa. Ao mesmo tempo que
ocorre a reengenharia do programa, os dados
do sistema tambm podem passar por
reengenharia.
Processo de reengenharia.
Fonte: SOMMERVILLE
Traduo do cdigo fonte:
O programa convertido de uma linguagem de programao
antiga para uma verso mais moderna da mesma linguagem ou
para um linguagem diferente.
Engenharia reversa:
O programa analisado e as informaes so extradas dele, a
fim de ajudar a documentar sua organizao e funcionalidade.
Melhoria na estrutura do programa:
A estrutura de controle do programa analisada e modificada, a
fim de torn-la mais fcil de ser lida e compreendida.
Modularizao do programa:
As partes relacionadas do programa so agrupadas e, quando
for apropriado, a redundncia removida.
Reengenharia de dados:
Os dados processados pelo programa so modificados, a fim de
refletir as mudanas feitas nele.
A reengenharia pode no exigir
necessariamente todas as etapas
apresentadas anteriormente, por exemplo a
traduo de cdigo fonte pode no ser
necessria se a linguagem ainda for aceita
pelo fornecedor do compilador.
Os custos da reengenharia dependem da
extenso do trabalho que realizado.
Aumento dos custos
Converso automatizada
do cdigo fonte
Reestruturao automatizada
com modificaes manuais
Reestruturao mais
mudanas de arquitetura
Reestruturao automatizada
do programa
Reestruturao do
programa e dos dados
A qualidade do software que deve passar pela
reengenharia;
O apoio s ferramentas disponveis para a
reengenharia;
A extenso da converso de dados requerida;
A disponibilidade de pessoal habilitado.
Converter um cdigo de uma linguagem (ou
verso) para outra, por exemplo FORTRAN para
C
Pode ser necessria pelas seguintes razes:
Atualizao da plataforma de hardware
Escassez de pessoal habilitado
Mudanas na poltica organizacional
Falta de suporte ao software
Somente realista se um tradutor automtico
estiver disponvel
o processo de analisar o software com o objetivo de
recuperar seu projeto e sua especificao
A engenharia reversa pode fazer parte do processo de
reengenharia, mas no o mesmo que a reengenharia.
O objetivo da engenharia reversa derivar o projeto ou
a especificao de um sistema a partir de seu cdigo-
fonte; um novo sistema, com manuteno mais fcil
O processo inicia com uma fase de anlise, utilizando-se
de ferramentas automatizadas, a fim de descobrir sua
estrutura
A estrutura de controle dos sistemas legados
complexa, com muitas ramificaes incondicionais e
a lgica de controle no intuitiva. Essa estrutura
pode ser afetada por manutenes regulares,
tornando alguns cdigos inatingveis
O programa pode ser reestruturado
automaticamente para eliminar declaraes
incondicionais
Condies complexas podem ser simplificadas, como
parte do processo de reestruturao de programa
o processo de reorganizar um programa, de
modo que as partes relacionadas sejam
coletadas e consideradas um nico mdulo
A modularizao em geral realizada
manualmente, com a inspeo e a edio do
cdigo
Processo de anlise e reorganizao de
estruturas de dados e, algumas vezes, os
valores dos dados em um sistema, para
torn-lo mais compreensvel
Em princpio, a reengenharia de dados no
dever ser necessria, se a funcionalidade do
sistema permanecer inalterada
o Na dcada de 80 a Ford passava por uma grande depresso,
enquanto isso as indstrias Japonesas cresciam, ficando mais
rpidas e competitivas.

o Isso levou a Ford a implementar a Reengenharia, com o propsito
de rentabilizar seu departamento de contabilidade.

o Conseguiram atingir uma reduo de 75% nas suas despesas

IBM
o Reduziu o tempo na produo de um computador de SETE dias
para UM dia.

XEROX
o Diminui o prazo de entrega ao produto mercado, melhorando
os processos de planejamento, qualidade de seus produtos e
administrao.

MC DONALDS
o Aumentou a eficcia do planejamento e controle de estoque,
atravs da informatizao de suas lojas.
GENERAL MOTORS
o Na poca do lanamento do Cadillac, os processos no foram
aplicados adequadamente s estratgias da empresa, pois as
inovaes no foram bem aceitas pelo processo, que at ento
era antiquado .

KODAK
o Implantou um novo software, que no foi adaptado pelo sistema.
Os programas custavam caro e foram implantados
arbitrariamente.
SOMMERVILLE, Ian, Engenharia de
Software. 6 ed. So Paulo: Addison Wesley,
2003.