Você está na página 1de 17

CENTRO UNIVERSITRIO DO ESPRITO SANTO UNESC LUCIANA PONCHE DIAS

REENGENHARIA EM SOFTWARE LEGADO

COLATINA 2012

LUCIANA PONCHE DIAS

REENGENHARIA EM SOFTWARE LEGADO

Trabalho de Concluso de Curso apresentado ao Centro Universitrio do Esprito Santo UNESC, sob orientao da Professora Priscila de Almeida Prata, como requisito para a obteno do Ttulo de Bacharel em Sistema de Informao.

COLATINA 2012

SUMRIO

INTRODUO .................................................................................................... 1 PROBLEMA DE PESQUISA E HIPTESES .................................................. 2 JUSTIFICATIVA ............................................................................................... 3 OBJETIVOS ..................................................................................................... 3.1 OBJETIVO GERAL ........................................................................................ 3.2 OBJETIVOS ESPECFICOS .......................................................................... 4 REFERENCIAL TERICO ................................................................................ 5 PROCEDIMENTOS METODOLGICOS ......................................................... 6 CRONOGRAMA ......................................................................................

04 05 06 07 07 07 08 14 15 16 17

REFERNCIAS .................................................................................................... ANEXO A INSTRUMENTO DE COLETA DE DADOS ........

INTRODUO

A variedade de problemas que envolvem manuteno de software cresce constantemente, sendo que as solues no acompanham esta evoluo. A reengenharia de software uma das estratgias de evoluo de software. Ocupa-se de reimplementar sistemas legados, para que sua manuteno seja fcil. O grande dilema de implantar a reengenharia em software legado que eles tm embutidas informaes dos negcios e procedimentos, que podem no estar documentados. O risco de remover e reescrever tais programas so grandes, pois muitas informaes teriam que ser redescobertas por tentativa e erro. A manuteno 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 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. Ser realizada uma pesquisa bibliogrfica baseada em publicaes recentes disponveis em livros, revistas, etc. Tambm ser realizada uma pesquisa de campo qualitativa atravs de entrevista com um gerente de TI explanando as mudanas aps a implementao da reengenharia em software legado. Dar inicio pesquisa de reengenharia em software legado relevante, pois atualmente muitas empresas ainda mantm software legado. Colocar em pratica a reengenharia em um sistema implica examinar e alterar um sistema de software de forma a reconstituir e reimplementa-lo sob um novo formato.

1 PROBLEMA DE PESQUISA E HIPTESES

Porque efetuar a reengenharia em software legado implica tantas barreiras dentro da empresa e qual a importncia da mesma? Porque existe o medo tanto do usurio do sistema quanto do gerente de TI de que com a reengenharia o software no faa as mesmas funes do antigo. Porque os gerentes de TI no tm as competncias gerenciais necessrias para avaliar o custo de manuteno do legado nem para conduzirem um processo de migrao. Empresas com o problema do legado devem capacitar seus gerentes em reengenharia de software. Porque no h conhecimento das novas tecnologias. Estudar sobre novas linguagens, novos servidores de aplicao e novas arquiteturas vital para tomar uma atitude de acabar com o legado. Investir em treinamento do seu corpo tcnico tambm importante.

2 JUSTIFICATIVA

Pesquisar sobre reengenharia em software legado relevante, pois hoje existem muitas empresas que ainda mantm software legado. Colocar em pratica a reengenharia em um sistema implica examinar e alterar um sistema de software de forma a reconstituir e reimplementa-lo sob um novo formato. Significa aprimorar a documentao, projetar e reestruturar um sistema existente de forma a obter uma forma mais aceitvel do mesmo. Na rea computacional, de grande importncia que o profissional de TI saiba fazer da reengenharia uma aliada dentro da empresa. Com ela haver aumento na manutenibilidade de software, identificao dos candidatos ao reuso, valorizao do sistema que sofre o processo de reengenharia e aprimoramento da gesto de riscos do projeto. Reengenharia de software ainda apresenta grandes dificuldades de

implantao, porm o uso dela em software legado trs grandes benefcios para a empresa, gerentes de TI e para os que manuseiam o software. Um sistema que tenha sofrido o processo de reengenharia fornece os recursos solicitados pelos participantes no projeto, ao mesmo tempo em que conserva uma pequena parte da construo conceitual do sistema legado.

3 OBJETIVO

3.1 OBJETIVO GERAL

Apresentar a importncia e eficcia da reengenharia em software legado.

3.2 OBJETIVO ESPECFICO

Conceituar software legado; Conceituar reengenharia de software; Exemplificar todos os processos; Comparar custos, vantagens e desvantagens; Distinguir o que problema e o que soluo; Deixar explicito os conceitos e usabilidades.

4 REFERENCIAL TERICO

Ao passar do tempo, no se imaginava que o software se tornaria um elemento importante para o mundo e teria a capacidade de manipular a informao. Com este crescimento computacional, d inicio a criao de sistemas perfeitos e problemas para quem desenvolve softwares complexos (SOMMERVILLE, 2003). O software o conjunto de vrios artefatos e no apenas o cdigo fonte. O software no um produto acabado, est sempre em mutao, condio esta originria de mudanas nas regras de negcio das organizaes, da necessidade de melhoria do processo produtivo ou da adequao do produto ou do servio que utiliza tecnologia da informao e est disponibilizado para uso (ZANLORENCI, 2009). A partir do momento em que um software comea a ser utilizado, ele entra em um estado contnuo de mudana. Mesmo que tenha sido construdo aplicando as melhores tcnicas de projeto e codificao existentes, os sistemas vo se tornando obsoletos em vista das novas tecnologias que so disponibilizadas. Alm das correes de erros, as mudanas mais comuns que os sistemas sofrem so migraes para novas plataformas, ajustes para mudanas de tecnologia de hardware ou sistema operacional e extenses em sua funcionalidade para atender os usurios. Essas mudanas so realizadas sem que haja preocupao com a arquitetura geral do sistema, produzindo estruturas mal projetadas, documentao desatualizada, lgica e codificaes ruins, sendo esses os dificultadores da manuteno em um sistema (OSBORNE e CHIKOFSKY, 1990).
Quando o sistema no fcil de ser mantido sendo, porm, de grande utilidade, ele deve ser reconstrudo. Partindo-se do sistema existente (via cdigo-fonte, interface ou ambiente), so abstradas as suas funcionalidades e so construdos o modelo de anlise e o projeto do software. Esse processo denominado reengenharia de software (PIEKARSKI, 2012).

Reengenharia de software, tambm chamada renovao ou recuperao de software, no apenas recupera informaes do projeto de um sistema existente, como tambm usa estas informaes para reconstruir o sistema, procurando melhorar sua qualidade global e reduzir custos com manuteno (PRADO, 2012). A reengenharia tem como principal objetivo melhorar um sistema de alguma maneira, atravs de alteraes signicantes que proporcionem melhoria, porm, sem alterar suas funes. A extrao automtica da descrio de uma aplicao e

sua implementao em outra linguagem no considerada, e sim traduo de cdigo. O processo de reengenharia inclui traduo de cdigo-fonte, engenharia reversa, melhoria de estrutura de programa, modularizao de programa e reengenharia de dados (NOGUEIRA, 2000). Existem diferentes tipos de reengenharia: com a troca parcial ou completa da implementao sem a troca da funcionalidade, em que h mudana do paradigma de desenvolvimento e/ou da linguagem de implementao, preservando o funcionamento do sistema; e com troca da funcionalidade, em que se aplica o processo tradicional de desenvolvimento de software, modificando o funcionamento do sistema no modelo de anlise e implementando-o novamente (PIEKARSKI, 2012). A reengenharia pode ser dividida em duas fases principais: a engenharia reversa e a engenharia progressiva, cada uma destas fases pode ser dividida em uma srie de atividades. Percebe-se que existe clara distino entre o desenvolvimento de um novo software e reengenharia de software. A distino est relacionada ao ponto de partida de cada um dos processos. O desenvolvimento de um novo software (definido como engenharia progressiva) inicia-se com uma especificao escrita do software que ser construdo, enquanto que a reengenharia inicia-se tomando como base um sistema j desenvolvido. Nota-se, que existe distino entre os objetivos da reengenharia e os da engenharia reversa. O objetivo da engenharia reversa derivar o projeto ou especificao de um sistema, partindose de seu cdigo fonte. O objetivo da reengenharia produzir um sistema novo com maior facilidade de manuteno. A engenharia reversa usada como parte do processo de reengenharia, pois fornece o entendimento do sistema a ser reconstrudo (SOMMERVILLE, 2003). Para melhorias relacionadas reengenharia, podem-se estabelecer trs categorias, que so: reengenharia de processos administrativos (direcionada para alteraes potenciais em todos os negcios ou processos organizacionais); reengenharia de processos produtivos (consiste em modicar qualquer ciclo de processos padro, que esteja em uso em uma dada organizao, am de melhora); reengenharia de software ou produtos (captura e modicao de mecanismos internos ou funcionalidade de um sistema existente ou produto, visando reconstitulo em uma nova forma e com novas caractersticas, frequentemente para tomar

vantagem das novas e emergentes tecnologias, mas sem grandes alteraes na funcionalidade e propsito inerentes ao sistema (SOMMERVILLE, 2003). Um processo de reengenharia tem como entrada um programa legado e a sada uma verso estruturada e modularizada do mesmo programa. Ao mesmo tempo em que ocorre a reengenharia do programa, os dados do sistema tambm podem passar por reengenharia (ZANLORENCI, 2009). 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 compreensvel. Em princpio, a reengenharia de dados no dever ser necessria, se a funcionalidade do sistema permanecer inalterada. Na prtica, h uma srie de razes pelas quais preciso modificar os dados, como tambm os programas, em um sistema legado (SOMMERVILLE, 2003). A reengenharia ocupa-se de reimplementar sistemas legados, para que sua manuteno seja fcil. Software legado pode ser definido como aquele que executa tarefas teis para a organizao, mas que foi desenvolvido utilizando-se tcnicas atualmente consideradas obsoletas. Logo, nem todo software antigo legado. A palavra legado, neste caso, traz um sentido pejorativo, similar ao adjetivo obsoleto. Em outras palavras, software legado um software antigo que, apesar de ainda ser utilizado, foi desenvolvido sem preocupao com as boas prticas de

desenvolvimento vigentes e, s vezes, utilizando uma plataforma j descontinuada (WARD e BENNETT, 1995). Os trs grandes problemas do software legado so: Primeiramente a sua incompatibilidade com plataformas operacionais mais recentes, mesmo que exista a virtualizao a demanda de tempo maior para executar uma dada tarefa. O segundo problema o no seu desenvolvimento uma vez que o legado na maioria das vezes no possui documentao, sua arquitetura no modularizada e linguagem de programao ultrapassada. O terceiro problema est na usabilidade do software, em geral o legado foi desenvolvido em uma plataforma que impede ou inviabiliza a utilizao de interfaces mais evoludas (DINIZ, 2012).
Existe um grande dilema na deciso sobre o futuro de software legado. Ao mesmo tempo em que ele traz incorporado o acmulo de anos de experincia e renamento, traz tambm todos os vcios e defeitos vigentes na poca de seu desenvolvimento (BENNETT, 1995).

H um risco significativo de negcio em simplesmente descartar sistemas legados e substitu-los por um sistema que foi desenvolvido utilizando uma

tecnologia moderna, pois raramente existe uma especificao completa do sistema legado. Se existir uma especificao, pouco provvel que ela incorpore todas as mudanas que foram feitas no sistema. Os processos corporativos e o modo como os sistemas legados operam esto sempre intrinsecamente entrelaados.

Importantes regras corporativas podem estar inseridas no software e podem no estar documentadas em nenhum outro lugar. O desenvolvimento de um software novo arriscado, uma vez que podem ocorrer problemas inesperados com um novo sistema (SOMMERVILLE, 2003). O sistema deve mudar para permanecer til, no entanto, alterar um sistema legado muitas vezes dispendioso. Pois, diferentes partes do sistema foram implementadas por diferentes equipes, portanto, no h um estilo de programao consistente. O sistema pode utilizar uma linguagem de programao obsoleta. Frequentemente, a documentao do sistema inadequada e desatualizada. Em geral, muitos anos de manuteno podem ter corrompido a estrutura do sistema. O sistema pode ter sido otimizado para melhorar a utilizao de espao ou a velocidade de execuo, em vez de ter sido escrito para facilitar a compreenso. Os dados processados pelo sistema podem estar armazenados em diferentes arquivos, que podem ter estruturas incompatveis (SOMMERVILLE, 2003). Muitos programas legados so crticos para os negcios das organizaes que os possuem. Eles tm embutidas informaes dos negcios e procedimentos, que podem no estar documentados. O risco de remover e reescrever tais programas so grandes, pois muita informao teria que ser redescoberta por tentativa e erro. Consequentemente, as organizaes, no aposentam seus sistemas legados, preferindo mant-los em operao, com adaptaes s novas necessidades. (LEHMAN, 1980). Praticamente todos os sistemas legados utilizados foram projetados antes do desenvolvimento orientado a objetos ser utilizado. Em vez de serem organizados com um conjunto de objetos interativos, esses sistemas so projetados utilizando uma estratgia de projeto orientado a funes. Centenas de programas de aplicaes foram desenvolvidos utilizando-se esses mtodos e as ferramentas CASE associadas (SOMMERVILLE, 2003). Como a reconstruo manual de sistemas legados um processo lento e trabalhoso, pesquisas esto sendo direcionadas para a utilizao de tecnologias de sistemas transformacionais na rea de reengenharia de software. Um sistema

transformacional que vem sendo utilizado nesta rea o Draco-PUC. O Draco-PUC implementa as ideias de transformao orientada a domnios (PRADO, 2012). Outra tcnica usada na estratgia de reengenharia a abordagem Fusion/RE que faz a recuperao do projeto atual do sistema legado. A abordagem Fusion/RE apresenta tcnicas para recuperar sistemas legados utilizando o paradigma da orientao a objetos, sem que os mesmos tenham sidos desenvolvidos com essa tecnologia. Esta abordagem tem como objetivo recuperar informaes e gerar os mesmos modelos propostos para facilitar a compreenso do sistema que est sendo analisado. Aps a gerao dos modelos, estes so utilizados para orientar o engenheiro de software no processo de organizao do cdigo, dando a ele caractersticas de orientao a objetos. O processo de organizao de cdigo denominado segmentao e o seu resultado, o sistema j organizado, denominado sistema segmentado (PRADO, 2012). A tendncia de reengenharia dos processos das empresas so inuenciados por fatores tais como a necessidade de melhoria da qualidade dos servios e produtos oferecidos, a compresso das margens de lucro, a reduo do ciclo de vida dos produtos, a diminuio da interferncia dos governos e dos subsdios, a exploso tecnolgica, o rpido crescimento do conhecimento humano, a maturidade dos mercados de consumo e a globalizao da economia (NOGUEIRA, 2000). A complexidade e tamanho dos programas legados tm influncia direta no custo de manuteno dos mesmos. Pesquisas revelam que mais de 50% do custo de um produto de software est relacionado com as atividades de manuteno, havendo casos de este percentual chegar at a 85% (YOURDON, 1990). Em alguns negcios, estima-se que 80% de todos os gastos com software so consumidos pelas manutenes e evolues dos sistemas. O nmero de sistemas que precisa ser modificado est aumentando gradualmente. Existe fila de espera para pedidos de manuteno. Isto significa que, algumas vezes, impossvel para as organizaes investirem em novos sistemas para melhorar a eficincia organizacional (YOURDON, 1990). 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 (NOGUEIRA, 2000). A questo que se continuarem utilizando os sistemas legados e fazendo alteraes, seus custos aumentaro. Se decidirem substituir seus sistemas legados por novos sistemas, isso ser dispendioso. Muitas empresas esto examinando tcnicas de engenharia de software que ampliem o tempo de durao dos sistemas legados e que reduzam os custos de manter esses sistemas em uso, como a evoluo de produtos de software e a reengenharia de software (SOMMERVILLE, 2003).

5 PROCEDIMENTOS METODOLGICOS

Ser realizada uma pesquisa bibliogrfica baseada em publicaes recentes disponveis em livros, revistas e em sites confiveis, buscando informaes que daro sustentao ao trabalho. Tambm ser realizada uma pesquisa de campo qualitativa atravs de entrevista com um gerente de TI explicitando as mudanas drsticas na empresa depois de executado a reengenharia em software legado. A entrevista servir como ponto crucial do trabalho, uma vez que estar mostrando que possvel fazer a reengenharia em um sistema em uso, a melhoria da mesma tanto para os negcios como para quem utiliza a ferramenta e os custos.

6 CRONOGRAMA

No quadro abaixo est representada a escala de tempo que ser utilizada para elaborao do projeto de pesquisa e de todas as fases que sero realizadas at a entrega da Monografia.

2012

2013 N D J F M A M J J A S O

FASES
Escolha e delimitao do tema Reviso da literatura para o projeto Elaborao do projeto de pesquisa Entrega do projeto de pesquisa Estruturao da Monografia Elaborao dos elementos textuais Coleta e Anlise de Dados Discusso dos Resultados Concluso e Introduo Resumo Ajustes finais de Formatao Entrega da Monograifa

REFERNCIAS DINIZ, Samuel; O problema do software legado. Disponvel em: <http://blogdosamueldiniz.blogspot.com.br/2010/02/o-problema-do-softwarelegado.html>. Acesso em: 19 Out. 2012. LEHMAN, M. M. Programs, Life-Cycles, and the Laws of program Evolution, 1980, 1060-1076 p. NOGUEIRA, Marcelo; Reengenharia de Software. Disponvel em: <http://www.noginfo.com.br/arquivos/CC_ESOF_II_10.pdf>. Acesso em: 23 Out. 2012. OSBORNE,W.M.; CHIKOFSKY, E.J. Fitting Pieces to the Maintenance Puzzle. IEEE Software, 1990, 11 p. PIEKARSKI, Ana; Reengenharia de software: o que, por que e como. Disponvel em: < revistas.unicentro.br/index.php/RECEN/article/download/528/697>. Acesso em: 19 Out. 2012. PRADO, Antnio. Reengenharia de software para plataformas distribudas orientadas a objeto. Disponvel em: <http://www.inf.ufsc.br/sbes99/anais/SBESCompleto/26.pdf>. Acesso em: 25 Out. 2012. SOMMERVILLE, I. Engenharia de software. 6. ed., So Paulo: Addison Wesley, 2003, 592p. ZANLORENCI, Edna; Abordagem da Engenharia de Requisitos para Software Legado. Disponvel em: <wer.inf.pucrio.br/WERpapers/artigos/.../Ednazanloren.pdf>. Acesso em: 27 Out. 2012. WARD, M. P.; BENNETT, K. H. Formal Methods for Legacy Systems. Journal of Software Maintenance: Research and Practice, 1995, 203 219 p. YOURDON, E. Anlise Estruturada Moderna. Rio de Janeiro: Editora Campus, 1990.

ANEXO A INSTRUMENTO DE COLETA DE DADOS

Questionrio elaborado com a finalidade de captar uma viso mais ampla das funcionalidades da reengenharia em software legado.

01 - O que levou a empresa executar a reengenharia no software? 02- Quais as principais preocupaes imediatas? 03- Alguma funcionalidade do legado foi perdida? Discorra sobre o assunto. 04- O que mudou aps a reengenharia? 05- Houve averso de funcionrios/usurios? 06- Em relao ao custo, diminuiu? Discorra sobre o assunto. 07- Que papel o gerente de TI tem nessas mudanas? 08- Em sua opinio, at onde o software legado pode ser utilizado? 09- Reengenharia a melhor opo? 10- Consideraes finais.

Você também pode gostar