Sie sind auf Seite 1von 45

Evoluo de Software

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 1

Objetivos

Explicar por que as mudanas so inevitveis para que os sistemas de software permanecam teis Discutir a manuteno de software e os fatores de custo de manuteno Descrever os processos envolvidos em evoluo de software Discutir uma abordagem para avaliao de estratgias de evoluo para sistemas legados

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 2

Tpicos abordados

Dinmica da evoluo de programas Manuteno de software Processo de evoluo Evoluo de sistemas legados

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 3

Mudana de software

Mudana de software inevitvel


Novos requisitos surgem quando o software usado; O ambiente de negcio muda; Erros devem ser reparados; Novos computadores e equipamentos so adicionados ao sistema; O desempenho ou a confiabilidade do sistema deve ser melhorada.

Um problema-chave para as organizaes a implementao e o gerenciamento de mudanas em seus sistemas.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 4

Importncia da evoluo

As organizaes fazem grandes investimentos em seus sistemas de software eles so ativos crticos de negcios. Para manter o valor desses ativos de negcio, eles devem ser mudados e atualizados. A maior parte do oramento de software nas grandes organizaes voltada para evoluo do software existente ao invs do desenvolvimento de um novo software.
Engenharia de Software, 8. edio. Captulo 21 Slide 5

Ian Sommerville 2006

Modelo espiral de evoluo

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 6

Dinmica da evoluo de programas

Dinmica de evoluo de programas o estudo dos processos de mudana de sistema. Aps muitos estudos empricos, Lehman e Belady propuseram que havia uma srie de leis que se aplicavam a todos os sistemas quando eles evoluiam. Existem observaes considerveis ao invs de leis. Elas so aplicveis a sistemas de grande porte desenvolvidos por grandes organizaes. Talvez menos aplicveis em outros casos.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 7

Leis de Lehman

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 8

Aplicabilidade das leis de Lehman

As leis de Lehman parecem ser, geralmente, aplicveis a sistemas customizados de grande porte desenvolvidos por grandes organizaes.
Confirmado em mais recente trabalho de Lehman sobre o projeto FEAST (veja leitura adicional no Website do livro)

No est claro como elas devem ser modificadas para


Produtos de software de prateleira; Sistemas que incorporam um nmero significativo de componentes COTS; Pequenas organizaes; Sistemas de tamanho mdio.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 9

Manuteno de software

a modificao de um programa aps ter sido colocado em uso. A manuteno normalmente no envolve mudanas considerveis na arquitetura do sistema. As mudanas so implementadas pela modificao de componentes existentes e pela adio de novos componentes ao sistema.
Engenharia de Software, 8. edio. Captulo 21 Slide 10

Ian Sommerville 2006

A manuteno inevitvel

Os requisitos de sistema podem mudar enquanto o sistema est sendo desenvolvido porque o ambiente est mudando. Portanto, um sistema entregue no atender a esses requisitos! Os sistemas esto fortemente acoplados ao seu ambiente. Quando um sistema instalado em um ambiente, ele muda esse ambiente e, portanto, muda os requisitos de sistema. Portanto, os sistemas DEVEM ser mantidos se forem teis em um ambiente.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 11

Tipos de manuteno

Manuteno para reparar defeitos de software


Mudana em um sistema para corrigir deficincias de maneira a atender aos seus requisitos.

Manuteno para adaptar o software a um ambiente operacional diferente


Mudana de um sistema de tal maneira que ele opere em um ambiente diferente (computador, OS, etc.) partir de sua implementao inicial.

Manuteno para adicionar funionalidade ao sistema ou modifi-lo


Modificao do sistema para satisfazer a novos requisitos.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 12

Distribuio de esforos de manuteno

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 13

Custos de manuteno

Geralmente, so maiores que os custos de desenvolvimento (de 2 a 100 vezes, dependendo da aplicao). So afetados por fatores tcnicos e no tcnicos. Aumentam conforme o software mantido. A manuteno corrompe a estrutura do software, tornando a manuteno posterior mais difcil. Software em envelhecimento pode ter altos custos de suporte (por exemplo, linguagens antigas, compiladores, etc.).

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 14

Custos de desenvolvimento/manuteno

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 15

Fatores de custo de manuteno

Estabilidade da equipe
Os custos de manuteno so reduzidos se o mesmo pessoal estiver envolvido por algum tempo. Os desenvolvedores de um sistema podem no ter responsabiidade contratual pela manuteno, portanto, no h incentivo para projetar para mudanas futuras. O pessoal da manuteno geralmente inexperiente e tem conhecimento limitado de domnio. medida que os programas envelhecem, sua estrutura degradada e se torna mais difcl de ser compreendida e modificada.

Responsabilidade contratual

Habilidade do pessoal

Idade e estrutura do programa

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 16

Previso de manuteno

A previso de manuteno est relacionada avaliao de quais partes do sistema podem causar problemas e ter altos custos de manuteno
A aceitao de mudana depende da facilidade de manuteno dos componentes afetados por ela; A implementao de mudanas degrada o sistema e reduz a sua facilidade de manuteno; Os custos de manuteno dependem do nmero de mudanas, e os custos de mudana dependem da facilidade de manuteno.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 17

Previso de manuteno

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 18

Previso de mudanas

A previso do nmero de mudanas requer o entendimento dos relacionamentos entre um sistema e seu ambiente. Sistemas fortemente acoplados requerem mudanas sempre que o ambiente mudado. Fatores que influenciam esse relacionamento so
O nmero e a complexidade das interfaces de sistema; O nmero de requisitos de sistema inerentemente volteis; Os processos de negcio nos quais o sistema usado.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 19

Mtricas de complexidade

As previses de facilidade de manuteo podem ser feitas pela avaliao da complexidade dos componentes de sistema. Estudos mostraram que a maior parte do esforo de manuteno despendida sobre um nmero relativamente pequeno de componentes de sistema. A complexidade depende
Da complexidade das estruturas de controle; Da complexidade das estruturas de dados; Do objeto, do mtodo (procedimento) e do tamanho do mdulo.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 20

Mtricas de processo

As medies de processo podem ser usadas para avaliar a facilidade de manuteno


Nmero de solicitaes para manuteno corretiva; Tempo mdio necessrio para anlise de impacto; Tempo mdio para implementar uma solicitao de mudana; Nmero de solicitaes de mudana pendentes.

Se qualquer uma ou todas essas esto aumentando, isso pode indicar um declnio na facilidade de manuteno.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 21

Processos de evoluo

Os processos de evoluo dependem


Do tipo de software que est sendo mantido; Dos processos de desenvolvimento usados; Das habilidades e das experincias do pessoal envolvido.

Propostas para mudana so os direcionadores para a evoluo do sistema. Identificao de mudana e evoluo continuam ao longo do ciclo de vida do sistema.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 22

Identificao de mudana e evoluo

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 23

O processo de evoluo de sistema

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 24

Implementao de mudanas

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 25

Solicitaes de mudana urgentes

Mudanas urgentes podem ter de ser implementadas sem passar por todos os estgios do processo de desenvolvimento de software
Se um defeito srio de sistema tem de ser reparado; Se mudanas no ambiente do sistema (por exemplo, atualizao do OS) tm efeitos inesperados; Se existem mudanas de negcio que necessitam de uma resposta muito rpida (por exemplo, o release de um produto concorrente)

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 26

Reparo de emergncia

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 27

Reengenharia de sistema

a reestruturao ou reescrita de parte ou de todo um sistema legado sem mudana na sua funcionalidade. aplicvel onde alguns subsistemas de um sistema de grande porte necessitam de manuteno freqente. A reengenharia envolve a adio de esforo para torn-los mais fceis de manter. O sistema pode ser reestruturado e redocumentado.
Engenharia de Software, 8. edio. Captulo 21 Slide 28

Ian Sommerville 2006

Vantagens da reengenharia

Risco reduzido
Existe um alto risco no redesenvolvimento de software. Pode haver problemas de desenvolvimento, de pessoal e problemas de especificao. O custo de reengenharia , freqentemente, menos significativo que os custos de desenvolvimento de um novo software.

Custo reduzido

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 29

Engenharia direta e reengenharia

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 30

O processo de reengenharia

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 31

Atividades do processo de reengenharia

Converso de cdigo-fonte
Converter o cdigo para uma nova linguagem. Analisar o programa para compreend-lo. Analisar e modificar a estrutura para facilidade de entendimento. Reorganizar a estrutura do programa. Limpar e reestruturar os dados do sistema.

Engenharia reversa

Aprimoramento da estrutura de programa

Modularizao de programa

Reengenharia de dados

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 32

Abordagens de reengenharia

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 33

Fatores do custo de reengenharia

A qualidade do software que deve passar pela reengenharia. O apoio de ferramentas disponveis para reengenharia. Extenso da converso de dados. A disponibilidade do pessoal especializado
Isso pode ser um problema com sistemas antigos baseados em tecnologia que no so mais amplamente usadas.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 34

Evoluo de sistemas legados

Organizaes que contam com sistemas legados devem escolher uma estratgia para a evoluo desses sistemas
Descartar o sistema completamente e modificar os procesos de negcio de maneira que ele no seja mais necessrio; Deixar o sistema sem alteraes e continuar com a manuteno regular; Reengenharia do sistema para aprimorar sua facilidade de manuteo; Substituir todo ou parte do sistema por um novo sistema.

A estratgia escolhida depende da qualidade do sistema e de seu valor de negcio.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 35

Qualidade de sistema e valor de negcio

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 36

Categorias de sistemas legados

Baixa qualidade, baixo valor de mercado


Esses sistemas devem ser descartados. Esses sistemas contribuem de maneira importante para a empresa, mas sua manuteno dispendiosa. Devem sofrer reengenharia ou ser substitudos caso um sistema adequado esteja disponvel. Substituir com COTS, abandonar completamente ou manter. Esses sistemas devem continuar em operao usando manuteno normal de sistema.

Baixa qualidade, alto valor de mercado

Alta qualidade, baixo valor de mercado

Alta qualidade, alto valor de mercado

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 37

Avaliao de valor de negcio

A avaliao deve levar em conta pontos de vista diferentes


Usurios finais do sistema; Clientes do negcio; Gerentes de linha; Gerentes de TI; Gerentes snior.

Entrevistar stakeholders diferentes e comparar resultados.


Engenharia de Software, 8. edio. Captulo 21 Slide 38

Ian Sommerville 2006

Avaliao da qualidade de sistema

Avaliao do processo de negcio


Quo bem o processo de negcio apia as metas atuais? Quo efetivo o ambiente do sistema e quo dispendiosa sua manuteno? Qual a qualidade do sistema de aplicao de software?

Avaliao de ambiente

Avaliao de aplicao

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 39

Avaliao do processo de negcio

Usar uma abordagem orientada a pontos de vista e procurar respostas dos stakeholders do sistema
Existe um modelo de processo definido: Ele seguido? Diferentes partes da organizao usam processos diferentes para a mesma funo? Como o processo foi adaptado? Quais so os relacionamentos com os outros processos de negcio? So necessrios? O processo efetivamente apoiado pelo software de aplicao legado?

Exemplo um sistema de pedidos de viagem pode ter um baixo valor de negcio por causa do uso amplamente difundido de pedidos baseados em Web.
Engenharia de Software, 8. edio. Captulo 21 Slide 40

Ian Sommerville 2006

Avaliao de ambiente

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 41

Avaliao de aplicao

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 42

Medio de sistema

Voc pode coletar dados quantitativos para fazer uma avaliao da qualidade do sistema de aplicao

O nmero de solicitaes de mudana no sistema; O nmero de interfaces diferentes de usurio usados pelo sistema; O volume de dados usados pelo sistema.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 43

Pontos-chave

Desenvolvimento e evoluo de software devem ser um processo iterativo nico. As leis de Lehman descrevem uma srie de percepes de evoluo de sistemas. Trs tipos de manuteno so: correo de defeitos, modificao de software para um novo ambiente e implementao de novos requisitos. Para sistemas sob encomenda, os custos de manuteno geralmente excedem os custos de desenvolvimento.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 44

Pontos-chave

O processo de evoluo dirigido por solicitaes de mudanas a partir dos stakeholders de sistema. A reengenharia de software est relacionado reestruturao e redocumentao de software para torn-lo mais fcil de mudar. O valor de negcio de um sistema legado e sua qualidade deve determinar a estratgia de evoluo que ser usada.

Ian Sommerville 2006

Engenharia de Software, 8. edio. Captulo 21

Slide 45

Das könnte Ihnen auch gefallen