Trabalho de Concluso de Curso apresentado ao Centro Universitrio do Esprito Santo UNESC, sob orientao da professora Priscila de Almeida Prata, para obteno do Ttulo de Bacharel em Sistemas de nformao.
COLATINA 2013
LUCIANA PONCHE DIAS
REENGENHARIA EM SOFTWARE LEGADO
Trabalho de Concluso de Curso apresentado ao Centro Universitrio do Esprito Santo UNESC, para obteno do Ttulo de Bacharel em Sistemas de nformao.
ORIENTADOR
Priscila de Almeida Prata, Professora do UNESC, Mestre em Engenharia urbana. Nota
AVALIADOR
Professor do UNESC
Nota
Colat!a" ###### $% ################## $% 2013&
Dedico este trabalho a Deus por ter me concedido a graa de concluir mais uma etapa de minha caminhada com sucesso. A meus pais, por todo esforo, pelo carinho, amor e educao !ue muito contribu"ram na minha formao. A minha irm por sempre acreditar em meu potencial e no dei#ar desistir. A meus amigos e familiares !ue sempre esti$eram ao meu lado para me apoiar.
Agradeo a minha orientadora, a professora Priscila de Almeida Prata, pela dedicao e doao de conhecimentos dispensados para a elaborao desse trabalho. Ao professor %eraldo Ce&ar Seidel Dalla 'ernardina, pela moti$ao e entusiasmo. Ao gerente de () *ei+i Sa,ai, !ue aceitou ser entre$istado e !ue muito contribuiu para o -enri!uecimento. do trabalho, apesar de todos os impre$istos ao longo da pes!uisa.
(ente uma, duas, tr/s $e&es e se poss"$el tente a !uarta, a !uinta e !uantas $e&es for necess0rio. S1 no desista nas primeiras tentati$as, a persist/ncia 2 amiga da con!uista. Se $oc/ !uer chegar aonde a maioria no chega, faa o !ue a maioria no fa&.
Bill Gates RESUMO
Trata da proposta de aplicao da reengenharia em software legado, bem como as vantagens e desvantagens, tendo como critrio os custos, funcionalidades e desempenho. Um software legado que passa pelo processo de reengenharia e consequentemente por engenharia reversa no perde suas funcionalidades, ao contrrio, ele passa por um novo processo de codificao, estruturao, documentao, visando uma melhor qualidade do software. Atravs de pesquisa bibliogrfica so exemplificadas as diretrizes que levam necessidade de aplicar a reengenharia em software legado, bem como a importncia da mesma dentro da organizao. Atravs da pesquisa qualitativa, foi feito uma entrevista com um gerente de T, que j passou por diversos processos de reengenharia em software legado. Mediante pesquisa quantitativa, foi feito uma anlise de um questionrio distribudo para 500 gestores de T referente reengenharia em software legado. As mesmas foram de grande relevncia para o trabalho, uma vez que todos os tpicos abordados na pesquisa bibliogrfica sero "autenticados. Conclui-se que atualmente a necessidade de aplicar a reengenharia cada vez maior e que a mesma contribui de maneira imprescindvel nos processos organizacionais, porm por ser de tamanha complexidade, preciso fazer um estudo detalhado de custos e necessidades.
Pala'(a)*+,a'%- reengenharia, legado, software, engenharia, manuteno. LISTA DE FIGURAS
Figura 1 Trip da engenharia de software ......................................................... 17 Figura 2 Modelo cascata .................................................................................... 22 Figura 3 Modelo prototipao ............................................................................. 23 Figura 4 Modelo espiral ...................................................................................... 24 Figura 5 Modelo em camadas de um software legado ...................................... 29 Figura 6 Nveis lgicos de sistemas computacionais ......................................... 30 Figura 7 Qualidade de sistema e valor de negcio ............................................ 32 Figura 8 Distino entre o desenvolvimento de um novo software (1) e reengenharia (2) ....................................................................................................
38 Figura 9 - Relacionamentos no ciclo de desenvolvimento de software ................ 40 Figura 10 Processo de reengenharia ................................................................. 42 Figura 11 Processo de engenharia reversa ....................................................... 45 Figura 12 Visualizaes de software no ciclo de desenvolvimento ................... 46 Figura 13 Processo de reestruturao de programa .......................................... 48 Figura 14 Custo da reengenharia ....................................................................... 55
LISTA DE .UADRO
Quadro 1 Ferramentas de reengenharia ............................................................ 57
SUMRIO
NTRODUO ...................................................................................................... 12 1 SOFTWARE ....................................................................................................... 13 1.1 EVOLUO DO SOFTWARE ......................................................................... 13 1.2 CLASSFCAO ............................................................................................ 15 1.3 CRSE DO SOFTWARE .................................................................................. 15 2 ENGENHARIA DE SOFTWARE ........................................................................ 17 2.1 PROCESSO/CCLO DE VDA DO SOFTWARE ............................................. 18 2.2 MODELOS DE CCLO DE VDA ..................................................................... 20 2&2&1 C+lo $% '$a +l/))+o 01o$%lo +a)+ata2 ........................................... 21 2&2&2 P(otot3a45o .............................................................................................. 22 2&2&3 Mo$%lo %)3(al ............................................................................................ 24 3 SOFTWARE LEGADO ...................................................................................... 26 3.1 EVOLUO PARA O LEGADO ...................................................................... 27 3.2 ARQUTETURA ............................................................................................... 28 3.3 NVEL LGCO ............................................................................................... 30 3.4 AVALAO .................................................................................................... 31 3.5 MANUTENO ............................................................................................... 33 3.6 PROBLEMAS COM O LEGADO ..................................................................... 35 6 REENGENHARIA DE SOFTWARE ................................................................... 37 4.1 RELACONAMENTOS NO CCLO DE DESENVOLVMENTO ....................... 39 4.2 PROCESSO DE REENGENHARA DE SOFTWARE ..................................... 41 6&2&1 T(a$745o $% +8$9o*:o!t% ......................................................................... 43 6&2&2 E!9%!,a(a (%'%()a .................................................................................... 44 4.2.2.1 Vises de software .................................................................................... 46 6&2&3 M%l,o(a $a %)t(7t7(a $o 3(o9(a1a .......................................................... 47 6&2&6 Mo$7la(;a45o $% 3(o9(a1a ...................................................................... 48 6&2&< R%%!9%!,a(a $% $a$o) ............................................................................. 49 4.3 VANTAGENS DA REENGENHARA .............................................................. 50 4.4 DFCULDADES NO PROCESSO DE REENGENHARA .............................. 52 4.5 CUSTO ............................................................................................................ 54
4.6 FERRAMENTAS DE AUXLO REENGENHARA ....................................... 56 4.7 ESTUDO DE CASO (EXEMPLFCAO) ..................................................... 57 6&=&1 S)t%1a LEGADO#TEL .............................................................................. 58 6&=&2 O 3(o>l%1a ................................................................................................. 59 6&=&3 Alt%(!at'a) $% )ol74?%) ........................................................................... 59 6&=&6 P(o>l%1a) !a )7>)tt745o ........................................................................ 60 6&=&< Sol745o alt%(!at'a .................................................................................... 62 6&=&@ Co!)$%(a4?%) :!a) ................................................................................. 63 < METODOLOGIA ................................................................................................ 65 5.1 COLETA E DSCUSSO DOS RESULTADOS - PARTE 01 .......................... 65 5.2 COLETA E DSCUSSO DOS RESULTADOS - PARTE 02 .......................... 70 CONCLUSAO ....................................................................................................... 75 REFERBNCIAS ..................................................................................................... 76 ANECO A INSTRUMENTO DE COLETA DE DADOS ...................................... 79
12
INTRODUDAO
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 da evoluo de software. Ocupa-se de reimplementar sistemas legados, para que sua manuteno seja mais simples. O grande dilema da reengenharia em software legado que junto ao software legado existem 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 descobertas por tentativa e erro. Esta obra tem por objetivo, apresentar a importncia da reengenharia em software legado, alm disso, deixar explcito os conceitos relevantes do processo, vantagens, desvantagens e custo, visando pela qualidade do software. Para desenvolvimento desta pesquisa, foram utilizadas referncias bibliogrficas disponveis em livros, revistas, artigos, etc. Foi realizada uma pesquisa de campo qualitativa atravs de uma entrevista com um gerente de T. Tambm foi feito uma anlise de um questionrio distribudo para 500 gestores de T referente reengenharia em software legado, de carter quantitativo. Dar incio pesquisa de reengenharia em software legado relevante, pois muitas empresas ainda mantm o software legado e 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, melhora a estrutura do sistema, cria uma nova documentao relacionada e faz com que ela seja de mais fcil compreenso.
13
1 SOFTWARE
Uma descrio de software num livro didtico poderia assumir a seguinte forma: "Software : (1) instrues (programas de computador) que, quando executadas, produzem a funo e o desempenho desejados; (2) estruturas de dados que possibilitam que os programas manipulem adequadamente a informao; e (3) documentos que descrevem a operao e o uso dos programas" (PARRERA, 2006). Entende-se que "software uma sequncia de instrues escritas para serem interpretadas por um computador com o objetivo de executar tarefas especficas. Em um computador, o software classificado como a parte lgica cuja funo fornecer instrues para o hardware. O termo ingls "soft o antnimo de "hard e significa "macio, ou seja, o hardware difcil de manipular e de alterar, enquanto o software no (MONTERO, 2007).
1.1 EVOLUO DO SOFTWARE
Os softwares evoluem em resposta s exigncias de mudanas como, por exemplo, correo de erros, melhorias no desempenho, migraes para novas plataformas ou outras caractersticas (PRESSMAN, 2006). Com o surgimento dos primeiros softwares, no se imaginava que o mesmo se tornaria um elemento importante para o mundo e que teria capacidade de manipular a informao. Com a ascenso computacional e as mudanas vindas dele, veio a vontade de criar sistemas cada vez mais perfeitos, livres de erros e com prazos e datas estipuladas (PRESSMAN, 2006). O contexto em que o software foi desenvolvido est estreitamente ligado a quase cinco dcadas de evoluo dos sistemas computadorizados. O melhor desempenho de hardware, o menor tamanho e o custo mais baixo, precipitaram o aparecimento de sistemas baseados em computadores mais sofisticados. Nas ultimas dcadas o software evolui de uma ferramenta de anlise de informaes e de resoluo de problemas especializados para uma indstria da programao (SOMMERVLLE, 1992). Em meados da dcada de 40, o desenvolvimento do software era feito virtualmente, sem administrao at que os prazos comeassem a se esgotar e os 14
custos a subir. Durante este perodo, era usada orientao batch (em lote) para a maioria dos sistemas. Na maior parte, o hardware dedicava-se execuo de um nico programa que, por sua vez, dedicava-se a uma nica aplicao especfica. O software era projetado sob medida para cada aplicao e tinha uma distribuio relativamente limitada. Por causa desse ambiente de software personalizado o projeto era um processo implcito realizado no crebro de algum e sem nenhuma documentao (PRESSMAN, 1995). Em meados de 1960 at o final de 1975 a multiprogramao e os sistemas multiusurios introduziram novos conceitos de interao homem-mquina. As tcnicas interativas abriram um novo mundo de aplicaes e novos nveis de sofisticao de software e hardware. Sistemas de tempo real podiam analisar, coletar e transformar dados de mltiplas fontes. Os avanos da armazenagem on- line levaram primeira gerao de sistemas de gerenciamento de banco de dados (PRESSMAN, 1995). medida que o nmero de sistemas crescia, era crescente o nmero de falhas que constantemente precisava ser corrigidas por exigncia dos usurios, essas atividades foram chamadas de "manuteno de software". Esta constante manuteno acarretou diversos problemas no desenvolvimento e avanos dos softwares, pois ao mesmo tempo em que concertava um problema, surgia outro (PRESSMAN, 1995). Durante os anos de 1975 a 1985 as redes globais, as comunicaes digitais de largura de banda e a crescente demanda de acesso "instantneo" a dados exigiram muito dos desenvolvedores de software. Tambm foi caracterizada pelo advento e o generalizado uso de microprocessadores, computadores pessoais e poderosas estaes de trabalho "Workstations" de mesa (PRESSMAN, 1995). Atualmente as tecnologias orientadas a objetos esto ocupando o lugar das abordagens mais convencionais para o desenvolvimento de software em muitas reas de aplicao. Os sistemas especialistas e o software de inteligncia artificial saram do laboratrio para a aplicao prtica em problemas de amplo espectro do mundo real. O software de rede neural artificial abriu excitantes possibilidades para o reconhecimento de padres e para capacidades de processamento de informaes semelhantes s humanas (PRESSMAN, 1995).
15
1.2 CLASSFCAO
O software passa por constates classificaes e cada autor o classifica de formas diferentes, seguindo critrios pr-estabelecidos. Seguindo como princpio a classificao de Verzello, o software se classifica em trs tipos: Software de Sistema, Software de Programao e Software de Aplicao (VERZELLO, 1984). O Software de Sistema ou Sistema Operacional o conjunto de informaes processadas pelo sistema interno de um computador que permite a interao entre usurio e os perifricos do computador atravs de uma interface grfica. Engloba o sistema operativo e os controladores de dispositivos (VERZELLO, 1984). O Software de Programao ou Software de nfraestrutura o conjunto de ferramentas que permitem ao programador desenvolver sistemas informticos, geralmente usando linguagens de programao e um ambiente visual de desenvolvimento integrado. Os Bancos de Dados, Dicionrios de Dados e Brokers tambm so considerados Software de nfraestrutura, uma vez que permitem que se escrevam sistemas inteiros utilizando o seu potencial (VERZELLO, 1984). O Software de Aplicao so programas de computadores que permitem ao usurio executar uma srie de tarefas especficas em diversas reas de atividade como arquitetura, contabilidade, educao, medicina e outras reas comerciais. So ainda os videojogos, sistemas de celulares, os sistemas de automao industrial, etc. (VERZELLO, 1984).
1.3 CRSE DO SOFTWARE
Em meados de 1970 o termo "crise do software foi usado para expressar as dificuldades do desenvolvimento de software frente ao rpido crescimento da demanda por software, da complexidade dos problemas a serem resolvidos e da inexistncia de tcnicas estabelecidas para o desenvolvimento de sistemas que funcionassem adequadamente ou pudessem ser validados (PRESSMAN, 2002). A partir do momento em que o desenvolvimento de software comeou a caminhar com o advento das linguagens estruturadas e modulares, tornou-se claro que a indstria de software estava falhando repetidamente na entrega de resultados dentro dos prazos, quase sempre estourando os oramentos e apresentando um grau de qualidade duvidoso ou insatisfatrio (DALMASO, 2013). 16
Um relatrio em 1967 apresentou que, de 50% a 80% dos projetos no haviam sido concludos e outros fracassados por no terem atingindo os objetivos esperados, e dos que foram concludos, foram entregues acima do prazo estipulado e o oramento acima daquilo que foi predeterminado (DALMASO, 2013). Mediante aos fatos, em 1968 aconteceu a "NATO Software Engineering Conference, um evento criado com o objetivo de discutir alternativas para contornar a crise do software. Essa conferncia marcou assim o incio dessa nova rea na computao. Esta reunio teve como principal objetivo estabelecer prticas mais maduras para o processo de desenvolvimento, por esta razo o encontro considerado hoje como o nascimento da disciplina de "Engenharia de Software (DALMASO, 2013). Os problemas que originaram esta crise tinham relacionamento direto com a forma de trabalho das equipes. Eram problemas que no se limitavam a "sistemas que no funcionam corretamente", mas envolviam tambm dvidas sobre como desenvolver e manter um volume crescente de software e ainda estar preparado para as futuras demandas. Essencialmente, eram sintomas provenientes do pouco entendimento dos requisitos por parte dos desenvolvedores, somados s tcnicas e medidas pobres aplicadas sobre o processo e o produto, alm dos poucos critrios de qualidade estabelecidos at ento (PRESSMAN, 2002).
Todos esses fatores exigiram respostas e mtodos que foram sendo aprimorados e documentados, dando incio rea de Engenharia de Software. A busca por eficincia e competncia revelou oportunidades, desafios e perigos que guiaram as tecnologias e apontaram novos rumos para as pesquisas (DALMASO, 2013). Embora ainda existam problemas durante o desenvolvimento e entrega do software, os processos, mtodos e ferramentas auxiliam muito em seu progresso, uma vez aplicados por pessoas com conhecimentos adequados evidente que resultar em um bom projeto. Antigamente se produzia software de maneira muito desordenada sem preocupao com o que realmente o software deveria fazer ou se era possvel executar "tal tarefa, a engenharia de software surgiu da necessidade de se construir software com mais qualidade em menor tempo (SANTOS, 2005).
17
2 ENGENHARIA DE SOFTWARE
Uma primeira definio de engenharia de software foi proposta por Fritz Bauer na primeira grande conferencia dedicada ao assunto: "O estabelecimento e uso de slidos princpios de engenharia para que se possa obter economicamente um software que funcione eficientemente com mquinas reais" (PARRERA, 2006). A engenharia de software uma derivao da engenharia de sistemas e de hardware. Ela abrange um conjunto de trs elementos fundamentais - mtodos, ferramentas e procedimentos que possibilita ao gerente o controle do processo de desenvolvimento do software e oferece ao profissional uma base para a construo de software de alta qualidade produtivamente (PARRERA, 2006). A Engenharia de Software busca prover a tecnologia necessria para produzir um software de alta qualidade a um baixo custo. Os dois fatores motivadores so essencialmente a qualidade e o custo. A qualidade de um produto de software um parmetro cuja quantificao no trivial, por outro lado, o fator custo pode ser facilmente quantificado desde que os procedimentos de contabilidade tenham sido corretamente efetuados (SANTOS, 2005).
Um grande problema no desenvolvimento de software justamente o fato de boa parte das organizaes no encararem o desenvolvimento de software como um projeto de verdade, assim, no aplicando procedimentos, mtodos e ferramentas necessrias. Por conta disso, boa parte dos projetos fracassa (SANTOS, 2005).
A engenharia de software baseada no trip: processos, pessoas e tecnologia (figura 1). No adianta ter os melhores profissionais se no possuir boas tecnologias para uso ou se no possuir um processo que guie o desenvolvimento de software. 18
Da mesma forma, no adianta possuir as tecnologias mais avanadas se as pessoas no conseguem utiliz-las. Alm disso, mesmo que parea inconcebvel para alguns, de nada adianta ter a melhor tecnologia e as melhores pessoas se no existe um processo que guie as atividades dessas pessoas utilizando tais tecnologias. Existem grande chances de ter problemas relacionados falta de controle ou desorganizao, caso no tenha um processo que discipline as tarefas das pessoas (PARRERA, 2006).
2.1 PROCESSO/CCLO DE VDA DO SOFTWARE
Como todo produto, o software possui um ciclo de vida, que pode ser definido como o conjunto de todas as etapas relacionadas sua existncia, desde a sua concepo, at o seu desaparecimento. sso inclui uma srie de etapas, dentre elas: a concepo, onde o produto idealizado, a partir da percepo de uma necessidade; o desenvolvimento, a partir da identificao dos requisitos e sua transformao em itens a serem entregues ao cliente; a operao, quando o produto instalado para ser utilizado em algum processo de negcio, sujeita a manuteno, sempre que necessrio; e a retirada, quando o produto tem sua vida til finalizada. (MEDEROS, 2006). No ciclo de vida de um software, a codificao, que representa a escrita do programa utilizando alguma linguagem de programao, apenas uma parte do ciclo de vida, embora muitos profissionais de informtica acreditem que essa seja a nica tarefa relacionada ao desenvolvimento de software (MEDEROS, 2006). O processo de software um guia de como um produto de software deve ser construdo, do incio ao fim. A ligao est no fato que esse guia depende do modelo de ciclo de vida utilizado. Existem vrios modelos e dependendo dele, as atividades a serem executadas podem variar. Um processo um conjunto de passos parcialmente ordenados, constitudos por atividades, mtodos, prticas e transformaes, utilizados para atingir uma meta. Uma meta est associada a resultados, que so os produtos resultantes da execuo do processo (MEDEROS, 2006). Um processo deve ter uma documentao que o descreve, apresentando detalhes sobre o que feito (produto), quando (passos), por quem (agentes), o que usa como entrada (insumo) e o que produzido (resultado) (MEDEROS, 2006).
19
A engenharia de software compreende um conjunto de etapas que engloba os mtodos, ferramentas e procedimentos. Essas etapas frequentemente so citadas como paradigmas da engenharia de software. Um paradigma de engenharia de software escolhido tendo-se como base a natureza do projeto e da aplicao, os mtodos e as ferramentas a serem usados, os controles e os produtos que precisam ser entregues (PARRERA, 2006). O processo de software um guia de como um produto de software deve ser construdo, do incio ao fim. Este guia depende do modelo de ciclo de vida utilizado. Um processo um conjunto de passos parcialmente ordenados, constitudos por atividades, mtodos, prticas e transformaes, utilizados para se atingir uma meta. Uma meta est associada a resultados, que so os produtos resultantes da execuo do processo (PARRERA, 2006).
Os "mtodos proporcionam os detalhes de "como fazer" para construir o software, envolvem um amplo conjunto de tarefas que inclui: planejamento com estimativa de projeto, anlise de requisitos de software e de sistemas, projeto da estrutura de dados, arquitetura de programa e algoritmo de processamento, codificao, teste e manuteno. Os mtodos da engenharia de software na maioria das vezes introduzem uma notao grfica ou orientada a linguagem especial e introduzem um conjunto de critrios para a qualidade do software (PARRERA, 2006). As "ferramentas de engenharia de software proporcionam apoio automatizado ou semiautomatizado aos mtodos. Existem ferramentas para sustentar cada um dos mtodos citados anteriormente. Quando as ferramentas so integradas de forma que a informao criada por uma ferramenta possa ser usada por outra, estabelecido um sistema de suporte ao desenvolvimento de software chamado de CASE (PARRERA, 2006). O CASE (Computer Aided Software Engineering) combina software, hardware e um banco de dados de engenharia de software (uma estrutura de dados contendo importantes informaes sobre analise, projeto, codificao e teste) para criar um ambiente de engenharia de software que seja anlogo ao projeto auxiliado por computador/engenharia auxiliada por computador para o hardware (PARRERA, 2006).
Os "procedimentos da engenharia de software constituem o elo para manter junto os mtodos e as ferramentas, alavancando possibilidades para o desenvolvimento racional e oportuno do software. A sequncia em que os mtodos sero aplicados, os produtos que so exigidos com prazo para entrega (documentos, relatrios, formulrios etc.), o marco de referncia que possibilitam aos 20
gerentes de software avaliar o progresso, os controles que ajudam a assegurar a qualidade e a coordenar as mudanas definido pelos procedimentos (PARRERA, 2006). Para seleo de um processo, e posterior iniciao de um projeto, necessrio entender qual modelo de ciclo de vida ele utiliza. Um modelo de ciclo de vida pode ser apropriado para um projeto, mas no ser apropriado para outro. necessrio entender bem os conceitos relacionados para que as escolhas feitas sejam baseadas em conhecimento e no no acaso (CORDERO, 2012).
2.2 MODELOS DE CCLO DE VDA
O termo modelo de ciclo de vida utilizado para descrever um grupo de atividades relacionado ao desenvolvimento de software e a forma como elas se relacionam. Para cada modelo de ciclo de vida existe um relacionamento diferente entre as atividades, determinando formas diferentes de se conduzir o processo de construo do produto (SANTOS, 2005). Segundo SANTOS (2005) para detalhamento dos modelos de ciclo de vida, necessrio entender os subprocessos (fluxos ou disciplinas) ligados s tarefas de desenvolvimento. Os principais subprocessos so: Requisitos: obteno do enunciado, completo, claro e preciso dos desejos, necessidades, expectativas e restries dos clientes em relao ao produto a ser desenvolvido. Anlise: modelagem dos conceitos relevantes do domnio do problema, com o intuito de verificar a qualidade dos requisitos obtidos e detalhar tais requisitos em um nvel adequado aos desenvolvedores. Desenho (ou projeto): definio de uma estrutura implementvel para um produto, que atenda aos requisitos especificados. mplementao: codificao das partes que compe o software, definidas no desenho, utilizando as tecnologias selecionadas. Teste: verificao dinmica das partes que constituem o software, utilizando um conjunto finito de casos de teste, selecionados dentro de um domnio potencialmente infinito, contra seu comportamento esperado. A literatura cita vrios tipos de modelos de ciclo de vida de software. Dentre os diversos modelos de ciclos de vida de software, pode-se citar: cascata, espiral, 21
prototipao, refinamento iterativo, ciclo de vida progressivo, desenvolvimento incremental, entre outros (CORDERO, 2012).
2&2&1 C+lo $% '$a +l/))+o 01o$%lo +a)+ata2
O modelo clssico ou cascata foi derivado de modelos de atividade de engenharia com o fim de estabelecer ordem no desenvolvimento de grandes produtos de software. Em vista dos outros modelos, este o mais rgido, menos administrativo e o modelo mais antigo, porm o mais amplamente usado e importante da engenharia de software. O modelo em cascata referncia para muitos outros modelos, servindo de base para muitos projetos modernos (PRESSMAN, 2006). O sucesso do modelo cascata est no fato de o mesmo ser orientado para documentao. Neste caso a documentao abrange mais do que arquivo de texto, abrange representaes grficas ou simulaes (PRESSMAN, 2006). O ciclo de vida clssico requer uma abordagem sistemtica, uma abordagem incorporando processos, mtodos e ferramentas, sequencial ao desenvolvimento de software, que se inicia no nvel do sistema e avana ao longo da anlise, projeto, codificao, teste e manuteno. Tendem a colocar ordem numa atividade inerentemente catica (PRESSMAN, 2006). O modelo cascata um modelo de engenharia projetado para ser aplicado no desenvolvimento do software. A ideia principal que o dirige que as diferentes etapas de desenvolvimento seguem uma sequncia. A sada da primeira etapa "flu para a segunda etapa e a sada da segunda etapa "flu para a terceira e assim por diante. As atividades a executar so agrupadas em tarefas, executadas sequencialmente, de forma que uma tarefa s poder ter incio quando a anterior tiver terminado (MELO, 2007). A vantagem do modelo que o mesmo s avana para a prxima tarefa, a partir da aceitao e validao do cliente. O modelo pressupe que o cliente participa ativamente no projeto. Este modelo minimiza o impacto da compreenso adquirida no curso do projeto (MELLO, 2007). O andamento do processo flui de cima para baixo, como uma cascata (da o nome "modelo cascata). O modelo envolve as seguintes atividades: planejamento/engenharia de sistemas; anlise de requisitos; projeto; 22
construo/codificao; teste e integrao; operao e manuteno. Como mostra a figura (2) abaixo (MELO, 2007).
F97(a 2 Mo$%lo +a)+ata Fo!t%- SOMMERVILLE" 2003&
2&2&2 P(otot3a45o
Um prottipo uma verso inicial de um sistema de software, que utilizada para mostrar conceitos, experimentar opes de projeto e, em geral, para conhecer mais sobre os problemas e suas possveis solues. O desenvolvimento rpido de um prottipo essencial para que os custos sejam controlados e os usurios possam fazer experincias com o prottipo no incio do processo de software (PRESSMAN, 2006). A prototipao possibilita ao desenvolvedor criar um modelo de software que ser implementado. O seu principal objetivo antecipar ao usurio final um modelo de sistema para que o mesmo possa avaliar suas reais finalidades, identificar erros e omisses, com isso o desenvolvedor pode efetuar de forma imediata as correes e ajustes no software (PRESSMAN, 2006). Como todas as abordagens ao desenvolvimento de software, a prototipao inicia-se com a coleta de requisitos (Figura 3). Faz-se ento um projeto rpido contendo os aspectos que sero visveis ao cliente. O projeto rpido leva 23
construo de um prottipo, que, ser avaliado pelo cliente/usurio. Esta avaliao ser usada para refinar requisitos para o software desenvolvido. dealmente, o prottipo serve como um mecanismo para identificar os requisitos de software. Muitas vezes, preciso descartar um prottipo e, partir do incio para evitar perda de tempo com correes (PRESSMAN, 2006).
F97(a 3 Mo$%lo 3(otot3a45o Fo!t%- PRESSMAN" 200@&
A filosofia de prottipos possui algumas vantagens, que so: garantia de sucesso tcnico e psicolgico; reduo no fator tempo; ideal para sistemas gerenciais e de apoio deciso; sistema atual melhora a percepo do usurio em relao software; o desenvolvedor constri algo imediatamente; entre outros (PRESSMAN, 2006). As principais desvantagens deste modelo que na maioria das vezes o cliente quer resultados, e, muitas vezes no saber, ou no entender que um prottipo pode estar longe do software ideal. Mesmo assim, a gerncia de desenvolvimento cede s reclamaes e tenta encurtar o prazo de entrega, o qual j estava prolongado. O desenvolvedor, na pressa de colocar um prottipo em funcionamento, levado a usar uma linguagem de programao imprpria por simplesmente estar disposio ou estar mais familiarizado. Essa atitude poder levar a um algoritmo ineficiente. Outras desvantagens que pode haver muitos ajustes no prottipo final, a fim de melhorar a qualidade; o desenvolvedor pode esquecer estruturas 24
inapropriadas no prottipo; exige elevada capacitao gerencial por parte da equipe do projeto; entre outros (PRESSMAN, 2006). O prottipo baseado no "feedback dos usurios, por causa disso as mudanas so feitas no prottipo. Dependendo do comentrio dos usurios, estas mudanas podem ser menores, de modo que alterem formatos, ou podem ser maiores, de modo que so requeridas mudanas estruturais no prottipo. Ainda que possam ocorrer problemas, o uso da prototipao um paradigma eficiente na Engenharia de Software. O grande segredo o entendimento entre o desenvolvedor e o cliente (PRESSMAN, 2006).
2&2&3 Mo$%lo %)3(al
O modelo em espiral foi proposto por Boehm em 1988 como forma de integrar os diversos modelos existentes poca, eliminando suas dificuldades e explorando seus pontos fortes. Foi desenvolvido para abranger as melhores caractersticas do ciclo de vida clssico e da prototipao, porm com a adio de um novo elemento, que foi a "anlise de risco. Este modelo de ciclo de vida se utiliza de prottipos por se adequar muito bem com esta filosofia de desenvolvimento. Cada passo (Figura 4) atravs do ciclo inclui: planejamento, anlise e projeto, prototipao e avaliao. Os passos se repetem at que um produto seja obtido (PRESSMAN, 2006). F97(a 6 Mo$%lo %)3(al Fo!t%- PRESSMAN" 200@& 25
Um ciclo se inicia com a determinao de objetivos, alternativas e restries (primeira tarefa) na qual ocorre o comprometimento dos envolvidos e o estabelecimento de uma estratgia para alcanar os objetivos. Na segunda tarefa, avaliao de alternativas, identificao e soluo de riscos, executa-se uma anlise de risco. Prototipao uma boa ferramenta para tratar riscos. Se o risco for considerado inaceitvel, pode parar o projeto. Na terceira tarefa ocorre o desenvolvimento do produto. Neste quadrante pode-se considerar o modelo cascata. Na quarta tarefa o produto avaliado e se prepara para iniciar um novo ciclo (PRESSMAN, 2006). Os riscos so circunstncias adversas que podem atrapalhar o processo de desenvolvimento e a qualidade do produto a ser desenvolvido, com isso possvel prever e eliminar os problemas de alto risco atravs de um planejamento e projetos cuidadosos. Este um modelo que atende aos seguintes casos: o problema a ser resolvido no est totalmente entendido; a realidade pode mudar enquanto o sistema est sendo desenvolvido; a prpria soluo adotada pode ter algum efeito colateral desconhecido e a preocupao est centrada mais na qualidade e funcionalidade do que se produz (PRESSMAN, 2006). Com base na experincia adquirida com a primeira verso, estabelecem-se novos requisitos para o sistema, e uma nova verso concebida e implementada. O modelo espiral tende uma trajetria para o modelo mais completo do sistema, baseado principalmente em decises de prosseguir ou no, de acordo com a avaliao, seja do cliente ou do desenvolvedor (PRESSMAN, 2006). O paradigma de modelo espiral a abordagem mais realista para o desenvolvimento de softwares e sistemas em grande escala. Ele usa uma abordagem "evolucionria", capacitando o desenvolvedor e o cliente a entender e reagir aos riscos, em cada etapa evolutiva da espiral. Usa a prototipao como um mecanismo de reduo de riscos e a mesma pode ser aplicada em qualquer ponto evolutivo. Porm, pode ser difcil convencer grandes clientes de que a abordagem evolutiva controlvel. Se um grande risco no for descoberto, com certeza ocorrero problemas (PRESSMAN, 2006).
Esse paradigma relativamente novo, e no tem sido amplamente usado como outros modelos anteriormente explicados, o motivo est por exigir considervel experincia na determinao de riscos e depende dessa experincia para ter sucesso. O modelo espiral mais adequado para sistemas complexos e que exijam um alto nvel de interaes com os usurios, a fim de possibilitar a abordagem de todos os problemas desse sistema (PRESSMAN, 2006). 26
3 SOFTWARE LEGADO
Um sistema de software um artefato evolutivo e, com o passar do tempo, seu projeto e implementao originais so modificados para atender a novos requisitos e/ou melhorar o seu desempenho. Fatores internos e externos, como o estado da economia, as modificaes nos mercados, as alteraes nas leis, as mudanas de gesto e organizao estrutural, contribuem para que as empresas sofram mudanas contnuas (SOMMERVLLE, 2003). Essas mudanas geram requisitos de software novos ou modificados; assim, todos os sistemas de software teis inevitavelmente so modificados quando as empresas passam por mudanas. Portanto, esses sistemas incorporam um grande nmero de alteraes que foi feitas durante muitos anos, alm de incorporarem importantes regras de negcio no seu contexto. So os chamados sistemas legados (SOMMERVLLE, 2003). Existem muitas empresas que esto repletas de software legado em uso, principalmente as empresas cujos processos so os mesmos por anos. Normalmente as empresas gastam muito dinheiro na implantao do sistema e esperam no ter o mesmo gasto novamente (JALOTE, 2005). A durabilidade de sistema de software muito varivel, muitos sistemas de grande porte permanecem em uso por mais de dez anos. Muitos desses antigos sistemas ainda so fundamentais para as empresas, isto , as empresas dependem dos servios fornecidos pelo software, e qualquer falha desses servios teria um srio efeito em seu dia a dia. Normalmente so aplicaes complexas, de difcil manuteno e que pelo grau de criticidade e custo para modernizao, continuam ativas (BRAGA, 2004). A palavra "legado traz um sentido pejorativo, similar ao adjetivo obsoleto. O nome "software legado dado a sistemas antigos, em uso h determinado perodo e desenvolvidos com tecnologia ultrapassada. Possuem uma funo crtica em relao ao processo funcional de uma organizao que passou por diversas modificaes de requisitos durante seu tempo de vida (BRAGA, 2004). A preocupao do engenheiro de software com os "legados est na baixa qualidade do mesmo. Muitas vezes no existem documentaes e se existem so pobres de detalhes, os casos de testes so fracos e no h um controle de 27
mudanas. Muitas vezes o engenheiro de software no mexe no software legado quando o mesmo atende as necessidades do cliente (BROOKS, 1995). Com o constante avano da tecnologia, esses sistemas costumam ser implantados nas organizaes j desatualizados tecnologicamente (BROOKS, 1995). Um sistema legado contm software, hardware, profissionais, processos, regras de negcio e informaes geradas e manipuladas por todo sistema. Existem profissionais ligados diretamente ao mesmo, como analistas, desenvolvedores e administradores de dados; e existem profissionais que utilizam o sistema, como diretores, gerentes e usurios de um modo geral (BRAGA, 2004).
necessrio tambm focar o lado humano de uma possvel mudana tecnolgica com a modernizao ou mesmo substituio do sistema legado. Esse acompanhamento estratgico se chama "Gesto de Mudanas (Change management) que so ferramentas e tcnicas utilizadas para atenuar o impacto da mudana tecnolgica causado nos indivduos diretamente ligados tecnologia (SOMMERVLLE, 2003). Algumas das principais caractersticas na identificao de um software legado so: sistemas em produo h mais de cinco anos; hardware e software obsoletos; sistemas com mais de 10 mil linhas de cdigos; interface com o usurio baseada em caractere; cdigo-fonte amplamente modificado por diversas equipes ao longo dos anos, com alteraes no documentadas; documentao antiga e desatualizada, no condizentes com as funcionalidades e processos atuais do sistema; utilizao de um sistema de arquivos ou gerenciador de banco de dados obsoletos; sistema no conhecido em sua totalidade pelos profissionais responsveis por sua manuteno; usurios do sistema incapazes de explicar com detalhes suas funes junto ao sistema e todos os processos que o mesmo executa; regras de negcio inseridas apenas no cdigo-fonte do sistema (BRAGA, 2004).
3.1 EVOLUO PARA O LEGADO
A evoluo de um sistema um termo amplo que cobre todo o tempo entre uma simples adio de um campo a um banco de dados at a completa reimplementao de um sistema. Essas atividades de evoluo podem ser divididas em trs categorias: manuteno, modernizao e substituio (PEGO, 2010). 28
A manuteno um processo incremental e iterativo em que pequenas modificaes so efetuadas no sistema. Essas modificaes podem indicar correes de erros ou pequenas melhorias no sistema, e nunca devem indicar grandes mudanas estruturais (PEGO, 2010). A substituio indicada para sistemas que no conseguem se adaptar s necessidades do negcio e para os quais a modernizao no mais possvel ou vivel (PEGO, 2010). A modernizao envolve mudanas maiores que a manuteno, mas conserva uma poro significativa do sistema. Essas mudanas incluem a reestruturao do sistema, melhorias funcionais importantes, ou novos atributos de software. A modernizao utilizada quando um sistema legado requer mudanas significativas que as possveis com manuteno (PEGO, 2010). O tipo de modernizao de um sistema legado pode ser definido pelo nvel de entendimento do sistema requerido para suportar os esforos de modernizao. Conhecimento interno da lgica do sistema chamada "modernizao white-box, e a que requer somente o conhecimento das interfaces externas do sistema chamada "modernizao black-box (PEGO, 2010).
3.2 ARQUTETURA
A arquitetura de qualquer software, seja ele legado ou no, representa um artefato de projeto complexo, havendo uma variedade de formas de "olhar" e compreend-la (VASCONCELOS, 2007). Uma arquitetura descreve diferentes propriedades do software, como a sua diviso em elementos arquiteturais, protocolos de comunicao e controle, sincronizao, distribuio fsica, acesso a dados, etc. Uma arquitetura de software deve ser vista e descrita mediante diferentes perspectivas e deve identificar seus componentes, relacionamentos estticos, interaes dinmicas, propriedades, caractersticas e restries (VASCONCELOS, 2007). Quando se trata da arquitetura de um sistema legado, normalmente apresentam algumas particularidades. No contexto organizacional possui vrios componentes, figura (5), so eles: hardware do sistema; software de apoio; software de aplicao e processos de negcios (VASCONCELOS, 2007).
Quando se trata de "hardware do sistema na maioria dos sistemas obsoletos o hardware antigo, no existem mais fornecedores e a manuteno dispendiosa. Em muitos casos, os sistemas legados foram escritos para hardware de mainframe e pode no ser compatvel com as atuais polticas de compras na rea de tecnologia da informao (BRAGA, 2004). O "software de apoio como o sistema operacional, compiladores, ferramentas, etc. tambm pode estar desatualizado. O sistema pode ter sido compilado utilizando- se uma verso de um compilador hoje descontinuada, e a mesma deve ser mantida (BRAGA, 2004). No caso do "software de aplicao, no um nico programa de aplicao, mas incluiu vrios programas. O sistema pode ter iniciado com um nico programa processando um ou dois arquivos de dados, mas ao longo do tempo, podem ter sido implantadas alteraes como a adio de novos programas, que compartilham os dados e se comunicam com outros programas do sistema. Esses diferentes programas, geralmente so escritos e desenvolvidos por pessoas e linguagens diferentes, em pocas distintas (SOMMERVLLE, 2003). Como o software de aplicao, temos tambm os "dados de aplicao que so aplicados no mesmo contexto. Em sistemas legados um imenso volume de dados se acumulou durante o tempo de existncia do sistema. Esses dados podem estar inconsistentes, duplicados em diferentes arquivos. Assim como acontece com o software de aplicao, os arquivos de dados iniciais sofrem alteraes medida que novas informaes so exigidas (BRAGA, 2004).
30
A camada de "processos de negcios so informaes sobre os processos internos da organizao, codificadas em uma linguagem de programao e espalhadas pelos programas que fazem parte do sistema. Em boa parte dos sistemas essas regras no esto bem documentadas, sendo do conhecimento ttico de gerentes, analistas e usurios do sistema (BRAGA, 2004).
3.3 NVEL LGCO
Modificar uma camada do sistema pode introduzir novos recursos, e as camadas superiores do sistema so beneficiadas desses recursos. A modificao do software no sistema pode torn-lo mais lento, de modo que um novo hardware necessrio. Em grande parte das vezes impossvel manter interfaces de hardware, especialmente se for proposta uma mudana radical para um novo tipo de hardware (MECELLA, 1999). A separao do sistema legado em nveis lgicos uma "ponte para um posterior tratamento, manuteno ou integrao. Os nveis lgicos se dividem em quatro partes, como mostra a figura 6 (MECELLA, 1999).
A primeira representao o "altamente Decomponvel (amigvel) este sistema dividido em trs nveis lgicos bem distintos e estruturado. A alterao de 31
um nvel no afetar significativamente o outro nvel. Todos os nveis so prontamente acessveis (MECELLA, 1999). A segunda representao o "decomponvel nos dados (pouco amigvel) este sistema dividido em dois nveis lgicos: o nvel de interface em conjunto com o nvel de processamento lgico e o nvel de dados. O acesso aos dados nesse tipo de sistema imediato, ao contrrio do acesso interface ou o processamento lgico. Sua integrao a outros sistemas conseguida com programao e utilizao de tecnologias (MECELLA, 1999). A terceira representao o "decomponvel no programa (pouco amigvel) este sistema dividido em dois nveis lgicos: o nvel de interface, separado e o nvel de programas e dados, em conjunto. Os dados somente so acessveis a partir de funes do sistema. Nesta categoria se encontram a maioria dos sistemas legados. Sua integrao a outros sistemas conseguida com programao e utilizao de tecnologias (MECELLA, 1999). A quarta e ultima representao o "monoltico (hostil) este sistema composto de um nico bloco lgico. So aplicaes bem antigas, e o acesso s suas informaes bastante difcil. Sua integrao a outros sistemas bastante complexa (MECELLA, 1999).
3.4 AVALAO
Segundo Warren ao avaliar um sistema legado, deve-se consider-lo sob duas perspectivas diferentes. A primeira seria sob a perspectiva de negcios (valor do sistema para a empresa) e a segunda seria uma perspectiva de sistema (avaliao da qualidade do software de aplicao e do software e hardware de apoio do sistema). A juno dessas duas perspectivas decisiva na hora de decidir o que fazer com o sistema legado (WARREN, 1998). Essas avaliaes so meramente subjetivas e sua quantificao deve ser efetuada utilizando-se uma abordagem de questionamentos aos vrios indivduos envolvidos no processo, colhendo assim vrios pontos de vista. Dados quantitativos coletados tambm podero auxiliar na avaliao do sistema, como: o nmero de pedidos de modificaes no sistema; o volume de dados utilizados pelo sistema, etc. A formulao das questes a serem efetuadas deve ser inerente s duas perspectivas adotadas para a avaliao do sistema legado (SOMMERVLLE, 2003).
O ideal que seja utilizada a avaliao objetiva para informar as decises sobre o que fazer com o sistema legado. Contudo, em muitos casos, essas decises 32
no so realmente objetivas, mas se baseiam em consideraes organizacionais ou polticas. imprescindvel para uma organizao efetuar uma correta avaliao de seus sistemas legados. Caso essa avaliao seja efetuada sem critrio, as decises tomadas podero representar perdas significativas de dinheiro e recursos (BRAGA, 2004). Supondo que uma organizao possua dez sistemas legados, a qualidade e o valor de negcios de cada um desses sistemas so avaliados e comparados com outros sistemas, mediante um grfico, que mostra o valor de negcios relativo e a qualidade do sistema. Na figura (7), possvel verificar que existem quatro grupos de sistemas e que se subdividem em: baixa qualidade, baixo valor de negcios; baixa qualidade, alto valor de negcios; alta qualidade, baixo valor de negcios e alta qualidade, alto valor de negcios (SOMMERVLLE, 2003).
Quando o sistema se encaixa no nvel de "Baixa qualidade, baixo valor de negcios significa que manter esses sistemas em operao ser dispendioso e a taxa de retorno de investimento para os negcios ser pequena. Esses sistemas so candidatos a serem descartados (BRAGA, 2004). Agora se o sistema se enquadra no nvel de "Baixa qualidade, alto valor de negcios significa que esses sistemas esto prestando uma importante contribuio empresa, assim, no podem ser descartados. Porm, sua baixa qualidade significa 33
que os custos operacionais so altos, de modo que so candidatos transformao ou substituio do sistema (BRAGA, 2004). No nvel de "Alta qualidade, baixo valor de negcios significa que so sistemas que no contribuem muito para os negcios, mas cuja manuteno pode no ser muito dispendiosa. No vale o risco substituir esses sistemas, de modo que a manuteno normal pode ser continuada ou eles podem ser descartados (WARREN, 1998).
Quando o sistema se enquadra no nvel de "Alta qualidade, alto valor de negcios significa que esses sistemas devem ser mantidos em operao, mas sua alta qualidade significa que no necessrio investir na sua transformao ou substituio. Deve-se continuar com a manuteno normal do sistema (WARREN, 1998).
3.5 MANUTENO
A manuteno definida como a totalidade de atividades requeridas para prover suporte de custo efetivo para um sistema de software. As atividades so realizadas tanto durante o estgio de pr-entrega quanto no estgio de ps-entrega. A manuteno uma atividade inevitvel e pode vir a ser a mais longa fase no ciclo de vida do sistema, isso se justifica atravs das leis de evoluo do software (RAMOS, 2008). Essas leis de evoluo do software so: "mudana contnua no qual os sistemas devem ser continuamente adaptados seno se tornar progressivamente insatisfatrio. O "aumento da complexidade no qual o sistema aumenta sua complexidade conforme evolui, a no ser que algo seja feito para controlar tal complexidade. O "crescimento contnuo no qual o contedo funcional de um sistema deve crescer continuamente para manter a satisfao do usurio durante a sua vida til (RAMOS, 2008). Os principais fatores que dificultam e encarecem a manuteno no software legado que muitas vezes excepcionalmente difcil entender o programa "de outra pessoa, isso porque foram implementadas por diferentes equipes. No h um estilo de programao consistente em todo sistema e os algoritmos so mal escritos. Uma parte ou todo sistema pode ter sido desenvolvido em uma linguagem obsoleta, e encontrar um profissional que tenha conhecimento dessa linguagem acaba sendo 34
difcil e caro, uma vez que um profissional deste nvel raro no mercado e o seu salrio maior (RAMOS, 2008). Muitas vezes foi usado um sistema de administrao de bases de dados que pode estar obsoleto, ou depende de arquivos armazenados separadamente. No caso de arquivos separados, cada um tem seu prprio formato e, frequentemente, as mesmas informaes so duplicadas e representadas em diferentes formas e em diferentes arquivos. Essa duplicao usualmente acontece porque as informaes so fortemente integradas com as estruturas de dados dos programas (DNZ, 2010). Outro problema do software legado est em sua documentao, muitas vezes no existe documentao e quando existe, ela no compreensvel e consistente com o cdigo fonte, neste caso ela no tem valor. Em alguns casos, a nica documentao o cdigo-fonte do sistema (RAMOS, 2008). Esses softwares por no serem projetados no so apitos e nem esto preparados para mudanas, s chances de perda de desempenho devido a modificaes no adequadas na sua estrutura interna e o nmero crescente de novos erros devidos a alteraes indevidas no cdigo um risco que se corre (PNTO, 2004).
Os sistemas so feitos para refletir comportamentos do mundo real, logo necessrio que o software acompanhe as mudanas impostas pelo ambiente na qual est inserido. Uma falha em acompanhar essas mudanas pode implicar em perda de qualidade por parte do software ou at mesmo no fim da sua vida til, os muitos anos de manuteno podem corromper a estrutura do sistema, tornando-o cada vez mais difcil de ser compreendido. O envelhecimento de um software um processo inevitvel (PNTO, 2004). Existem dois tipos de envelhecimento de software: o primeiro ocorre quando os responsveis por um software falham em adapt-lo para os novos requisitos, um exemplo seria um software que no passado funcionava perfeitamente, mas devido ao fato de seu sistema operacional ter cado em desuso e no existir uma nova verso do software para um sistema operacional mais recente foi esquecido por seus usurios (PNTO, 2004).
O segundo ocorre quando mudanas no software so feitas por desenvolvedores que no entendem a estrutura original deste, o que fatalmente implicar em algum dano para esta estrutura, que mesmo pequeno ir aumentando conforme novas atualizaes forem sendo feitas, e com o passar do tempo cada nova mudana se tornar mais difcil e consequentemente cara. Caso no seja feita uma reestruturao do software, este chegar a um ponto onde novas atualizaes ficaro inviveis (PNTO, 2004). 35
A partir do momento em que um sistema 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, os sistemas vo se tornando obsoletos em vista das novas tecnologias que so disponibilizadas (PEKARSK, 2000). As leis da evoluo de software so estudadas h 30 anos, e sua contribuio para a melhor compreenso da evoluo de software e a engenharia de software como um todo so ainda inestimveis (VASCONCELOS, 2007).
Com o objetivo de minimizar os problemas gerados por manutenes difceis e, algumas vezes, degenerativas da estrutura do sistema, muitas organizaes esto optando por refazer seus sistemas. A ideia bsica dessa reconstruo ou reengenharia que as informaes de projeto e especificao sejam extradas do cdigo fonte, reformuladas e reconstrudas, resultando um software mais fcil de ser mantido (BENNETT, 1991). Aplicando-se a reengenharia de software, o sistema pode ser redocumentado e/ou reestruturado, podem ser traduzidos para uma linguagem de programao mais moderna e implementados em uma plataforma distribuda, bem como seus dados podem ser migrados para uma base de dados diferente. A reengenharia de software tem como objetivo fazer sistemas flexveis, fceis de modificar, frente s constantes mudanas das necessidades dos usurios (BENNETT, 1995). O campo da reengenharia est crescendo em resposta necessidade crtica que existe na indstria de software por tecnologia que suporte a manuteno de sistemas legados e o desenvolvimento evolutivo de novos sistemas. Existe uma firme e crescente demanda para migrar programas legados de mainframes monoprocessados, para estaes multiprocessadas, distribudas e ligadas em rede, visando acompanhar os avanos das tcnicas de programao tais como: interfaces grficas para o usurio, comunicao interprogramas, desenvolvimento orientado a objetos, reusabilidade, etc. (COLEMAN, 1994).
3.6 PROBLEMAS COM O LEGADO
Os sistemas legados constituem a parte mais importante do fluxo de informaes dentro das organizaes e so os principais veculos para a consolidao das informaes sobre o negcio. O conhecimento agregado nestes sistemas constitui um patrimnio corporativo significativo. Por tratar de sistemas 36
crticos apresentam numerosos e importantes problemas para as empresas (BSBAL, 1999). Entre os mais significativos destacam-se: apresentam plataformas de hardware com altos custos de manuteno que poder se tornar numa das maiores despesas na rea de T; desenvolvidos em plataformas proprietrias; no passveis de publicao na internet; apresentam limitaes de integrao com outros sistemas; e restritos com relao ao desenvolvimento de novas funcionalidades (STEVENS, 1998). Os negcios de hoje s podem sobreviver se eles puderem adaptar rapidamente para um ambiente varivel e tirar vantagens das novas oportunidades de negcio. A partir do momento que os sistemas de T se tornam vitais a quase todos os negcios, necessrio que estes sistemas possam ser modificados rapidamente e com baixo custo (STEVENS, 1998). A maioria dos sistemas legados passou por mudanas contnuas durante muitos anos de manuteno. De acordo com a segunda lei de evoluo de programas de Lehman (1985), quando um programa em evoluo continuamente modificado, sua estrutura se deteriora, consequentemente a complexidade aumenta. Esse aumento de complexidade ocorre porque h uma precipitao ao elaborar as correes dos problemas e no h tempo para manter o refinamento de um projeto ou a consistncia da abordagem em todo o cdigo (LEHMAN, 1985). A pressa em disponibilizar um produto pode levar mantenedores a implementar uma modificao rpida, ineficiente e sem ter sido adequadamente testada, em vez de utilizar o tempo necessrio para seguir as boas prticas de engenharia de software. O resultado um produto com vrios "remendos" e difcil de ser entendido e mantido (LEHMAN, 1985). Atualmente as organizaes esto enfrentando uma grande presso para modernizar seus sistemas, a fim de que possam responder melhor s necessidades da rea de mercado e de pessoas e s rpidas mudanas de tecnologia (LEHMAN, 1985).
37
6 REENGENHARIA DE SOFTWARE
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 (ZANLORENC, 2009). Muitas organizaes tm enfrentado problemas com o uso e a manuteno de software construdo para ser executado em uma variedade de tipo de hardware e programado em linguagem obsoletas. A tarefa de realizar a manuteno torna-se mais complexa e mais cara e, ainda, esses sistemas tornam-se cada vez mais desorganizados devido s inmeras tentativas de adaptaes e incluses de novas funcionalidades. Sendo assim, as organizaes tm trs 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 mudana de linguagem (SOMMERVLLE, 2003). 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 (PEKARSK, 2000).
O termo reengenharia pode referir-se tanto reengenharia do processo de negcios (Business Process Reengineering BPR) quanto reengenharia de sistemas (Systems Reengineering SR). Trata-se de abordagens diferentes, embora muitos autores afirmem que deveria haver uma maior sinergia entre estes dois processos dentro de uma empresa. De fato, pode-se comprovar que a reengenharia do processo de negcios pode ser alavancada com o auxlio computacional da reengenharia de sistemas, ao passo que a reengenharia de sistemas pode beneficiar-se com a aplicao dos conceitos da reengenharia do processo de negcios (SLVA, 2005). A reengenharia de software tambm chamada renovao ou recuperao de software definida como a recuperao rigorosa do conhecimento embutido em sistemas existentes a fim de alavancar os esforos em seu aprimoramento, procurando melhorar sua qualidade global e reduzir custos com manuteno, isto , 38
reestruturar ou reescrever todo ou parte de um sistema legado sem alterar suas funcionalidades (SLVA, 2005). Um processo de reengenharia geralmente inclui traduo do cdigo-fonte, melhoria na estrutura do programa, modularizao, alguma forma de engenharia reversa seguida por uma forma de engenharia progressiva ou reestruturao e reengenharia de dados (SLVA, 2005). 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 (PEKARSK, 2000). importante ressaltar que existe uma clara distino entre o desenvolvimento de um novo software e a reengenharia, a distino est relacionada ao ponto de partida de cada um dos processos. O desenvolvimento de um novo software (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. Como mostra a figura (8) abaixo (SOMMERVLLE, 2003).
F97(a I * D)t!45o %!t(% o $%)%!'ol'1%!to $% 71 !o'o )o:tFa(% 012 % (%%!9%!,a(a 022 Fo!t%- SOMMERVILLE" 2003&
O objetivo da engenharia reversa derivar o projeto ou especificao de um sistema, partindo-se de seu cdigo fonte. O objetivo da reengenharia produzir um sistema novo com maior facilidade de manuteno. A engenharia reversa usada 39
como parte do processo de reengenharia, pois fornece o entendimento do sistema a ser reconstrudo (SOMMERVLLE, 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 modificar qualquer ciclo de processos padro, que esteja em uso em uma dada organizao, a fim de melhora); reengenharia de software ou produtos (captura e modificao de mecanismos internos ou funcionalidade de um sistema existente ou produto, visando reconstitu- lo 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) (SOMMERVLLE, 2003).
4.1 RELACONAMENTOS NO CCLO DE DESENVOLVMENTO
Para uma melhor compreenso das tcnicas de manuteno de software, preciso considerar trs conceitos dependentes: a existncia de um processo de desenvolvimento de software, a presena de um sistema a ser analisado e a identificao de nveis de abstrao (independncia dos dados e dos programas) (OSBORNE e CHKOFSKY, 1990). ndependente do que seja o processo de desenvolvimento de software, espera- se que haja interao entre seus estgios e, qui, recurso. No processo de desenvolvimento de software, os estgios iniciais envolvem conceitos mais gerais, independentes de implementao, enquanto os estgios finais enfatizam os detalhes de implementao (OSBORNE e CHKOFSKY, 1990). O aumento de detalhes durante o processo de desenvolvimento conceitua os nveis de abstrao. Estgios iniciais do sistema planejam e definem requisitos de alto nvel quando comparados com a prpria implementao (PEKARSK, 2000).
Esta comparao deixa claro que nvel de abstrao e grau de abstrao so grandezas distintas. Enquanto o nvel de abstrao um conceito que diferencia os estgios conceituais do projeto, o grau de abstrao intrnseco a cada estgio (PEKARSK, 2000). A evoluo atravs das fases do processo de desenvolvimento de software envolve transies dos nveis mais altos de abstrao nos estgios iniciais, para 40
nveis mais baixos nos estgios posteriores. As informaes podem ser representadas em qualquer estgio do desenvolvimento, seja de forma detalhada (baixo grau de abstrao), seja de forma mais sucinta ou global (alto grau de abstrao). Abstrao definida como a habilidade de se ignorar os aspectos de assuntos no relevantes para o propsito em questo, tornando possvel uma concentrao maior nos assuntos principais (PEKARSK, 2000). Para que as tcnicas de manuteno de software (especificamente engenharia reversa e reengenharia) sejam descritas de forma simplificada, sero tomadas como base trs fases do processo de desenvolvimento de software, com nveis de abstrao diferenciados, conforme figura 9 (OSBORNE e CHKOFSKY, 1990): Requisitos: especificao do problema a ser resolvido, incluindo objetivos, restries e regras de negociao; Projeto: especificao da soluo; mplementao: codificao, teste e adaptao ao sistema operacional; A tcnica tradicional, que avana progressivamente pelas fases do processo de desenvolvimento de software, denominada engenharia progressiva. A execuo dessa tcnica consiste em partir de projetos independentes da implementao, que possuem altos nveis de abstrao, indo em direo implementao fsica do sistema (OSBORNE e CHKOFSKY, 1990).
Na Figura 9, com exceo da engenharia progressiva, as demais transies entre as fases de desenvolvimento so tecnologias utilizadas na manuteno de software, sendo assim definidas por PEKARSK (2000): Redocumentao: como uma subrea da engenharia reversa, a criao ou reviso de uma representao semanticamente equivalente, dentro do mesmo nvel relativo de abstrao, sendo que as formas resultantes de representao so consideradas como vises alternativas, utilizadas para uma melhor compreenso humana do sistema analisado; Recuperao de projeto: uma subrea da engenharia reversa em que o conhecimento do domnio da aplicao, informaes externas e deduo so adicionados nas observaes referentes ao programa, com fim de extrair abstraes significativas de mais alto nvel, alm das obtidas por meio da observao direta do sistema; Reestruturao: a modificao de uma forma de representao, para outra no mesmo nvel de abstrao relativo, preservando o comportamento externo do sistema (funcionalidade e semntica). Frequentemente usada como uma forma de manuteno preventiva, a reestruturao aplicada em sistemas que tenham sido desenvolvidos de forma desestruturada, resultando uma representao que preserva as caractersticas do sistema, mas de forma melhor estruturada; Engenharia reversa: o processo de analisar um sistema a fim de criar sua representao de uma forma diferente ou em um nvel mais alto de abstrao do que o cdigo fonte; Reengenharia: a reconstruo de algo do mundo real, tendo como propsito a tentativa por melhorias que permitam produzir algo de melhor qualidade ou comparvel ao produto inicial.
4.2 PROCESSO DE REENGENHARA DE SOFTWARE
O processo de reengenharia amplamente reconhecido como um dos desafios mais significativos para engenheiros de software e sob um processo bem definido que a estabilidade no desenvolvimento do software pode ser instituda. O problema comum, afetando todos os tipos de organizao, pois uma falha na reengenharia pode dificultar os esforos da organizao para manter-se competitiva (BORGES, 2007). 42
A capacitao em desenvolvimento de software pressupe a existncia de um processo de software definido no qual aplicado um modelo de melhoria de processos. O processo definido tem documentao 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 mtricas para verificao do controle e da eficcia (BORGES, 2007). Assim, a capacitao em desenvolvimento de software reflete o grau de institucionalizao de uma infraestrutura e cultura relacionada aos mtodos, prticas e procedimentos do desenvolvimento de software. Reflete, tambm, a qualidade do processo, pois a qualidade dos produtos de software depende diretamente da qualidade do processo de desenvolvimento a eles associados (BORGES, 2007). 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 (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 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 (SOMMERVLLE, 2003).
Efetuar o processo de reengenharia em uma aplicao implica em examinar e alterar um sistema com o propsito de reconstitu-lo em um novo modelo e uma implementao de nova forma. A figura 10 exibe as principais etapas no processo de reengenharia de software (PEKARSK, 2000). F97(a 10 P(o+%))o $% (%%!9%!,a(a Fo!t%- SOMMERVILLE" 2003 43
6&2&1 T(a$745o $% +8$9o*:o!t%
Quando um programa se encontra escrito em uma linguagem de programao e precisa, por algum motivo como, por exemplo, falta de suporte ao compilador atual, ser migrado para outra linguagem, a traduo do cdigo-fonte se faz necessria (MAZZANT, 2008). A traduo do cdigo-fonte mantm a estrutura e a organizao do programa em si inalterada. A linguagem para a qual o programa ser transcrito pode ser uma verso atualizada da linguagem original, como, por exemplo, de PHP 4 para PHP 5, ou pode ser uma linguagem diferente, como, por exemplo, de C++ para Java (MAZZANT, 2008). A traduo de cdigo-fonte s ser economicamente vivel se existir alguma ferramenta para realizar a maior parte da traduo de forma automatizada. Na maioria dos casos, impossvel realizar a traduo de forma completamente automtica. As instrues da linguagem original podem no ter nenhuma instruo equivalente na nova linguagem. Embora, esse tipo de ferramenta tem evoludo, no so raros os casos em que os desenvolvedores devem intervir e corrigir possveis erros manualmente (SOMMERVLLE, 2003). Existem algumas ferramentas no mercado que se propem a fazer essa tarefa, tais como: CodePorting C#2Java - esta ferramenta converte projetos C# para Java e promete usabilidade, produtividade, simplicidade, confiabilidade, administrao facilitada e poderosas customizaes; Composer CipherSoft converte aplicaes Oracle Forms e PL/SQL para Java; Telescope for Jaguar converte Oracle Forms para Java, trata-se de uma soluo semi-automatizada, pois precisa de anlise da empresa desenvolvedora antes da migrao. Existem ainda ferramentas que se destinam a facilitar a atualizao de uma tecnologia para outra: a Oracle Forms Migration Assistant uma ferramenta que atualiza as aplicaes Oracle Forms 6i para Oracle Forms 11g (LOVATTO, 2012).
Converses de linguagens so bem mais difceis do que se costuma imaginar, principalmente por problemas de automao. A maioria das ferramentas de converso aplica a tecnologia da converso sinttica, mesmo com esta abordagem aparentemente simples e de baixo nvel, muitas dificuldades ocorrem, e o tamanho das complexidades ainda no muito bem definido (MAZZANT, 2008). preciso deixar claro que diferente da traduo do cdigo-fonte, a "segmentao o processo de reengenharia com mudana da orientao de procedimental para orientao a objetos, preservando-se as funcionalidades do software e a linguagem de programao. Portanto, realizada a adaptao do 44
cdigo-fonte, de acordo com os recursos disponveis na linguagem, de forma a implement-lo com caractersticas orientadas a objetos (LOVATTO, 2012).
6&2&2 E!9%!,a(a (%'%()a
O termo engenharia reversa tem suas origens na anlise do hardware, onde a prtica de "decifrar projetos de produtos era mais comum (PRESSMAN, 1995). A engenharia reversa definida como o processo de se tomar um objeto para verificar como ele funciona, a fim de copi-lo ou de aprimor-lo. uma prtica herdada das antigas indstrias e que, atualmente, usada em software e hardware. Na indstria automobilstica, por exemplo, um fabricante pode comprar um veculo de um concorrente, desmont-lo e examinar as soldas, lacres e outros componentes do veculo, com o propsito de aprimorar seus prprios veculos, com componentes similares (PRESSMAN, 1995). Segundo Chikofsky e Cross, pode-se definir engenharia reversa como uma coleo de teorias, metodologias, e tcnicas capazes de suportar a extrao e abstrao de informaes de um software existente, produzindo documentos consistentes, quer seja a partir somente do cdigo fonte, ou atravs da adio de conhecimento e experincia que no podem ser automaticamente reconstrudos a partir do cdigo (CHKOFSKY e CROSS, 1990). Quando se trata de software, o programa que passar pelo processo de engenharia reversa no o do concorrente, e sim o sistema da prpria organizao. Este processo fornece informaes da especificao e do projeto de um sistema de software, a partir de seu cdigo-fonte. Depois, essas informaes so armazenadas de forma que seja possvel manipul-las. Portanto, a engenharia reversa para o software consiste na anlise de um programa, com o objetivo de criar uma representao do programa em um nvel de abstrao maior que o cdigo-fonte (PFLEEGER, 2004). O processo de engenharia reversa (figura 11) comea com uma fase de anlise utilizando-se ferramentas automatizadas, a fim de descobrir a estrutura do sistema, estudar como o programa efetua certas operaes, melhorar o desempenho do programa, corrigir uma falha, identificar vrus, ou para adaptar um programa para que possa ser executado em uma plataforma diferente. Estas informaes so 45
mantidas em dicionrios de dados que mantm as informaes do sistema, vinculados ao cdigo-fonte do programa (SOMMERVLLE, 2003).
A recuperao de projeto uma subrea da engenharia reversa na qual o conhecimento do domnio da aplicao, informaes externas e deduo so adicionados s observaes referentes ao programa, para extrair abstraes significativas de mais alto nvel, alm daquelas obtidas atravs da observao direta do sistema (SOMMERVLLE, 2003). Documentos de vrios tipos como diagramas de programa e de estrutura de dados e matrizes de rastreamento (que mostram onde as entidades so definidas e referenciadas no sistema), podem ser gerados atravs das informaes armazenadas (SOMMERVLLE, 2003).
Como uma subrea da engenharia reversa, a documentao a criao ou reviso de uma representao semanticamente equivalente, dentro do mesmo nvel, relativo de abstrao, sendo que as formas resultantes de representao so consideradas como vises alternativas, utilizadas para uma melhor compreenso humana do sistema analisado (SOMMERVLLE, 2003). Depois de gerada a documentao do sistema, outras informaes podem ser adicionadas aos dicionrios de dados a fim de ajudar a recriar a especificao do sistema. sto, em geral, envolve mais anotaes manuais da estrutura do sistema. A especificao no pode ser inferida automaticamente a partir do modelo do sistema. (SOMMERVLLE, 2003). Atualmente, existem vrias ferramentas automatizadas e semi-automatizadas para auxiliar no processo de engenharia reversa. Entretanto, em qualquer processo 46
de engenharia reversa de sistemas, o envolvimento de especialistas no domnio e na aplicao fundamental (SOMMERVLLE, 2003).
4.2.2.1 Vises de software
A partir da engenharia reversa e com base nos nveis e graus de abstrao, o software pode ser visualizado de diferentes maneiras, conforme conceitos de HARAND (1990): Viso em nvel implementacional: abstrai caractersticas da linguagem de programao e caractersticas especficas da implementao. Viso em nvel estrutural: abstrai detalhes da linguagem de programao para revelar sua estrutura a partir de diferentes perspectivas. O resultado uma representao explcita das dependncias entre os componentes do sistema. Viso em nvel funcional: abstrai a funo de um componente, isto , o que o componente faz. Essa viso relaciona partes do programa a suas funes, procurando revelar as relaes lgicas entre elas. Viso em nvel de domnio: abstrai o contexto em que o sistema est operando, ou seja, o porqu do sistema a ser desenvolvido. Conforme figura 12 perceptvel a correspondncia entre as categorias de visualizao do software e as diferentes atividades do ciclo de desenvolvimento de software (HARAND, 1990).
relevante ressaltar que uma forma de representao extrada do cdigo pode diferir de uma representao similar que foi desenvolvida no processo de engenharia progressiva. A forma extrada ir refletir a idiossincrasia da representao do cdigo muito mais do que a representao original, que reflete a compreenso do problema pelo analista ou projetista (HARAND, 1990).
Muitas vezes necessrio acrescentar s informaes contidas no cdigo, outras informaes de conhecimentos e experincias humanas, para obter vises diferenciadas do software. Conforme o escopo das informaes usadas, que resultaro em um nvel de entendimento obtido do sistema pode-se formular uma categorizao dos mtodos de engenharia reversa (HARAND, 1990).
6&2&3 M%l,o(a $a %)t(7t7(a $o 3(o9(a1a
A reestruturao do programa feita com o objetivo de tornar o software mais fcil de ser entendido e modificado. Em sua maioria os programas desenvolvem uma complexa estrutura lgica devido a diversas modificaes sofridas durante a manuteno. A adio de novos comandos sem modificar a estrutura de controle existente, um exemplo (MAZZANT, 2008). No curto prazo, essa uma soluo com menor risco e mais rpida, uma vez que reduz as chances de um defeito ser introduzido no sistema. No longo prazo, entretanto, isso pode resultar em um cdigo incompreensvel. Estruturas complexas de cdigo podem tambm ser utilizadas quando os programadores procuram evitar duplicao de cdigo, como em sistemas que so restringidos por uma memria limitada, por exemplo (MAZZANT, 2008).
A figura (13) abaixo representa as trs principais atividades envolvidas na reestruturao do programa: inicialmente feito uma analise esttica a fim de obter informaes que servem para representar o cdigo como uma rede semntica ou um grafo direcionado. Esta representao no necessariamente fcil de ser compreendida pelas pessoas, normalmente, ela utilizada apenas por uma ferramenta automatizada. Aps isso, a representao refinada por meio de sucessivas simplificaes com base em tcnicas de transformao. Por fim, uma vez completada as simplificaes, um novo programa gerado (MAZZANT, 2008). Ou seja, a reestruturao a transformao de uma forma de representao, para outra no mesmo nvel de abstrao relativo, preservando o comportamento externo do sistema (funcionalidade e semntica). Geralmente usada como uma forma de manuteno preventiva, a reestruturao aplicada em sistemas que 48
tenham sido desenvolvidos de forma desestruturada, resultando uma representao que preserva as caractersticas do sistema, porm de forma estruturada (SOMMERVLLE, 2003).
Segundo LOVATTO (2012) modularizao um conceito onde o software divido em partes distintas, compe o ferramental necessrio para um programa mais legvel com uma melhor manuteno e melhor desempenho por meio da programao estruturada. caracterizado como um elemento separadamente enderevel do sistema, menor parte do sistema que realiza uma funo completa independente de outras funes, conjunto de instrues de um programa que pode ser chamado por um nome, sendo ideal que para os outros mdulos seja uma caixa preta (LOVATTO, 2012). A modularizao do programa consiste na reorganizao do mesmo, de modo que as partes relacionadas sejam reunidas em um nico mdulo. Assim, fica mais fcil remover redundncias nesses componentes relacionados, aperfeioar suas interaes e simplificar suas interfaces com o restante do programa (MAZZANT, 2008). Segundo Mazzanti (2008) diversos tipos de mdulos podem ser criados durante o processo de modularizao do programa. So elas: 49
Abstraes de dados: agrupam os dados e o processamento associado, como funes de construo e de acesso, e so flexveis em relao s mudanas. Desde que a interface seja mantida, as modificaes em dados abstratos no devem afetar outras partes do programa. Mdulos de Hardware: esses mdulos agrupam todas as funes relacionadas ao controle de um determinado dispositivo de hardware e esto estreitamente relacionados com as abstraes de dados. Mdulos funcionais: esses mdulos agrupam funes que realizam tarefas semelhantes, estreitamente relacionadas. Todas as funes ocupadas com dados de entrada e a validao destes dados, por exemplo, podem ser agrupadas em um nico mdulo. Mdulos de apoio ao processo: todas as funes e todos os itens especficos de dados que apoiam um processo de negcio especfico so agrupados nesses mdulos. A modularizao de programas juntamente com outras tcnicas de programao integram o ferramental para a elaborao de programas visando, principalmente, os aspectos de confiabilidade, legibilidade, manuteno e flexibilidade (LOVATTO, 2012).
6&2&< R%%!9%!,a(a $% $a$o)
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 (SOMMERVLLE, 2003). Muitas aplicaes contm dezenas de programas acima dos 20 anos de idade. Esses programas possuem milhares de elementos de dados, alguns redundantes, inconsistentes, ou incompreensveis, e milhares de linhas de cdigo, alguma obsoletas, outras incorretas. Utilizando ferramentas CASE pode-se evitar alguns problemas de dados nos novos sistemas, mas a maioria dos aplicativos no possui fora para detectar ou corrigir problemas de dados em sistemas existentes (SOMMERVLLE, 2003). De acordo com Sommerville (2003) a princpio, se a funcionalidade do programa permanecer inalterada a reengenharia de dados no ser necessria. 50
Porm, na prtica, existem alguns fatores pelos quais os dados precisam ser modificados, como: Degradao dos dados: existncia de dados duplicados ou redundantes, armazenados em diferentes partes do programa com diferentes formatos. Ainda, os dados podem no refletir alteraes no ambiente externo. Limites impostos aos programas: quando o sistema precisa tratar de um volume maior de dados do que foi previsto pelos projetistas. Evoluo da arquitetura: na migrao de arquitetura centralizada para distribuda, o acesso aos dados pode ser feito remotamente, por vrios usurios e ao mesmo tempo.
4.3 VANTAGENS DA REENGENHARA
A reengenharia a forma que muitas organizaes esto buscando para manter seus softwares, livrando-se das manutenes difceis e da degenerao de suas estruturas. Por este motivo, importante que o resultado desse processo seja confivel. Desta forma, a garantia da qualidade o estopim para as vantagens da mesma (LEMOS, 2003). Qualidade de software a conformidade a requisitos funcionais e de desempenho que foram explicitamente declarados, a padres de desenvolvimento claramente documentados, e a caractersticas implcitas que so esperadas de todo software desenvolvido por profissionais (PRESSMAN, 2006).
Realizar a reengenharia resultante de fatores 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 (HAMMER, 1994). Outros fatores so relacionados com a complexidade das atividades empresariais, tais como a busca por produtividade; a flexibilidade frente s constantes mudanas; a concentrao no ramo de negcio; os relacionamentos com clientes, com o meio ambiente e com os governos; o apoio de consultores; a parceirizao; a gesto e a remunerao dos recursos humanos por resultados. 51
Todos esses pontos influenciam diretamente na reengenharia dos softwares existentes em empresas (HAMMER, 1994). A reengenharia melhora a estrutura do sistema, cria uma nova documentao relacionada e faz com que ela seja de mais fcil compreenso. E como resultados disso, as possveis manutenes no software vo ser menos requisitados e quando a mesma for, ser de fcil resoluo, uma vez que o programa estar mais bem estruturado e documentado (SOMMERVLLE, 2003). Quanto ao melhoramento da performance dos processos, em particular os que envolvem forte componente humana, deve em primeiro lugar conhecer-se os fatores a que o cliente atribui maior valor nos servios que a organizao lhe presta (ou pode vir a prestar) para, a partir da, identificar as atividades crticas desse ponto de vista, as quais devem comear por ser submetidas a uma avaliao do seu atual desempenho (MAR, 2008). Esta medio da avaliao do desempenho feita atravs de benchmarking, isto , de uma sistemtica comparao de indicadores-chave da performance de processos (key process performance indicators) entre a organizao em causa e os seus concorrentes melhor cotados no mercado, frequentemente essa comparao, envolve organizaes de outros setores de atividade mas com processos semelhantes (MAR, 2008). Centrando a ateno nesses processos e atividades crticas (sobretudo nos que acrescentam maior valor e esto com desempenho inferior ao "melhor da classe"), h que proceder ao seu redesenho, se necessrio a partir do zero (isto , de uma folha de papel em branco) (MAR, 2008).
Com alguma frequncia, nesse redesenho possvel incluir aquilo que poderemos designar por "pontos de ruptura" (breakthrougs), entendidos como sendo algo que permite alcanar uma vantagem competitiva significativa e percepcionada pelo mercado, como tendo introduzido neste um elemento diferenciador, que normalmente resulta um acrscimo sustentado da quota de mercado (MAR, 2008). As tecnologias de informao tm proporcionado muitos dos "pontos de ruptura" que chegam ao nosso conhecimento como elementos fulcrais de casos bem sucedidos de reengenharia, mas no a sua nica fonte. Portanto outros elementos tambm contribuem para o sucesso da reengenharia, como por exemplo, a adoo de novos mtodos de trabalho, novas tecnologias de produo, novo desenho de produtos e, inevitavelmente, novas formas de participao dos recursos humanos (MAR, 2008). 52
Outra vantagem so os riscos reduzidos, pois existe um alto risco em desenvolver um software novo que seja essencial. Podem ser cometidos erros na especificao do sistema e ocorrer problemas de desenvolvimento, a importncia da reengenharia est em possibilitar que todas as funcionalidades do software legado no sejam perdidas, o que aconteceria se fosse optado pelo desenvolvimento de um novo software (MAR, 2008). Uma das maiores vantagens da reengenharia que ela preserva a soluo existente do negcio em uma nova arquitetura tcnica e uma soluo que deve ser considerada pelas empresas, pois os custos de desenvolvimento e implantao de um novo sistema podem ser muito altos. Estudos tm mostrados que reengenharia, quando aplicada apropriadamente, geralmente promove custo efetivo e menos riscos do que o desenvolvimento de um novo sistema (CAGNN, 2005). Conclui-se que a reengenharia de grande vantagem quando se trata de sistemas legados, podendo envolver, documentar, organizar e reescrever o sistema para uma linguagem de programao mais moderna. As vantagens da reengenharia se destacam muito quando se trata de custo para as empresas e assim como de tempo para a introduo do novo sistema na rotina da empresa (LEMOS, 2003).
4.4 DFCULDADES NO PROCESSO DE REENGENHARA
Atualmente, a qualidade dos softwares est cada vez melhor, a tecnologia e a mobilidade est ao alcance de todos, porm ao mesmo tempo em que a tecnologia evolui, muitas pessoas e gestores de organizaes no conseguem se "v livres dos softwares legados, mesmo que seja para usar como fonte de pesquisa em dados antigos. Esses softwares legados, em sua grande maioria, so mantidos ativos para qualquer que seja a eventualidade e sua perda um risco que a organizao prefere correr (SLVA, 2005). A quantidade de cdigo em sistemas legados imensa. Em 1990, estimava-se que existiam 120 bilhes de linhas de cdigo fonte de sistemas legados, a maioria em COBOL ou FORTRAN (so linguagens de programao com facilidades limitadas de estruturao de programas e dados). A migrao ou alterao desses softwares gera grandes desafios tcnicos, uma vez que a perda de funes e custo so as principais delas (BENNETT, 1995). 53
Ao mesmo tempo em que o software legado traz incorporado a ele o acmulo de anos de experincia e refinamento, traz tambm todos os vcios e defeitos vigentes na poca de seu desenvolvimento. Porm o que hoje chamado de vcio e defeito, naquela poca era a melhor indicao para a resoluo do problema (BENNETT, 1995).
Existem fatores que esto diretamente relacionados com a dificuldade e entendimento do software legado, por exemplo, antigamente, ter um hardware com um bom desempenho, era um custo muito alto para as organizaes, ento as mesmas optavam por hardwares mais baratos e mais limitados, logo, o tamanho de armazenamento do software tinha que ser reduzido. Hoje com hardware mais baratos, isso no mais um empecilho no desenvolvimento. Contudo, no desenvolvimento do software sempre se prezou pela eficincia em detrimento da clareza e estruturao do programa, o que leva a sucessivas manutenes e consequentes degeneraes no software (BENNETT, 1995). Muitos softwares legados so crticos para os negcios das organizaes que os possuem, pois com eles tm embutidas informaes dos negcios e procedimentos, que na maioria das vezes no esto 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 de um modo geral, preferem no "aposentar seus softwares legados e mant-los em uso, com adaptaes s novas necessidades (BENNETT, 1995). Muitos gerentes de tecnologia de informao tm medo de migrar para novas tecnologias ou por que no confiam na tecnologia ou por que no confiam no seu corpo tcnico de pessoal. As dificuldades devem ser enfrentadas, pois qualquer software que no evoluir continuamente, torna-se menos til no mundo real (DNZ, 2010). Segundo Bennett (1991), os motivos de maior relevncia para manter o software legado so: Desestruturao e dificuldade de entendimento do cdigo, pois o software foi desenvolvido antes da introduo dos mtodos de programao estruturada; Programadores que no participaram do desenvolvimento de software sentem dificuldade em entender e mapear a funcionalidade para o cdigo fonte; Documentao desatualizada, no auxiliando em nada a equipe de manuteno; Dificuldade de predizer as consequncias de efeitos colaterais; 54
Dificuldade de administrar mltiplas alteraes concorrentes. Vrias empresas se esquecem de considerar o risco de perda de capital humano e o risco da soluo parar de funcionar de uma hora para outra. Outro erro comum esquecer-se de considerar a oportunidade de investir em novas tecnologias que oferecem um custo de manuteno menor e tm o potencial de agregar mais valor em todo sistema, em especial no aspecto de usabilidade (DNZ, 2010). O nmero de sistemas que precisa ser modificado est aumentando gradualmente, existe fila de espera para pedidos de manuteno. Assim fica claro que s vezes impossvel para as organizaes investirem em novos sistemas para melhorar a eficincia organizacional (DNZ, 2010). O problema de manuteno de software legado complexo, pois esses sistemas no so simples programas, desenvolvidos e mantidos, a maioria composta de outros diferentes programas que, de alguma forma compartilham dados (DNZ, 2010). Empresas com o problema de software legado devem capacitar seus gerentes em reengenharia de software. sso vai garantir no s que os gerentes tomem uma atitude em relao ao software legado como tambm vai contribuir para uma execuo eficaz e eficiente do processo de migrao. Para resolver esses problemas importante partir da etapa de conhecer as novas tecnologias, estudar sobre novas linguagens, novos servidores de aplicao e novas arquiteturas e investir em treinamento do corpo tcnico (DNZ, 2010).
4.5 CUSTO
A complexidade e tamanho dos programas legados tm influncia direta no custo de manuteno. O clculo do custo de manuteno do software legado em geral equivocado, pois no "levam em conta os riscos envolvidos na sua permanncia (YOURDON, 1990). 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%. Em alguns negcios, estima-se que 80% de todos os gastos com software so consumidos pelas manutenes e evolues dos sistemas (YOURDON, 1990). 55
Os custos da reengenharia dependem da extenso do trabalho que realizado (figura 14), a partir da complexidade de cada processo, consequentemente o custo aumenta. O processo de reengenharia nem sempre sai mais barato que a implantao de um novo sistema, contudo a reengenharia a medida mais cabvel (MAR, 2008).
O custo envolve a qualidade do software que vai sofrer reengenharia; as ferramentas disponveis para fazer o processo de reengenharia; a quantidade de dados que devero passar por reengenharia de dados e tambm a disponibilidade de pessoal habilitado (MAR, 2008). O objetivo aumentar os lucros, elevando a produtividade e diminuindo os custos de produo, para tentar aumentar o mercado consumidor, que exige qualidade e preos acessveis (MAR, 2008). A reengenharia reduz todos os tipos de desperdcios, reestruturando o processo. Por exemplo: voc corta uma folha de alumnio em tiras e, no final, sobra uma tira que menor que a largura necessria. Essa tira jogada fora. Para encarar novos desafios postos pela sociedade e pelo mercado, uma empresa precisa repensar seus procedimentos operacionais. A meta a de tornar as pessoas e as mquinas mais eficientes. Assim ser possvel reduzir custos sem prejudicar produtos e servios (MAR, 2008). A reduo de custo obtida atravs da eliminao de atividades que no agregam valor ao produto e so dispensveis no sistema (MAR, 2008). claro perceber que existe um mito se tratando do custo da reengenharia, pois se tratando de nvel curto prazo, o custo ser elevado pois acontecer uma reestruturao do sistema, mudanas geram gastos. Contudo, a nvel de longo prazo 56
trar muitas vantagens, uma vez que o gasto com manuteno e mo de obra especfica no ser um gasto decorrente nos prximos anos, a solicitao de manuteno ser menor (YOURDON, 1990).
4.6 FERRAMENTAS DE AUXLO REENGENHARA
Existem ferramentas com a finalidade de auxiliar a execuo da reengenharia. A maioria das ferramentas utilizada na etapa de engenharia reversa do sistema a ser reconstrudo (PRESSMAN, 2006). As ferramentas CASE (do ingls Computer-Aided Software Engineering) uma classificao que abrange todas as ferramentas baseada em computadores que auxiliam atividades de engenharia de software, desde anlise de requisitos e modelagem at programao e testes. Podem ser consideradas como ferramentas automatizadas que tem como objetivo auxiliar o desenvolvedor de sistemas em uma ou vrias etapas do ciclo de desenvolvimento de software (JANONES, 2010). O objetivo das ferramentas CASE, a melhoria da qualidade de software, aumento da produtividade no processo de software, agilizar o tempo para tomada de deciso, menor quantidade de cdigos de programao, melhoria e reduo de custos na manuteno, agilidade no retrabalho do software, entre outras (JANONES, 2010).
As ferramentas baseadas em engenharia reversa esto ainda "engatinhando, ficando claro que as pesquisas na rea de entendimento de cdigo so muito importantes e muitas outras pesquisas ainda acontecero (PRESSMAN, 2006). As ferramentas devem ser adequadas aos processos de reengenharia, e no os processos adequados s ferramentas. As ferramentas de suporte disponveis para auxiliar a reengenharia tm influncia sobre os custos de reengenharia (PRESSMAN, 2006). Existem muitas ferramentas de reengenharia com aplicabilidade em sistemas de software. O quadro 1 apresenta vrias dessas ferramentas, mostrando de onde provm as informaes de entrada e o que cada uma delas produz como resultado (PRESSMAN, 2006). O escopo das informaes que cada ferramenta utiliza proveniente do cdigo fonte do software (cada ferramenta trabalha com cdigo em determinada linguagem pr-definida) e da base de conhecimento do sistema (constituda por documentao 57
existente, informaes de usurios ou projetistas do software e bibliotecas de componentes, entre outras) (PRESSMAN, 2006). Em relao aos resultados produzidos, quando apenas o cdigo fonte utilizado como entrada, as vises fornecidas so em nvel implementacional e estrutural. Para obteno de vises mais abstratas (funcional e de domnio), bem como outras sadas, necessrio utilizar como entrada, alm do cdigo fonte, bases de conhecimento sobre o sistema (PRESSMAN, 2006).
Quadro 1 - Ferramentas de reengenharia Fonte: PEKARSK, 2000.
4.7 ESTUDO DE CASO (EXEMPLFCAO)
Estudo de caso retirado da revista "nterdisciplinar Aplicada, ano 2004, cujos autores so: Eliana Domingues da Cruz Milev e Francisco de Assis Zampirolli. Segue a baixo o estudo de caso. 58
Esta seo apresenta o estudo de caso da substituio de um mdulo de um sistema de software denominado "Classificados, utilizado em uma empresa jornalstica brasileira, que para fins desse trabalho ser chamada J. Papel. Para que esse sistema atenda os objetivos da empresa, vrios mdulos relacionados entre si trabalham juntos. Esses mdulos so fortemente interligados, o bom funcionamento de um mdulo muitas vezes depende do funcionamento dos demais mdulos do sistema. Esse estudo se aplica substituio do componente ou de "Classificados, que responsvel pela captao de anncios da empresa. O J. Papel tem grande parte de seu lucro oriundo de venda de espao para publicao de anncios solicitados no caderno de classificados do jornal. Nesse caderno so publicados anncios pagos pelos clientes com a finalidade de divulgar um produto ou servio. Para a captao de anncios a empresa trabalha com duas solues com tecnologias diferentes: Telefones e balces (LEGADO_TEL); e Agncias de Publicidade (LEGADO_AGE).
6&=&1 S)t%1a LEGADO#TEL
Das duas solues existentes, essa (LEGADO_TEL) a mais antiga e apresenta diversos problemas, como segue: Sistema pouco flexvel, no parametrizado, qualquer alterao implica em manuteno no cdigo; Cdigo escrito com linguagem obsoleta; Dificuldades em encontrar profissionais que dominem a linguagem; No usa uma base de dados padro e isso dificulta o desenvolvimento e integrao com outros sistemas e/ou mdulos; Espao de armazenamento de dados reduzido e a tecnologia empregada no permitem ampliaes; Hardware obsoleto e sem suporte pelo fabricante, portanto com custo elevado para qualquer necessidade de troca; Restries para aumento da capacidade de processamento sem a troca total do sistema (limitado em memria e em processador); O sistema no tem recursos de visualizao de anncios em sua forma final, caracterstica importantssima em sistemas de jornal; 59
nvivel o desenvolvimento de interface online para captao de anncios utilizando navegadores da nternet.
6&=&2 O 3(o>l%1a
A empresa J. Papel tem que acompanhar a evoluo para se manter no mercado e ainda ampliar seus negcios oferecendo facilidades e melhores servios aos seus anunciantes e leitores. O alvo de modernizao o caderno de "Classificados, ele uma das principais fontes de lucro para a empresa e deve ser modernizado graficamente com uma melhor distribuio de segmento de mercado permitindo anncios com cor, foto e destaque de logomarca com melhores resultados para o anunciante. O sistema LEGADO_TEL por se tratar de um sistema legado, no suporta essa modernizao grfica e se torna um obstculo para o crescimento da empresa. No ano de 2003, a empresa entende que esse sistema crtico para a organizao e que sua substituio vital. Diante disso o J. Papel decide investir em software.
6&=&3 Alt%(!at'a) $% )ol74?%)
A empresa possui duas alternativas: substituio do sistema por uma soluo completamente nova ou reengenharia do sistema legado com a substituio do mdulo de "Classificados. Desenvolver um software crtico para a empresa uma deciso arriscada, pois pode demorar meses e at anos para sua finalizao. A empresa no tem esse tempo, a concorrncia de mercado ajuda a decidir pela segunda e mais confivel alternativa: substituir o mdulo integrando-o aos demais mdulos do sistema de "Classificados. Vrias empresas trouxeram solues, a escolhida foi uma empresa americana que props uma soluo utilizando ferramentas de desenvolvimento de acordo com a adotada pelo J. Papel. A soluo escolhida, no entanto, deve manter as funcionalidades do sistema atual e ainda proporcionar todas as novas funes oferecidas pelo novo produto. Para que esse resultado fosse possvel, as especificaes do sistema atual devem ser elaboradas pela equipe do J. Papel 60
seguindo um cronograma construdo baseado em funcionalidades de superfcie sem um aprofundamento detalhado nos processos envolvidos. O sistema LEGADO_TEL e suas interfaces com outros mdulos possuem uma documentao desatualizada, e nessas condies para elaborar especificaes quando a documentao do sistema no existe ou no est atualizada, a Engenharia Reversa do sistema em produo uma das formas para documentar o que est em funcionamento e a Reengenharia propor o processo alternativo. Outra forma escrever as especificaes com base no conhecimento da equipe envolvida. Porm, face ao pouco tempo designado para essa atividade, a forma escolhida foi a segunda, as especificaes foram baseadas no conhecimento da equipe, o que resultou em especificaes pouco detalhadas que dificultaram o entendimento para a empresa que oferecia a nova soluo e esquecimento de especificaes de algumas interfaces interligadas ao mdulo a ser substitudo.
6&=&6 P(o>l%1a) !a )7>)tt745o
A tentativa de integrao da soluo adotada ocorreu durante o ano de 2004, porm os problemas encontrados foram muitos: Definio do cronograma imposto fora da realidade; Prazo de entrega da soluo subdimensionado; Fase de levantamento extremamente curta no permitindo ao fornecedor da soluo o tempo suficiente para entender todos os processos e necessidades da empresa; O levantamento pouco detalhado resultou em conhecimento insuficiente do processo atual de produo; Novas funcionalidades foram solicitadas pela empresa que no existiam no sistema antigo e tambm no constavam em especificaes; A empresa precisa se adaptar ao novo sistema j que nem todas as funcionalidades e regras estavam sendo atendidas; O novo mdulo oferecia muitas funcionalidades que nem mesmo a equipe contratada para a implantao sabia como utilizar ou adaptar para as necessidades da empresa; 61
A soluo adotada foi construda baseada em parametrizaes. Porm muitas regras especficas de negcio da empresa no eram atendidas atravs de parmetros e exigia modificao no cdigo do sistema; Preocupao tardia com as principais interfaces (entradas e sadas); A soluo no estava sendo utilizada em nenhum outro jornal o que impossibilitava ver o resultado do produto em uso em outras empresas; Localizao/customizao do sistema por ser um sistema desenvolvido em outro pas o tratamento dado ao cdigo de endereamento postal (CEP) precisou ser modificado, pois o cadastro do CEP no Brasil difere do americano. Vendas realizadas com carto de crdito, o sistema americano vende com carto de crdito apenas com pagamento a vista, o sistema original no previa parcelamentos; Problemas de comunicao, o sistema foi escrito em ingls e os primeiros testes com a rea usuria foram complicados por no terem sido traduzidos na lngua portuguesa. Alm disso, as telas e mensagens de erros e alertas foram sendo traduzido na fase de testes, o que gerou tradues mal feitas e incompletas e descontentamento dos usurios; ntegrao no estava totalmente pronta e com tantas modificaes feitas na ltima hora gerou instabilidade (travamento do sistema); Paralelo substituio do sistema, uma grande mudana ocorria ao mesmo tempo, a terceirizao do servio de suporte; Trabalhar com dois novos fornecedores, ao mesmo tempo foi extremamente complicado. Em alguns problemas de ambiente, como instabilidade ou travamento do sistema, o fornecedor do suporte alegava que o problema estava no software e a empresa fornecedora da nova soluo acreditava que o problema era de suporte, e dessa forma o problema no era atendido com rapidez necessria; Mudanas de regras ditadas por usurios eram constantes durante a fase de testes de sistema; Com tantas mudanas a apresentao de bugs era frequente; A existncia de todos esses problemas gerou um clima de instabilidade e conflitos na equipe e culminou na sada dos dois principais gestores do projeto, um de cada empresa, o que prejudicou ainda mais o desempenho da equipe envolvida; Com a sada dos dois principais gestores, a responsabilidade passou a gestores com alto conhecimento tcnico, porm com pouco conhecimento dos 62
processos do sistema "Classificados e com nenhum tempo para aquisio do conhecimento. Apesar de tantas dificuldades, ainda acreditava-se que a empresa poderia corrigir e adaptar o sistema, pois at ento apresentava problemas de cdigo e estrutura que poderiam ser corrigidos. Com tantos contratempos, a empresa fornecedora da soluo somente conseguiu imprimir um teste do caderno de classificados as vsperas da finalizao do prazo de entrega do produto, prazo que j havia sido prorrogado trs vezes. O produto gerado durante os testes de aceitao apresentou uma srie de problemas. A empresa contratante decidiu por rescindir o contrato.
6&=&< Sol745o alt%(!at'a
A substituio do sistema fracassou, mas a necessidade da empresa de modernizar seu caderno de Classificados era ainda prioritria. Pressionados pela rea comercial que tinha um produto novo a lanar, a modernizao de seu caderno de Classificados, a gerncia de informtica decide adotar um plano B. O plano B era muito mais simples e econmico para a empresa. A empresa brasileira responsvel pela soluo do sistema LEGADO_AGE, que atende as agncias de publicidade, oferecia uma substituio do software com as mesmas funcionalidades do software da primeira soluo escolhida e ainda uma opo para o lanamento do novo produto. No entanto, o plano B somente foi aprovado pela diretoria e reas usurias porque a equipe que representava a fornecedora brasileira possua profundo conhecimento do sistema legado que seria adaptado para o lanamento do novo produto e futuramente substitudo. Alm do conhecimento, a fornecedora brasileira tranquilizou os representantes do J. Papel com um prottipo do caderno de Classificados modernizado antes mesmo da aprovao do projeto. Enfim, a soluo oferecida tornou possvel o lanamento do novo produto e o lanamento do novo caderno de Classificados foi um sucesso e citam-se os principais motivos que levaram a isso: O J. Papel decide pela adoo do Plano B, tendo em mos um prottipo do resultado final, ou seja, um teste com o caderno de Classificados modernizado de acordo com as especificaes da rea comercial; 63
O J. Papel designa um novo gestor com profundo conhecimento do sistema de Classificados e das regras de negcio da empresa para gerenciar o plano B; A empresa contratada tambm tem conhecimento do sistema existente e das regras de negcio especficas do J. Papel e efetua um levantamento preciso de todos os processos afetados com a modificao; O cronograma imposto rejeitado e aps o planejamento apresentado um cronograma dentro da realidade; Prazo de entrega proposto aceito pelas reas Comercial e Tecnologia da nformao; Todas as interfaces (entradas e sadas) so cuidadosamente analisadas e suas modificaes planejadas com antecedncia; Todas as adaptaes necessrias para a modificao dos processos so efetuadas; Por ser um produto nacional, os problemas decorrentes de localizao e customizao do sistema no ocorreram; Toda e qualquer mudana de regra foi cuidadosamente analisada antes de ser aceita, recusada ou adiada; Comunicao facilitada, utilizando o idioma nativo.
6&@&@ Co!)$%(a4?%) :!a)
O estudo de caso relata dois experimentos de manuteno de software na qual a empresa (denominada neste artigo por "J. Papel) possua duas alternativas: substituio do sistema por uma soluo completamente nova ou reengenharia do sistema legado com a substituio do mdulo de "Classificados. A opo escolhida foi a segunda. A primeira tentativa de reengenharia fracassou, e os motivos do fracasso, so explicveis, uma vez que os processos no foram bem aplicados. No momento em que deveria aplicar a "engenharia reversa foi optado pelo caminho de parametrizao, e este fez perder regras especficas de negcio. No houve um melhor detalhamento dos processos anteriores no qual resultou na perca de processos de produo importantes. A definio de prazos no foi estruturada e ocasionou desorganizao em todos os setores. 64
Entre outros problemas que aconteceram e que detalhado no estudo de caso, imprescindvel dizer, que quando os processos de reengenharia no so bem feitos o resultado o fracasso. Muitos gestores de T temem a reengenharia por medo de um dos processos falharem e acabar prejudicando todo o resto. A segunda tentativa obteve sucesso principalmente porque foi executado por uma empresa que conhece o ramo jornalstico e possui em sua equipe pessoas treinadas para trabalhar no sistema LEGADO_TEL, pois j oferecia suporte para outro componente de software da empresa J. Papel. Outros fatores que influenciaram no sucesso deste segundo experimento foram usar tcnicas de reengenharia para obter a documentao do sistema existente, bem como seguir um modelo de padronizao de manuteno. Mediante estudo de caso comprovado que a reengenharia aplicada de forma correta, seguindo todos os processos de forma coerente, as chances de dar certo quase 100%. Porm se a mesma for feita "pelas metades o seu fracasso imediato, resultando em um custo ainda maior. Vale lembrar que quando o software legado possuiu regras especficas de negcios, que nenhum outro software possui, o melhor caminho optar pela reengenharia do mesmo. Porm se existir um software no mercado que supra todos os requisitos e funcionalidades, implantar um novo software pode ser a melhor soluo vivel.
65
< METODOLOGIA
At este ponto da obra, foi apresentada a pesquisa bibliogrfica, que remete a uma srie de conceitos e perspectivas sobre a reengenharia em software legado. Deixando bem claro seus processos, vantagens, desvantagens, custos, usabilidade e definies. O estudo de caso foi muito importante para "ilustrar tudo dito anteriormente. Foi realizada uma pesquisa de campo de cunho qualitativo, com um gerente de T 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 participaes. Atravs da entrevista perceptvel a concepo de vrios tpicos citados no referencial bibliogrfico. A segunda parte da pesquisa de campo foi de cunho quantitativo, a mesma um questionrio realizado pela empresa de consultoria Deloitte & Touche, voltado para as 500 maiores empresas portuguesas (segundo a revista Exame), em que visa mostrar a viso do gerente de T dentro do diversos "tpicos da reengenharia em uma organizao. Ter como parmetro uma pesquisa qualitativa e outra quantitativa faz enfatizar o objetivo inicial do trabalho e dar sustncia ideia de que preciso pensar no software como um otimizador de processos.
5.1 COLETA E DSCUSSO DOS RESULTADOS - PARTE 01
Em entrevista com Keiji Sakai, bacharel em cincia da computao, MBA e certificado em diversas reas de gerncia, que ocupa h dois anos e meio o cargo de diretor de T da BM&FBOVESPA, e que j passou por diversas instituies financeiras, entre elas: ESM Consultoria e Projetos em T LTDA; JPMorgan Chase; HSBC Bank Brasil; Deutsche Bank S/A - Banco Alemo; UNBANCO; Banco Matrix S/A; Banco de nvestimentos Garantia e Banco Norchem, exprime de forma sucinta suas diversas experincias em projetos de reengenharia em software legado.
Vo+M N/ t%'% o3o(t7!$a$% $% 3a(t+3a( $o 3(o+%))o $% (%%!9%!,a(a $% )o:tFa(%O SAKA: Sim, em diversas instituies financeiras. 66
S% )1" $)+o((a )o>(% o) 3(!+3a) 3o!to)& L%'a!$o %1 +o!)$%(a45o a$a3ta45o $o) 7)7/(o)" 1%l,o(a)" +7)to)" 'a!ta9%!) % $%)'a!ta9%!)& SAKA: Em primeiro lugar, importante explicar o que considero reengenharia de software na minha viso, reengenharia de software reconstruir uma aplicao ou parte dela, corrigindo defeitos existentes ou saneando cdigos antigos, ou ainda renovando componentes para a plena utilizao dos melhores recursos de software e hardware existentes. Neste sentido, em reengenharias de software onde no ocorreram grandes mudanas de interao aos usurios, mas trouxeram claramente vantagens, seja na correo ou na melhoria de performance, a recepo dos mesmos foi sempre muito positiva. Naquelas onde a interao dos usurios com a aplicao teve alterao, principalmente devido a grandes rupturas tecnolgicas (mainframe para micro informtica, plataforma DOS para Windows, desktops para tablets), as primeiras movimentao provocaram resistncia dos usurios principalmente devido mudana da rotina operacional dos mesmos. Com relao a custos, vantagens e desvantagens, existe uma falsa percepo que a reengenharia seria "mais barata do que um novo desenvolvimento em algumas situaes isto no foi verdade, pois o nvel de integrao dos legados aliado a complexidade de novas tecnologias encareceu alguns dos projetos. Em algumas situaes, o custo de uma manuteno corretiva do sistema legado seria muito mais vantajoso que uma ao de reengenharia de software.
O P7% l%'o7Ql%'a a %13(%)a a 3a))a( 3%lo 3(o+%))o $% (%%!9%!,a(a !o )o:tFa(%O SAKA: Alguns dos grandes motivadores: estratgia de downsizing da instituio, custo de manuteno de legados, nvel de instabilidade de legados em decorrncia de manutenes e customizaes "complementares e por fim, estratgia de negcios para lanamento de novas interaes entre as aplicaes das instituies e os clientes finais.
.7a) )5o o) 3(!+3a) a)3%+to) P7% 71 9%)to( $% TI 3(%+)a a'ala( )% t(ata!$o $o R)o:tFa(%SO SAKA: A criticidade da aplicao que precisa ser reescrita precisa ser avaliada numa instituio financeira onde algumas aplicaes precisam funcionar em regime 67
24 x 07, o risco de instabilidade pode provocar perdas milionrias e fuga de clientes. Alm disto, em ambientes extremamente regulados a consistncia das informaes (incluindo eventuais clculos) so de extrema criticidade. Neste sentido, planos para garantir a qualidade do sistema devem ser colocados em prtica, como por exemplo, testes regressivos, certificaes com o mercado, produo paralela e simulaes dos requisitos no funcionais devem estar no radar do gestor de T.
.7a) )5o o) 3(!+3a) 1ot'o) P7% l%'a1 ao Ra>a!$o!oS $o )o:tFa(% l%9a$oO SAKA: Obsolescncia aliada a instabilidade e ao alto custo de manuteno. No caso da obsolescncia, o risco operacional em decorrncia de descontinuidade de software, hardware e tecnologia pode obrigar as instituies a partir para uma estratgia de reengenharia.
No 3(o+%))o $% (%%!9%!,a(a o ()+o $% 3%($%( :7!+o!al$a$%) $o )o:tFa(% l%9a$o a!$a %T)t%" P7a) )5o a) 1%$$a) 3a(a tal a+o!t%+1%!toO SAKA: Para evitar este tipo de situao, o mapeamento das funcionalidades fundamental. Na inexistncia de documentao atualizada, os trabalhos tradicionais de Analise de Sistemas e Analise de Processos deve fazer parte do projeto.
Vo+M 7tl;a al971 1o$%lo 3a(a $%)%!'ol'1%!to $o 3(oN%to $% (%%!9%!,a(a o7 a$a3ta al971 1o$%loO SAKA: Sobre metodologia ou modelos, em cada instituio utilizvamos metodologias e modelos diferentes. O importante tanto na definio dos artefatos como na metodologia a de no burocratizar o processo, com controles e documentaes no necessrias.
O 3(o+%))o $% (%%!9%!,a(a $% )o:tFa(% 3o$% )%( a R)ol745oS $o) 3(o>l%1a) $o) )o:tFa(%) l%9a$o)O SAKA: Neste ponto importante ressaltar que durante muitos anos o mercado de T do Brasil estava fechado para provedores estrangeiros (reserva de mercado) e com isto, o desenvolvimento de solues domsticas foi amplamente aplicado. Com o fim da reserva de mercado e a vinda de vrios provedores com solues globais, a dependncia de legados internos diminui. Por exemplo, para uma empresa que na 68
dcada de 80 decidiu desenvolver um sistema de BackOffice para controlar todo o seu processo produtivo, eu no partiria para a reengenharia da soluo e sim, buscaria um ERP de mercado. Para solues especficas que no so atendidas pelo mercado e que so criticas para as organizaes, a reengenharia a soluo.
At7al1%!t%" (%%!9%!,a(a E a 1%l,o( )ol745o 3a(a )o:tFa(% l%9a$oO SAKA: A mesma resposta da questo anterior se aplica aqui. Reengenharia apenas para sistemas crticos que no podem ser substitudos por solues de mercado.
.7al E o 1o1%!to $% a3l+a( a (%%!9%!,a(a !o )o:tFa(%& .7a) a)3%+to) +o!t(>7%1 3a(a ))oO SAKA: A reengenharia deve ser aplicada nos momentos em que os software legados no esto mais aptos a atender as necessidades. Por exemplo, volume transacional, performance, tecnologia, alteraes regulatrias e estratgias de negcio.
.7al o 3a3%l $o 9%(%!t% $% TI" !a 9%)t5o % P7al$a$% $o )o:tFa(%O SAKA: Em algumas organizaes, a qualidade do software de responsabilidade do gestor de T junto com um gestor de Qualidade. Mas com relao aos aspectos tcnicos com os requisitos no funcionais, de arquitetura, segurana da informao e tecnologia adotada, a responsabilidade principalmente do gestor de T.
.7al E a ')5o 38)*(%%!9%!,a(aO SAKA: Tive boas e ms experincias mas no em decorrncia da reengenharia em si. Os maus resultados foram em decorrncia de falhas, seja na especificao dos requisitos funcionais, seja na construo das solues.
O) 9%(%!t%) $% TI %)t5o 3(%3a(a$o) 3a(a a+%ta( o 3(o+%))o $% (%%!9%!,a(aO SAKA: Um gerente de T da rea de Desenvolvimento tende a adorar um projeto de reengenharia gerentes de infraestrutura podem gostar (em situaes onde a reengenharia permitiria uma reviso dos ambientes tecnolgicos) ou no (em 69
situaes onde a reengenharia altera os procedimentos operacionais e de produo).
Co!)$%(a4?%) :!a) 0!%)ta 3a(t% :+a l'(% $o %!t(%')ta$o" (%))alta( al971 3o!to P7% !5o :o +ta$o" +o!ta( %T3%(M!+a $% '$a 3(o:))o!al" $+a)" o7 )%Na" t7$o P7% '%!,a a+(%)+%!ta( ao t(a>al,o2& SAKA: Um projeto de reengenharia de software no facilmente aprovado. O argumento de necessidade para melhoria de ambientes ou mitigao de riscos operacionais sem a quantificao dos benefcios financeiros no so fortes o suficiente para que um CO tome a deciso de aprovar um projeto. Mesmo os COs que patrocinam projetos de reengenharia por conta prpria, assumem riscos que, caso os projetos no sejam extremamente bem sucedidos, colocam sua credibilidade na instituio em risco. Considerando a "comoditizao cada vez maior de software, em minha opinio so poucas as reais necessidades de reengenharia de software nos dias atuais.
A seguir esto os principais pontos que devem ser discutido mediante entrevista: Mediante entrevista, possvel perceber que s vezes a nica opo a reengenharia, pois a descontinuidade do software e limitaes do hardware faz com que o processo organizacional tambm no evolua. Contudo, a reengenharia deve ser aplicada apenas para sistemas crticos que no podem ser substitudos por solues de mercado. Sobre os "custos interessante a forma como colocado, uma vez que os custos, s sero altos ou baixos dependendo da situao a qual o software se encontra, porm bom lembrar que um software que passa por reengenharia, tem sua performance e funcionalidades melhoradas, com isso, pedidos de manuteno, sero cada vez menores, e o gasto com o mesmo diminuir. Outro ponto interessante da entrevista foi a forma como o software "inserido na organizao, sendo instrumento de negcio e de lucro, porm o mau funcionamento do mesmo ir acarretar problemas em toda a hierarquia da organizao. A partir do momento em que o software legado no atende mais as necessidades hora de pensar no que fazer, seja passar por um processo de reengenharia ou buscar algo novo no mercado. 70
visvel o quanto difcil e complexo implantar e ter o projeto de reengenharia aceito, uma vez que ainda existe insegurana 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, porm elas no so os nicos fatores determinantes, uma boa gesto crucial. Foram usados dois termos na entrevista que merecem uma definio, para melhor entendimento da resposta, so eles: Downsizing: em portugus significa "achatamento, uma tcnica conhecida em todo o mundo e que visa a eliminao de processos desnecessrios que engessam a empresa e atrapalham a tomada de deciso, com o objetivo de criar uma organizao mais eficiente e enxuta possvel. Regime 24x07: uma abreviao que significa "24 horas por dia, 07 dias por semana", geralmente se referindo a um negcio ou servio disponvel o tempo todo, sem interrupo.
5.2 COLETA E DSCUSSO DOS RESULTADOS - PARTE 02
Apesar de ser um conceito relativamente recente, a reengenharia parece j ter chegado at ns, ao ponto de j estar a produzir resultados. Assim, e de acordo com um estudo realizado pela empresa de consultoria Deloitte & Touche (2000), com as 500 maiores empresas Portuguesas (segundo a revista Exame) estas pareciam j estar a par deste conceito. O questionrio est disponvel no ANEXO A desta obra. De acordo com pesquisa 84% dos gerentes de T sabem ou j ouviram falar sobre reengenharia, contra 16% que no tinham conhecimento. Como mostra o grfico um (1) abaixo:
G(/:+o 1 O P7% E (%%!9%!,a(a Fo!t%- Deloitte & Touche 71
Dessas empresas, 43% j tinham implementado projetos de reengenharia e 55% estavam em fase de implementao. Apenas 2% ainda no tinham implantado. Conforme o grfico dois (2):
Muitos dos programas ditos de reengenharia no so de fato. Este , alis, um dos motivos de insucesso de alguns programas de pseudo reengenharia. Em relao ao futuro, as perspectivas indicam que 62% das empresas inquiridas pretendem avanar com novos projetos, contra 38%. Representado no grfico trs (3) a seguir:
E destes, que tencionam avanar com novos projetos de reengenharia, a grande maioria, 88% espera implement-los no prximo ano. Grfico quatro (4), abaixo:
Em relao aos motivos que levaram a aplicar a reengenharia, chama ateno o fato de 35% dos gerentes de T alegarem "os custos demasiado elevados, ponto este tratado na pesquisa bibliogrfica, uma vez que manter o software legado muito custoso para uma organizao. Com 16% segue a "perda de competitividade onde um software melhor estruturado, tm uma performance elevada em relao ao legado. de suma relevncia destacar os 10% na "diminuio de lucros, na qual comprova o quanto o legado importante no que diz respeito a negcios e que o mesmo acarreta perda de lucro. De acordo com grfico cinco (5) abaixo:
De acordo com o grfico sete (7), 42% dos processos que foram objetos de reengenharia foram os processos operacionais, seguidos 38% por processos infra estruturais e 20% toda a organizao, o que eleva a preocupao com o legado em um todo. 73
No grfico oito (8) foi possvel perceber que 36% das empresas implementaram programas de reengenharia recorrendo apenas a recursos internos. Para alm de que 8% conseguiram o mesmo recorrendo apenas a consultores externos.
G(/:+o I * A P7%1 :o (%+o(($o 3a(a o 3(o+%))o $% (%%!9%!,a(a Fo!t%- Deloitte & Touche
Assim, de acordo com as respostas recebidas nenhuma empresa tenciona usar apenas os consultores externos em prximos projetos, os seja, pretendem buscar equipes mistas (88%). Conforme grfico nove (9):
Relativamente s maiores dificuldades na implementao da reengenharia, numa escala de 1 a 5, os empresrios que participaram do estudo, referiram mais frequentemente a "resistncia mudana", as "perspectivas irrealistas" e as "limitaes dos sistemas informticos existentes". A resistncia mudana um 74
ponto muito questionado, pois o usurio tem muita dificuldade de aceitar o novo, mesmo este trazendo diversas vantagens perspectiveis ou no para o mesmo.
possvel concluir, que os gestores portugueses so grandes entusiastas da reengenharia e que os graus de conhecimento e satisfao so esmagadoramente positivos. No h duvida que seja necessrio repensar a forma de funcionamento das organizaes. As constantes mutaes a que assistimos obrigam a um novo tipo de organizaes, mais flexveis, mais geis, que respondam de forma mais adequada s solicitaes do mercado. O processo de reengenharia pode contribuir para isso, contudo necessrio estarmos conscientes que a reengenharia no resolve todos os problemas, ainda menos quando mal interpretada e aplicada. Muitas empresas prosseguiram o mito da reengenharia atravs da mera simplificao de processos ou, na maioria dos casos, de uma automatizao dos processos existentes. Este equvoco provocou, em alguns casos, uma diminuio da competitividade, uma vez que maioria destes projetos estiveram associados grandes investimentos que, ou diminuram a capacidade financeira das empresas ou provocaram um acentuado endividamento. Desta forma, cada vez mais importante que as empresas concentrem os seus esforos em processos de mudana que sejam realmente capazes de alcanar o aumento de produtividade necessrio para assegurar a sua sobrevivncia. 75
CONCLUSAO
Mediante estudo possvel concluir que a forma de realizar a reengenharia em software legado, depende de muitos fatores, relacionados, por exemplo, com a forma de trabalho da empresa, a origem do software em questo e o desenvolvimento de tecnologias. A importncia da reengenharia est em possibilitar que todo conhecimento agregado (funes e procedimentos especficos de carter particular e nico) ao software legado no seja perdido. Porm se existir algum software no mercado que faz todas as funes do software legado e com um custo reduzido, a melhor opo seria sim, implantar este novo software. Finalizando, conclusivo que o software quando chega ao seu estado crtico, precisa de medidas para que o mesmo continue em uso, o papel de um gestor de T buscar pela melhor soluo.
76
REFERBNCIAS
BENNETT, K. H; WARD, M. P. S73o(t% A7to1at;a$o $% Ma!7t%!45o $% So:tFa(%, 1991. ______. MEto$o) Fo(1a) 3a(a ))t%1a) l%9a$o), 1995.
BRAGA, Jose Luiz; PNTO, Hebert Laroca Mendes. S)t%1a) l%9a$o) % !o'a) t%+!olo9a)- tcnicas de integrao e estudo de caso, 2004.
BROOKS, F. P. E!)ao) )o>(% E!9%!,a(a $% So:tFa(%. 1. ed. MA: Addison- Wesley, 1995.
CAGNN, Maria stela. Pa(:at%" 71a +o!t(>745o 3a(a a (%%!9%!,a(a $% )o:tFa(% >a)%a$a %1 l!97a9%!) $% 3a$(?%) % :(a1%Fo(U), 2005.
CHKOFSKY, E. J.; CROSS, J. H. R%'%()% E!9!%%(!9 a!$ D%)9! R%+o'%(V- A Taxonomy. EEE Software, 1990.
COLEMAN, D.; ARNOLD, P. D%)%!'ol'1%!to O(%!ta$o a O>N%to)- O mtodo de fuso, 1994.
CORDERO, Edson dos Santos. I!t(o$745o a C+lo $% V$a $o So:tFa(%, 2012.
DALMASO, Alanderson. C()% $o )o:tFa(%, 2013.
DNZ, Samuel. 3 problema do soft4are legado. Disponvel em: <http://blogdosamueldiniz.blogspot.com.br/2010/02/o-problema-do- softwarelegado.html>. Acesso em: 19 Fev. 2013.
HAMMER, M.; CHAMPY, J. R%%!9%!,a(a- (%'ol7+o!a!$o a %13(%)a %1 :7!45o $o) +l%!t%)" $a +o!+o((M!+a % $a) 9(a!$%) 17$a!4a) $a 9%(%!+a. Rio de Janeiro: Campus, 1994.
HARAND, M.; NNG, J. Q. J!oFl%$9%*La)%$ P(o9(a1 A!alV))- EEE Software, 1990.
JALOTE, P. U1a a>o($a9%1 !t%9(a$a 3a(a E!9%!,a(a $% So:tFa(%. 3. ed. New York: Springer, 2005.
JANONES, Ramos de Sousa. .7al$a$% $% So:tFa(%- Uma questo de eficincia, 2010.
LEHMAN, M. M. P(o9(a1)" L:%*CV+l%)" a!$ t,% LaF) o: 3(o9(a1 E'ol7to!, 1985.
PEGO, Paulo Cesar Batista. C(tE(o $% A'ala45o $% ))t%1a) L%9a$o), 2010.
PFLEEGER, S. L. E!9%!,a(a $% So:tFa(%- t%o(a % 3(/t+a. 2. ed. So Paulo: Prentice Hall, 2004.
PEKARSK, Ana; 5eengenharia de soft4are6 o !ue, por !ue e como. Disponvel em: <revistas.unicentro.br/index.php/RECEN/article/download/528/697>. Acesso em: 19 Mai. 2013.
PNTO, Herbert Laroca Mendes. S)t%1a) l%9a$o) % a) !o'a) t%+!olo9a)- tcnicas de integrao e estudo de caso, 2004.
PRESSMAN, Roger S. E!9%!,a(a $% So:tFa(%. 1. ed. So Paulo: Makron, 1995. ______. ______. 5. ed. Rio de Janeiro: Mc GrawHill, 2002. ______. ______. 6. ed. Rio de Janeiro: McGraw-Hill, 2006.
SOMMERVLLE, an. E!9%!,a(a $% So:tFa(%. 4. ed. So Paulo: Addison-Wesley, 1992. ______. ______. 6. ed. So Paulo: Addison Wesley, 2003.
STEVENS, P.; POOLEY, R. S)t%1a) $% Pa$(?%) $% R%%!9%!,a(a, 1998.
VASCONCELOS, Aline Pires Vieira de. U1a a>o($a9%1 $% a3oo W +(a45o $% a(P7t%t7(a) $% (%:%(M!+a $% $o1G!o >a)%a$a !a a!/l)% $% ))t%1a) l%9a$o). Rio de Janeiro: UFRJ, 2007.
VERZELLO, Robert J. P(o+%))a1%!to $% $a$o). So Paulo: McGraw-Hill, 1984.
WARREN, an. U1 1Eto$o 3a(a a'ala( S)t%1a) L%9a$o) 3a(a a E'ol745o, 1998.
YOURDON, E. A!/l)% E)t(7t7(a$a Mo$%(!a. Rio de Janeiro: Editora Campus, 1990.
ZANLORENC, Edna; Abordagem da Engenharia de 5e!uisitos para Soft4are 7egado. Disponvel em: <wer.inf.pucrio.br/WERpapers/artigos/.../Ednazanloren.pdf>. Acesso em: 27 Ago. 2013.
79
ANECO A INSTRUMENTO DE COLETA DE DADOS
80
ANECO A INSTRUMENTO DE COLETA DE DADOS
Entrevista elaborada com a finalidade de captar uma viso mais ampla do processo de reengenharia em software legado, no ponto de vista de um gerente de T (tecnologia da informao).
Questionrio elaborado pela empresa de consultoria Deloitte & Touche, direcionado para s 500 maiores empresas Portuguesas (segundo a revista Exame) com a finalidade de captar dados junto aos gestores de T sobre as diversas faces da Reengenharia.
1* Vo+M )a>% o P7% E (%%!9%!,a(aO ( ) Sim ( ) No
2* X/ 13l%1%!to7 al971 3(oN%to $% (%%!9%!,a(aO ( ) Em implementao ( ) mplementados ( ) No
6* Pa(a P7a!$o 3la!%Na +o1%4a( o 3(oN%to $% (%%!9%!,a(aO ( ) Nos prximos 6 meses ( ) Entre 6 meses a 1 ano ( ) Entre 1 ano a 2 anos
<* O P7% l%'o7 a a3l+a( a (%%!9%!,a(aO ( ) Reduo de quota de mercado ( ) No cumprimento dos prazos de entrega ( ) Custos demasiado elevados ( ) Fraca qualidade dos produtos/servios ( ) Fraco servio aos clientes ( ) Diminuio de lucros ( ) Perda de competitividade ( ) Outras
@* .7al :o o 9(a7 $% )at):a45o o>t$oO ( ) Muito satisfeito ( ) Satisfeito ( ) nsatisfeito ( ) Muito insatisfeito ( ) Ainda a decorrer
=* .7a) o) 3(o+%))o) P7% :o(a1 o>N%to $% (%%!9%!,a(aO ( ) Toda a organizao ( ) Processos operacionais ( ) Processos infra estruturais
I* A P7%1 :o (%+o(($o 3a(a o 3(o+%))o $% (%%!9%!,a(aO ( ) Consultores externos ( ) Recursos internos 82
10* .7a) :o(a1 a) 3(!+3a) >a((%(a)O ( ) Limitao dos sistemas informticos ( ) Resistncia mudana ( ) nexistncia de equipes de projeto multifuncionais ( ) nexistncia de um lder de projeto ( ) Envolvimento demasiado tardio do pessoal de S ( ) Qualificaes inadequadas da equipe de projeto ( ) Expectativas irrealistas