860 likes | 1.23k Views
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
E N D
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 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.
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
Sw tem valor quando atende aos requisitos Sobre o valor do software
Sw tem valor quando atende aos requisitos Valor do sw devido a falhas mudanças nos requisitos Sobre o valor do software tempo
Sw tem valor quando atende aos requisitos é fácil de entender e de usar Sobre o valor do software
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
Sw tem valor quando atende aos requisitos é fácil de entender e de usar é eficiente Sobre o valor do software
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
Sw tem valor quando atende aos requisitos é fácil de entender e de usar é eficiente usa tecnologia atual Sobre o valor do software
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
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
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)
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)
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)
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)
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)
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)
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)
Tópicos • Evolução ou manutenção • Manutenção de Software • Tipos de manutenção • Dificuldades • Manutenibilidade
Manutenção • Definição • é o processo de modificação de um produto após a entrega • Tipos • corretiva • adaptativa • perfectiva
Custos com manutenção Dados de 1990
Distribuição dos custos de manutenção Internet, maio/2002
Distribuição dos custos por categoria Dados de 1990
Tópicos • Evolução ou manutenção • Manutenção de Software • Tipos de manutenção • Dificuldades • Manutenibilidade
Porquê os custos são altos? • Fatores: • usuário • contrato • equipe de desenvolvimento • sistema • produto
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
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
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
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
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
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
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]
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]
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]
Tópicos • Evolução ou manutenção • Manutenção de Software • Tipos de manutenção • Dificuldades • Manutenibilidade
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)
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 ?
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
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
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]
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
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
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
Como estimar manutenibilidade • Manutenibilidade pode ser medida • Diversas métricas propostas: • padrão IEEE • outras
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
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
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
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