ARTIGO: Reengenharia em Software Legado

15
REENGENHARIA EM SOFTWARE LEGADO Luciana Ponche Dias 1 RESUMO Este artigo trata da proposta de aplicação da reengenharia em software legado, bem como vantagens e desvantagens da mesma, tendo como critério os custos, funcionalidades e desempenho, partindo do princípio de que um projeto de reengenharia em software legado tem por si a qualidade do software e melhor desempenho e produtividade nos processos gerenciais. Um software legado que passa pelo processo de reengenharia e consequentemente por engenharia reversa não perde suas funcionalidades, ao contrário, ele passa por um novo processo de codificação, estruturação, documentação, e esses processos são “chaves” para atingir a qualidade do mesmo. Através de pesquisa bibliográfica são exemplificadas as diretrizes que levam à necessidade de aplicar a reengenharia em software legado, bem como a importância da mesma dentro de uma organização. Através de pesquisa qualitativa, foi feito uma entrevista com um gerente de TI (tecnologia da informação), que já participou de diversos projetos de reengenharia em software legado. A mesma foi de grande relevância, uma vez foi possível alinhar a aplicabilidade de “qualidade de um software” correlacionado com um projeto bem sucedido ou não. Conclui-se que atualmente a necessidade de aplicar a reengenharia em software legado é cada vez maior e que a mesma contribui de maneira imprescindível nos processos organizacionais, porém por ser de tamanha complexidade, é preciso fazer um estudo detalhado de custos e necessidades. Palavras-Chave: legado, processos, qualidade, reengenharia, software. INTRODUÇÃO A variedade de problemas que envolvem manutenção de software cresce constantemente, sendo que as soluções não acompanham esta evolução. A reengenharia de software é uma das estratégias da evolução de software. Ocupa-se de reimplementar sistemas legados, para que sua manutenção seja mais simples. O grande dilema da reengenharia em software legado é que junto ao software legado existem informações dos negócios e procedimentos que podem não estar documentados. O risco de remover e reescrever tais programas são grandes, pois muitas informações teriam que ser descobertas por tentativa e erro. 1 Graduada em Sistemas de Informação - UNESC

Transcript of ARTIGO: Reengenharia em Software Legado

Page 1: ARTIGO: Reengenharia em Software Legado

REENGENHARIA EM SOFTWARE LEGADO

Luciana Ponche Dias1

RESUMO

Este artigo trata da proposta de aplicação da reengenharia em software legado, bem como vantagens e desvantagens da mesma, tendo como critério os custos, funcionalidades e desempenho, partindo do princípio de que um projeto de reengenharia em software legado tem por si a qualidade do software e melhor desempenho e produtividade nos processos gerenciais. Um software legado que passa pelo processo de reengenharia e consequentemente por engenharia reversa não perde suas funcionalidades, ao contrário, ele passa por um novo processo de codificação, estruturação, documentação, e esses processos são “chaves” para atingir a qualidade do mesmo. Através de pesquisa bibliográfica são exemplificadas as diretrizes que levam à necessidade de aplicar a reengenharia em software legado, bem como a importância da mesma dentro de uma organização. Através de pesquisa qualitativa, foi feito uma entrevista com um gerente de TI (tecnologia da informação), que já participou de diversos projetos de reengenharia em software legado. A mesma foi de grande relevância, uma vez foi possível alinhar a aplicabilidade de “qualidade de um software” correlacionado com um projeto bem sucedido ou não. Conclui-se que atualmente a necessidade de aplicar a reengenharia em software legado é cada vez maior e que a mesma contribui de maneira imprescindível nos processos organizacionais, porém por ser de tamanha complexidade, é preciso fazer um estudo detalhado de custos e necessidades. Palavras-Chave: legado, processos, qualidade, reengenharia, software.

INTRODUÇÃO

A variedade de problemas que envolvem manutenção de software cresce

constantemente, sendo que as soluções não acompanham esta evolução. A

reengenharia de software é uma das estratégias da evolução de software. Ocupa-se

de reimplementar sistemas legados, para que sua manutenção seja mais simples.

O grande dilema da reengenharia em software legado é que junto ao software

legado existem informações dos negócios e procedimentos que podem não estar

documentados. O risco de remover e reescrever tais programas são grandes, pois

muitas informações teriam que ser descobertas por tentativa e erro.

1 Graduada em Sistemas de Informação - UNESC

Page 2: ARTIGO: Reengenharia em Software Legado

Esta obra tem por objetivo, apresentar a importância da reengenharia em

software legado, além disso, deixar explícito os conceitos relevantes do processo,

vantagens, desvantagens e custo, visando pela qualidade do software.

Para desenvolvimento desta pesquisa, foram utilizadas referências

bibliográficas disponíveis em livros, revistas, artigos, etc. Foi realizada uma pesquisa

de campo qualitativa através de uma entrevista com um gerente de TI. Também foi

feito uma análise de um questionário distribuído para 500 gestores de TI referente à

reengenharia em software legado, de caráter quantitativo.

Dar início à pesquisa de reengenharia em software legado é relevante, pois

muitas empresas ainda mantêm o software legado e a manutenção de sistemas

legados é cada vez mais dispendiosa, e a reengenharia prolonga o tempo de vida

útil do software. A reengenharia é eficaz em termos de custo quando ele tem alto

valor de negócios, melhora a estrutura do sistema, cria uma nova documentação

relacionada e faz com que ela seja de mais fácil compreensão.

1 SOFTWARE LEGADO

Um software é um artefato evolutivo e, com o passar do tempo, seu projeto e

implementação originais são modificados para atender a novos requisitos e/ou

melhorar o seu desempenho. Fatores internos e externos, como o estado da

economia, as modificações nos mercados, as alterações nas leis, as mudanças de

gestão e organização estrutural, contribuem para que as empresas sofram

mudanças contínuas (SOMMERVILLE, 2003).

Essas mudanças geram requisitos de software novos ou modificados; assim,

todos os softwares úteis inevitavelmente são modificados quando as empresas

passam por mudanças. Portanto, esses sistemas incorporam um grande número de

alterações que foram feitas durante muitos anos, além de incorporarem importantes

regras de negócio no seu contexto, são os chamados softwares legados, a palavra

“legado” traz um sentido pejorativo, similar ao adjetivo obsoleto. O nome “software

legado” é dado a sistemas antigos, em uso há determinado período e desenvolvidos

com tecnologia ultrapassada (SOMMERVILLE, 2003).

Existem muitas empresas que estão repletas de software legado em uso,

principalmente as empresas cujos processos são os mesmos por anos.

Normalmente as empresas gastam muito dinheiro na implantação do sistema e

Page 3: ARTIGO: Reengenharia em Software Legado

esperam não ter o mesmo gasto novamente. Muitos desses antigos sistemas ainda

são fundamentais para as empresas, isto é, as empresas dependem dos serviços

fornecidos pelo software, e qualquer falha desses serviços teria um sério efeito em

seu dia a dia. Normalmente são aplicações complexas, de difícil manutenção e que

pelo grau de criticidade e custo para modernização, continuam ativas (BRAGA,

2004).

A preocupação com os “legados” está na baixa qualidade do mesmo. Muitas

vezes não existem documentações e se existem são pobres de detalhes, os casos

de testes são fracos e não há um controle de mudanças. Muitas vezes o engenheiro

de software não mexe no software legado quando o mesmo atende as necessidades

do cliente (BROOKS, 1995).

Algumas das principais características na identificação de um software legado

são: sistemas em produção há mais de cinco anos; hardware e software obsoletos;

sistemas com mais de 10 mil linhas de códigos; interface com o usuário baseada em

caractere; código-fonte amplamente modificado por diversas equipes ao longo dos

anos, com alterações não documentadas; documentação antiga e desatualizada,

não condizentes com as funcionalidades e processos atuais do sistema; utilização

de um sistema de arquivos ou gerenciador de banco de dados obsoletos; sistema

não conhecido em sua totalidade pelos profissionais responsáveis por sua

manutenção; usuários do sistema incapazes de explicar com detalhes suas funções

junto ao sistema e todos os processos que o mesmo executa; regras de negócio

inseridas apenas no código-fonte do sistema (BRAGA, 2004).

1.1 AVALIAÇÃO DO LEGADO

Segundo Warren ao avaliar um sistema legado, deve considerá-lo sob duas

perspectivas diferentes. A primeira seria sob a perspectiva de negócios (valor do

sistema para a empresa) e a segunda seria uma perspectiva de sistema (avaliação

da qualidade do software de aplicação e do software e hardware de apoio do

sistema). A junção dessas duas perspectivas é decisiva na hora de decidir o que

fazer com o sistema legado (WARREN, 1998).

A qualidade e o valor de negócios de cada um desses sistemas são avaliados e

comparados com outros sistemas, mediante um gráfico, que mostra o valor de

negócios relativo e a qualidade do sistema. Na figura (1), é possível verificar que

Page 4: ARTIGO: Reengenharia em Software Legado

existem quatro grupos de sistemas e que se subdividem em: baixa qualidade, baixo

valor de negócios; baixa qualidade, alto valor de negócios; alta qualidade, baixo

valor de negócios e alta qualidade, alto valor de negócios (SOMMERVILLE, 2003).

Figura 1 – Qualidade de sistema e valor de negócio Fonte: SOMMERVILLE, 2003.

• Baixa qualidade, baixo valor de negócios: significa que manter esses sistemas

em operação será dispendioso e a taxa de retorno de investimento para os negócios

será pequena. Esses sistemas são candidatos a serem descartados (BRAGA, 2004).

• Baixa qualidade, alto valor de negócios: significa que esses sistemas estão

prestando uma importante contribuição à empresa, assim, não podem ser

descartados. Porém, sua baixa qualidade significa que os custos operacionais são

altos, de modo que são candidatos à transformação ou à substituição do sistema

(BRAGA, 2004).

• Alta qualidade, baixo valor de negócios: significa que são sistemas que não

contribuem muito para os negócios, mas cuja manutenção pode não ser

dispendiosa. Não vale o risco substituir esses sistemas, de modo que a manutenção

normal pode ser continuada ou eles podem ser descartados (WARREN, 1998).

• Alta qualidade, alto valor de negócios: significa que esses sistemas devem ser

mantidos em operação, mas sua alta qualidade significa que não é necessário

investir na sua transformação ou substituição. Deve-se continuar com a manutenção

normal do sistema (WARREN, 1998).

Page 5: ARTIGO: Reengenharia em Software Legado

1.2 PROBLEMAS COM O LEGADO

Os sistemas legados constituem a parte mais importante do fluxo de

informações dentro das organizações e são os principais veículos para a

consolidação das informações sobre o negócio. O conhecimento agregado nestes

sistemas constitui um patrimônio corporativo significativo. Por tratar de sistemas

críticos apresentam numerosos problemas para as empresas (BISBAL, 1999).

A maioria dos sistemas legados passou por mudanças contínuas durante

muitos anos de manutenção. De acordo com a segunda lei de evolução de

programas de Lehman (1985), quando um programa em evolução é continuamente

modificado, sua estrutura se deteriora, consequentemente a complexidade aumenta.

Esse aumento de complexidade ocorre porque há uma precipitação ao elaborar as

correções dos problemas e não há tempo para manter o refinamento de um projeto

ou a consistência da abordagem em todo o código (LEHMAN, 1985).

A pressa em disponibilizar um produto pode levar mantenedores a implementar

uma modificação rápida, ineficiente e sem ter sido adequadamente testada, em vez

de utilizar o tempo necessário para seguir as boas práticas de engenharia de

software. O resultado é um produto com vários "remendos" e difícil de ser entendido

e mantido (LEHMAN, 1985).

Atualmente as organizações estão enfrentando uma grande pressão para

modernizar seus sistemas, a fim de que possam responder melhor às necessidades

de mercado e de pessoas e às rápidas mudanças de tecnologia (LEHMAN, 1985).

2 REENGENHARIA DE SOFTWARE

O software é o conjunto de vários artefatos e não apenas o código fonte. O

software não é um produto acabado, está sempre em mutação, condição esta

originária de mudanças nas regras de negócio, necessidade de melhoria do

processo produtivo ou da adequação do produto ou serviço (ZANLORENCI, 2009).

Muitas organizações têm enfrentado problemas com o uso e a manutenção de

software construído para ser executado em uma variedade de tipo de hardware e

programado em linguagem obsoletas. A tarefa de realizar a manutenção torna-se

mais complexa e mais cara e, ainda, esses sistemas tornam-se cada vez mais

desorganizados devido às inúmeras tentativas de adaptações e inclusões de novas

Page 6: ARTIGO: Reengenharia em Software Legado

funcionalidades. Sendo assim, as organizações têm três alternativas: manter os

softwares legados, comprar um novo software ou realizar a reengenharia tanto para

aumentar sua manutenibilidade quanto para implementá-los em um paradigma mais

atual com ou sem mudança de linguagem (SOMMERVILLE, 2003).

Quando o sistema não é fácil de ser mantido sendo, porém, de grande utilidade, ele deve ser reconstruído. Partindo-se do sistema existente (via código-fonte, interface ou ambiente), são abstraídas as suas funcionalidades e são construídos o modelo de análise e o projeto do software. Esse processo é denominado reengenharia de software (PIEKARSKI, 2000).

O termo reengenharia pode referir-se tanto à reengenharia do processo de

negócios quanto à reengenharia de sistemas. Trata-se de abordagens diferentes,

embora muitos autores afirmem que deveria haver uma maior sinergia entre estes

dois processos dentro de uma empresa (SILVA, 2005).

A reengenharia de software também chamada renovação ou recuperação de

software é definida como a recuperação rigorosa do conhecimento embutido em

sistemas existentes a fim de alavancar os esforços em seu aprimoramento,

procurando melhorar sua qualidade global e reduzir custos com manutenção, isto é,

reestruturar ou reescrever todo ou parte de um sistema legado sem alterar suas

funcionalidades (SILVA, 2005).

Um processo de reengenharia geralmente inclui tradução do código-fonte,

melhoria na estrutura do programa, modularização, alguma forma de engenharia

reversa seguida por uma forma de engenharia progressiva ou reestruturação e

reengenharia de dados (SILVA, 2005).

É importante ressaltar que existe clara distinção entre o desenvolvimento de um

novo software e reengenharia, a distinção está relacionada ao ponto de partida de

cada um dos processos. O desenvolvimento de um novo software (engenharia

progressiva) inicia-se com uma especificação escrita do software que será

construído, enquanto que a reengenharia inicia-se tomando como base um sistema

já desenvolvido. Como mostra a figura (2) abaixo (SOMMERVILLE, 2003).

O objetivo da engenharia reversa é derivar o projeto ou especificação de um

sistema, partindo-se de seu código fonte. O objetivo da reengenharia é produzir um

sistema novo com maior facilidade de manutenção. A engenharia reversa é usada

como parte do processo de reengenharia, pois fornece o entendimento do sistema a

ser reconstruído (SOMMERVILLE, 2003).

Page 7: ARTIGO: Reengenharia em Software Legado

Figura 2 - Distinção entre o desenvolvimento de um novo software (1) e reengenharia (2) Fonte: SOMMERVILLE, 2003.

2.1 RELACIONAMENTOS NO CICLO DE DESENVOLVIMENTO

Para uma melhor compreensão das técnicas de manutenção de software, é

preciso considerar três conceitos dependentes: a existência de um processo de

desenvolvimento de software, a presença de um sistema a ser analisado e a

identificação de níveis de abstração (OSBORNE e CHIKOFSKY, 1990).

Independente do que seja o processo de desenvolvimento de software, espera-

se que haja interação entre seus estágios e, quiçá, recursão. No processo de

desenvolvimento, os estágios iniciais envolvem conceitos independentes de

implementação, enquanto os estágios finais enfatizam os detalhes de

implementação (OSBORNE e CHIKOFSKY, 1990).

O aumento de detalhes durante o processo de desenvolvimento conceitua os níveis de abstração. Estágios iniciais do sistema planejam e definem requisitos de alto nível quando comparados com a própria implementação (PIEKARSKI, 2000).

Esta comparação deixa claro que nível de abstração e grau de abstração são

grandezas distintas. Enquanto o nível de abstração é um conceito que diferencia os

estágios conceituais do projeto, o grau de abstração é intrínseco a cada estágio

(PIEKARSKI, 2000).

Para que as técnicas de manutenção de software (especificamente engenharia

reversa e reengenharia) sejam descritas de forma simplificada, serão tomadas como

base três fases do processo de desenvolvimento de software, com níveis de

abstração diferenciados, conforme figura 3 (OSBORNE e CHIKOFSKY, 1990):

• Requisitos: especificação do problema a ser resolvido, incluindo objetivos,

restrições e regras de negociação;

• Projeto: especificação da solução;

Page 8: ARTIGO: Reengenharia em Software Legado

• Implementação: codificação, teste e adaptação ao sistema operacional;

Figura 3 - Relacionamentos no ciclo de desenvolvimento de software Fonte: CHIKOFSKY e CROSS, 1990.

2.2 PROCESSO DE REENGENHARIA DE SOFTWARE

O processo de reengenharia é um dos desafios mais significativos para

engenheiros de software e é sob um processo bem definido que a estabilidade no

desenvolvimento do software pode ser instituída. O problema é comum, afetando

todos os tipos de organização, pois uma falha na reengenharia pode dificultar os

esforços da organização para manter-se competitiva (BORGES, 2007).

A capacitação em desenvolvimento de software pressupõe a existência de um

processo de software definido no qual é aplicado um modelo de melhoria de

processos. O processo definido tem documentação que detalha o que é feito,

quando, por quem, o que é utilizado e o que é produzido. A maturidade do processo

indica até que ponto um processo é definido e implementado, utilizando para isso

aspetos como métricas para verificação do controle e da eficácia (BORGES, 2007).

Assim, a capacitação em desenvolvimento de software reflete o grau de

institucionalização de uma infraestrutura e cultura relacionada aos métodos, práticas

e procedimentos do desenvolvimento de software. Reflete, também, a qualidade do

processo, pois a qualidade dos produtos de software depende diretamente da

qualidade do processo de desenvolvimento a eles associados (BORGES, 2007).

Page 9: ARTIGO: Reengenharia em Software Legado

Um processo de reengenharia tem como entrada um programa legado e a

saída é uma versão estruturada e modularizada do mesmo programa. Ao mesmo

tempo em que ocorre a reengenharia do programa, os dados do sistema também

podem passar por reengenharia (BORGES, 2007).

A reengenharia de dados é o processo de analisar e reorganizar estruturas de dados e, eventualmente, os valores dos dados de um programa, com o objetivo de torná-lo mais compreensível. Em princípio, a reengenharia de dados não deverá ser necessária, se a funcionalidade do sistema permanecer inalterada. Na prática, há uma série de razões pelas quais é preciso modificar os dados, como também os programas, em um sistema legado (SOMMERVILLE, 2003).

Efetuar o processo de reengenharia em uma aplicação implica em examinar e

alterar um sistema com o propósito de reconstituí-lo em um novo modelo e uma

implementação de nova forma. A figura 4 exibe as principais etapas no processo de

reengenharia de software (PIEKARSKI, 2000).

Figura 4 – Processo de reengenharia Fonte: SOMMERVILLE, 2003

3 METODOLOGIA

Até este ponto da obra, foi apresentada a pesquisa bibliográfica, que remete a

uma série de conceitos e perspectivas sobre a reengenharia em software legado.

Foi realizada uma pesquisa de campo de cunho qualitativo, com um gerente de

TI que se submeteu a uma entrevista (por troca de e-mails) com perguntas

relacionadas ao processo de reengenharia em software legado em que ele teve

participações. Através da entrevista é perceptível a concepção de vários tópicos

citados no referencial bibliográfico.

Page 10: ARTIGO: Reengenharia em Software Legado

3.1 ENTREVISTA COM GERENTE DE TI

Em entrevista com Keiji Sakai, bacharel em ciência da computação, MBA e

certificado em diversas áreas de gerência, que ocupa há dois anos e meio o cargo

de diretor de TI da BM&FBOVESPA, e que já passou por diversas instituições

financeiras, entre elas: ESM Consultoria e Projetos em TI LTDA; JPMorgan Chase;

HSBC Bank Brasil; Deutsche Bank S/A - Banco Alemão; UNIBANCO; Banco Matrix

S/A; Banco de Investimentos Garantia e Banco Norchem, exprime de forma sucinta

suas diversas experiências em projetos de reengenharia em software legado.

Você já teve oportunidade de participar do processo de reengenharia de

software? Se sim, discorra sobre os principais pontos. Levando em

consideração adaptação dos usuários, melhorias, custos, vantagens e

desvantagens.

SAKAI: Sim, em diversas instituições financeiras. Em primeiro lugar, é importante

explicar o que considero reengenharia de software – na minha visão, reengenharia

de software é reconstruir uma aplicação ou parte dela, corrigindo defeitos existentes

ou saneando códigos antigos, ou ainda renovando componentes para a plena

utilização dos melhores recursos de software e hardware existentes.

Neste sentido, em reengenharias de software onde não ocorreram grandes

mudanças de interação aos usuários, mas trouxeram claramente vantagens, seja na

correção ou na melhoria de performance, a recepção dos mesmos foi sempre muito

positiva. Naquelas onde a interação dos usuários com a aplicação teve alteração,

principalmente devido a grandes rupturas tecnológicas (mainframe para micro

informática, plataforma DOS para Windows, desktops para tablets), as primeiras

movimentação provocaram resistência dos usuários principalmente devido à

mudança da rotina operacional dos mesmos. Com relação a custos, vantagens e

desvantagens, existe uma falsa percepção que a reengenharia seria “mais barata”

do que um novo desenvolvimento – em algumas situações isto não foi verdade, pois

o nível de integração dos legados aliado a complexidade de novas tecnologias

encareceu alguns dos projetos. Em algumas situações, o custo de uma

manutenção corretiva do sistema legado seria muito mais vantajoso que uma ação

de reengenharia de software.

Page 11: ARTIGO: Reengenharia em Software Legado

O que levou/leva a empresa a passar pelo processo de reengenharia no

software?

SAKAI: Alguns dos grandes motivadores: estratégia de downsizing da instituição,

custo de manutenção de legados, nível de instabilidade de legados em decorrência

de manutenções e customizações “complementares” e por fim, estratégia de

negócios para lançamento de novas interações entre as aplicações das instituições

e os clientes finais.

Quais são os principais aspectos que um gestor de TI precisa avaliar se

tratando do “software”?

SAKAI: A criticidade da aplicação que precisa ser reescrita precisa ser avaliada –

numa instituição financeira onde algumas aplicações precisam funcionar em regime

24 x 07, o risco de instabilidade pode provocar perdas milionárias e fuga de clientes.

Além disto, em ambientes extremamente regulados a consistência das informações

(incluindo eventuais cálculos) são de extrema criticidade. Neste sentido, planos

para garantir a qualidade do sistema devem ser colocados em prática, como por

exemplo, testes regressivos, certificações com o mercado, produção paralela e

simulações dos requisitos não funcionais devem estar no radar do gestor de TI.

Quais são os principais motivos que levam ao “abandono” do software

legado?

SAKAI: Obsolescência aliada a instabilidade e ao alto custo de manutenção. No

caso da obsolescência, o risco operacional em decorrência de descontinuidade de

software, hardware e tecnologia pode obrigar as instituições a partir para uma

estratégia de reengenharia.

No processo de reengenharia o risco de perder funcionalidades do software

legado ainda existe, quais são as medidas para tal acontecimento?

SAKAI: Para evitar este tipo de situação, o mapeamento das funcionalidades é

fundamental. Na inexistência de documentação atualizada, os trabalhos tradicionais

de Analise de Sistemas e Analise de Processos deve fazer parte do projeto.

Você utiliza algum modelo para desenvolvimento do projeto de reengenharia

ou adapta algum modelo?

Page 12: ARTIGO: Reengenharia em Software Legado

SAKAI: Sobre metodologia ou modelos, em cada instituição utilizávamos

metodologias e modelos diferentes. O importante tanto na definição dos artefatos

como na metodologia é a de não burocratizar o processo, com controles e

documentações não necessárias.

Qual é o momento de aplicar a reengenharia no software. Quais aspectos

contribuem para isso?

SAKAI: A reengenharia deve ser aplicada nos momentos em que os software

legados não estão mais aptos a atender as necessidades. Por exemplo, volume

transacional, performance, tecnologia, alterações regulatórias e estratégias de

negócio.

O processo de reengenharia de software pode ser a “solução” dos problemas

dos softwares legados?

SAKAI: Neste ponto é importante ressaltar que durante muitos anos o mercado de TI

do Brasil estava fechado para provedores estrangeiros (reserva de mercado) e com

isto, o desenvolvimento de soluções domésticas foi amplamente aplicado. Com o

fim da reserva de mercado e a vinda de vários provedores com soluções globais, a

dependência de legados internos diminui. Por exemplo, para uma empresa que na

década de 80 decidiu desenvolver um sistema de BackOffice para controlar todo o

seu processo produtivo, eu não partiria para a reengenharia da solução e sim,

buscaria um ERP de mercado.

Para soluções específicas que não são atendidas pelo mercado e que são criticas

para as organizações, a reengenharia é a solução.

Qual o papel do gerente de TI, na gestão e qualidade do software?

SAKAI: Em algumas organizações, a qualidade do software é de responsabilidade

do gestor de TI junto com um gestor de Qualidade. Mas com relação aos aspectos

técnicos com os requisitos não funcionais, de arquitetura, segurança da informação

e tecnologia adotada, a responsabilidade é principalmente do gestor de TI.

Qual é a visão pós-reengenharia?

Page 13: ARTIGO: Reengenharia em Software Legado

SAKAI: Tive boas e más experiências – mas não em decorrência da reengenharia

em si. Os maus resultados foram em decorrência de falhas, seja na especificação

dos requisitos funcionais, seja na construção das soluções.

Considerações finais (nesta parte fica livre do entrevistado, ressaltar algum

ponto que não foi citado, contar experiência de vida profissional, dicas, ou

seja, tudo que venha acrescentar ao trabalho).

SAKAI: Um projeto de reengenharia de software não é facilmente aprovado. O

argumento de necessidade para melhoria de ambientes ou mitigação de riscos

operacionais sem a quantificação dos benefícios financeiros não são fortes o

suficiente para que um CIO tome a decisão de aprovar um projeto. Mesmo os

CIOs que patrocinam projetos de reengenharia por conta própria, assumem riscos

que, caso os projetos não sejam extremamente bem sucedidos, colocam sua

credibilidade na instituição em risco. Considerando a “comoditização” cada vez

maior de software, em minha opinião são poucas as reais necessidades de

reengenharia de software nos dias atuais.

3.2 ANÁLISE E DISCUSSÃO DOS RESULTADOS

Mediante entrevista, é possível perceber que há casos em que a única opção é

a reengenharia, pois a descontinuidade do software e limitações do hardware faz

com que o processo organizacional também não evolua. Contudo, a reengenharia

deve ser aplicada apenas para sistemas críticos que não podem ser substituídos por

soluções de mercado.

Sobre os “custos” é interessante a forma como é colocado, uma vez que os

custos, só serão altos ou baixos dependendo da situação a qual o software se

encontra, porém é bom lembrar que um software que passa por reengenharia, tem

sua performance e funcionalidades melhoradas, com isso, pedidos de manutenção,

serão cada vez menores, e o gasto com o mesmo diminuirá.

Outro ponto interessante, foi a forma como o software é “inserido” na

organização, sendo instrumento de negócio e de lucro, porém o mau funcionamento

do mesmo irá acarretar problemas em toda a hierarquia da organização. A partir do

momento em que o software legado não atende mais as necessidades é hora de

agir, seja passar por um processo de reengenharia ou buscar algo novo no mercado.

Page 14: ARTIGO: Reengenharia em Software Legado

É visível o quanto é difícil e complexo implantar e ter o projeto de reengenharia

aceito, uma vez que ainda existe insegurança nos processos, pois como foi dito, os

processos de reengenharia precisam ser bem feito para dar certo. Existem hoje

diversas ferramentas CASE que agilizam os processos, porém elas não são os

únicos fatores determinantes, uma boa gestão é crucial.

CONCLUSÃO

Mediante estudo, conclui-se que realizar a reengenharia em software legado,

depende de muitos fatores, tanto gerenciais quanto a preocupação de se fazer algo

com qualidade.

A importância da reengenharia está em possibilitar que todo conhecimento

agregado (funções e procedimentos específicos de caráter particular e único) ao

software legado não seja perdido. Porém se existir um software no mercado que

supra as funções do “legado”, a melhor opção seria sim, implantar este software.

Finalizando, é conclusivo que o software quando chega ao seu estado crítico,

precisa de medidas para que o mesmo continue em uso, o papel de um gestor de TI

é buscar pela melhor solução.

REFERÊNCIAS

BISBAL, Jesus. Uma visão geral da migração do sistema legado, 1999. BORGES, Rosemary. Sistemas legados, 2007. BRAGA, Jose Luiz; PINTO, Hebert Laroca Mendes. Sistemas legados e novas tecnologias: técnicas de integração e estudo de caso, 2004. BROOKS, F. P. Ensaios sobre Engenharia de Software. 1. ed. MA: Addison-Wesley, 1995. CHIKOFSKY, E. J.; CROSS, J. H. Reverse Engineering and Design Recovery: A Taxonomy. IEEE Software, 1990. LEHMAN, M. M. Programs, Life-Cycles, and the Laws of program Evolution, 1985. OSBORNE, W. M.; CHIKOFSKY, E. J. Manutenção de software, 1990.

Page 15: ARTIGO: Reengenharia em Software Legado

PIEKARSKI, Ana; Reengenharia de software: o que, por que e como. Disponível em: <revistas.unicentro.br/index.php/RECEN/article/download/528/697>. Acesso em: 19 Mai. 2013. SILVA, Roberto Andrade de. Migração e Integração de Sistemas Legados, 2005. SOMMERVILLE, Ian. Engenharia de Software. 6. ed. São Paulo: Addison-Wesley, 2003. WARREN, Ian. Um método para avaliar Sistemas Legados para a Evolução, 1998. ZANLORENCI, Edna; Abordagem da Engenharia de Requisitos para Software Legado. Disponível em: <wer.inf.pucrio.br/WERpapers/artigos/.../Ednazanloren.pdf>. Acesso em: 27 Ago. 2013.