Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* * * Manutenção de Software Unidade 4 * * * A manutenção de software existente pode ser responsável por mais de 70% de todo o esforço despendido por um setor de desenvolvi-mento de sistemas. A porcentagem pode aumentar a medida que mais software é produzido ou de acordo com o contexto organizacional. A natureza ubíqua da mudança é subjacente a todo o trabalho de software. A mudança é inevitável quando se constroem sistemas baseados em computador, já que os processos empresariais mudam e se renovam cada vez mais rápido levando à um ciclo de vida dos produtos está cada vez menor. 4. Manutenção de Software * * * Uma das metas principais da Engenharia de Software é a de facilitar a acomodação das mudanças, reduzir a quantidade de esforço despendido em manutenção e aumentar a qualidade das tarefas associadas à Manutenção de Software. 4. Manutenção de Software * * * A manutenção de software é, certamente, bem mais do que consertar erros. Podemos definir a manutenção, através de 4 tipos que podem ocorrer depois que um sistema/programa é liberado para uso: Manutenção corretiva; Manutenção adaptativa; Manutenção perfectiva; Manutenção preventiva. 4.1 Definição de Manutenção * * * Manutenção Corretiva: - inclui o diagnóstico e a correção de um ou mais erros não descobertos na fase de teste do software; - uma grande quantidade desses erros indica que o software não foi testado adequadamente; - esse tipo de manutenção não deveria ocorrer. Manutenção Adaptativa: - necesária para ajustar o sistema/programa às novas tecnologias - hardware (processadores, periféricos e etc.) - software (linguagens, sistemas operacionais etc.) 4.1 Definição de Manutenção * * * Manutenção Perfectiva: - para atender a solicitações do usuário quanto a melhorias, novas funções, mudança de contexto organizacional e etc. - é o tipo responsável que mais requer manutenção; Manutenção Preventiva: - modificações para melhorar a confiabilidade, a manutenibilidade futura ou para futuras ampliações; 4.1 Definição de Manutenção * * * Os termos usados para descrever as três primeiras atividades de manutenção foram usadas por Swanson; - o quarto tipo é comumente usado na manutenção de hardware e outros sistemas físicos; - alguns profissionais da área de software entendem que o segundo e o terceiro tipo resultam nas mesmas tarefas aplicadas durante a fase de construção do software; - Peters, em seu livro, Engenharia de Software, adota outros tipos para manutenção de software. 4.1 Definição de Manutenção * * * A fase de manutenção tem sido pouco explorada e até mesmo negligenciada no processo de engenharia de software. Poucas abordagens ou métodos técnicos têm sido propostos. Qual o motivo deste descaso? 4.2 Características da Manutenção * * * Para entender as características da manutenção de um software devemos considerar: - Manutenção Estruturada versus Não-Estruturada; - Custos associados à Manutenção; - Problemas associados à manutenção; 4.2 Características da Manutenção * * * 4.2 Características da Manutenção Pedido de Manutenção Configuração Avaliar o projeto Modificar o projeto Planejar a Abordagem Recodificar Revisão Teste e Lançamento Avaliar o código Recodificar Revisão ? Manutenção Estruturada Manutenção Não-Estruturada * * * Manutenção Não-Estruturada Se o único elemento disponível do software for o código-fonte, a atividade inicia-se por uma penosa avaliação do código; Frequentemente a documentação interna é ruim; Diversas características do software, como por exemplo restrições de projeto, são difíceis de ser verificadas e acabam mal interpretadas; As mudanças feitas são difíceis de ser avaliadas. Testes de Regressão são impossíveis de ser realizados por não existir nenhum registro de teste. Esforço perdido e frustração 4.2 Características da Manutenção * * * Manutenção Estruturada Ocorre como resultado de aplicação anterior de uma metodologia de engenharia de software, iniciando-se por uma avaliação do projeto; O impacto das modificações ou correções exigidas é avaliada e uma abordagem é planejada; Usando-se técnicas adequadas, o projeto é modificado e revisado. Um novo código-fonte é desenvolvido, testes de regressão são levados a efeito. Embora a existência de uma metodologia não garanta uma manutenção isenta de problemas, a quantidade de esforço é reduzida e a qualidade da mudança ou correção é aumentada; 4.2 Características da Manutenção * * * Custos da manutenção: O Custo da manutenção de software tem aumentado nos últimos anos em proporção aos outros gastos do orçamento do software; Custos intangíveis da manutenção: Oportunidade de desenvolvimento que é postergada ou perdida porque os recursos disponíveis estão na tarefa de manutenção; Insatisfação do cliente quanto à demora no atendimento; Redução da qualidade devido à introdução de novos erros; Descontentamento das pessoas destinadas à tarefa. O custo final da manutenção de software é uma drástica diminuição de produtividade se comparada à construção de um software. 4.2 Características da Manutenção * * * Problemas associados à manutenção: A maioria dos problemas remete-se a deficiências na maneira segundo o qual o software foi planejado e desenvolvido. A falta de controle e disciplina nas atividades de desenvolvimento da engenharia de software quase sempre se traduz em problemas durante a manutenção. Vamos pagar muito mais agora o que não quisemos gastar anteriormente. 4.2 Características da Manutenção * * * Problemas associados à manutenção: A documentação do sistema não existe ou é muito ruim; As mudanças e correções realizadas no sistema não estão adequada-mente documentadas; Freqüentemente é difícil ou impossível rastrear o processo através do qual o software foi criado; Muitas vezes é difícil entender o programa “de outra pessoa”; A “outra pessoa”, quase sempre, não está por perto para explicar o programa; A maioria dos sistemas não é projetada para sofrer mudanças; A manutenção não é vista como um trabalho muito glamouroso. 4.2 Características da Manutenção * * * Pode ser definida qualitativamente como a facilidade com que um software pode ser entendido, corrigido, adaptado, melhorado e/ou aumentado; A manutenibilidade é a meta primordial que orienta os passos de um processo de engenharia de software; Falhas e negligências no projeto, na codificação e no teste tem um impacto negativo óbvio sobre nossa capacidade de manter o software. Uma configuração ruim pode causar um impacto negativo semelhante, mesmo quando os passos técnicos anteriormente mencionados foram realizados com cuidado. 4.3 Manutenibilidade * * * Fatores impactantes associados ao ambiente de desenvolvimento: Disponibilidade de pessoal qualificado; Estrutura de sistema compreensível; Facilidade de manuseio do sistema; Uso de linguagens de programação adequadas e padronizadas; Uso de sistemas operacionais padronizados; Estrutura de documentação padronizada; Disponibilidade de casos de teste; Facilidades de depuração embutidas; Disponibilidade de ambiente computacional adequado para realizar a construção e a manutenção. 4.3 Manutenibilidade * * * A manutenibilidade do software, assim como a qualidade e a confiabilidade, é uma atividade dificil de se quantificar; Podemos avaliar a manutenibilidade indiretamente, ao considerar os atributos da atividade de manutenção que podem ser medidos; 4.3 Manutenibilidade * * * Gilb propõe uma série de métricas da manutenibilidade que se relaciona ao esforço despendido durante a manutenção: Tempo de reconhecimento do problema; Tempo de retardo administrativo; Tempo de análise do problema; Tempo de especificação das mudanças; Tempo de correção ou modificação; Tempo de testes locais; Tempo de testes globais; Tempo de revisão de manutenção; Tempo de recuperação total. 4.3 Manutenibilidade * * * As tarefas associadas à manutenção de software iniciam-se bem antes que um pedido de manutenção seja feito. Uma estrutura, de fato ou formal, voltada à manutenção, deve ser estabelecida. Procedimentos de avaliação e relatórios devem ser descritos. Uma seqüência de eventos padronizada deve ser definida para cada pedido de manutenção; Um sistema de registro de atividades de manutenção deve ser estabelecido e critérios de avaliação e revisão devem se definidos. 4.4 Tarefas da Manutenção * * * Estrutura organizacional para manutenção: Associada à estrutura de desenvolvimento: quando os profissionais da área de sistemas são alocados às áreas de atuação na empresa; Estrutura própria: quando os profissionais da área de sistemas são alocados especificamente às tarefas de manutenção; Sem estrutura formal: quando os profissionais da área de sistemas são agrupados em um pool, sendo alocados em construção de sistemas ou em manutenção de sistemas, conforme a necessidade. 4.4 Tarefas da Manutenção * * * Pedidos de manutenção: Os pedidos de manutenção de software devem ser padronizados e registrados; O usuário que deseja a manutenção, ou seu preposto, deve preencher requisição de pedido de manutenção (Maintenance Request Form - MRF); Se um erro for encontrado, uma descrição das circunstâncias que levaram ao erro deve ser incluída à requisição; 4.4 Tarefas da Manutenção * * * Pedidos de manutenção (cont.): Para manutenção adaptativa ou perfectiva, uma breve especificação de mudança deve acompanhar a requisição; A requisição de manutenção deve ser avaliada pelo responsável pela manutenção de software, para indicar sua prioridade; Em certos casos, um erro pode ser tão grave que os controles normais de manutenção são abandonados temporariamente, sendo seu registro feito a posteriori. Esse modo “apaga incêndio” para manutenção corretiva é reservado somente para situações de crise. 4.4 Tarefas da Manutenção * * * O registro das ações de manutenção deve ser feito durante, ou logo após, a manutenção de forma a compor o histórico do programa; Depois que a tarefa de manutenção é concluída, deve-se fazer uma avaliação da situação através das questões: Dada a situação atual, quais aspectos de projeto, código ou teste poderiam ter sido feitos, de forma a evitar tal manutenção? Quais recursos de manutenção deveriam ter estado à disposição de forma a agilizar a correção/complementação? Quais foram os menores/maiores obstáculos? A manutenção preventiva é indicada para este tipo de situação? 4.4 Tarefas da Manutenção * * * Uma avaliação das atividades de manutenção é frequentemente complicada pela falta de dados concretos. Se uma conservação e registros for iniciada, uma série de medidas do desempenho da manutenção pode ser desenvolvida: Nº médio de falhas de processamento por execução do programa. Total de pessoas/hora utilizadas em cada categoria de manutenção. Número médio de mudanças feitas por programa, por linguagem e por tipo de manutenção. Média de pessoas/hora empregadas por linguagem. Tempo médio de renovação do MRF. Porcentagem de pedidos de manutenção por tipo. 4.5 Avaliação * * * Quando usado no contexto de manutenção de software, o termo “efeitos colaterais” implica em um erro ou outro comportamento indesejável que ocorra como resultado de uma modificação; Uma simples mudança numa única instrução pode, às vezes, ter resultados desastrosos; A substituição inadvertida e não detectada, de um a, por um a. teve consequências quase trágicas quando o software de apoio terrestre para uma viagem espacial tripulada falhou; Na manutenção podemos ter efeitos colaterais na documentação, nos dados ou na codificação. 4.6 Efeitos Colaterais
Compartilhar