• Nenhum resultado encontrado

Aula11-EvolucaodeSoftware

N/A
N/A
Protected

Academic year: 2021

Share "Aula11-EvolucaodeSoftware"

Copied!
35
0
0

Texto

(1)

Introdução à Engenharia de

Software – Aula 11

(2)

Roteiro

Mutabilidade de Software

Importância da Evolução

A Dinâmica da Evolução

Manutenção de Software

Manutenibilidade

Desenvolvimento x Manutenção

Predição do Grau de Manutenção

Processo de Evolução

Reengenharia

Reengenharia x Engenharia Custos da Reengenharia

(3)

Mutabilidade de Software

Depois de implantado software tende a mudar

Uma das características essenciais de software é a mutabilidade, segundo Brooks [Brooks 1995]

As razões para estas mudanças envolvem...

Novos requisitos

Mudanças em requisitos existentes Correção de erros

Adaptação a novas plataformas

(4)

Importância da Evolução

Organizações investem muito no desenvolvimento de

um software

Muitos destes sistemas são críticos para o negócio da

organização

Estes sistemas precisam ser mantidos e evoluídos

Exemplos

Sistema de controle de vôos Sistema de controle bancário

(5)

A Dinâmica da Evolução

Existem algumas leis que regem a evolução de

software...

● Conhecidas como leis de Lehman

Mudança contínua

Um programa que é usado em um ambiente real necessariamente mudará ou se tornará progressivamente menos útil em tal ambiente

Constante aumento de complexidade

Conforme um software evolui, sua estrutura tende a ficar mais complexa → “degradação”

(6)

A Dinâmica da Evolução

Evolução de software de grande porte

A evolução é um processo que se auto-regula. Atributos como tamanho, tempo entre releases, e o número de erros reportados tende a ser invariante entre cada release

Estabilidade organizacional

Durante o ciclo de vida de um software, seu grau de desenvolvimento é aproximadamente constante e independente dos recursos devotados para seu desenvolvimento

(7)

A Dinâmica da Evolução

Conservação da familiaridade

Durante o ciclo de vida de um software, a mudança incremental em cada release é aproximadamente constante

Crescimento contínuo

Deve-se aumentar continuamente a funcionalidade oferecida por sistemas para manter a satisfação do usuário

Declínio da qualidade

A qualidade dos sistemas parecerá diminuir a menos que sejam adaptados a mudanças em seus ambientes operacionais

(8)

Manutenção de Software

Qual

a

diferença

entre

manutenção e evolução?

Tipos de manutenção de software

Corretiva

● Emergencial

Preventiva Adaptativa

(9)

Manutenibilidade

(10)

Manutenibilidade

O que significa mesmo?

“Capacidade do produto de software de ser modificado. Modificações podem incluir correções, melhorias ou adaptações do software a mudanças no ambiente, e nos requisitos e em especificações funcionais” [ISO/IEC 9126-1]

Qual a importância de fazer design pensando na

manutenção?

Manutenção Desenvolvimento

Sistema 1

(11)

Desenvolvimento x Manutenção

Estabilidade da equipe e responsabilidade contratual

Nem sempre a equipe que desenvolveu é a que manterá Nem sempre a organização que desenvolveu é a que manterá

Falta de incentivo para desenvolver software manutenível “Economia” no desenvolvimento

Habilidades da equipe

Inexperiência com o domínio de aplicação

Manutenção é vista como menos desafiadora

Sistemas antigos foram desenvolvidos em linguagens que muitas vezes já são obsoletas

Problemas de se ver desenvolvimento como atividade separada da manutenção!

(12)

Desenvolvimento x Manutenção

Exemplos de princípios POG associados a manutenção

Deixe o amanhã para amanhã - Muitos programadores

atrasam projetos alegando que a demora de uma implementação para seguirem regras de design patterns ou comentários que ajudarão a outros entender melhor o código. Deixe o amanhã para o otário programador seguinte.

Comentários são para amadores - Um desenvolvedor

deve ser treinado para ser fluente na linguagem de programação usada sem precisar de comentários, independente da conseqüente ruína de sua vida social. Isso também é conhecido como sétimo sentido.

(13)

Desenvolvimento x Manutenção

Mais exemplos de princípios POG associados a

manutenção

Eficiência primeiro - Evite escrever em várias linhas o

que pode ser feito em uma.

1337 h4x0r5 dud3 lol - Quanto mais ilegível, mais

respeitado o código é. Conseqüentemente menos alterado ele é, e mais estável o sistema fica, garantindo a empregabilidade do gambiarrizador.

(14)

Desenvolvimento x Manutenção

Idade e estrutura do software

A mudança tende a degradar a estrutura do software

Otimização geralmente visa outras características no lugar da manutenibilidade

Documentação pode não existir ou ser desatualizada

Desenvolvimento de sistemas antigos pode não ter feito uso de boas práticas

● Exemplo: Gerência de Configuração

Existem técnicas para lidar com esta “degradação”...

(15)

Predição do Grau de Manutenção

Quais partes do sistema possivelmente serão

mais afetadas por pedidos de mudança?

Quantos pedidos de mudança podem

ser esperados?

Quais partes do sistema serão mais caras de se

manter?

Quais serão os custos de manutenção deste

sistema?

Quais são os custos de manutenção deste sistema

no ano seguinte? Prever mudanças no sistema Prever custos de manutenção Prever custos manutenibilidade

(16)

Predição do Grau de Manutenção

Prever o grau de mudanças que serão solicitadas

envolve entender o relacionamento do software com seu

ambiente

Número e complexidade de interfaces do sistema Número de requisitos inerentemente voláteis

Processos de negócio para os quais o sistema é usado

Métricas de manutenibilidade

Número de requisições de manutenção corretiva Tempo médio requerido para análise de impacto

Tempo médio requerido para implementar um pedido de mudança

(17)

Processo de Evolução

Pedido de

Mudança Análise deImpacto Planejamentode Releases Implementaçãoda Mudança Release doSistema

Reparo de

Erro Adaptação dePlataforma Reparo de

(18)

Processo de Evolução

Pedidos de mudança podem ter que ser atendidos

urgentemente em alguns casos

Se uma falha grave de sistema ocorrer

● A fim de permitir a operação normal ser retomada

Se mudanças no ambiente operacional tiverem impacto inesperado na operação normal do sistema

(19)

Processo de Evolução

Estas mudanças emergenciais podem inibir a análise

inicial de impacto

A mudança deve ser implementada rapidamente!

Riscos associados a este comportamento

Desatualização da documentação Uso de gambiarras

(20)

Reengenharia

A reengenharia de software envolve tornar sistemas

legados mais manuteníveis

O objetivo é tornar estes sistemas mais fáceis de serem modificados

Pode envolver...

Re-documentar o sistema

Organizar e reestruturar o sistema

Traduzir o sistema para uma linguagem mais moderna Modificar e atualizar as estruturas e valores de dados

Um ponto importante é que a funcionalidade não é

(21)

Reengenharia

Possíveis atividades de reengenharia são:

Tradução do código-fonte Engenharia reversa

Melhoria da estrutura do software Modularização do software

(22)

Reengenharia x Engenharia

Especificação do Sistema Design e Implementação Novo Sistema Sistema Reengenheirado Compreensão e Transformação Sistema Existente Engenharia Direta Reengenharia de Software ●

Vantagens da reengenharia

Menores riscos Menores custos

(23)

Custos da Reengenharia

Os principais fatores que afetam o custo de fazer

reengenharia são:

A qualidade do software original

A disponibilidade de ferramentas para apoiar A extensão da conversão de dados necessária

A disponibilidade de especialistas que conheçam o sistema

(24)

Evolução de Sistemas Legados

Sistema legado → sistema antigo, mas que ainda

fornece serviços essenciais para uma organização

Estratégias para evolução de sistemas legados

Descartar o sistema completamente

Deixar o sistema inalterado e continuar com a manutenção regular

Fazer reengenharia do sistema para melhorar sua manutenibilidade

Substituir todo ou partes do sistema com um novo sistema

Equilíbrio entre o valor do sistema para o negócio e sua

(25)

Evolução de Sistemas Legados

Estudo de caso: Sistema de Gerenciamento de

Tripulação da Comair (empresa aérea americana)

Desenvolvido por uma empresa chamada SBS

Quando Eric Bardes entrou para a área de TI da

empresa em 1997, a primeira reunião que participou era

para discutir a substituição do sistema

O sistema já estava na empresa há 11 anos

Era escrito em Fortran (que ninguém na empresa dominava mais)

Era o único sistema que ainda rodava na plataforma IBM AIX

(26)

Evolução de Sistemas Legados

A SBS tentou vender um outro software que haviam

desenvolvido

Um dos supervisores não gostava deste software

Resolveram esperar por um substituto melhor, afinal...

● Todos usuários já estavam adaptados ao uso do sistema

existente

● Muitos dos processos de negócio da empresa haviam

sido gerados a partir do sistema existente

Esperaram...

No meio do caminho aconteceram várias ocorrências que desviaram a atenção da substituição do sistema

(27)

Evolução de Sistemas Legados

Mas a substituição não ocorreu a tempo de evitar

perdas

O sistema legado falhou na época dos feriados de Natal Parou toda a companhia aérea

Houve cancelamentos e atrasos de cerca de 3900 vôos Afetou mais de 200.000 passageiros

Prejuízos de cerca de $20 milhões + danos à imagem da empresa + investigação do Departamento de Transportes

(28)

Evolução de Sistemas Legados

“Chances are, the whole mess could have been

avoided if Comair or Delta had done a comprehensive

analysis of the risk that this critical system posed to the

airline’s daily operations and had taken steps to

mitigate that risk”

“But a look inside Comair reveals that senior executives

there did not consider a replacement system an

urgent priority, and IT did little to disrupt that sense

of complacency”

(29)

Evolução de Sistemas Legados

Alto valor para o negócio

Baixa qualidade Alto valor para o negócio Alta qualidade

Baixo valor para o negócio Alta qualidade

Baixo valor para o negócio Baixa qualidade Qualidade do sistema V alo r de Ne góc io

(30)

Evolução de Sistemas Legados

Alto valor para o negócio

Baixa qualidade Alto valor para o negócio Alta qualidade

Baixo valor para o negócio Alta qualidade

Baixo valor para o negócio Baixa qualidade Qualidade do sistema V alo r de Ne góc io Manter o sistema em operação! Manter o sistema em operação? Você que sabe! Descartar!

Fazer

reengenharia ou substituir!

(31)

Evolução de Sistemas Legados

Questões a considerar para determinar o valor de

negócio de um sistema:

Uso do sistema

Processos de negócio apoiados Confiabilidade do sistema

Os resultados/saídas do sistema

Questões a considerar para determinar a qualidade de

sistema envolvem:

O ambiente em que o sistema opera As características do sistema

(32)

Evolução de Sistemas Legados

Fatores do ambiente que afetam a avaliação de

qualidade

Estabilidade do fornecedor (mantenedor do software) Taxa de falhas do hardware e do software de apoio Idade do hardware e do software de apoio

Desempenho do sistema

Requisitos e custo de suporte

Custos de manutenção de hardware e de software de apoio

Interoperabilidade

● Exs.: compiladores que não funcionam com as versões

atuais do Sistema Operacional; necessidade de emular hardware

(33)

Evolução de Sistemas Legados

Características do sistema que afetam a avaliação de

qualidade

Compreensibilidade do sistema

Documentação completa, consistente e atualizada Existência de um modelo de dados do sistema

Consistência dos dados e pouca ou nenhuma duplicação Desempenho do sistema adequado

Linguagem de programação

Gerência de configuração dos itens que compõem o sistema

Dados de teste disponíveis

(34)

Evolução de Sistemas Legados

Exemplos de indicadores da qualidade de um sistema

Número de requisições de mudança no sistema Número de interfaces com o usuário

(35)

Referências

Sommerville, I. (2007) Software Engineering. Oitava Edição. Addison-Wesley

Brooks Jr, F. P. (1995) The Mythical Man-Month: Essays on Software Engineering. Edição de Aniversário. Addison-Wesley

http://desciclo.pedia.ws/wiki/POG

http://www.cio.com/article/112103/Comair_s_Christmas_Disaster_ Bound_To_Fail?page=1

Referências

Documentos relacionados

Indices (1) to verify the agreement between soil depth values where penetration resistance is equal to 1.5 MPa, based on the proposed penetrometer (Hatô) and the

Nos dois primeiros animais do presente relato, os sinais clínicos foram discretos e mais associados às doenças concomitantes, o que dificultou a inclusão da dirofilariose

CAPÍTULO XIII DIREITO PROCESSUAL PENAL .... Alegação de Constrangimento

Aqui indica-se um programa de monitoramento, com base nos indicadores previamente estabelecidos no plano de gestão. Estas informações necessitam-se ser avaliadas, tanto

–  gerência do grupo –  restrições de ordenação •  outros –  espaços de tuplas –  sistemas pub/sub –  ..... Grupos

Essa apostila confeccionada na Agência Escola UNIMEP, do Curso de Publicidade e Propaganda e teve a aplicação da Identidade visual do Projeto. Esse material foi distribuído para

Após 90 dias da semeadura (primeiro subcultivo), protocormos com um par de folíolos foram selecionadas visualmente, mantendo um padrão de altura de cerca de dois milímetros

Com o fomento de políticas voltadas o contexto da Língua de Sinais nos cursos de Ensino Superior tem como fator de observação a prática docente e o uso de