Grupo:  Eduardo Dória Bruno Lins Marcus Vinicius Diego Calasans
O rejuvenescimento de software tem a finalidade de melhorar  a qualidade do software reduzindo os custos com sua manutenção.
Em quais tipos de sistemas deve-se utilizar o rejuvenescimento? Sistemas Legados Sistemas Críticos Surge da necessidade de se incluir uma nova funcionalidade em um sistema em que não é possível tal inclusão
Há diversas estratégias para tal:  Redocumentação  – efetuar uma análise do código, de forma a produzir documentação explicativa do código; Reestruturação /Refatoração – efetuar uma análise do código, de forma a reestruturar o código para uma estrutura mais eficiente; Engenharia reversa  – efetuar uma análise do código, de forma a gerar o modelo e especificações que lhe deram origem; Reengenharia  – A partir da engenharia reversa,  gerar novo modelo e novo código.
 
O custo de manutenção é muito alto? A confiabilidade do sistema é inaceitável? O sistema não pode mais se adaptar a mudanças adicionais dentro de um período de tempo razoável? O desempenho do sistema ainda está fora das restrições prescritas? As funções do sistema têm utilidade limitada? Outros sistemas fazem o mesmo trabalho melhor, mais rápido ou gerando menos custos? O custo de manutenção do hardware é muito alto, a ponto de justificar sua substituição por um hardware mais novo e mais  barato ?
Mudança contínua:  conduz a menos utilidade Aumento da complexidade:  estrutura se deteriora Lei fundamental de evolução do programa:  programa obedece estatisticamente a tendências e invariâncias determináveis
Corretiva:   mantém o controle sobre as funções do dia-a-dia do sistema Adaptativa:  mantém o controle sobre as modificações do sistema Perfectiva:   aperfeiçoa as funções aceitáveis já existentes Preventiva:   toma medidas preventivas para que o desempenho do sistema não diminua para níveis inaceitáveis
Entender o sistema Localizar informações na documentação do sistema Manter a documentação sistema atualizada Ampliar as funções existentes, a fim de incluir novos requisitos ou requisitos modificados Adicionar novas funções ao sistema Descobrir a fonte das falhas ou problemas do sistema
Localizar e corrigir defeitos Responder a questões sobre como o sistema funciona Reestruturar o projeto e os componentes do código Reescrever o projeto e os componentes do código Excluir o projeto e os componentes do código que não são mais úteis Gerenciar as mudanças que são feitas no sistema
 
Nova Funcionalidade Necessidade de implementação de uma nova funcionalidade ou alteração dos requisitos de uma funcionalidade já implementada Normalmente, o cliente identifica uma nova necessidade não atendida pelo sistema
Recolher histórias dos clientes Tem como objetivo identificar os requisitos da nova funcionalidade. São realizadas reuniões com os desenvolvedores e os clientes. Tem como resultado uma lista de requisitos que devem ser atendidos por essa nova funcionalidade.
Desenho (Design) Representação da nova funcionalidade através de modelos. Deve ser usada para a validação. Conseguir uma melhor percepção dos impactos do desenvolvimento de novas funcionalidades.
Escrita de Testes Descreve o comportamento esperado para a nova funcionalidade A especificação dos testes deve ser feita antes da codificação Ao iniciar a codificação, os testes serviram para o desenvolvedor saber o objetivo da nova funcionalidade
Codificação Codifica a nova funcionalidade uma linguagem de programação. O uso de padrões na codificação melhora a legibilidade no código e propõe soluções para problemas comuns. Normalmente, não se é usado padrões de codificação nas primeiras iterações. Refactoring
Execução de Testes Fase essencial no desenvolvimento de software Garante que o comportamento do sistema continua a funcionar de acordo com os seus requisitos
Produto Cada iteração termina com a geração de uma nova versão do sistema. Não deve ter um grande volume de alterações
A escolha depende da equipe e da instituição Redocumentação é fundamental O papeis do pessoal da equipe segue o mesmo modelo definido pela instituição e pela metodologia reengenharia X refatoração X rejuvenescimento X redocumentação
Automatiza completamente a reconstrução de softwares legados Gera código de alta qualidade Gera aplicações Java ou .NET Pode gerar aplicações pra WEB PowerBuilder, Oracle Forms, Forte, VB e Centura
 
Muitos sistemas legados nas instituições Solução: Fazer a migração usando software livre Não se tem certeza do sucesso dessas migrações Cada instituição tem seu plano de migração
Sistema aplicativo CPD/RH Prefeitura Municipal de Aracaju Visual Basic -> Power Object Implantado em 01/08/2000 FolhaNET implementa algumas funcionalidades Serviços de manutenção: Garantia Legal Tecnológica
 
Suporte técnico de manutenção, modalidade Garantia e Tecnológica (GLT) Atualização do sistema para o atendimento das exigências ou modificações na legislação federal, estadual ou municipal Fornecimento de novas versões dos sistemas desenvolvidos visando o aperfeiçoamento operacional Atendimento de chamados com análise, diagnóstico e encaminhamento de solução de problemas Agilização dos atendimentos a partir do Serviço de Tele suporte Correção de eventuais erros nos softwares (garantia de funcionamento)
Suporte técnico de Manutenção, modalidade Assessoria Operacional Treinamento de uso Migração do Sistema contratado em caso de expansão Personificação (Adequação do Sistema as características da Prefeitura Municipal de Aracaju) Atendimento de chamados com análise, diagnóstico e encaminhamento de solução de problemas (in loco) Acompanhamento de processamentos, inspeção e verificação de relatórios de fechamento Serviços de conversão e recuperação de dados Monitoramento da integridade dos Bancos de Dados Inclusão de novas funções, relatórios ou consultas
 
Problemas: Sistema antigo e ruim de fazer manutenção Regras de negócio desatualizadas e com problemas Contrato com a empresa não foi renovado Soluções: Transferir a maioria das funcionalidade para o FolhaNET Re-implementar outro software desktop moderno
Refazer sistemas críticos ou complexos Maior facilidade na manutenção Reaproveitamento de funcionalidades confiáveis Tempo  de desenvolvimento maior
Na área de TI, as mudanças tem sido cada vez mais constantes. Aumento no número de projetos e com complexidades cada vez maiores. A empresa precisa manter bem organizado o controle sobre os seus projetos.
Surgimento dos Project Offices Desejo de melhorar a taxa de sucesso de projetos, que continuamente se tornam mais complexos Necessidade de aliviar o gerente de projetos de tarefas administrativas associadas ao gerenciamento de um projeto.
É uma área da empresa que possui a visão de todos os projetos. Tem como objetivos: Melhoria da eficiência no planejamento e condução dos projetos Informação rápida sobre os projetos existentes Auxílio nas decisões a serem tomadas sobre o futuro de cada projeto
Padronização de uma metodologia Define uma ferramenta e métodos de controle e acompanhamento dos projetos. Manter essas ferramentas e métodos atualizados e adaptados às necessidades da empresa Realizar o treinamento dos funcionários e mantê-los atualizados na metodologia e ferramentas
Avaliação dos recursos de projetos São analisados todos os recursos do projeto: Humano Financeiro Tempo Material É importante para a análise de desempenho dos projetos e a priorização dos mesmos.
Planejamento de Projetos Tem como objetivo manter cada projeto organizado, priorizado, distribuído em áreas e devidamente documentado  É possível se obter também dados históricos que auxiliam a elaboração de novos planos.
Gerenciamento de Projetos Definir melhores práticas de trabalho para facilitar o gerenciamento Revisão e Análise de Projetos Constante revisão das atividades Custo e prazo Impactos no desempenho
Universidade Aberta.  Rejuvenescimento de Software  .  Disponível em: <http://www.moodle.univ-ab.pt/moodle/mod/glossary/print.php?id=2243&mode=&hook=ALL&sortkey=&sortorder=&offset=-10>. Acesso em: 17 out. 2008. SILVA, Nuno Alberto Pereira da .  Rejuvenescimento de Aplicações: Uma experiência com software de seguros.  Universidade do Minho, 2005. Disponível em: < http://repositorium.sdum.uminho.pt/handle/1822/5635 >. Acesso em: 17 out. 2008 LABUTO, Gianncarla Cutini Barcellos .  A gestão de Projetos e o Project Office.  Disponível em: <http://www.ietec.com.br/site/techoje/categoria/detalhe_artigo/103>.  Acesso em: 17 out. 2008. VAIDYANATHAN, Kalyanaraman; TRIVEDI , Kishor S .  A Comprehensive Model for Software Rejuvenation,  2005. Disponivel em: < http://ieeexplore.ieee.org/iel5/8858/31216/01453531.pdf > Acesso em: 17 out. 2008. AVRITZER Alberto ;BONDI Andre; GROTTKE Michael ; TRIVEDI  Kishor S. ; WEYUKER Elaine J .  Performance Assurance via Software Rejuvenation: Monitoring, Statistics and Algorithms,  2006. Disponivel em: < http://ieeexplore.ieee.org/iel5/10881/34248/01633532.pdf> Acesso em: 17 out. 2008. MARCHIORO, Eliete.  UM ESTUDO SOBRE REJUVENESCIMENTO DE SOFTWARE EM SERVIDORES WEB APACHE , 2003.  Disponivel em: <http://www1.capes.gov.br/estudos/dados/2003/41001010/002/2003_002_41001010025P2_Teses.pdf >. Acesso em: 17 out. 2008.
BAUMOTTE, Ana Cláudia .  Project Office: como vender essa idéia na sua organização.  Disponível em: < http://www.pmimg.org.br/downloads/ProjectOffice.ppt> Acesso em: 17 out. 2008.

Rejuvenescimento Software

  • 1.
    Grupo: EduardoDória Bruno Lins Marcus Vinicius Diego Calasans
  • 2.
    O rejuvenescimento desoftware tem a finalidade de melhorar a qualidade do software reduzindo os custos com sua manutenção.
  • 3.
    Em quais tiposde sistemas deve-se utilizar o rejuvenescimento? Sistemas Legados Sistemas Críticos Surge da necessidade de se incluir uma nova funcionalidade em um sistema em que não é possível tal inclusão
  • 4.
    Há diversas estratégiaspara tal: Redocumentação – efetuar uma análise do código, de forma a produzir documentação explicativa do código; Reestruturação /Refatoração – efetuar uma análise do código, de forma a reestruturar o código para uma estrutura mais eficiente; Engenharia reversa – efetuar uma análise do código, de forma a gerar o modelo e especificações que lhe deram origem; Reengenharia – A partir da engenharia reversa, gerar novo modelo e novo código.
  • 5.
  • 6.
    O custo demanutenção é muito alto? A confiabilidade do sistema é inaceitável? O sistema não pode mais se adaptar a mudanças adicionais dentro de um período de tempo razoável? O desempenho do sistema ainda está fora das restrições prescritas? As funções do sistema têm utilidade limitada? Outros sistemas fazem o mesmo trabalho melhor, mais rápido ou gerando menos custos? O custo de manutenção do hardware é muito alto, a ponto de justificar sua substituição por um hardware mais novo e mais barato ?
  • 7.
    Mudança contínua: conduz a menos utilidade Aumento da complexidade: estrutura se deteriora Lei fundamental de evolução do programa: programa obedece estatisticamente a tendências e invariâncias determináveis
  • 8.
    Corretiva: mantém o controle sobre as funções do dia-a-dia do sistema Adaptativa: mantém o controle sobre as modificações do sistema Perfectiva: aperfeiçoa as funções aceitáveis já existentes Preventiva: toma medidas preventivas para que o desempenho do sistema não diminua para níveis inaceitáveis
  • 9.
    Entender o sistemaLocalizar informações na documentação do sistema Manter a documentação sistema atualizada Ampliar as funções existentes, a fim de incluir novos requisitos ou requisitos modificados Adicionar novas funções ao sistema Descobrir a fonte das falhas ou problemas do sistema
  • 10.
    Localizar e corrigirdefeitos Responder a questões sobre como o sistema funciona Reestruturar o projeto e os componentes do código Reescrever o projeto e os componentes do código Excluir o projeto e os componentes do código que não são mais úteis Gerenciar as mudanças que são feitas no sistema
  • 11.
  • 12.
    Nova Funcionalidade Necessidadede implementação de uma nova funcionalidade ou alteração dos requisitos de uma funcionalidade já implementada Normalmente, o cliente identifica uma nova necessidade não atendida pelo sistema
  • 13.
    Recolher histórias dosclientes Tem como objetivo identificar os requisitos da nova funcionalidade. São realizadas reuniões com os desenvolvedores e os clientes. Tem como resultado uma lista de requisitos que devem ser atendidos por essa nova funcionalidade.
  • 14.
    Desenho (Design) Representaçãoda nova funcionalidade através de modelos. Deve ser usada para a validação. Conseguir uma melhor percepção dos impactos do desenvolvimento de novas funcionalidades.
  • 15.
    Escrita de TestesDescreve o comportamento esperado para a nova funcionalidade A especificação dos testes deve ser feita antes da codificação Ao iniciar a codificação, os testes serviram para o desenvolvedor saber o objetivo da nova funcionalidade
  • 16.
    Codificação Codifica anova funcionalidade uma linguagem de programação. O uso de padrões na codificação melhora a legibilidade no código e propõe soluções para problemas comuns. Normalmente, não se é usado padrões de codificação nas primeiras iterações. Refactoring
  • 17.
    Execução de TestesFase essencial no desenvolvimento de software Garante que o comportamento do sistema continua a funcionar de acordo com os seus requisitos
  • 18.
    Produto Cada iteraçãotermina com a geração de uma nova versão do sistema. Não deve ter um grande volume de alterações
  • 19.
    A escolha dependeda equipe e da instituição Redocumentação é fundamental O papeis do pessoal da equipe segue o mesmo modelo definido pela instituição e pela metodologia reengenharia X refatoração X rejuvenescimento X redocumentação
  • 20.
    Automatiza completamente areconstrução de softwares legados Gera código de alta qualidade Gera aplicações Java ou .NET Pode gerar aplicações pra WEB PowerBuilder, Oracle Forms, Forte, VB e Centura
  • 21.
  • 22.
    Muitos sistemas legadosnas instituições Solução: Fazer a migração usando software livre Não se tem certeza do sucesso dessas migrações Cada instituição tem seu plano de migração
  • 23.
    Sistema aplicativo CPD/RHPrefeitura Municipal de Aracaju Visual Basic -> Power Object Implantado em 01/08/2000 FolhaNET implementa algumas funcionalidades Serviços de manutenção: Garantia Legal Tecnológica
  • 24.
  • 25.
    Suporte técnico demanutenção, modalidade Garantia e Tecnológica (GLT) Atualização do sistema para o atendimento das exigências ou modificações na legislação federal, estadual ou municipal Fornecimento de novas versões dos sistemas desenvolvidos visando o aperfeiçoamento operacional Atendimento de chamados com análise, diagnóstico e encaminhamento de solução de problemas Agilização dos atendimentos a partir do Serviço de Tele suporte Correção de eventuais erros nos softwares (garantia de funcionamento)
  • 26.
    Suporte técnico deManutenção, modalidade Assessoria Operacional Treinamento de uso Migração do Sistema contratado em caso de expansão Personificação (Adequação do Sistema as características da Prefeitura Municipal de Aracaju) Atendimento de chamados com análise, diagnóstico e encaminhamento de solução de problemas (in loco) Acompanhamento de processamentos, inspeção e verificação de relatórios de fechamento Serviços de conversão e recuperação de dados Monitoramento da integridade dos Bancos de Dados Inclusão de novas funções, relatórios ou consultas
  • 27.
  • 28.
    Problemas: Sistema antigoe ruim de fazer manutenção Regras de negócio desatualizadas e com problemas Contrato com a empresa não foi renovado Soluções: Transferir a maioria das funcionalidade para o FolhaNET Re-implementar outro software desktop moderno
  • 29.
    Refazer sistemas críticosou complexos Maior facilidade na manutenção Reaproveitamento de funcionalidades confiáveis Tempo de desenvolvimento maior
  • 30.
    Na área deTI, as mudanças tem sido cada vez mais constantes. Aumento no número de projetos e com complexidades cada vez maiores. A empresa precisa manter bem organizado o controle sobre os seus projetos.
  • 31.
    Surgimento dos ProjectOffices Desejo de melhorar a taxa de sucesso de projetos, que continuamente se tornam mais complexos Necessidade de aliviar o gerente de projetos de tarefas administrativas associadas ao gerenciamento de um projeto.
  • 32.
    É uma áreada empresa que possui a visão de todos os projetos. Tem como objetivos: Melhoria da eficiência no planejamento e condução dos projetos Informação rápida sobre os projetos existentes Auxílio nas decisões a serem tomadas sobre o futuro de cada projeto
  • 33.
    Padronização de umametodologia Define uma ferramenta e métodos de controle e acompanhamento dos projetos. Manter essas ferramentas e métodos atualizados e adaptados às necessidades da empresa Realizar o treinamento dos funcionários e mantê-los atualizados na metodologia e ferramentas
  • 34.
    Avaliação dos recursosde projetos São analisados todos os recursos do projeto: Humano Financeiro Tempo Material É importante para a análise de desempenho dos projetos e a priorização dos mesmos.
  • 35.
    Planejamento de ProjetosTem como objetivo manter cada projeto organizado, priorizado, distribuído em áreas e devidamente documentado É possível se obter também dados históricos que auxiliam a elaboração de novos planos.
  • 36.
    Gerenciamento de ProjetosDefinir melhores práticas de trabalho para facilitar o gerenciamento Revisão e Análise de Projetos Constante revisão das atividades Custo e prazo Impactos no desempenho
  • 37.
    Universidade Aberta. Rejuvenescimento de Software . Disponível em: <http://www.moodle.univ-ab.pt/moodle/mod/glossary/print.php?id=2243&mode=&hook=ALL&sortkey=&sortorder=&offset=-10>. Acesso em: 17 out. 2008. SILVA, Nuno Alberto Pereira da . Rejuvenescimento de Aplicações: Uma experiência com software de seguros. Universidade do Minho, 2005. Disponível em: < http://repositorium.sdum.uminho.pt/handle/1822/5635 >. Acesso em: 17 out. 2008 LABUTO, Gianncarla Cutini Barcellos . A gestão de Projetos e o Project Office. Disponível em: <http://www.ietec.com.br/site/techoje/categoria/detalhe_artigo/103>. Acesso em: 17 out. 2008. VAIDYANATHAN, Kalyanaraman; TRIVEDI , Kishor S . A Comprehensive Model for Software Rejuvenation, 2005. Disponivel em: < http://ieeexplore.ieee.org/iel5/8858/31216/01453531.pdf > Acesso em: 17 out. 2008. AVRITZER Alberto ;BONDI Andre; GROTTKE Michael ; TRIVEDI Kishor S. ; WEYUKER Elaine J . Performance Assurance via Software Rejuvenation: Monitoring, Statistics and Algorithms, 2006. Disponivel em: < http://ieeexplore.ieee.org/iel5/10881/34248/01633532.pdf> Acesso em: 17 out. 2008. MARCHIORO, Eliete. UM ESTUDO SOBRE REJUVENESCIMENTO DE SOFTWARE EM SERVIDORES WEB APACHE , 2003. Disponivel em: <http://www1.capes.gov.br/estudos/dados/2003/41001010/002/2003_002_41001010025P2_Teses.pdf >. Acesso em: 17 out. 2008.
  • 38.
    BAUMOTTE, Ana Cláudia. Project Office: como vender essa idéia na sua organização. Disponível em: < http://www.pmimg.org.br/downloads/ProjectOffice.ppt> Acesso em: 17 out. 2008.