1 / 81

Evolução e Manutenção do Software

Evolução e Manutenção do Software. Nov/2009. Tópicos. Evolução ou manutenção Manutenção de Software Tipos de manutenção Dificuldades Manutenibilidade. Referências. E.Martins. “Manutenção e Ferramentas CASE”, notas de curso, 1998 I.Sommerville. “Sw Engineering”, 6ª ed, 2001, cap27

shiri
Download Presentation

Evolução e Manutenção do Software

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Evolução e Manutenção do Software Nov/2009

  2. Tópicos • Evolução ou manutenção • Manutenção de Software • Tipos de manutenção • Dificuldades • Manutenibilidade

  3. Referências E.Martins. “Manutenção e Ferramentas CASE”, notas de curso, 1998 I.Sommerville. “Sw Engineering”, 6ª ed, 2001, cap27 R.S.Pressman. “Sw Engineering: a Practitioner’s Approach”. McGraw-Hill, 3ª ed, 1992. T.Pigoski. “Practical Software Maintenance”, 1997, John Wiley. W.P.Paula Fº. “Engenharia de Software: Fundamentos, Métodos e Padrões”. Livros Técnicos e Científicos Editora, 2001. N.F.Schneidewind. “The State of Sw Maintenance”. IEEE Trans on Sw Eng, SE-13, nº3, mar/87, pp303-310. K.Bennett. “Sw Evolution: Past, Present and Future”. Information and Software Technology, nº38, 1996, pp673-680.

  4. Evolução ou Manutenção? “Grandes sistemas de software nunca são completados; eles simplesmente continuam evoluindo” [Lehman] • Porquê ? para preservar o valor do software

  5. Sw tem valor quando atende aos requisitos Sobre o valor do software

  6. Sw tem valor quando atende aos requisitos Valor do sw  devido a falhas mudanças nos requisitos Sobre o valor do software tempo

  7. Sw tem valor quando atende aos requisitos é fácil de entender e de usar Sobre o valor do software

  8. Sw tem valor quando atende aos requisitos é fácil de entender e de usar Valor do sw  devido a falhas mudanças nos requisitos complexidade Sobre o valor do software tempo

  9. Sw tem valor quando atende aos requisitos é fácil de entender e de usar é eficiente Sobre o valor do software

  10. Sw tem valor quando atende aos requisitos é fácil de entender e de usar é eficiente Valor do sw  devido a falhas mudanças nos requisitos complexidade ineficiência Sobre o valor do software tempo

  11. Sw tem valor quando atende aos requisitos é fácil de entender e de usar é eficiente usa tecnologia atual Sobre o valor do software

  12. Sw tem valor quando atende aos requisitos é fácil de entender e de usar é eficiente usa tecnologia atual Valor do sw  devido a falhas mudanças nos requisitos complexidade ineficiência tecnologia obsoleta Sobre o valor do software tempo

  13. Sw tem valor quando atende aos requisitos é fácil de entender e de usar é eficiente usa tecnologia atual Valor do sw  devido a falhas mudanças nos requisitos complexidade ineficiência tecnologia obsoleta Sobre o valor do software alterações tempo

  14. Modificações contínuas modificações são inevitáveis para que um sw continue útil Dinâmica da evolução do sw(Leis de Lehman)

  15. Modificações contínuas Complexidade crescente modificações são inevitáveis para que um sw continue útil modificações aumentam a complexidade do sw complexidade   nº falhas  hw mortalidade infantil desgaste taxa de falhas tempo Dinâmica da evolução do sw(Leis de Lehman)

  16. Modificações contínuas Complexidade crescente modificações são inevitáveis para que um sw continue útil modificações aumentam a complexidade do sw complexidade   nº falhas  sw hw mortalidade infantil desgaste taxa de falhas taxa de falhas ideal tempo tempo Dinâmica da evolução do sw(Leis de Lehman)

  17. Modificações contínuas Complexidade crescente modificações são inevitáveis para que um sw continue útil modificações aumentam a complexidade do sw complexidade   nº falhas  sw hw alteração mortalidade infantil desgaste real taxa de falhas taxa de falhas ideal tempo tempo Dinâmica da evolução do sw(Leis de Lehman)

  18. Modificações contínuas Complexidade crescente Evolução de programas grandes (processo auto-regulador) modificações são inevitáveis para que um sw continue útil modificações aumentam a complexidade do sw atributos tais como tamanho, tempo entre versões e nº falhas variam pouco de uma versão para outra Dinâmica da evolução do sw(Leis de Lehman)

  19. Modificações contínuas Complexidade crescente Evolução de programas grandes (processo auto-regulador) Estabilidade organizacional (saturação) modificações são inevitáveis para que um sw continue útil modificações aumentam a complexidade do sw atributos tais como tamanho, tempo entre versões e nº defeitos variam pouco de uma versão para outra taxa de desenvolvimento é constante e independe dos recursos alocados Dinâmica da evolução do sw(Leis de Lehman)

  20. Modificações contínuas Complexidade crescente Evolução de programas grandes (processo auto-regulador) Estabilidade organizacional (saturação) Conservação da familiaridade modificações são inevitáveis para que um sw continue útil modificações aumentam a complexidade do sw atributos tais como tamanho, tempo entre versões e nº defeitos variam pouco de uma versão para outra taxa de desenvolvimento é constante e independe dos recursos alocados modificações a cada versão são praticamente constantes (modificações incrementais) Dinâmica da evolução do sw(Leis de Lehman)

  21. Tópicos • Evolução ou manutenção • Manutenção de Software • Tipos de manutenção • Dificuldades • Manutenibilidade

  22. Manutenção • Definição • é o processo de modificação de um produto após a entrega • Tipos • corretiva • adaptativa • perfectiva

  23. Custos com manutenção Dados de 1990

  24. Distribuição dos custos de manutenção Internet, maio/2002

  25. Distribuição dos custos por categoria Dados de 1990

  26. Tópicos • Evolução ou manutenção • Manutenção de Software • Tipos de manutenção • Dificuldades • Manutenibilidade

  27. Porquê os custos são altos? • Fatores: • usuário • contrato • equipe de desenvolvimento • sistema • produto

  28. Porquê os custos são altos? • Fatores: • usuário • contrato • equipe de desenvolvimento • sistema • produto Pouco treinamento Mudança de objetivos: necessidades do usuário evoluem; novos usuários

  29. Porquê os custos são altos? • Fatores: • usuário • contrato • equipe de desenvolvimento • sistema • produto Contrato manutenção separado do contrato de desenvolvimento, podendo inclusive ser dado a outra empresa  pouco incentivo para produção de sw fácil de manter

  30. Porquê os custos são altos? • Fatores: • usuário • contrato • equipe de desenvolvimento • sistema • produto ausência dos desenvolvedores falta de tempo falta de motivação falta de experiência

  31. Porquê os custos são altos? • Fatores: • usuário • contrato • equipe de desenvolvimento • sistema • produto domínio da aplicação dependência do ambiente externo instabilidade do hw alterações sem controle

  32. Porquê os custos são altos? • Fatores: • usuário • contrato • equipe de desenvolvimento • sistema • produto idade qualidade da documentação estilo de programação acoplamento entre os módulos linguagem de programação V&V deficiente

  33. Como reduzir custos • Diretrizes gerenciais • como planejar a manutenção • como motivar a equipe • Diretrizes técnicas: • melhorar a manutenibilidade • durante o desenvolvimento: processo visando manutenibilidade • durante a manutenção: manutenção preventiva (reengenharia) • definir processo de manutenção

  34. Diretrizes gerenciais (1) • Envolver a equipe de manutenção no desenvolvimento • Usar padrões tanto no desenvolvimento quanto na manutenção • Fazer rodízio do pessoal entre desenvolvimento e manutenção • Ter acesso à documentação ainda durante o desenvolvimento • Dispor das ferramentas CASE usadas durante desenvolvimento • Manter contato entre usuários e equipe de manutenção • Fazer controle de configuração • Padronizar pedidos de alterações [McClure]

  35. Diretrizes gerenciais (2) • Associar objetivos do software com metas da empresa • Associar ganhos de manutenção com o desempenho da empresa • Integrar as equipes de desenvolvimento e manutenção • Alocar verba para manutenção preventiva (reengenharia) • Envolver equipe de manutenção na criação de padrões de desenvolvimento, revisões, preparação de testes • Mudar imagem negativa associada à manutenção [Boehm]

  36. Diretrizes gerenciais (3) • Escolher equipe qualificada • Garantir boa qualidade do sistema: • bem estruturado • fácil de entender • Usar linguagens de programação padronizadas • Usar sistemas operacionais padronizados • Padronizar a documentação • Disponibilizar casos de teste • Tornar possível o rastreamento de requisitos [Pressman]

  37. Tópicos • Evolução ou manutenção • Manutenção de Software • Tipos de manutenção • Dificuldades • Manutenibilidade

  38. Manutenibilidade • Algumas definições • Facilidade com que um sistema ou componente de software pode ser modificado para se corrigir falhas, melhorar desempenho (ou outros atributos), ou ser adaptado a mudanças no ambiente; (IEEE 610.12, 1990) • Facilidade para corrigir um sw, quando possui falhas ou deficiências, e também para expandir ou contrair o sw para satisfazer a novos requisitos(Martin e McClure 1983) • Conjunto de atributos relativos ao esforço necessário para se realizar modificações em um sw(ISO/IEC 8402 1986)

  39. Considerações • Todos os sistemas são igualmente fáceis de manter ? Porque não ? • Sistemas não são desenvolvidos visando manutenibilidade  • manutenibilidade deve ser uma das metas do desenvolvimento • Que critérios usar para determinar se um sw é fácil de manter ou não ? • É possível estimar o grau de manutenibilidade de um sw ?

  40. O que afeta a manutenibilidade • Processo de desenvolvimento • Documentação • Qualidade do sw • Disponibilidade dos testes • Disponibilidade das ferramentas de desenvolvimento • Controle de alterações

  41. O que afeta a manutenibilidade • Processo de desenvolvimento • Documentação • Qualidade do sw • Disponibilidade dos testes • Disponibilidade das ferramentas de desenvolvimento • Controle de alterações Manutenibilidade deve ser considerada ao longo de todo desenvolvimento. Pb.: como convencer gerentes de que manutenibilidade  ganhos

  42. O que afeta a manutenibilidade • Processo de desenvolvimento • Documentação • Qualidade do sw • Disponibilidade dos testes • Disponibilidade das ferramentas de desenvolvimento • Controle de alterações documentação desatualizada, incompleta ou inexistente  custo com manutenção  (47% - 62% tempo para compreensão de programas e documentos) [Pigosrki 1996]

  43. O que afeta a manutenibilidade • Processo de desenvolvimento • Documentação • Qualidade do sw • Disponibilidade dos testes • Disponibilidade das ferramentas de desenvolvimento • Controle de alterações qualidade  custo com manutenção  Aspectos de qualidade: - estrutura do sw - estilo de programação - sistemática de V&V

  44. O que afeta a manutenibilidade • Processo de desenvolvimento • Documentação • Qualidade do sw • Disponibilidade dos testes • Disponibilidade das ferramentas de desenvolvimento • Controle de alterações Facilita realização de testes, em especial os de regressão

  45. O que afeta a manutenibilidade • Processo de desenvolvimento • Documentação • Qualidade do sw • Disponibilidade dos testes • Disponibilidade das ferramentas de desenvolvimento • Controle de alterações Facilita realização modificações, permitindo atualizar: - modelos de análise e projeto; documentação - código fonte (existência do compilador) - testes, entre outros

  46. Como estimar manutenibilidade • Manutenibilidade pode ser medida • Diversas métricas propostas: • padrão IEEE • outras

  47. Métricas • Permitem determinar quão fácil é manter um sw • manutenibilidade pode ser caracterizada pelos seguintes sub-fatores (IEEE 1061 1992): • corrigibilidade: medida do esforço necessário para corrigir erros e lidar com as reclamações dos usuários • expansibilidade: medida do esforço necessário para melhorar ou modificar as funções do sw • testabilidade: medida do esforço necessário para testar o sw

  48. corrigibilidade tempo de fechamento tempo para isolar/corrigir a falha tamanho da interface taxa de falhas previsão de recursos previsão de esforço produtividade Métricas Subfator tipo de métrica métrica Contagem de falhas esforço

  49. testabilidade cobertura do código cobertura dos requisitos grau de completeza do plano de testes previsão de recursos previsão de esforço produtividade Métricas Subfator tipo de métrica métrica cobertura esforço

  50. expansibilidade esforço para modificação tamanho da modificação taxa de modificação contagem de modificações previsão de recursos previsão de esforço produtividade Métricas Subfator tipo de métrica métrica modificações esforço

More Related