Tees Final

61
Grupo: Eduardo Dória Bruno Lins Marcus Vinicius Diego Calasans

Transcript of Tees Final

Page 1: Tees Final

Grupo: Eduardo DóriaBruno LinsMarcus ViniciusDiego Calasans

Page 2: Tees Final

“Até hoje, o foco da literatura vai no sentido de se ensinar a criar grandes soluções arquiteturais de software, no entanto, e cada vez mais, as necessidades de hoje e amanhã vão no sentido de se ser capaz de evoluir de sistemas existentes, ou legados, para grandes soluções.“

Joshua Kerievsky

Page 3: Tees Final

Software desestruturado› Não obedece padrões

Ausência de separação entre camadas› Não possui arquitetura definida

Código “Spagheti”› Ausência de modularização

Page 4: Tees Final

Termo “Software Rejuvenation” citado pela primeira vez em Junho 1995 por Huang no 25th International Symposium on Fault-Tolerance Computing, USA.

“Software rejuvenation is periodic preemptive rollback of continuously running applications to prevent failures in the future”

Page 5: Tees Final

Evolução de diversos paradigmas relativos à Engenharia de Software

Capacidade de se adaptar às constantes necessidades

Condicionada pela base tecnológica

Page 6: Tees Final

Características necessárias para um código saudável:› Grau de reutilização do código› Não duplicação do código› Testabilidade do código

Linguagens OO

Page 7: Tees Final

Maioria dos Sistemas Legados não utilizam OO

Sistema diz-se Legado quando surgem novos requisitos aos quais o mesmo não consegue responder de forma eficaz.

Intervenção de forma gradual

Page 8: Tees Final

• O rejuvenescimento de software tem a finalidade de melhorar a qualidade do software reduzindo os custos com sua manutenção.

• As técnicas mais utilizadas são:– Redocumentação– Reestruturação /Refatoração– Engenharia reversa– Reengenharia

Page 9: Tees Final

Importância da documentação

Custo de Manutenção

Rotatividade de profissionais

Page 10: Tees Final

Características básicas

› Baseado na engenharia reversa (código)

› Gerar documentação mínima necessária

› Buscar automatização quando possível

Page 11: Tees Final

Modificar um sistema de software para melhorar a estrutura interna do código sem alterar seu comportamento externo.

Melhora no entendimento do código

Testes automatizados

Page 12: Tees Final

Processo inverso da Engenharia de Software

Recuperar código-fonte

Exemplos de uso:› Cracks, Drivers, Samba (Linux)

Page 13: Tees Final

Partindo-se do sistema existente (via código-fonte, interface ou ambiente), são abstraídas as suas funcionalidades e são construídos o modelo de análise e o projeto do software.

Pode-se utilizar a engenharia reversa

Page 14: Tees Final

Relacionamentos no Ciclo de Desenvolvimento de Software (CHIKOFSKY e CROSS, 1990)

Page 15: Tees Final

Software sempre atual Boa manutenabilidade Adaptabilidade Reusabilidade Evitar queda do sistema

Page 16: Tees Final

Alto custo de desenvolvimento

DownTime maior na maioria dos casos

Não serve para todos os tipos de sistemas

Page 17: Tees Final

Processo de envelhecimento› Degradação gradual da sua eficiência, que

ao longo do tempo pode levar a um estado de inutilidade

Causas› Vazamento de memória› Uso progressivo de discos de

armazenamento› Uso de estruturas e arquivos

desatualizados› Muitos erros de arredondamento numérico

Page 18: Tees Final

O custo da queda imprevista de um software é muito maior do que uma “queda” curta e planejada

Aumenta o tempo de vida, trazendo muita economia

Page 19: Tees Final

Prevenção reativa› Vê se a aplicação falha e toma a medida

correta› Reiniciar, recuperar, rollback, reordenar,

replay

Prevenção proativa e preventiva› Rejuvenescimento de software› Diferentes maneiras de prevenção, que

minimiza os danos colaterais

Page 20: Tees Final

Modelo de transição do sistema sem o rejuvenescimento

Modelo de transição com o uso do rejuvenescimento

Page 21: Tees Final

Pf =

Downtimew/o r(L) = Pf * L

Costw/o r(L) = Pf * L * cf

2111

1

rrr

Page 22: Tees Final

24

34

111

rr

rr

r

Pr P*1

• Pp =

• Pf =

• Pr =

• P0 =

Prr P*34

Prr P*24

• Downtimew r(L) = (Pf + Pr) * L

• Costw r(L) = (Pf * cf + Pr * cr) * L

Page 23: Tees Final

O objetivo é manter no So o maior tempo possível

R3 alta -> menor tempo de queda (downtime)

R3 baixa -> maior tempo de queda (downtime)

Lambda alto-> rejuvenescimento mais frequente

Lambda baixo -> rejuvenescimento aumenta o downtime

Page 24: Tees Final

Tempo de falhas = 1 mês -> = 1/(1*30*24) Leva 30 min para recuperar um erro não

esperado; r1 = 2 Tempo So->Sp = 7 dias; r2 =1/(7*24) Leva 10 min para recuperar um erro

esperado (rejuvenescimento); r3 = 6 Custo médio do sistema fora do ar, cf, is

R$5,000/hora Custo medio do rejuvenescimento, cr, is

R$5/hora

Page 25: Tees Final

Sem rejuvenescimento

(r4 = 0)

Uma vez por mês

r4 = 1/(20*24)

Uma vez a cada duas semanas

r4 =1/(4*24)

Downtime (em horas) 4.86 5.68 7.03

Custo total do Downtime

R$ 24.310 R$ 18.944 R$ 10.072

Page 26: Tees Final

Um modelo baseado em caixa-preta Precisam ter os valores médios das

diferentes transições Não leva em conta a performance do

sistema

Page 27: Tees Final

Um intervalo de rejuvenescimento periódico e fixo

Usam redes de Petri para observar o comportamento do sistema

Não leva em conta a performance do sistema

Page 28: Tees Final

É possível identificar a performance do sistema de acordo com observações

O processo de degradação vem de uma seqüência sucessiva de falhas e quebras

Existe um parâmetro de observação que vai decidir se o sistema entrou em um estado de “crash”

Page 29: Tees Final

Dois critérios decidem:› O risco da decisão que precisa ser tomada

de modo que ocorrer um risco antes do rejuvenescimento seja inferior a um nível de risco premeditado

› Os alertas dos limiares baseados nos parâmetros (S(t) -> índice de degradação)

Page 30: Tees Final

Baseado na observação do comportamento do sistema em espaços iguais de tempo

Baseados na quantidade de falhas encontradas em um intervalo de tempo

Page 31: Tees Final

Regras para renovar o sistema antes que ele chegue num estado limiar

Dois tipos de políticas› Baseadas em riscos premeditados› Baseadas em alertas de limiares

Page 32: Tees Final

A escolha depende da equipe e da instituição

O papéis do pessoal da equipe seguem o mesmo modelo definido pela instituição e pela metodologia

Page 33: Tees Final

Micro Focus Net Express LegacyJ Metex

Page 34: Tees Final

Permite integração de aplicações escritas em COBOL com tecnologias baseadas em J2EE

Pouca ou nenhuma modificação no código

Permite utilização de EJB Permite Edição de código utilizando

ECLIPSE

Page 35: Tees Final

Moderniza aplicações legadas escritas em COBOL

Reutiliza códigos existentes para criar aplicações modernas

Expões aplicações COBOL como WEB Services

Torna uma aplicação COBOL compatível com Servidores JAVA

Compartilha dados de aplicações diferentes através de XML

Page 36: Tees Final

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 Não é apenas um migrador de código

Page 37: Tees Final

Transformação Reengenharia Documentação UML Migração de Banco de Dados Habilitação para WEB

Page 38: Tees Final

Revisão de arquitetura – Discussão com o cliente sobre a nova arquitetura;

Conversão automática de código – A ferramenta converte o código automaticamente;

Utilização de ferramentas avançadas para completar o código – Utilização de algumas ferramentas avançadas do Metex para completar a conversão;

Page 39: Tees Final

Teste de integração e Verificação – O Metex também oferece ferramentas para verificação e testes do código gerado;

Teste de aceitação de usuário – Ao final do processo é utilizado um rastreador de bugs online para correção de possíveis erros.

Page 40: Tees Final
Page 41: Tees Final

Disponibiliza a aplicação na WEB Move as funções do negócio para

dispositivos Wireless Maior competitividade Reduz custos operacionais

Page 42: Tees Final
Page 43: Tees Final
Page 44: Tees Final
Page 45: Tees Final

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

Page 46: Tees Final

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.

Page 47: Tees Final

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.

Page 48: Tees Final

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

Page 49: Tees Final

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

Page 50: Tees Final

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

Page 51: Tees Final

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

Page 52: Tees Final

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.

Page 53: Tees Final

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.

Page 54: Tees Final

É 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

Page 55: Tees Final

Padronização de uma metodologia› Defini 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

Page 56: Tees Final

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.

Page 57: Tees Final

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.

Page 58: Tees Final

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

Page 59: Tees Final

Y. Huang, C. Kintala, N. Kolettis, N.D. Fulton, Software rejuvenation: analysis, module and applications, in: Proceedings of the 25th International Symposium on Fault-Tolerance Computing (FTCS-25), Pasadena, CA, USA, June 1995.

Bobbio, A., M. Sereno and C. Anglano, 2001. Fine grained software degradation models for optimal rejuvenation policies. Performance Evaluation

S. Garg, A. Pfening, A. Puliafito, M. Telek, K.S. Trivedi, 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.

S. Garg, A. Puliafito, M. Telek, K.S. Trivedi, 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.

Page 60: Tees Final

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.

Page 61: Tees Final

• BAUMOTTE, Ana CláudiaBAUMOTTE, 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.

• PIEKARSKI, Ana ElisaTozetto ; QUINÁIA, Marcos Antonio. Reengenharia de software: o que, por quê e como. Disponível em: < http://www.unicentro.br/editora/revistas/recen/v1n2/Reengenharia.pdf>. Acesso em: 29 nov. 2008.

• ANQUETIL, Nicolas; OLIVEIRA, Káthia Marçal de. Processo de Redocumentação: Uma Necessidade. Disponível em: < http://www.ucb.br/prg/professores/anquetil/Publicacoes/sbqs02.doc>. Acesso em: 29 Mai. 2008.

• WIKIPEDIA. Engenharia reversa de software. Disponível em: <http://pt.wikipedia.org/wiki/Engenharia_reversa>. Acesso em: 29 Mai. 2008

• WIKIPEDIA. Refatoração. Disponível em: <http://pt.wikipedia.org/wiki/Refatora%C3%A7%C3%A3o>. Acesso em: 29 Mai. 2008.