SlideShare une entreprise Scribd logo
1  sur  8
Télécharger pour lire hors ligne
Rejuvenescimento de Software gerido pelo Project Office
 Bruno Lins Alves, Diego Calasans, Eduardo Dória Lima, Marcus Vinicius de Gois Oliveira

                                         Universidade Federal de Sergipe
                                 Cidade Universitária Prof. José Aloísio de Campos
                                            Av. Marechal Rondon S.N.
                                                 São Cristóvão-SE
                                                 CEP: 49.100-000
                    brunolinsalves, d.calasans, doriaeduardo, mvgois{@gmail.com}



Abstract                                                      presença de modularizações. São boas práticas que
In this paper, there is an explanation of what is the         ajudam na manutenção do código e favorecem a
practice of software rejuvenation. They both said all its     aplicação do rejuvenescimento de software.
features and subdivisions, and technologies that serve to     Logo, tem-se que rejuvenescimento de software é um
help it. Additionally, there is an introduction about the     conjunto de técnicas que facilitam a manutenabilidade e
Project Office. Then, it demonstrated a way to make the       conseqüentemente a adaptação à novas tecnologias pela
analysis of a system. Thus, there is need or not of           maioria dos softwares, se vê nas próximas seções que
rejuvenation. It was also proposed as an example, a case      nem todos os softwares são adeptos a essa técnica.
study that after made its analysis, the appropriate
                                                              Verifica-se ainda na seção 1.1, alguns dos trabalhos
conclusions were drawn. Finally it was explained how to       relacionados ao tema que serviram como fonte de
use the Project Office in the case study proposed. How
                                                              pesquisa para elaboração desse trabalho.
does it affect the organization as well as have studied the
importance of implementation of rejuvenation.                 Na seção 2, descreve-se o que significa cada técnica,
                                                              onde é utilizada e algumas tecnologias que utilizam a
Categories and Subject Descriptors                            técnica do Rejuvenescimento, incluindo Project Office.
D.2.10 [Software]: Software Engineering: Design –             Na seção 3, é mostrada uma maneira de se fazer a análise
Methodologies.                                                de um sistema para que se verifique a necessidade ou não
                                                              do rejuvenescimento e, é trazido um estudo de caso local
General Terms                                                 onde é aplicado o rejuvenescimento e o Project Office.
Design
                                                              Na seção 4, são expostas as considerações finais e por
Keywords                                                      fim, na seção 5, as referências utilizadas.
Software, rejuvenation, methodology, Project Office
                                                              1.1Trabalhos Relacionados
                                                              Nesta seção serão abordados os principais artigos
Resumo                                                        referentes ao tema Rejuvenescimento que foram
Neste trabalho, encontra-se uma explicação sobre o que        estudados, os quais serviram de base para elaboração
se trata a prática de rejuvenescimento de software. São       deste trabalho.
citadas tanto suas características e subdivisões, como
também tecnologias que servem de auxilio a ela.               1.1.1Yennun Huang
Adicionalmente, é feita uma introdução sobre o Project        O artigo [8] foi o primeiro a aplicar o termo “software
Office. Em seguida, é demonstrada uma maneira de fazer        rejuvenation”. Nele é proposto um modelo de análise de
a análise de um sistema. Dessa forma, se verifica a           sistemas que analisa o impacto do rejuvenescimento de
necessidade ou não do rejuvenescimento. Foi proposto          determinado sistema para a organização.
também, como exemplo, um estudo de caso onde depois           Segundo ele, o envelhecimento de sistemas é um
de feita a sua análise, foram tiradas as conclusões           processo de duas etapas. Do estado estável, o sistema
adequadas. Para finalizar foi explicado como usar o           entra em um estado de possível falha. A partir daí duas
Project Office no estudo de caso proposto. De que             ações são possíveis: ou entrar em um estado de
maneira ele afetará a organização estudada e também           rejuvenescimento, ou entrar em um estado de queda
como teria importância na aplicação de práticas de            completa. Esse modelo é criticado por ser um modelo
rejuvenescimento.                                             baseado em caixa-preta e por não levar muito em conta a
                                                              performance do sistema.
Palavras-chave
Software, rejuvenescimento, metodologia, Project Office
                                                              1.1.2Sachin Garg
                                                              Em [10] é defendida a idéia de usar um intervalo de
1.INTRODUÇÃO                                                  rejuvenescimento periódico e fixo, não levando em conta
Segundo [2], para melhorar o processo de                      o estado do sistema proposto por [8] durante esses
desenvolvimento de software, atualmente, a tendência é        rejuvenescimentos. Trabalha usando redes de Petri para
fazer reaproveitamento de código. Reusabilidade é um          analisar o comportamento do software.
conceito que ganha cada vez mais espaço. Para isso
precisa ter um software bem estruturado, que obedeça
alguns padrões, uma arquitetura bem definida e a
1.1.3Andrea Bobbio                                          O artigo [2] afirma que a linguagem mais adequada é a
O artigo [9] fala que é possível identificar a perfomance   orientada a objetos. Por isso a necessidade de se aplicar o
do sistema de acordo com observações e que o processo       rejuvenescimento a estes tipos de sistemas.
de degradação vem de uma seqüência sucessiva de falhas      O rejuvenescimento surge também da necessidade de se
e quebras.                                                  incluir novas funcionalidades em um sistema em que não
Existe também um parâmetro de observação que é o que        é simples tal inclusão.
vai decidir se um sistema entrou ou não em um estado de     De acordo com [1], há diversas estratégias para tal:
queda.
                                                              i.    Redocumentação
1.1.4Nuno Alberto Pereira da Silva                           ii.    ReestruturaçãoRefatoração
Em [2], o autor aborda as necessidades dos softwares de
                                                            iii.    Engenharia reversa
se adaptarem às constantes mudanças nas empresas, as
vantagens de não precisar refazer um software do início,    iv.     Reengenharia
descrevendo como fazer o rejuvenescimento de um
sistema legado ou crítico. Toma como estudo de caso os      2.2Redocumentação
sistemas financeiros, em particular, das empresas de        Efetuar uma análise do código, de forma a produzir
seguros.                                                    documentação explicativa do código.
                                                            Segundo [13], redocumentação é uma técnica muito
1.1.5Eliete Marchioro                                       importante quando se pensa em melhorar o custo de
Em [6], a autora estuda causas e técnicas para superar o    manutenção do software, pois segundo o mesmo, devido
envelhecimento de software relacionado aos servidores       a alta rotatividade de profissionais, tudo deve ser
Web Apache.                                                 documentado para evitar que apenas uma pessoa entenda
A mesma apresenta técnicas de rejuvenescimento e            detalhadamente o sistema.
explica como ocorre o envelhecimento, realizando dessa      O autor afirma ainda que a redocumentação tem como
forma um estudo de caso e descrevendo os resultados         características básicas:
obtidos.
                                                              i.    Ser baseado na engenharia reversa – A partir do
2.CONCEITOS E TECNOLOGIAS                                           código obtido na engenharia reversa, construir a
Nesta seção pretende-se esclarecer do que trata cada                documentação;
técnica utilizada para a elaboração deste trabalho, assim    ii.    Gerar documentação mínima necessária – Não se
como, apresentar algumas tecnologias que utilizam a                 deve levar muito tempo para elaborar a
metodologia proposta.                                               documentação, deve-se ser o mais objetivo
É descrito o Project Office e as técnicas utilizadas no             possível;
rejuvenescimento em detalhes, conforme Figura 1.            iii.    Buscar automatização quando possível – Deve-se
                                                                    utilizar de ferramentas que auxiliam na
                                                                    documentação de softwares a fim de agilizar o
                                                                    processo.
                                                            2.3ReestruturaçãoRefatoração
                                                            Efetuar uma análise do código, de forma a reestruturar-lo
                                                            para uma estrutura mais eficiente.
                                                            Em [15], temos que a refatoração tem como objetivo de
                                                            modificar um sistema de software para melhorar a
                                                            estrutura interna do código sem alterar o seu
                                                            comportamento externo.
                                                            Com isso, pretende-se melhorar o entendimento do
                                                            código. Existem também diversas ferramentas que
                                                            servem e são úteis para automatizar esse processo.
Figura1 - Relacionamentos no Ciclo de Desenvolvimento
      de Software (CHIKOFSKY e CROSS, 1990)
                                                            2.4Engenharia Reversa
                                                            Efetuar uma análise do código, de forma a gerar o
2.1Rejuvenescimento de Software                             modelo e especificações que lhe deram origem.
Segundo [1], o rejuvenescimento de software tem a           Em [14], temos que engenharia reversa é processo
finalidade de melhorar a qualidade do software reduzindo    inverso da engenharia de software. Com esta técnica
os custos com sua manutenção. Em [2], o autor afirma        podemos, a partir de um produto, obter o código-fonte
que os sistemas mais indicados para se utilizar essa        que lhe deu origem.
metodologia são os sistemas críticos e sistemas legados,
pois são sistemas com confiabilidade muito alta e que       O autor de [14] cita alguns exemplos de uso desta
geralmente utilizam linguagens procedimentais que, pela     técnica, tais como: cracks, pessoas conseguem quebrar a
sua natureza, não suportam alguns princípios tidos como     segurança dos softwares a fim de obter licenças de
necessários para uma fácil evolutibilidade dos sistemas,    utilização dos mesmos; Samba, software do sistema
tais como:                                                  Linux que se utilizou desta técnica para conseguir fazer a
                                                            comunicação entre o Linux e o sistema Windows.
  i.   Grau de reutilização do código
 ii.   Não duplicação do código
iii.   Testabilidade do código
2.5Reengenharia                                              A fase de “Escrita de testes” deverá ser realizada antes do
Segundo [12], partindo-se do sistema existente (via          inicio da codificação da nova funcionalidade. Nessa fase,
código-fonte, interface ou ambiente), são abstraídas as      devem ser criados os casos de teste, para descrever o
suas funcionalidades e é construído o modelo de análise e    funcionamento esperado por essa nova funcionalidade.
o projeto do software.                                       Os programadores do sistema usarão esses casos de teste
                                                             para entender melhor os objetivos dessa funcionalidade.
Caso não se tenha dados suficientes para se fazer a
reengenharia, pode-se utilizar a engenharia reversa, e       Depois que os casos de teste já foram criados, devemos
então gerar novo modelo e novo código para auxiliar no       começar a fase de “Codificação” do sistema. Essa fase irá
processo.                                                    codificar a nova funcionalidade utilizando uma
                                                             linguagem de programação. O programador deve-se
2.6Metodologia Proposta                                      atentar que o uso de padrões para codificação além de
Nesta seção será apresentada uma metodologia de              melhorar a legibilidade do código, ele propõe soluções
desenvolvimento que pode ser utilizada para o                para alguns problemas comuns da codificação, como o
rejuvenescimento de software.                                acesso à dados. A “Refatoração”, pode ser consideração
                                                             uma sub-fase da “Codificação”, visto que seu objetivo é
A metodologia proposta a seguir é baseada nos conceitos
                                                             melhorar a estrutura do código.
das metodologias ágeis, sendo assim, ela utiliza ciclos
rápidos de iteração com pequenas alterações em cada          Uma das fases mais importantes do ciclo de
ciclo. Todos os releases do software deverão ser             desenvolvimento de software é a “Execução de Testes”.
validados através da execução de testes no mesmo. Sendo      Pois é ela que garante que o sistema continua a funcionar
assim, antes de começar a codificar uma nova                 de acordo com a sua lista de requisitos. Nessa
funcionalidade do sistema, é necessário planejar os casos    metodologia, a “Execução de Testes” assume uma
de teste para testar todas as possibilidades de execução,    importância ainda maior, pois como a refatoração é muito
inclusive as situações de erros.                             utilizada, surge a necessidade da execução de testes que
                                                             validem todo o sistema.
Segundo [12], partindo-se do sistema existente (via
código-fonte, interface ou ambiente), são abstraídas as      O ciclo de desenvolvimento se encerra com o “Produto”.
suas funcionalidades e são construídos o modelo de           Nessa fase, será liberada uma nova versão do software
análise e o projeto do software.                             que será chamada de produto. Os produtos não devem
                                                             acumular um grande volume de alterações, devido à
A metodologia proposta é composta por sete fases,
representada pela Figura 2.                                  facilidade de dar um rollback sempre que ocorra alguma
                                                             coisa errada.
                                                             2.7Project Office
                                                             Nos modelos tradicionais de gerencia de projetos, um
                                                             gerente ficaria encarregado por todos ou apenas alguns
                                                             projetos da empresa. Porém essa abordagem possui
                                                             desvantagens que podem levar ao fracasso do projeto:
                                                              i.    O gerente de projeto fica sobrecarregado com as
                                                                    tarefas    administrativas     associadas    ao
                                                                    gerenciamento do projeto;
                                                             ii.    A falta de padrões dificulta o controle e
                                                                    acompanhamento do projeto;
                                                            iii.    Não existe um banco de dados de lições
                                                                    aprendidas em projetos anteriores.
            Figura 2 – Metodologia Proposta                  Devido ao desejo de melhorar a taxa de sucesso dos
A primeira fase, chamada de “Nova Funcionalidade”,           projetos, as empresas estão adotando um novo modelo de
inicia-se quando o cliente identifica a necessidade de       gestão de projetos: o Project Office.
criar, ou alterar uma funcionalidade já implementada pelo    O Project Office, ou Escritório de Projetos, é uma área da
sistema.                                                     empresa que tem uma visão de todos os projetos da
Após a identificação de uma nova funcionalidade, é           mesma. Dentro desse escritório de projetos, serão
necessário identificar os requisitos dessa nova              debatidas questões para melhorar o planejamento e
funcionalidade. Essa é a principal tarefa da fase de         condução dos projetos. O escritório também fornecerá
“Recolher histórias dos clientes”. Para a identificação      informações rápidas sobre a situação dos projetos,
desses requisitos, podem ser usadas reuniões com o           auxiliando a tomada de decisões
cliente e a equipe de desenvolvimento, com o objetivo de     Segundo o Gartner[3], existem cinco atividades
criar uma lista com todos os requisitos envolvidos na        desempenhadas pelo Project Office, que contribuem
implementação dessa nova funcionalidade.                     bastante na gerencia de projetos. São elas:
O objetivo da fase de “Desenho”, ou “Projeto”, é              i.    Padronização de uma Metodologia – Define uma
representar a nova funcionalidade através de elementos              ferramenta e métodos de controle e
visuais, chamados de modelo. Para isso, pode-se usar                acompanhamento de projetos;
linguagens visuais de modelagem como a UML (Unified
Modeling Language). Esses modelos deverão ser usados         ii.    Avaliação dos recursos de projetos – Todos os
para analisar os impactos que o desenvolvimento dessa               recursos dos projetos são analisados para a
nova funcionalidade pode trazer ao sistema.                         análise do desempenho e prioridade dos projetos;
iii.    Planejamento de Projetos – O planejamento é         O processo de rejuvenescimento através do Metex é
        centralizado e coordenado. Devem-se utilizar as     dividido em quatro fases:
        lições aprendidas nos projetos anteriores;            i.       Revisão de arquitetura – Discussão com o cliente
iv.     Gerenciamento de Projetos - Defini as melhores                 sobre a nova arquitetura;
        práticas de trabalho com o intuito de facilitar o    ii.       Conversão automática de código – A ferramenta
        gerenciamento;                                                 converte o código automaticamente dentre os
 v.     Revisão e Análise de Projetos – Constante                      aceitos por ela;
        revisão das atividades, custo e prazos e impactos   iii.       Utilização de ferramentas avançadas para
        nos projetos.                                                  completar o código – Após a conversão pode
 Para combinar os conceitos de Project Office com o                    ocorrer de algum código não ter sido convertido,
 rejuvenescimento de software, seria necessário,                       nesse caso são utilizadas algumas ferramentas
 primeiramente, que a empresa adotasse o conceito de                   avançadas do Metex para completar a conversão;
 Project Office, criando uma área que possuísse uma visão   iv.        Teste de integração e Verificação – O Metex
 de todos os projetos da empresa e desempenhasse as                    também oferece ferramentas para verificação e
 cinco atividades citadas anteriormente. O segundo passo               testes do código gerado;
 seria utilizar o rejuvenescimento de software como parte
 da metodologia de desenvolvimento na empresa.               v.        Teste de aceitação de usuário – Ao final do
                                                                       processo é utilizado um rastreador de bugs online
 2.8Tecnologias e Ferramentas                                          para correção de possíveis erros.
 Nesta seção serão apresentadas algumas ferramentas
                                                            A Figura 3 representa a arquitetura-base para uma
 tecnológicas que utilizadas no rejuvenescimento de
                                                            aplicação Web (arquitetura em três camadas):
 software automatizam e, conseqüentemente, agilizam o
 processo.                                                  A camada mais alta é a camada de interface, representada
                                                            na figura pela coluna mais à esquerda na imagem. Em
 2.8.1LegayJ                                                seguida, temos a camada de lógica de negócio,
 A ferramenta LegacyJ tem como característica a pouca ou    representada na figura pela coluna central. E por último
 nenhuma modificação no código. O software apenas           existe a camada de acesso a dados, representada na figura
 permite a integração de aplicações escritas em COBOL       pela coluna mais à direita.
 com tecnologias baseadas em J2EE. EJB é um exemplo         Como citado anteriormente, essa arquitetura é a base para
 das tecnologias suportadas.                                uma aplicação Web, nada impede que a arquitetura
 O LegacyJ permite ainda, a edição de código fonte          possua mais do que três camadas. Com o Metex, a
 COBOL na IDE (Integrated development environment)          arquitetura cliente/servidor pode ser atualizada para uma
 Eclipse.                                                   arquitetura em N-camadas sem restrições.
 2.8.2Micro Focus Net Express
 O Micro Focus Net Express é uma ferramenta auxiliar na
 prática do rejuvenescimento e serve para tornar
 aplicações COBOL em aplicações Web.
 O Net Express também torna aplicações COBOL
 compatível com servidores JAVA. Além de permitir o
 compartilhamento de dados entre aplicações através do
 uso de XML.

 2.8.3Metex
 O Metex é um software que tem como principal objetivo
 recriar aplicações legadas, entregando um código de
 altíssima qualidade.                                                    Figura 3 – Arquitetura em três camadas
 Tal ferramenta possui a capacidade de transformar o        Na Figura 4 temos a representação do processo de
 código fonte escrito em PowerBuilder, Oracle Forms,        rejuvenescimento aplicado pelo Metex e aqui descrito.
 Forte, VB ou Centura em um código JAVA ou .NET.
 Segundo os criadores do programa, o que classifica o
 Metex como uma ferramenta de rejuvenescimento de
 software e não apenas como um migrador de código é o
 fato de que o Metex transforma aplicações legadas
 cliente/servidor em aplicações com arquiteturas
 modernas, escolhida pelo usuário, em JAVA ou .NET.
 A ferramenta apresenta ainda alguns serviços adicionais
 tais quais:
  i.    Transformação;
                                                                   Figura 4 – Processo de rejuvenescimento no Metex
 ii.    Reengenharia;
                                                            A Figura 5 mostra um comparativo do rejuvenescimento
iii.    Documentação UML;                                   de software aplicado manualmente (linha vermelha)
iv.     Migração de Banco de dados;                         versus rejuvenescimento aplicado com Metex (linha
                                                            verde) versus uma simples tradução de código (linha
 v.     Habilitação para Web.                               azul).
Muitas dessas causas, como se pode notar, são quase que
                                                             completamente amenizadas hoje em dia, devido às
                                                             linguagens de alto nível e as plataformas de
                                                             desenvolvimento modernas. Um software bem feito,
                                                             usando ferramentas modernas e adequadas tem sua curva
                                                             de degradação muito mais longa que um software legado
                                                             teve, por exemplo. Apesar de esse fato existir, o software
                                                             nunca deixará de envelhecer, por menor que seja, o
                                                             rejuvenescimento constante é recomendado na imensa
                                                             maioria dos sistemas, como veremos abaixo.
                                                             Às vezes se tem a duvida sobre porque é tão importante o
                                                             rejuvenescimento. A resposta é que um sistema com o
                                                             passar do tempo, como já foi dito, vai envelhecendo e
             Figura 5 – Comparação das formas de             esse envelhecimento pode chegar a tal ponto de deixar-lo
                    rejuvenescimento                         inativo, ou melhor, causando sua queda. Dessa forma,
                                                             todos os seus serviços ficarão fora de disponibilidade.
 Como pode ver na Figura 5, o rejuvenescimento feito
 manualmente apresenta o maior custo durante um tempo        O problema é que nenhum sistema vai ficar sempre ativo
 maior na fase de tradução de código (linha sólida),         durante toda sua vida útil, pois não existem sistemas
 porém, o custo da manutenção cai significativamente.        totalmente perfeitos. Por mínima que seja, uma hora a
                                                             manutenção deve ser feita, portanto, é importante para a
 Já a migração de código feita através de tradutores se      organização saber quando o sistema está perto de entrar
 mostra menos custosa na fase de tradução, porém o custo     em um estado de queda ou não a fim que se evite esse
 da manutenção sobe drasticamente.                           estado de queda. Evitando que sua queda fará com que a
 Apesar de o custo da fase inicial, utilizando o software    organização não arque com os prejuízos dessa perda, que
 Metex, ser superior ao custo inicial utilizando um          com certeza, na imensa maioria dos casos, são bem
 tradutor, o custo da manutenção da aplicação é muito        maiores do que o custo de uma queda programada,
 inferior, o que acaba por justificar o uso do Metex.        necessária para fazer a manutenção. Podemos notar a
                                                             partir disso, que o aumento do tempo de vida da
 3.ANÁLISE DE APLICAÇÕES                                     aplicação, junto com o seu monitoramento, a fim de
 O rejuvenescimento de software é um pratica interessante    evitar quedas não planejadas, traz muita economia para
 para se propor a uma organização desenvolvedora de          organização.
 sistemas, pois os sistemas degradam ao passar do tempo e
 a pratica de rejuvenescimento faz com que a sua vida útil   3.1Diferentes Abordagens
 seja prolongada o máximo de tempo possível.                 Existem duas diferentes abordagens a serem aplicadas
                                                             nos sistemas a fim de aumentar sua vida util. A primeira é
 Todo software sofre um processo de envelhecimento, que      a prevenção reativa, que é a mais comum. Nela toda
 na verdade se trata da degradação gradual da sua            decisão é tomada somente quando ocorre algo errado no
 performance. Ao longo do tempo, esse processo de            sistema. Assim que a aplicação entra em um estado de
 envelhecimento pode deixar esse software em um estado       inutilidade, queda ou perto disso, é tomada uma decisão,
 de inutilidade, tirando assim a necessidade dele.           que pode ser desde rollbacks, até reiniciar o sistema,
 Segundo [8] e [9], existem várias causas que podem          ordenar arquivos, ou alguma manutenção mais seria nas
 provocar e agravar esse processo de envelhecimento,         funcionalidades. A segunda abordagem é a prevenção
 algumas delas são:                                          proativa e preventiva, que como o próprio nome já diz,
                                                             nela não espera que aconteça algo para tomar uma
  i.    Vazamento de memória – Quando um sistema faz
                                                             decisão. A cada momento, a situação atual do sistema é
        uso da memória, mas não verifica o “lixo” que
                                                             visualizada para que se tome uma decisão adequada de
        deixa nela após o uso. Isso vem sendo mais
                                                             acordo com a necessidade, evitando que o sistema entre
        atenuado com as linguagens de alto nível, tipo
                                                             em um estado de queda. É nesse tipo de prevenção que
        Java, que possui na sua maquina virtual um
                                                             faz parte o rejuvenescimento de software.
        Garbage Collection que faz o gerenciamento da
        memória;                                             3.2Estados do Sistema
 ii.    Uso progressivo de discos de armazenamento –         Quando um sistema está com todas suas funcionalidades
        Esse é um problema já praticamente inexistente       ao máximo, atendendo completamente às necessidades e
        hoje em dia, devido o barateamento das unidades      sem riscos de quedas, ele se encontra em um estado
        de armazenamento, mas já foi um ponto crítico        estável. Mas nem sempre esse estado permanece, causas
        dos    sistemas,    que     ocupavam     espaço      adversas já ditas anteriormente fazem com que o software
        continuamente com logs ou caches por exemplo;        entre em um estado de provável falha. Nesse ponto ele
                                                             ainda está funcionando, mas se consegue notar que algo,
iii.    Uso de estruturas e arquivos desatualizados –
                                                             por mínimo que seja, está errado. Esse erro que pode ser
        Quando um sistema usa bibliotecas que estão
                                                             tanto provocado pela implementação do próprio sistema
        desatualizadas ou arquivos que não existem mais
                                                             em si, como do ambiente em que ele está envolvido.
        suporte para manutenção, por exempl;.
                                                             A partir do estado de provável falha, caso nada seja feito,
iv.     Erros de arredondamento numérico em excesso –
                                                             só existe um caminho a seguir: que é o caminho da
        São erros que aparentam ser simples, mas simples
                                                             queda. Agora o sistema já está indisponível, não existe
        erros de cálculos podem levar a aplicação a um
                                                             mais nada a fazer que não seja parar tudo e fazer a
        estado de falha.
                                                             manutenção, voltando a um estado estável novamente e
                                                             iniciando o ciclo.
rejuvenescimento. Mas como o custo de uma queda
                                                              planejada é muito menor que o custo de uma queda não
                                                              planejada, então for definido como maior importância o
                                                              custo e não o downtime, na grande maioria das vezes o
                                                              rejuvenescimento freqüente vai ser adequado.
                                                              3.3Estudo de Caso
                                                              Nesse trabalho, foi analisado como estudo de caso o
       Figura 6 – Software sem o rejuvenescimento             Aplicativo CPD/RH, usado na Prefeitura Municipal de
                                                              Aracaju e o setor de TIC como um todo. Esse sistema é
De acordo com a Figura 6 pode-se ver o ciclo completo         usado para gerar a folha de pagamento dos funcionários e
do sistema sem o uso do rejuvenescimento, onde λ é a          outras funcionalidades gerais da administração como:
taxa de queda de um sistema.                                  férias, décimo terceiro salário, adicionais, pensões,
Quando um sistema entra em um estado de provável              contra-cheques, relatórios e várias outras.
falha, outro caminho pode ser feito. É ai que entra o
rejuvenescimento. Pela Figura 7 pode-se ver a nova
abordagem. Dessa vez um novo estado é criado, que é
chamado estado de rejuvenescimento. É importante
observar que tanto o estado de rejuvenescimento, quanto
o estado de queda, o sistema estará fora de serviço. Mas a
grande diferença é que no estado de rejuvenescimento, o
sistema estará fora de uma maneira planejada.




                                                                    Figura 8 – Tela do sistema Aplicativo CPD/RH
                                                              Ele foi feito por uma empresa terceirizada e desenvolvido
                                                              em Visual Basic a partir de um contrato específico, onde
                                                              teria garantia da manutenção do mesmo durante um
                                                              período de 24 meses, fora os demais termos da Garantia
                                                              Legal Tecnológica.
       Figura 7 – Software com o rejuvenescimento
                                                              Existe também uma versão Web do mesmo sistema,
O objetivo é tentar deixar o sistema no estado estável o      chamado FolhaNET, onde acessa a mesma base de dados
maior tempo possível. Segundo [8], algumas                    Oracle, mas não possui todas as funcionalidades da
características são válidas observar:                         versão para desktop. O FolhaNET, no entanto, foi
  i.    Quanto maior for a taxa de rejuvenescimento (r3),     desenvolvido internamente pelos funcionários da
        menor será o tempo de queda do sistema                prefeitura.
        (downtime);                                           Após uma série de entrevistas, foi feita uma análise do
 ii.    Quando menor for a taxa de rejuvenescimento           sistema Aplicativo CPD/RH que resultou nas seguintes
        (r3), maior será o tempo de queda do sistema          conclusões:
        (downtime);                                            i.     O tempo médio entre as ocorrências de falhas é
iii.    Quando o lambda (λ) for alto, o rejuvenescimento              um mês;
        tem que ser mais freqüente;                           ii.     Quando acontece uma falha inesperada, demora
iv.     Quando o lambda (λ) for alto, o aumento no                    em média 30 minutos para conseguir se
        rejuvenescimento causa um maior downtime.                     recuperar;
A partir desse autômato mostrado na Figura 7, em [8] é       iii.     O tempo que o sistema sai do estado estável e
mostrado como calcular as probabilidades de alcançar                  entra em um estado de provável falha são sete
cada estado separadamente.                                            dias;
Definindo como Pf com a probabilidade de alcançar o          iv.      Leva 10 minutos para fazer o rejuvenescimento,
estado de falha, Pr a probabilidade de alcançar o estado              ou seja, se recuperar de um erro esperado;
de rejuvenescimento e L o tempo total que deve ser            v.      O custo médio do sistema fora do ar de maneira
analisado, temos o tempo de queda total (downtime) do                 imprevista é R$ 5000 por hora;
sistema por:
                                                             vi.      O custo médio do rejuvenescimento é R$ 5 por
               Downtime = (Pf + Pr) * L                               hora.
Também é possível calcular a partir do downtime, o custo      Seguindo a mesma base de cálculos fornecida por [8],
total da manutenção. Tendo como Cf o custo caso ocorra        chegamos à seguinte tabela:
uma queda não planejada e como Cr o custo do sistema
em estado de rejuvenescimento (queda planejada), temos
o custo total como:
               Custo = (Pf*Cf+Pr*Cr)*L
É importante observar que podem existir casos em que o
downtime do sistema usando rejuvenescimento é maior
que o downtime dele caso não fosse feito o
iv.    Sistemas que terão um maior tempo de vida.
                       Sem        Uma vez por   Uma vez a
                 rejuvenescimento    mês        cada duas   E como desvantagem:
                                                 semanas      i.   Alto custo de desenvolvimento, se levar em conta
  Downtime                                                         somente a parte financeira e não a qualidade do
                      4,86           5,68         7,03
  (em horas)                                                       produto;
  Custo total
                    R$ 24.310      R$ 18.944    R$ 10.072
                                                             ii.   Tempo       de    inoperabilidade    (downtime),
 do downtime                                                       estatisticamente maior (na maioria dos casos), se
       Tabela 1 – Análise do sistema Aplicativo CPD/RH             comparado aos sistemas que não passam pelo
                                                                   rejuvenescimento;
De acordo com a Tabela 1, podemos analisar que o tempo
que o sistema ficará fora do ar sem rejuvenescimento vai    iii.   Não se pode utilizar o rejuvenescimento em todo
ser menor que o tempo que ele ficaria se fosse feito uma           tipo de sistema, pois uma análise profunda
vez por mês, que por sua vez seria ainda menor, do que se          anterior deve ser feita.
fosse feito uma vez a cada duas semanas.                    Na análise do estudo de caso, viu-se a importância do
Como já foi dito anteriormente, se fosse analisar se deve   rejuvenescimento no sistema Aplicativo CPD/RH, mas
ou não serem feitas praticas constantes de                  foi concluído que nem sempre um custo mais baixo de
rejuvenescimento nesse sistema baseando-se somente no       manutenção significa um menor tempo de downtime.
tempo downtime, vê-se facilmente que seria desvantagem      Notou-se também a clara importância de uma política de
o rejuvenescimento. Porém se for analisar o custo que o     gerenciamento de projetos no setor de TIC da Prefeitura
sistema teria, pois a queda imprevista é muito mais cara    Municipal de Aracaju e a conclusão foi que o Project
do que uma queda prevista (rejuvenescer), vê-se que o       Office, se aplicado, poderia atender a essa falha no setor.
rejuvenescimento tem mais vantagem.                         Também políticas de rejuvenescimento aplicadas a esses
A partir disso vem o questionamento se prioriza o custo     sistemas reduziriam o custo e conseqüentemente
ou o downtime. A resposta disso é que a grande maioria      aumentariam o seu tempo de vida.
das organizações olha o custo como o fator mais             5.REFERÊNCIAS
importante. Logo, no exemplo do estudo de caso
proposto, concluímos que seria muito bom para a             [1] Universidade Aberta. Rejuvenescimento de
prefeitura    se  fossem     aplicadas   praticas    de     Software.         2007.          Disponível     em:
rejuvenescimento no sistema Aplicativo CPD/RH.              <http://www.moodle.univ-
                                                            ab.pt/moodle/mod/glossary/print.php?id=2243&mode=&
3.3.1Aplicação do Project Office                            hook=ALL&sortkey=&sortorder=&offset=-10>. Acesso
Analisando também um pouco mais do sistema                  em: 17 out. 2008.
FolhaNET na situação em que se encontra o setor de TIC      [2] SILVA, Nuno Alberto Pereira da. Rejuvenescimento
na prefeitura, vimos que houve uma grande falha de
                                                            de Aplicações: Uma experiência com software de
administração e gerenciamento de projetos.                  seguros. Universidade do Minho, 2005. Disponível em: <
O FolhaNET foi desenvolvido com o objetivo de aliviar       http://repositorium.sdum.uminho.pt/handle/1822/5635 >.
um pouco a demanda pelo Aplicativo CPD/RH, criando          Acesso em: 17 out. 2008
assim funcionalidades repetidas, que só seriam acessadas    [3] LABUTO, Gianncarla Cutini Barcellos. A gestão de
pela Web. Mas a falta de uma política de gerenciamento
                                                            Projetos e o Project Office. 2008. Disponível em:
de projetos adequada, fez com que o sistema nunca           <http://www.ietec.com.br/site/techoje/categoria/detalhe_a
alcançasse um estado estável dentro da prefeitura.          rtigo/103>. Acesso em: 17 out. 2008.
Hoje em dia, tanto o Aplicativo CPD/RH, como o              [4] VAIDYANATHAN, Kalyanaraman; TRIVEDI ,
FolhaNET possuem código difícil de manutenção, graves       Kishor S. A Comprehensive Model for Software
problemas nas suas funcionalidades e nem um nem outro       Rejuvenation. 2005. Disponível em: <
atende completamente às necessidades plenas propostas.      http://ieeexplore.ieee.org/iel5/8858/31216/01453531.pdf
Recomenda-se fortemente o inicio da prática do Project      > Acesso em: 17 out. 2008.
Office na prefeitura como uma forma de gerenciar esses      [5] AVRITZER Alberto ;BONDI Andre; GROTTKE
projetos. Isso poderá ser feito utilizando algumas das      Michael ; TRIVEDI Kishor S. ; WEYUKER Elaine J.
ferramentas propostas anteriormente (seção 3.8) e a
                                                            Performance Assurance via Software Rejuvenation:
equipe que ficará responsável por isso poderá administrar   Monitoring, Statistics and Algorithms. 2006.
o ciclo de rejuvenescimento desses softwares, sem nunca     Disponível em: <
eliminar a possibilidade do desenvolvimento de um novo      http://ieeexplore.ieee.org/iel5/10881/34248/01633532.pdf
sistema que resolva todos esses problemas.                  > Acesso em: 17 out. 2008.
4.CONSIDERAÇÕES FINAIS                                      [6] MARCHIORO, Eliete. Um Estudo Sobre
Após análise da prática de rejuvenescimento, tem-se         Rejuvenescimento de Software em Servidores Web
como principais vantagens encontradas:                      Apache.           2003.        Disponível         em:
                                                            <http://www1.capes.gov.br/estudos/dados/2003/4100101
  i.      Sistemas sempre atuais, de acordo com as novas
                                                            0/002/2003_002_41001010025P2_Teses.pdf >. Acesso
          tecnologias;
                                                            em: 17 out. 2008.
 ii.      Sistemas com melhor manutenabilidade, baixo
                                                            [7] BAUMOTTE, Ana Cláudia. Project Office: como
          custo de manutenção;
                                                            vender essa idéia na sua organização. 2008. Disponível
iii.      Sistemas capazes de se adaptar facilmente à       em:                                                 <
          novas tecnologias;
http://www.pmimg.org.br/downloads/ProjectOffice.ppt>
Acesso em: 17 out. 2008.
[8] HUANG, Y.; KINTALA, C.; KOLETTIS, N.;
FULTON, N.D. Software rejuvenation: analysis,
module and applications, in: Proceedings of the 25th
International Symposium on Fault-Tolerance Computing
(FTCS-25), Pasadena, CA, USA, June 1995.
[9] BOBBIO, A.; SERENO, M.; ANGLANO C., 2001.
Fine grained software degradation models for optimal
rejuvenation policies. Performance Evaluation
[10] GARG, S.; PFENING, A.; PULIAFITO, A. ;
TELEK, M.; TRIVEDI, K.S. Modelling and analysis of
load and time-dependent software rejuvenation
policies, in: Proceedings of the Third International
Workshop on Performability Modeling of Computer and
Communication Systems (PMCCS3), Bloomingdale, IL,
September 1996, pp. 35–39.
[11] GARG, S.; PFENING, A.; PULIAFITO, A. ;
TELEK, M.; TRIVEDI, K.S. Analysis of software
rejuvenation using Markov regenerative stochastic
Petri net, in: Proceedings of the Sixth International
Symposium on Software Reliability Engineering
(ISSRE95), Toulouse, France, October 1995.
[12] PIEKARSKI, Ana ElisaTozetto ; QUINÁIA, Marcos
Antonio. Reengenharia de software: o que, por quê e
como.        2000.        Disponível         em:       <
http://www.unicentro.br/editora/revistas/recen/v1n2/Reen
genharia.pdf>. Acesso em: 29 nov. 2008.
[13] ANQUETIL, Nicolas; OLIVEIRA, Káthia Marçal
de. Processo de Redocumentação: Uma Necessidade.
2002.           Disponível             em:             <
http://www.ucb.br/prg/professores/anquetil/Publicacoes/s
bqs02.doc>. Acesso em: 29 Mai. 2008.
[14] WIKIPEDIA. Engenharia reversa de software.
2008.                    Disponível                em:
<http://pt.wikipedia.org/wiki/Engenharia_reversa>.
Acesso em: 29 Mai. 2008
[15] WIKIPEDIA. Refatoração. 2008. Disponível em:
<http://pt.wikipedia.org/wiki/Refatora%C3%A7%C3%A
3o>. Acesso em: 29 nov. 2008.
[16]     METEX.     2008.    Disponível     em:       <
http://www.metex.com>. Acesso em: 29 nov. 2008.
[17]     LEGACYJ.       2008.     Disponível       em:
<http://www.legacyj.com>. Acesso em: 29 nov. 2008.
[18] NETEXPRESS. 2008. Disponível em:                 <
http://www.microfocus.com/products/netexpress>.
Acesso em: 29 nov. 2008.

Contenu connexe

Tendances

Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...
Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...
Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...Gilmar Pupo
 
Seminario software-marino
Seminario software-marinoSeminario software-marino
Seminario software-marinoMarino Catarino
 
Criacao.Fabrica.Open.Source
Criacao.Fabrica.Open.SourceCriacao.Fabrica.Open.Source
Criacao.Fabrica.Open.SourceAnnkatlover
 
Plano de projeto de software - SISCONI
Plano de projeto de software - SISCONIPlano de projeto de software - SISCONI
Plano de projeto de software - SISCONIocfelipe
 
O conceito de processo de trabalho versao final
O conceito de processo de trabalho   versao finalO conceito de processo de trabalho   versao final
O conceito de processo de trabalho versao finallisimello13
 
Es17 predicao de defeitos em software
Es17   predicao de defeitos em softwareEs17   predicao de defeitos em software
Es17 predicao de defeitos em softwareVictor Hugo
 
GESTÃO DE DEMANDAS DE TESTE E ANÁLISE DE PADRÕES COM TEXT MINING
GESTÃO DE DEMANDAS DE TESTE E ANÁLISE DE PADRÕES COM TEXT MININGGESTÃO DE DEMANDAS DE TESTE E ANÁLISE DE PADRÕES COM TEXT MINING
GESTÃO DE DEMANDAS DE TESTE E ANÁLISE DE PADRÕES COM TEXT MININGMarcos Lottermann
 
A EXPERIÊNCIA NA DEFINIÇÃO DE UM PROCESSO BASEADO NO MPS.BR NÍVEL G
A EXPERIÊNCIA NA DEFINIÇÃO DE UM PROCESSO BASEADO NO MPS.BR NÍVEL GA EXPERIÊNCIA NA DEFINIÇÃO DE UM PROCESSO BASEADO NO MPS.BR NÍVEL G
A EXPERIÊNCIA NA DEFINIÇÃO DE UM PROCESSO BASEADO NO MPS.BR NÍVEL GNorton Guimarães
 
Trabalho qualidade de_software
Trabalho qualidade de_softwareTrabalho qualidade de_software
Trabalho qualidade de_softwarestefaniak2004
 
Engenharia de Software introdução
Engenharia de Software    introduçãoEngenharia de Software    introdução
Engenharia de Software introduçãomiroslayer
 
CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARE
CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARECROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARE
CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWAREMoisés Armani Ramírez
 

Tendances (20)

Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...
Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...
Gerência de Configuração de Software: Benefícios Do Controle de Versões Distr...
 
Seminario software-marino
Seminario software-marinoSeminario software-marino
Seminario software-marino
 
Aula1 introducao engsw
Aula1 introducao engswAula1 introducao engsw
Aula1 introducao engsw
 
Analise e projeto de Sistemas
Analise e projeto de SistemasAnalise e projeto de Sistemas
Analise e projeto de Sistemas
 
Criacao.Fabrica.Open.Source
Criacao.Fabrica.Open.SourceCriacao.Fabrica.Open.Source
Criacao.Fabrica.Open.Source
 
O emprego do_rup_na_uml_-_trabalho_poo_2012
O emprego do_rup_na_uml_-_trabalho_poo_2012O emprego do_rup_na_uml_-_trabalho_poo_2012
O emprego do_rup_na_uml_-_trabalho_poo_2012
 
Plano de projeto de software - SISCONI
Plano de projeto de software - SISCONIPlano de projeto de software - SISCONI
Plano de projeto de software - SISCONI
 
O conceito de processo de trabalho versao final
O conceito de processo de trabalho   versao finalO conceito de processo de trabalho   versao final
O conceito de processo de trabalho versao final
 
Es17 predicao de defeitos em software
Es17   predicao de defeitos em softwareEs17   predicao de defeitos em software
Es17 predicao de defeitos em software
 
Engenharia de Software - Pontos de função
Engenharia de Software - Pontos de funçãoEngenharia de Software - Pontos de função
Engenharia de Software - Pontos de função
 
Es06 teste de software
Es06   teste de softwareEs06   teste de software
Es06 teste de software
 
GESTÃO DE DEMANDAS DE TESTE E ANÁLISE DE PADRÕES COM TEXT MINING
GESTÃO DE DEMANDAS DE TESTE E ANÁLISE DE PADRÕES COM TEXT MININGGESTÃO DE DEMANDAS DE TESTE E ANÁLISE DE PADRÕES COM TEXT MINING
GESTÃO DE DEMANDAS DE TESTE E ANÁLISE DE PADRÕES COM TEXT MINING
 
A EXPERIÊNCIA NA DEFINIÇÃO DE UM PROCESSO BASEADO NO MPS.BR NÍVEL G
A EXPERIÊNCIA NA DEFINIÇÃO DE UM PROCESSO BASEADO NO MPS.BR NÍVEL GA EXPERIÊNCIA NA DEFINIÇÃO DE UM PROCESSO BASEADO NO MPS.BR NÍVEL G
A EXPERIÊNCIA NA DEFINIÇÃO DE UM PROCESSO BASEADO NO MPS.BR NÍVEL G
 
Trabalho qualidade de_software
Trabalho qualidade de_softwareTrabalho qualidade de_software
Trabalho qualidade de_software
 
CMMI 7
CMMI 7CMMI 7
CMMI 7
 
Es 09
Es 09Es 09
Es 09
 
Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44Revista Engenharia de Software n° 44
Revista Engenharia de Software n° 44
 
Engenharia de Software introdução
Engenharia de Software    introduçãoEngenharia de Software    introdução
Engenharia de Software introdução
 
Aula 03
Aula 03Aula 03
Aula 03
 
CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARE
CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARECROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARE
CROWD TESTING: O PODER DA MULTIDÃO EM PROL DA QUALIDADE DE SOFTWARE
 

Similaire à Manuscrito Rejuvenescimento De Software

Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANFernando Palma
 
Manuscrito Processo De Negocios
Manuscrito Processo De NegociosManuscrito Processo De Negocios
Manuscrito Processo De Negociosbetinho87
 
MANUSCRITO Utilizando ERP para melhoria dos processos de negócios na gestão d...
MANUSCRITO Utilizando ERP para melhoria dos processos de negócios na gestão d...MANUSCRITO Utilizando ERP para melhoria dos processos de negócios na gestão d...
MANUSCRITO Utilizando ERP para melhoria dos processos de negócios na gestão d...betinho87
 
Manuscrito Processo De Negocios
Manuscrito Processo De NegociosManuscrito Processo De Negocios
Manuscrito Processo De Negociosguest572186
 
Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia ...
Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia ...Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia ...
Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia ...Erivan de Sena Ramos
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Softwareelliando dias
 
Implantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLImplantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLAnnkatlover
 
Artigo-Alex_Warmling
Artigo-Alex_WarmlingArtigo-Alex_Warmling
Artigo-Alex_WarmlingChaordic
 
Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)Wildtech
 
Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).Érika Santos
 
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De ProcessoUma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processocrc1404
 
Os aspectos mais relevantes da Engenharia de Requisitos
Os aspectos mais relevantes da Engenharia de RequisitosOs aspectos mais relevantes da Engenharia de Requisitos
Os aspectos mais relevantes da Engenharia de RequisitosJosé Vieira
 
Desenvolvimento Iterativo e Incremental
Desenvolvimento Iterativo e IncrementalDesenvolvimento Iterativo e Incremental
Desenvolvimento Iterativo e IncrementalRobson Silva Espig
 
Desenvolvimento ágil e práticas Lean
Desenvolvimento ágil e práticas LeanDesenvolvimento ágil e práticas Lean
Desenvolvimento ágil e práticas LeanRenan Daré
 

Similaire à Manuscrito Rejuvenescimento De Software (20)

Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
 
ISO IEC 12207
ISO IEC 12207ISO IEC 12207
ISO IEC 12207
 
Rational Unified Process (RUP)
Rational Unified Process (RUP)Rational Unified Process (RUP)
Rational Unified Process (RUP)
 
Manuscrito Processo De Negocios
Manuscrito Processo De NegociosManuscrito Processo De Negocios
Manuscrito Processo De Negocios
 
MANUSCRITO Utilizando ERP para melhoria dos processos de negócios na gestão d...
MANUSCRITO Utilizando ERP para melhoria dos processos de negócios na gestão d...MANUSCRITO Utilizando ERP para melhoria dos processos de negócios na gestão d...
MANUSCRITO Utilizando ERP para melhoria dos processos de negócios na gestão d...
 
Manuscrito Processo De Negocios
Manuscrito Processo De NegociosManuscrito Processo De Negocios
Manuscrito Processo De Negocios
 
Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia ...
Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia ...Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia ...
Artigo Um Mapeamento Sistemático sobre Padrões de Software para Reengenharia ...
 
Subm_SamuelPereira_FINAL
Subm_SamuelPereira_FINALSubm_SamuelPereira_FINAL
Subm_SamuelPereira_FINAL
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
Programacao Extrema
Programacao ExtremaProgramacao Extrema
Programacao Extrema
 
Implantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SLImplantacao.Processo.Fabrica.SL
Implantacao.Processo.Fabrica.SL
 
Artigo-Alex_Warmling
Artigo-Alex_WarmlingArtigo-Alex_Warmling
Artigo-Alex_Warmling
 
Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)Descrição Tutorial Coding By Example (CBSoft2013)
Descrição Tutorial Coding By Example (CBSoft2013)
 
Artigo corrigido
Artigo corrigidoArtigo corrigido
Artigo corrigido
 
Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).Erika questionario pt 1 (Eng Software III).
Erika questionario pt 1 (Eng Software III).
 
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De ProcessoUma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
Uma Metodologia Para Teste De Software No Contexto Da Melhoria De Processo
 
Os aspectos mais relevantes da Engenharia de Requisitos
Os aspectos mais relevantes da Engenharia de RequisitosOs aspectos mais relevantes da Engenharia de Requisitos
Os aspectos mais relevantes da Engenharia de Requisitos
 
Desenvolvimento Iterativo e Incremental
Desenvolvimento Iterativo e IncrementalDesenvolvimento Iterativo e Incremental
Desenvolvimento Iterativo e Incremental
 
Desenvolvimento ágil e práticas Lean
Desenvolvimento ágil e práticas LeanDesenvolvimento ágil e práticas Lean
Desenvolvimento ágil e práticas Lean
 
Xp
XpXp
Xp
 

Dernier

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 

Dernier (8)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Manuscrito Rejuvenescimento De Software

  • 1. Rejuvenescimento de Software gerido pelo Project Office Bruno Lins Alves, Diego Calasans, Eduardo Dória Lima, Marcus Vinicius de Gois Oliveira Universidade Federal de Sergipe Cidade Universitária Prof. José Aloísio de Campos Av. Marechal Rondon S.N. São Cristóvão-SE CEP: 49.100-000 brunolinsalves, d.calasans, doriaeduardo, mvgois{@gmail.com} Abstract presença de modularizações. São boas práticas que In this paper, there is an explanation of what is the ajudam na manutenção do código e favorecem a practice of software rejuvenation. They both said all its aplicação do rejuvenescimento de software. features and subdivisions, and technologies that serve to Logo, tem-se que rejuvenescimento de software é um help it. Additionally, there is an introduction about the conjunto de técnicas que facilitam a manutenabilidade e Project Office. Then, it demonstrated a way to make the conseqüentemente a adaptação à novas tecnologias pela analysis of a system. Thus, there is need or not of maioria dos softwares, se vê nas próximas seções que rejuvenation. It was also proposed as an example, a case nem todos os softwares são adeptos a essa técnica. study that after made its analysis, the appropriate Verifica-se ainda na seção 1.1, alguns dos trabalhos conclusions were drawn. Finally it was explained how to relacionados ao tema que serviram como fonte de use the Project Office in the case study proposed. How pesquisa para elaboração desse trabalho. does it affect the organization as well as have studied the importance of implementation of rejuvenation. Na seção 2, descreve-se o que significa cada técnica, onde é utilizada e algumas tecnologias que utilizam a Categories and Subject Descriptors técnica do Rejuvenescimento, incluindo Project Office. D.2.10 [Software]: Software Engineering: Design – Na seção 3, é mostrada uma maneira de se fazer a análise Methodologies. de um sistema para que se verifique a necessidade ou não do rejuvenescimento e, é trazido um estudo de caso local General Terms onde é aplicado o rejuvenescimento e o Project Office. Design Na seção 4, são expostas as considerações finais e por Keywords fim, na seção 5, as referências utilizadas. Software, rejuvenation, methodology, Project Office 1.1Trabalhos Relacionados Nesta seção serão abordados os principais artigos Resumo referentes ao tema Rejuvenescimento que foram Neste trabalho, encontra-se uma explicação sobre o que estudados, os quais serviram de base para elaboração se trata a prática de rejuvenescimento de software. São deste trabalho. citadas tanto suas características e subdivisões, como também tecnologias que servem de auxilio a ela. 1.1.1Yennun Huang Adicionalmente, é feita uma introdução sobre o Project O artigo [8] foi o primeiro a aplicar o termo “software Office. Em seguida, é demonstrada uma maneira de fazer rejuvenation”. Nele é proposto um modelo de análise de a análise de um sistema. Dessa forma, se verifica a sistemas que analisa o impacto do rejuvenescimento de necessidade ou não do rejuvenescimento. Foi proposto determinado sistema para a organização. também, como exemplo, um estudo de caso onde depois Segundo ele, o envelhecimento de sistemas é um de feita a sua análise, foram tiradas as conclusões processo de duas etapas. Do estado estável, o sistema adequadas. Para finalizar foi explicado como usar o entra em um estado de possível falha. A partir daí duas Project Office no estudo de caso proposto. De que ações são possíveis: ou entrar em um estado de maneira ele afetará a organização estudada e também rejuvenescimento, ou entrar em um estado de queda como teria importância na aplicação de práticas de completa. Esse modelo é criticado por ser um modelo rejuvenescimento. baseado em caixa-preta e por não levar muito em conta a performance do sistema. Palavras-chave Software, rejuvenescimento, metodologia, Project Office 1.1.2Sachin Garg Em [10] é defendida a idéia de usar um intervalo de 1.INTRODUÇÃO rejuvenescimento periódico e fixo, não levando em conta Segundo [2], para melhorar o processo de o estado do sistema proposto por [8] durante esses desenvolvimento de software, atualmente, a tendência é rejuvenescimentos. Trabalha usando redes de Petri para fazer reaproveitamento de código. Reusabilidade é um analisar o comportamento do software. conceito que ganha cada vez mais espaço. Para isso precisa ter um software bem estruturado, que obedeça alguns padrões, uma arquitetura bem definida e a
  • 2. 1.1.3Andrea Bobbio O artigo [2] afirma que a linguagem mais adequada é a O artigo [9] fala que é possível identificar a perfomance orientada a objetos. Por isso a necessidade de se aplicar o do sistema de acordo com observações e que o processo rejuvenescimento a estes tipos de sistemas. de degradação vem de uma seqüência sucessiva de falhas O rejuvenescimento surge também da necessidade de se e quebras. incluir novas funcionalidades em um sistema em que não Existe também um parâmetro de observação que é o que é simples tal inclusão. vai decidir se um sistema entrou ou não em um estado de De acordo com [1], há diversas estratégias para tal: queda. i. Redocumentação 1.1.4Nuno Alberto Pereira da Silva ii. ReestruturaçãoRefatoração Em [2], o autor aborda as necessidades dos softwares de iii. Engenharia reversa se adaptarem às constantes mudanças nas empresas, as vantagens de não precisar refazer um software do início, iv. Reengenharia descrevendo como fazer o rejuvenescimento de um sistema legado ou crítico. Toma como estudo de caso os 2.2Redocumentação sistemas financeiros, em particular, das empresas de Efetuar uma análise do código, de forma a produzir seguros. documentação explicativa do código. Segundo [13], redocumentação é uma técnica muito 1.1.5Eliete Marchioro importante quando se pensa em melhorar o custo de Em [6], a autora estuda causas e técnicas para superar o manutenção do software, pois segundo o mesmo, devido envelhecimento de software relacionado aos servidores a alta rotatividade de profissionais, tudo deve ser Web Apache. documentado para evitar que apenas uma pessoa entenda A mesma apresenta técnicas de rejuvenescimento e detalhadamente o sistema. explica como ocorre o envelhecimento, realizando dessa O autor afirma ainda que a redocumentação tem como forma um estudo de caso e descrevendo os resultados características básicas: obtidos. i. Ser baseado na engenharia reversa – A partir do 2.CONCEITOS E TECNOLOGIAS código obtido na engenharia reversa, construir a Nesta seção pretende-se esclarecer do que trata cada documentação; técnica utilizada para a elaboração deste trabalho, assim ii. Gerar documentação mínima necessária – Não se como, apresentar algumas tecnologias que utilizam a deve levar muito tempo para elaborar a metodologia proposta. documentação, deve-se ser o mais objetivo É descrito o Project Office e as técnicas utilizadas no possível; rejuvenescimento em detalhes, conforme Figura 1. iii. Buscar automatização quando possível – Deve-se utilizar de ferramentas que auxiliam na documentação de softwares a fim de agilizar o processo. 2.3ReestruturaçãoRefatoração Efetuar uma análise do código, de forma a reestruturar-lo para uma estrutura mais eficiente. Em [15], temos que a refatoração tem como objetivo de modificar um sistema de software para melhorar a estrutura interna do código sem alterar o seu comportamento externo. Com isso, pretende-se melhorar o entendimento do código. Existem também diversas ferramentas que servem e são úteis para automatizar esse processo. Figura1 - Relacionamentos no Ciclo de Desenvolvimento de Software (CHIKOFSKY e CROSS, 1990) 2.4Engenharia Reversa Efetuar uma análise do código, de forma a gerar o 2.1Rejuvenescimento de Software modelo e especificações que lhe deram origem. Segundo [1], o rejuvenescimento de software tem a Em [14], temos que engenharia reversa é processo finalidade de melhorar a qualidade do software reduzindo inverso da engenharia de software. Com esta técnica os custos com sua manutenção. Em [2], o autor afirma podemos, a partir de um produto, obter o código-fonte que os sistemas mais indicados para se utilizar essa que lhe deu origem. metodologia são os sistemas críticos e sistemas legados, pois são sistemas com confiabilidade muito alta e que O autor de [14] cita alguns exemplos de uso desta geralmente utilizam linguagens procedimentais que, pela técnica, tais como: cracks, pessoas conseguem quebrar a sua natureza, não suportam alguns princípios tidos como segurança dos softwares a fim de obter licenças de necessários para uma fácil evolutibilidade dos sistemas, utilização dos mesmos; Samba, software do sistema tais como: Linux que se utilizou desta técnica para conseguir fazer a comunicação entre o Linux e o sistema Windows. i. Grau de reutilização do código ii. Não duplicação do código iii. Testabilidade do código
  • 3. 2.5Reengenharia A fase de “Escrita de testes” deverá ser realizada antes do Segundo [12], partindo-se do sistema existente (via inicio da codificação da nova funcionalidade. Nessa fase, código-fonte, interface ou ambiente), são abstraídas as devem ser criados os casos de teste, para descrever o suas funcionalidades e é construído o modelo de análise e funcionamento esperado por essa nova funcionalidade. o projeto do software. Os programadores do sistema usarão esses casos de teste para entender melhor os objetivos dessa funcionalidade. Caso não se tenha dados suficientes para se fazer a reengenharia, pode-se utilizar a engenharia reversa, e Depois que os casos de teste já foram criados, devemos então gerar novo modelo e novo código para auxiliar no começar a fase de “Codificação” do sistema. Essa fase irá processo. codificar a nova funcionalidade utilizando uma linguagem de programação. O programador deve-se 2.6Metodologia Proposta atentar que o uso de padrões para codificação além de Nesta seção será apresentada uma metodologia de melhorar a legibilidade do código, ele propõe soluções desenvolvimento que pode ser utilizada para o para alguns problemas comuns da codificação, como o rejuvenescimento de software. acesso à dados. A “Refatoração”, pode ser consideração uma sub-fase da “Codificação”, visto que seu objetivo é A metodologia proposta a seguir é baseada nos conceitos melhorar a estrutura do código. das metodologias ágeis, sendo assim, ela utiliza ciclos rápidos de iteração com pequenas alterações em cada Uma das fases mais importantes do ciclo de ciclo. Todos os releases do software deverão ser desenvolvimento de software é a “Execução de Testes”. validados através da execução de testes no mesmo. Sendo Pois é ela que garante que o sistema continua a funcionar assim, antes de começar a codificar uma nova de acordo com a sua lista de requisitos. Nessa funcionalidade do sistema, é necessário planejar os casos metodologia, a “Execução de Testes” assume uma de teste para testar todas as possibilidades de execução, importância ainda maior, pois como a refatoração é muito inclusive as situações de erros. utilizada, surge a necessidade da execução de testes que validem todo o sistema. Segundo [12], partindo-se do sistema existente (via código-fonte, interface ou ambiente), são abstraídas as O ciclo de desenvolvimento se encerra com o “Produto”. suas funcionalidades e são construídos o modelo de Nessa fase, será liberada uma nova versão do software análise e o projeto do software. que será chamada de produto. Os produtos não devem acumular um grande volume de alterações, devido à A metodologia proposta é composta por sete fases, representada pela Figura 2. facilidade de dar um rollback sempre que ocorra alguma coisa errada. 2.7Project Office Nos modelos tradicionais de gerencia de projetos, um gerente ficaria encarregado por todos ou apenas alguns projetos da empresa. Porém essa abordagem possui desvantagens que podem levar ao fracasso do projeto: i. O gerente de projeto fica sobrecarregado com as tarefas administrativas associadas ao gerenciamento do projeto; ii. A falta de padrões dificulta o controle e acompanhamento do projeto; iii. Não existe um banco de dados de lições aprendidas em projetos anteriores. Figura 2 – Metodologia Proposta Devido ao desejo de melhorar a taxa de sucesso dos A primeira fase, chamada de “Nova Funcionalidade”, projetos, as empresas estão adotando um novo modelo de inicia-se quando o cliente identifica a necessidade de gestão de projetos: o Project Office. criar, ou alterar uma funcionalidade já implementada pelo O Project Office, ou Escritório de Projetos, é uma área da sistema. empresa que tem uma visão de todos os projetos da Após a identificação de uma nova funcionalidade, é mesma. Dentro desse escritório de projetos, serão necessário identificar os requisitos dessa nova debatidas questões para melhorar o planejamento e funcionalidade. Essa é a principal tarefa da fase de condução dos projetos. O escritório também fornecerá “Recolher histórias dos clientes”. Para a identificação informações rápidas sobre a situação dos projetos, desses requisitos, podem ser usadas reuniões com o auxiliando a tomada de decisões cliente e a equipe de desenvolvimento, com o objetivo de Segundo o Gartner[3], existem cinco atividades criar uma lista com todos os requisitos envolvidos na desempenhadas pelo Project Office, que contribuem implementação dessa nova funcionalidade. bastante na gerencia de projetos. São elas: O objetivo da fase de “Desenho”, ou “Projeto”, é i. Padronização de uma Metodologia – Define uma representar a nova funcionalidade através de elementos ferramenta e métodos de controle e visuais, chamados de modelo. Para isso, pode-se usar acompanhamento de projetos; linguagens visuais de modelagem como a UML (Unified Modeling Language). Esses modelos deverão ser usados ii. Avaliação dos recursos de projetos – Todos os para analisar os impactos que o desenvolvimento dessa recursos dos projetos são analisados para a nova funcionalidade pode trazer ao sistema. análise do desempenho e prioridade dos projetos;
  • 4. iii. Planejamento de Projetos – O planejamento é O processo de rejuvenescimento através do Metex é centralizado e coordenado. Devem-se utilizar as dividido em quatro fases: lições aprendidas nos projetos anteriores; i. Revisão de arquitetura – Discussão com o cliente iv. Gerenciamento de Projetos - Defini as melhores sobre a nova arquitetura; práticas de trabalho com o intuito de facilitar o ii. Conversão automática de código – A ferramenta gerenciamento; converte o código automaticamente dentre os v. Revisão e Análise de Projetos – Constante aceitos por ela; revisão das atividades, custo e prazos e impactos iii. Utilização de ferramentas avançadas para nos projetos. completar o código – Após a conversão pode Para combinar os conceitos de Project Office com o ocorrer de algum código não ter sido convertido, rejuvenescimento de software, seria necessário, nesse caso são utilizadas algumas ferramentas primeiramente, que a empresa adotasse o conceito de avançadas do Metex para completar a conversão; Project Office, criando uma área que possuísse uma visão iv. Teste de integração e Verificação – O Metex de todos os projetos da empresa e desempenhasse as também oferece ferramentas para verificação e cinco atividades citadas anteriormente. O segundo passo testes do código gerado; seria utilizar o rejuvenescimento de software como parte da metodologia de desenvolvimento na empresa. v. Teste de aceitação de usuário – Ao final do processo é utilizado um rastreador de bugs online 2.8Tecnologias e Ferramentas para correção de possíveis erros. Nesta seção serão apresentadas algumas ferramentas A Figura 3 representa a arquitetura-base para uma tecnológicas que utilizadas no rejuvenescimento de aplicação Web (arquitetura em três camadas): software automatizam e, conseqüentemente, agilizam o processo. A camada mais alta é a camada de interface, representada na figura pela coluna mais à esquerda na imagem. Em 2.8.1LegayJ seguida, temos a camada de lógica de negócio, A ferramenta LegacyJ tem como característica a pouca ou representada na figura pela coluna central. E por último nenhuma modificação no código. O software apenas existe a camada de acesso a dados, representada na figura permite a integração de aplicações escritas em COBOL pela coluna mais à direita. com tecnologias baseadas em J2EE. EJB é um exemplo Como citado anteriormente, essa arquitetura é a base para das tecnologias suportadas. uma aplicação Web, nada impede que a arquitetura O LegacyJ permite ainda, a edição de código fonte possua mais do que três camadas. Com o Metex, a COBOL na IDE (Integrated development environment) arquitetura cliente/servidor pode ser atualizada para uma Eclipse. arquitetura em N-camadas sem restrições. 2.8.2Micro Focus Net Express O Micro Focus Net Express é uma ferramenta auxiliar na prática do rejuvenescimento e serve para tornar aplicações COBOL em aplicações Web. O Net Express também torna aplicações COBOL compatível com servidores JAVA. Além de permitir o compartilhamento de dados entre aplicações através do uso de XML. 2.8.3Metex O Metex é um software que tem como principal objetivo recriar aplicações legadas, entregando um código de altíssima qualidade. Figura 3 – Arquitetura em três camadas Tal ferramenta possui a capacidade de transformar o Na Figura 4 temos a representação do processo de código fonte escrito em PowerBuilder, Oracle Forms, rejuvenescimento aplicado pelo Metex e aqui descrito. Forte, VB ou Centura em um código JAVA ou .NET. Segundo os criadores do programa, o que classifica o Metex como uma ferramenta de rejuvenescimento de software e não apenas como um migrador de código é o fato de que o Metex transforma aplicações legadas cliente/servidor em aplicações com arquiteturas modernas, escolhida pelo usuário, em JAVA ou .NET. A ferramenta apresenta ainda alguns serviços adicionais tais quais: i. Transformação; Figura 4 – Processo de rejuvenescimento no Metex ii. Reengenharia; A Figura 5 mostra um comparativo do rejuvenescimento iii. Documentação UML; de software aplicado manualmente (linha vermelha) iv. Migração de Banco de dados; versus rejuvenescimento aplicado com Metex (linha verde) versus uma simples tradução de código (linha v. Habilitação para Web. azul).
  • 5. Muitas dessas causas, como se pode notar, são quase que completamente amenizadas hoje em dia, devido às linguagens de alto nível e as plataformas de desenvolvimento modernas. Um software bem feito, usando ferramentas modernas e adequadas tem sua curva de degradação muito mais longa que um software legado teve, por exemplo. Apesar de esse fato existir, o software nunca deixará de envelhecer, por menor que seja, o rejuvenescimento constante é recomendado na imensa maioria dos sistemas, como veremos abaixo. Às vezes se tem a duvida sobre porque é tão importante o rejuvenescimento. A resposta é que um sistema com o passar do tempo, como já foi dito, vai envelhecendo e Figura 5 – Comparação das formas de esse envelhecimento pode chegar a tal ponto de deixar-lo rejuvenescimento inativo, ou melhor, causando sua queda. Dessa forma, todos os seus serviços ficarão fora de disponibilidade. Como pode ver na Figura 5, o rejuvenescimento feito manualmente apresenta o maior custo durante um tempo O problema é que nenhum sistema vai ficar sempre ativo maior na fase de tradução de código (linha sólida), durante toda sua vida útil, pois não existem sistemas porém, o custo da manutenção cai significativamente. totalmente perfeitos. Por mínima que seja, uma hora a manutenção deve ser feita, portanto, é importante para a Já a migração de código feita através de tradutores se organização saber quando o sistema está perto de entrar mostra menos custosa na fase de tradução, porém o custo em um estado de queda ou não a fim que se evite esse da manutenção sobe drasticamente. estado de queda. Evitando que sua queda fará com que a Apesar de o custo da fase inicial, utilizando o software organização não arque com os prejuízos dessa perda, que Metex, ser superior ao custo inicial utilizando um com certeza, na imensa maioria dos casos, são bem tradutor, o custo da manutenção da aplicação é muito maiores do que o custo de uma queda programada, inferior, o que acaba por justificar o uso do Metex. necessária para fazer a manutenção. Podemos notar a partir disso, que o aumento do tempo de vida da 3.ANÁLISE DE APLICAÇÕES aplicação, junto com o seu monitoramento, a fim de O rejuvenescimento de software é um pratica interessante evitar quedas não planejadas, traz muita economia para para se propor a uma organização desenvolvedora de organização. sistemas, pois os sistemas degradam ao passar do tempo e a pratica de rejuvenescimento faz com que a sua vida útil 3.1Diferentes Abordagens seja prolongada o máximo de tempo possível. Existem duas diferentes abordagens a serem aplicadas nos sistemas a fim de aumentar sua vida util. A primeira é Todo software sofre um processo de envelhecimento, que a prevenção reativa, que é a mais comum. Nela toda na verdade se trata da degradação gradual da sua decisão é tomada somente quando ocorre algo errado no performance. Ao longo do tempo, esse processo de sistema. Assim que a aplicação entra em um estado de envelhecimento pode deixar esse software em um estado inutilidade, queda ou perto disso, é tomada uma decisão, de inutilidade, tirando assim a necessidade dele. que pode ser desde rollbacks, até reiniciar o sistema, Segundo [8] e [9], existem várias causas que podem ordenar arquivos, ou alguma manutenção mais seria nas provocar e agravar esse processo de envelhecimento, funcionalidades. A segunda abordagem é a prevenção algumas delas são: proativa e preventiva, que como o próprio nome já diz, nela não espera que aconteça algo para tomar uma i. Vazamento de memória – Quando um sistema faz decisão. A cada momento, a situação atual do sistema é uso da memória, mas não verifica o “lixo” que visualizada para que se tome uma decisão adequada de deixa nela após o uso. Isso vem sendo mais acordo com a necessidade, evitando que o sistema entre atenuado com as linguagens de alto nível, tipo em um estado de queda. É nesse tipo de prevenção que Java, que possui na sua maquina virtual um faz parte o rejuvenescimento de software. Garbage Collection que faz o gerenciamento da memória; 3.2Estados do Sistema ii. Uso progressivo de discos de armazenamento – Quando um sistema está com todas suas funcionalidades Esse é um problema já praticamente inexistente ao máximo, atendendo completamente às necessidades e hoje em dia, devido o barateamento das unidades sem riscos de quedas, ele se encontra em um estado de armazenamento, mas já foi um ponto crítico estável. Mas nem sempre esse estado permanece, causas dos sistemas, que ocupavam espaço adversas já ditas anteriormente fazem com que o software continuamente com logs ou caches por exemplo; entre em um estado de provável falha. Nesse ponto ele ainda está funcionando, mas se consegue notar que algo, iii. Uso de estruturas e arquivos desatualizados – por mínimo que seja, está errado. Esse erro que pode ser Quando um sistema usa bibliotecas que estão tanto provocado pela implementação do próprio sistema desatualizadas ou arquivos que não existem mais em si, como do ambiente em que ele está envolvido. suporte para manutenção, por exempl;. A partir do estado de provável falha, caso nada seja feito, iv. Erros de arredondamento numérico em excesso – só existe um caminho a seguir: que é o caminho da São erros que aparentam ser simples, mas simples queda. Agora o sistema já está indisponível, não existe erros de cálculos podem levar a aplicação a um mais nada a fazer que não seja parar tudo e fazer a estado de falha. manutenção, voltando a um estado estável novamente e iniciando o ciclo.
  • 6. rejuvenescimento. Mas como o custo de uma queda planejada é muito menor que o custo de uma queda não planejada, então for definido como maior importância o custo e não o downtime, na grande maioria das vezes o rejuvenescimento freqüente vai ser adequado. 3.3Estudo de Caso Nesse trabalho, foi analisado como estudo de caso o Figura 6 – Software sem o rejuvenescimento Aplicativo CPD/RH, usado na Prefeitura Municipal de Aracaju e o setor de TIC como um todo. Esse sistema é De acordo com a Figura 6 pode-se ver o ciclo completo usado para gerar a folha de pagamento dos funcionários e do sistema sem o uso do rejuvenescimento, onde λ é a outras funcionalidades gerais da administração como: taxa de queda de um sistema. férias, décimo terceiro salário, adicionais, pensões, Quando um sistema entra em um estado de provável contra-cheques, relatórios e várias outras. falha, outro caminho pode ser feito. É ai que entra o rejuvenescimento. Pela Figura 7 pode-se ver a nova abordagem. Dessa vez um novo estado é criado, que é chamado estado de rejuvenescimento. É importante observar que tanto o estado de rejuvenescimento, quanto o estado de queda, o sistema estará fora de serviço. Mas a grande diferença é que no estado de rejuvenescimento, o sistema estará fora de uma maneira planejada. Figura 8 – Tela do sistema Aplicativo CPD/RH Ele foi feito por uma empresa terceirizada e desenvolvido em Visual Basic a partir de um contrato específico, onde teria garantia da manutenção do mesmo durante um período de 24 meses, fora os demais termos da Garantia Legal Tecnológica. Figura 7 – Software com o rejuvenescimento Existe também uma versão Web do mesmo sistema, O objetivo é tentar deixar o sistema no estado estável o chamado FolhaNET, onde acessa a mesma base de dados maior tempo possível. Segundo [8], algumas Oracle, mas não possui todas as funcionalidades da características são válidas observar: versão para desktop. O FolhaNET, no entanto, foi i. Quanto maior for a taxa de rejuvenescimento (r3), desenvolvido internamente pelos funcionários da menor será o tempo de queda do sistema prefeitura. (downtime); Após uma série de entrevistas, foi feita uma análise do ii. Quando menor for a taxa de rejuvenescimento sistema Aplicativo CPD/RH que resultou nas seguintes (r3), maior será o tempo de queda do sistema conclusões: (downtime); i. O tempo médio entre as ocorrências de falhas é iii. Quando o lambda (λ) for alto, o rejuvenescimento um mês; tem que ser mais freqüente; ii. Quando acontece uma falha inesperada, demora iv. Quando o lambda (λ) for alto, o aumento no em média 30 minutos para conseguir se rejuvenescimento causa um maior downtime. recuperar; A partir desse autômato mostrado na Figura 7, em [8] é iii. O tempo que o sistema sai do estado estável e mostrado como calcular as probabilidades de alcançar entra em um estado de provável falha são sete cada estado separadamente. dias; Definindo como Pf com a probabilidade de alcançar o iv. Leva 10 minutos para fazer o rejuvenescimento, estado de falha, Pr a probabilidade de alcançar o estado ou seja, se recuperar de um erro esperado; de rejuvenescimento e L o tempo total que deve ser v. O custo médio do sistema fora do ar de maneira analisado, temos o tempo de queda total (downtime) do imprevista é R$ 5000 por hora; sistema por: vi. O custo médio do rejuvenescimento é R$ 5 por Downtime = (Pf + Pr) * L hora. Também é possível calcular a partir do downtime, o custo Seguindo a mesma base de cálculos fornecida por [8], total da manutenção. Tendo como Cf o custo caso ocorra chegamos à seguinte tabela: uma queda não planejada e como Cr o custo do sistema em estado de rejuvenescimento (queda planejada), temos o custo total como: Custo = (Pf*Cf+Pr*Cr)*L É importante observar que podem existir casos em que o downtime do sistema usando rejuvenescimento é maior que o downtime dele caso não fosse feito o
  • 7. iv. Sistemas que terão um maior tempo de vida. Sem Uma vez por Uma vez a rejuvenescimento mês cada duas E como desvantagem: semanas i. Alto custo de desenvolvimento, se levar em conta Downtime somente a parte financeira e não a qualidade do 4,86 5,68 7,03 (em horas) produto; Custo total R$ 24.310 R$ 18.944 R$ 10.072 ii. Tempo de inoperabilidade (downtime), do downtime estatisticamente maior (na maioria dos casos), se Tabela 1 – Análise do sistema Aplicativo CPD/RH comparado aos sistemas que não passam pelo rejuvenescimento; De acordo com a Tabela 1, podemos analisar que o tempo que o sistema ficará fora do ar sem rejuvenescimento vai iii. Não se pode utilizar o rejuvenescimento em todo ser menor que o tempo que ele ficaria se fosse feito uma tipo de sistema, pois uma análise profunda vez por mês, que por sua vez seria ainda menor, do que se anterior deve ser feita. fosse feito uma vez a cada duas semanas. Na análise do estudo de caso, viu-se a importância do Como já foi dito anteriormente, se fosse analisar se deve rejuvenescimento no sistema Aplicativo CPD/RH, mas ou não serem feitas praticas constantes de foi concluído que nem sempre um custo mais baixo de rejuvenescimento nesse sistema baseando-se somente no manutenção significa um menor tempo de downtime. tempo downtime, vê-se facilmente que seria desvantagem Notou-se também a clara importância de uma política de o rejuvenescimento. Porém se for analisar o custo que o gerenciamento de projetos no setor de TIC da Prefeitura sistema teria, pois a queda imprevista é muito mais cara Municipal de Aracaju e a conclusão foi que o Project do que uma queda prevista (rejuvenescer), vê-se que o Office, se aplicado, poderia atender a essa falha no setor. rejuvenescimento tem mais vantagem. Também políticas de rejuvenescimento aplicadas a esses A partir disso vem o questionamento se prioriza o custo sistemas reduziriam o custo e conseqüentemente ou o downtime. A resposta disso é que a grande maioria aumentariam o seu tempo de vida. das organizações olha o custo como o fator mais 5.REFERÊNCIAS importante. Logo, no exemplo do estudo de caso proposto, concluímos que seria muito bom para a [1] Universidade Aberta. Rejuvenescimento de prefeitura se fossem aplicadas praticas de Software. 2007. Disponível em: rejuvenescimento no sistema Aplicativo CPD/RH. <http://www.moodle.univ- ab.pt/moodle/mod/glossary/print.php?id=2243&mode=& 3.3.1Aplicação do Project Office hook=ALL&sortkey=&sortorder=&offset=-10>. Acesso Analisando também um pouco mais do sistema em: 17 out. 2008. FolhaNET na situação em que se encontra o setor de TIC [2] SILVA, Nuno Alberto Pereira da. Rejuvenescimento na prefeitura, vimos que houve uma grande falha de de Aplicações: Uma experiência com software de administração e gerenciamento de projetos. seguros. Universidade do Minho, 2005. Disponível em: < O FolhaNET foi desenvolvido com o objetivo de aliviar http://repositorium.sdum.uminho.pt/handle/1822/5635 >. um pouco a demanda pelo Aplicativo CPD/RH, criando Acesso em: 17 out. 2008 assim funcionalidades repetidas, que só seriam acessadas [3] LABUTO, Gianncarla Cutini Barcellos. A gestão de pela Web. Mas a falta de uma política de gerenciamento Projetos e o Project Office. 2008. Disponível em: de projetos adequada, fez com que o sistema nunca <http://www.ietec.com.br/site/techoje/categoria/detalhe_a alcançasse um estado estável dentro da prefeitura. rtigo/103>. Acesso em: 17 out. 2008. Hoje em dia, tanto o Aplicativo CPD/RH, como o [4] VAIDYANATHAN, Kalyanaraman; TRIVEDI , FolhaNET possuem código difícil de manutenção, graves Kishor S. A Comprehensive Model for Software problemas nas suas funcionalidades e nem um nem outro Rejuvenation. 2005. Disponível em: < atende completamente às necessidades plenas propostas. http://ieeexplore.ieee.org/iel5/8858/31216/01453531.pdf Recomenda-se fortemente o inicio da prática do Project > Acesso em: 17 out. 2008. Office na prefeitura como uma forma de gerenciar esses [5] AVRITZER Alberto ;BONDI Andre; GROTTKE projetos. Isso poderá ser feito utilizando algumas das Michael ; TRIVEDI Kishor S. ; WEYUKER Elaine J. ferramentas propostas anteriormente (seção 3.8) e a Performance Assurance via Software Rejuvenation: equipe que ficará responsável por isso poderá administrar Monitoring, Statistics and Algorithms. 2006. o ciclo de rejuvenescimento desses softwares, sem nunca Disponível em: < eliminar a possibilidade do desenvolvimento de um novo http://ieeexplore.ieee.org/iel5/10881/34248/01633532.pdf sistema que resolva todos esses problemas. > Acesso em: 17 out. 2008. 4.CONSIDERAÇÕES FINAIS [6] MARCHIORO, Eliete. Um Estudo Sobre Após análise da prática de rejuvenescimento, tem-se Rejuvenescimento de Software em Servidores Web como principais vantagens encontradas: Apache. 2003. Disponível em: <http://www1.capes.gov.br/estudos/dados/2003/4100101 i. Sistemas sempre atuais, de acordo com as novas 0/002/2003_002_41001010025P2_Teses.pdf >. Acesso tecnologias; em: 17 out. 2008. ii. Sistemas com melhor manutenabilidade, baixo [7] BAUMOTTE, Ana Cláudia. Project Office: como custo de manutenção; vender essa idéia na sua organização. 2008. Disponível iii. Sistemas capazes de se adaptar facilmente à em: < novas tecnologias;
  • 8. http://www.pmimg.org.br/downloads/ProjectOffice.ppt> Acesso em: 17 out. 2008. [8] HUANG, Y.; KINTALA, C.; KOLETTIS, N.; FULTON, N.D. Software rejuvenation: analysis, module and applications, in: Proceedings of the 25th International Symposium on Fault-Tolerance Computing (FTCS-25), Pasadena, CA, USA, June 1995. [9] BOBBIO, A.; SERENO, M.; ANGLANO C., 2001. Fine grained software degradation models for optimal rejuvenation policies. Performance Evaluation [10] GARG, S.; PFENING, A.; PULIAFITO, A. ; TELEK, M.; TRIVEDI, K.S. Modelling and analysis of load and time-dependent software rejuvenation policies, in: Proceedings of the Third International Workshop on Performability Modeling of Computer and Communication Systems (PMCCS3), Bloomingdale, IL, September 1996, pp. 35–39. [11] GARG, S.; PFENING, A.; PULIAFITO, A. ; TELEK, M.; TRIVEDI, K.S. Analysis of software rejuvenation using Markov regenerative stochastic Petri net, in: Proceedings of the Sixth International Symposium on Software Reliability Engineering (ISSRE95), Toulouse, France, October 1995. [12] PIEKARSKI, Ana ElisaTozetto ; QUINÁIA, Marcos Antonio. Reengenharia de software: o que, por quê e como. 2000. Disponível em: < http://www.unicentro.br/editora/revistas/recen/v1n2/Reen genharia.pdf>. Acesso em: 29 nov. 2008. [13] ANQUETIL, Nicolas; OLIVEIRA, Káthia Marçal de. Processo de Redocumentação: Uma Necessidade. 2002. Disponível em: < http://www.ucb.br/prg/professores/anquetil/Publicacoes/s bqs02.doc>. Acesso em: 29 Mai. 2008. [14] WIKIPEDIA. Engenharia reversa de software. 2008. Disponível em: <http://pt.wikipedia.org/wiki/Engenharia_reversa>. Acesso em: 29 Mai. 2008 [15] WIKIPEDIA. Refatoração. 2008. Disponível em: <http://pt.wikipedia.org/wiki/Refatora%C3%A7%C3%A 3o>. Acesso em: 29 nov. 2008. [16] METEX. 2008. Disponível em: < http://www.metex.com>. Acesso em: 29 nov. 2008. [17] LEGACYJ. 2008. Disponível em: <http://www.legacyj.com>. Acesso em: 29 nov. 2008. [18] NETEXPRESS. 2008. Disponível em: < http://www.microfocus.com/products/netexpress>. Acesso em: 29 nov. 2008.