Baixe o app para aproveitar ainda mais
Prévia do material em texto
Manutenção de Software Apresentação A palavra manutenção é originada do Latim "mantenus tenere", que significa "manter aquilo que se tem". Na engenharia de software, a manutenção do software é a última etapa do seu desenvolvimento, quando ele já está pronto, operacional, e precisa de reparos e modificações para continuar atendendo novos requisitos que surgem. Um software que é criado e não possui manutenção pode ser pouco utilizado ou até mesmo inutilizado. Constantes atualizações para corrigir falhas e realizar melhorias são essenciais para que ele continue "vivo". Nesta Unidade de Aprendizagem, você irá adquirir conhecimentos fundamentais para entender o processo de manutenção de software e os problemas que podem ocorrer na sua manutenção. Verá também alguns dos motivos de mudanças e a necessidade da manutenção. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Explicar os conceitos gerais de manutenção de software.• Identificar os problemas que podem ocorrer na manutenção de software.• Analisar os motivos de mudanças de software.• Desafio Analise as seguintes situações de manutenção de software: Das situações apresentadas, cada uma se refere a um tipo de manutenção (adaptativa, corretiva, evolutiva, preventiva). Qual o tipo de manutenção ocorreu em cada situação? Justifique a sua resposta. Infográfico A manutenção de software é utilizada tanto como processo de melhoria e otimização de software como para reparar defeitos e deficiências observadas pelo usuário durante o uso. Veja no infográfico seguinte os principais conceitos da fase de manutenção de software. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. https://statics-marketplace.plataforma.grupoa.education/sagah/fbc75475-486b-4ab0-b7f6-ac8246b96b84/4b2acecd-9e8d-42a6-8d6c-52f43fc34078.jpg Conteúdo do livro Todo software que obtém sucesso e conquista usuários passará por manutenções e essas são realizadas para o aperfeiçoamento, correção de problemas e adequação do programa. É muito comum, após a implementação e uso de um sistema, existir solicitação e necessidade de realizar alterações ou melhorias. Acompanhe a leitura do capítulo Manutenção de software, da obra Engenharia de Software, para compreender a manutenção de software e os problemas que podem ocorrer durante o processo. Boa leitura. ENGENHARIA DE SOFTWARE Izabelly Soares de Morais Manutenção de software Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: � Explicar os conceitos gerais de manutenção de software. � Identificar os problemas que podem ocorrer na manutenção de software. � Analisar os motivos de mudanças de software. Introdução A palavra “manutenção” é originada do latim mantenus tenere, que significa “manter aquilo que se tem”. Na engenharia de software, a manutenção do software é a última etapa do seu desenvolvimento, quando ele já está pronto, operacional, e precisa de reparos e modificações para continuar atendendo novos requisitos que surgem. Um software criado e que não possui manutenção pode ser pouco utilizado ou até mesmo inutilizado. Constantes atualizações para corrigir falhas e realizar melhorias são es- senciais para que ele continue “vivo”. Neste capítulo, você vai adquirir conhecimentos fundamentais para entender o processo de manutenção de software e os problemas que podem ocorrer na sua manutenção. Você vai ver, também, alguns dos motivos de mudanças e a necessidade da manutenção. Manutenção de software: conceitos gerais O desenvolvimento de software não é interrompido quando o sistema é en- tregue, mas continua por toda a vida útil do sistema. Depois que o sistema é implantado, para que ele se mantenha útil é inevitável que ocorram mudanças. A evolução do software é importante, pois as organizações investem gran- des quantias de dinheiro em software e são totalmente dependentes desses sistemas. Seus sistemas são ativos críticos de negócios, e as organizações devem investir nas mudanças de sistemas para manter o valor desses ativos. Consequentemente, a maioria das grandes empresas gasta mais na manu- tenção de sistemas existentes do que no desenvolvimento de novos sistemas (SOMMERVILLE, 2011). Todo sistema é desenvolvido para uma finalidade, ou seja, resolvem algum problema ou ajudam os usuários em alguma atividade específica. Porém, esta- mos sempre em constante processo de mudanças, nas quais, com o passar do tempo, algumas coisas acabam obsoletas. O mesmo ocorre com um software, ou seja, não quer dizer que, porque um software foi desenvolvido com todas as funcionalidades operando corretamente para solucionar algum problema, ele nunca precisará de alguma manutenção. O ciclo de vida de um software é composto por algumas fases: definição de requisitos, projeto de software, implementação e teste de unidades, inte- gração e teste do sistema e, por fim, operação e manutenção do software. Dessa forma, não importa a finalidade do software, em algum momento este irá demonstrar sinais de que precisa passar por uma manutenção, seja por meio da atualização de suas funções, ou até mesmo para que configurações do sistema sejam adaptadas aos requisitos do sistema. A manutenção de um software, como o próprio termo já diz, promoverá a realização de mudanças no sistema, ou até mesmo a adaptação deste com um novo contexto, no qual ele pode ser inserido. Sabemos que tudo precisa de manutenção e com o software não é diferente. É importante salientar que toda modificação em um software irá interferir na questão do custo-benefício. Dessa forma, mesmo que mudanças aconteçam no software, mesmo quando ele já tenha sido entregue ao usuário, irá ter algum custo financeiro. Nem sempre as mudanças são cabíveis; muitas vezes, é mais barato desenvolver outro software do que inserir diversas mudanças em algum já existente. Cabe à equipe de desenvolvimento ou de manutenção avaliar, pois pode variar de software para software. Manutenção de software2 Motivos das mudanças de software Para Sommerville (2011), prever o número de solicitações de mudança para um sistema requer uma compreensão do relacionamento entre o sistema e seu ambiente externo. Alguns sistemas têm relacionamento muito complexo com seu ambiente externo, e as mudanças nesse ambiente inevitavelmente resultam em alterações. Sob o ponto de vista de Sommerville (2011), historicamente sempre houve uma separação entre o processo de desenvolvimento e o de manutenção do software. Os custos da manutenção geralmente são mais altos do que os custos iniciais do desenvolvimento. Os processos de manutenção são, em alguns casos, considerados menos desafiadores do que o desenvolvimento do software original. A distinção entre o desenvolvimento e a manutenção do software é vista muitas vezes como irrelevante. Poucos sistemas de software são completamente novos, e faz muito mais sentido ver o desenvolvimento e a manutenção como processos contínuos. A Figura 1 a seguir mostra algumas etapas que podem ser seguidas. Figura 1. Etapas para a manutenção. Fonte: Sommerville (2011, p. 166). Novo Sistema Processo de identificação de mudanças Processo de evolução de software Proposta de mudanças 3Manutenção de software Dessa forma, podemos perceber que a manutenção do software pode mesmo ser vista como uma evolução, na qual, de acordo com Sommerville (2011), existe uma fase em que há a identificação de mudanças e, posteriormente, as propostas devem ser avaliadas, pois, como já comentamos neste capítulo, as mudanças sempre interferem na relação de custo-benefício, por isso há o processo de evolução do software, no qual esse processo pode ser viável, ou não. De acordo com Schach (2010), existem três razões principais para realizar modificações em um produto: 1. Uma falha precisa ser corrigida, seja ela uma falha de análise, projeto, decodificação, documentaçãoou qualquer outro tipo. Isso é denominado manutenção corretiva. Neste ponto, Sommerville (2011) acrescenta que a falha, ou defeito, geralmente é grave o suficiente para impedir a continuidade do funcionamento normal do sistema. 2. Na manutenção de aperfeiçoamento, é feita uma modificação no código para aumentar a eficácia do produto. Por exemplo, o cliente pode querer funcionalidade adicional ou solicitar que o sistema seja modificado para que fique mais rápido. Aumentar a facilidade de manutenção de um produto é outro exemplo de manutenção de aperfeiçoamento. 3. Na manutenção adaptativa, é feita uma modificação no produto como resposta a uma modificação no ambiente em que ele opera. Por exemplo, é quase certo que um produto tenha de ser modificado se ele for portado para um novo compilador, um sistema operacional ou um hardware. A cada mudança na legislação tributária, um produto que ajuda na preparação de declarações de imposto de renda precisa ser modificado de acordo. Quando o correio norte-americano introduziu os CEPs com nove dígitos em 1981, os produtos que permitiam o uso de CEPs com apenas cinco dígitos tiveram de ser modificados. A manutenção adaptativa não é solicitada pelo cliente; pelo contrário, ela é imposta ao cliente por um agente externo. Para Sommerville (2011), fica claro que os programadores de manutenção devem ter praticamente todas as habilidades técnicas que um profissional de software deve ter. Mas o que ele ganha em troca? � A manutenção pós-entrega é um trabalho ingrato em todos os aspectos. Os profissionais de manutenção têm de lidar com usuários insatisfeitos, pois, se estivessem contentes com o produto, este não precisaria de manutenção. Manutenção de software4 � Os problemas do usuário frequentemente são causados por aqueles que desenvolveram o produto, e não pelo profissional de manutenção. � O próprio código poderia ter sido malfeito, o que é mais um fator que se acumula às frustrações do profissional de manutenção. � A manutenção pós-entrega é menosprezada por muitos desenvolvedores de software, que consideram a atividade de desenvolvimento de sof- tware um trabalho glamouroso e a manutenção, um trabalho escravo, apropriado apenas para programadores novatos ou incompetentes. Ela pode ser comparada ao atendimento pós-venda. O produto foi entregue ao cliente, porém, ele está insatisfeito, pois o produto não funciona corretamente, não faz tudo o que deseja ou as circunstâncias para as quais ele foi construído mudaram de alguma forma. Existem diversos problemas que podem ser encontrados nessa fase, os quais veremos no próximo tópico. Problemas que podem ocorrer na manutenção de software Conforme Pressman e Maxim (2016), enfrentamos uma fila cada vez maior de correções de erros, solicitações de adaptação e melhorias que devem ser planejadas, programadas e, por fim, executadas. Logo, a fila já cresceu muito e o trabalho ameaça devorar os recursos disponíveis. Com o passar do tempo, sua empresa descobre que está gastando mais tempo e dinheiro com a manutenção dos programas do que criando novas aplicações. Não é raro uma empresa de software despender de 60% a 70% de todos os recursos com manutenção de software. Pressman e Maxim (2016) questionam sobre a necessidade da realização de tanta manutenção e se tanto esforço deve ser despendido. Traz, ainda, uma possível resposta dada por Osborne e Chikofsky (1990 apud PRESSMAN; MAXIM, 2016, p. 797): “Muitos softwares dos quais dependemos hoje têm de 10 a 15 anos, em média. Mesmo quando esses programas foram criados, usando as melhores técnicas de projeto e codificação conhecidas na época (e muitos não foram), o tamanho do programa e o espaço de armazenamento eram as preocupações principais. Eles então migraram para novas plataformas, foram ajustados para mudanças nas máquinas e na tecnologia dos sistemas operacionais e aperfeiçoados para atender a novas necessidades dos usuários – tudo isso sem grande atenção à arquitetura geral. O resultado são estruturas 5Manutenção de software mal projetadas, mal codificadas, de lógica deficiente e mal documentadas em relação aos sistemas de software, e que devemos manter funcionando [...]”. Outra razão para o problema de manutenção do software é a mobilidade dos profissionais. É provável que a equipe (ou pessoa) responsável pelo trabalho original não esteja mais por perto, ou, pior ainda, que outras gerações de profissionais de software possam ter modificado o sistema e já não estejam mais presentes. Hoje, pode não ter restado ninguém que tenha conhecimento direto do sistema legado (PRESSMAN; MAXIM, 2016). Se pararmos para analisar, a manutenção do software pode trazer o problema de métricas esco- lhidas durante seu processo de produção, ou seja, o sistema final é fruto de diversas escolhas que abrangem as mais variadas vertentes de um software. Dessa forma, isso pode ser considerado mais um problema para a realização da manutenção pós-entrega de um software. Nesta etapa, podemos notar a importância da documentação do software e o modo como essa documentação foi concebida. Sua eficácia é ratificada neste momento, no qual, para realizar a manutenção, a equipe terá como base a documentação produzida, a qual deve trazer os mínimos detalhes sobre o software. De acordo com Schach (2010), um relatório de defeitos será preenchido, se, na opinião do usuário, o produto não estiver funcionando como especificado no manual do usuário. Existem várias causas possíveis. Primeiro, pode ser que não haja nada de errado; pode ser que o usuário tenha interpretado mal o manual ou esteja usando o produto incorretamente. De modo alternativo, se existe uma falha no produto, pode ser que simplesmente o manual do usuário tenha sido mal redigido e não haja nada de errado com o código. Entretanto, normalmente existe alguma imperfeição no código. Porém, antes de fazer qualquer modificação, o programador de manutenção deve determinar exa- tamente onde está a imperfeição e usar o relatório de defeitos preenchido pelo usuário, o código-fonte, nada mais. Consequentemente, o programador de manutenção precisa ter habilidades de depuração muito acima da média, pois a imperfeição poderia estar em qualquer ponto do produto. A causa original do defeito poderia estar, até o momento, nos artefatos de projeto ou de análise. Conclui-se que o processo de desenvolvimento de software deve ser percor- rido com muita cautela e a escolha de métodos, ferramentas e equipe poderá afetar não só o processo, mas também o resultado final, que é o sistema, e, consequentemente, a sua usabilidade estará atrelada a todos esses fatores citados anteriormente. Dessa forma, é sempre importante a realização de uma Manutenção de software6 preparação inicial antes do começo de ciclo de vida do software. A manutenção requer atenção tanto quanto as demais etapas do processo, pois ela garante o tempo de vida útil do software. Nesta fase de manutenção de software, um documento específico pode ser desen- volvido, chamado de relatório de defeitos. A primeira coisa necessária ao se fazer a manutenção de um produto é um proce- dimento para modificá-lo. Em relação à manutenção corretiva, isto é, à eliminação de falhas residuais, se o produto não estiver funcionando corretamente, então o usuário deverá preencher um relatório de defeitos, que deve conter informações suficientes para permitir que o programador de manutenção repare o problema. Normalmente trata-se de algum tipo de defeito de software. Além disso, o programador de manu- tenção deve indicar a gravidade do defeito. Categorias de gravidade típicas são: crítico, importante, normal, secundário e trivial (SCHACH, 2010). 7Manutenção de software OSBORNE, W. M.; CHIKOFSKY, E. J. Fitting pieces to the maintenance puzzle. IEEE Software, Los Angeles, p. 11-12, Jan. 1990. PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software: uma abordagem profissional. 8. ed. Porto Alegre: AMGH, 2016. SCHACH,S. R. Engenharia de software: os paradigmas clássicos e orientado a objetos. 7. ed. Porto Alegre: AMGH, 2010. SOMMERVILLE, I. Engenharia de software. 9. ed. São Paulo: Pearson, 2011. Leitura recomendada PFLEEGER, S. L. Engenharia de software: teoria e prática. 2. ed. São Paulo: Prentice- -Hall, 2004. Dica do professor Nesta Dica do Professor, iremos falar sobre o processo de manutenção de software, os problemas que podem ocorrer na sua manutenção e analisar os motivos de mudanças do sistema. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/6717fcd03992439f679060db815fe49e Exercícios 1) Qual das descrições apresentadas define melhor a manutenção de software? A) É o processo de melhoria e otimização de um sistema já desenvolvido, como também é o reparo dos seus defeitos. B) É o processo em que o software é testado em busca de falhas. C) É a etapa em que o software é desenvolvido pelos programadores. D) É o processo de análise das necessidades do cliente. E) É a fase que existe o planejamento do projeto realizado pelo gerente de projetos. 2) Um sistema de controle de vendas foi entregue para o cliente após passar por uma bateria de testes. O cliente, após dois meses de uso, notou que um dos cálculos realizados durante a preparação do relatório de vendas diário estava errado. Então, foi solicitada a manutenção desse software com o objetivo de ajustar esse cálculo. Essa solicitação foi de qual tipo de manutenção? A) Manutenção evolutiva. B) Manutenção corretiva. C) Manutenção adaptativa. D) Manutenção preventiva. E) Manutenção total. 3) Por que é importante que a manutenção do software seja prevista durante o planejamento da criação? A) Devido à manutenção ser realizada mais rapidamente do que a implementação do software. B) Para que o software seja inutilizado antes do previsto. C) Para que os desenvolvedores finalizem o projeto mais rapidamente. D) Devido à manutenção de software, geralmente, possuir um custo mais elevado do que o próprio desenvolvimento. E) Para que os defeitos e falhas não sejam encontrados. 4) O processo de manutenção de software, em alguns casos, enfrenta problemas que dificultam todo o processo. Qual é a principal causa desses problemas? A) A maioria dos problemas com a manutenção do software é causada pelo uso de testes unitários. B) A maioria dos problemas com a manutenção do software é causada por implementações bem estruturadas e codificadas, pois utiliza padrões de projetos e conceitos bem definidos. C) A maioria dos problemas com a manutenção do software é causada pela existência de uma documentação vasta e bem elaborada. D) A maioria dos problemas com a manutenção do software é causada por um planejamento. E) A maioria dos problemas com a manutenção do software é causada por deficiências na maneira como ele foi planejado e desenvolvido. 5) O que significa manutenibilidade? A) Manutenibilidade pode ser definida como a forma de manutenção do software. B) Manutenibilidade pode ser definida como o conjunto de técnicas utilizadas para verificar se o software atende às necessidades do cliente. C) Manutenibilidade pode ser definida como a facilidade com que o software pode ser entendido, corrigido, adaptado e/ou melhorado. D) Manutenibilidade pode ser definida como o conjunto de técnicas de implementação de software. E) Manutenibilidade pode ser definida como a possibilidade de um software obter manutenção. Na prática O gerente de projetos de uma empresa de desenvolvimento de software está fazendo o planejamento de como será a manutenção de um projeto que está começando. Como foi feito um estudo aprofundado de manutenção, entende-se que existem diferentes tipos de manutenção de software e que cada um desses tipos atende a uma necessidade de mudança no projeto em questão. Veja o passo a passo de cada umas das manutenções sofridas por esse software: Conteúdo interativo disponível na plataforma de ensino! Saiba + Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor: Desenvolvimento e Manutenção de Software Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. Tipos de manutenção de Software Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. Manutenção de Software: Definições e Dificuldades - Artigo Revista SQL Magazine 86 Esse artigo apresenta algumas definições de manutenção de software, os tipos existentes, os impactos de sua aplicação e como é utilizada durante o desenvolvimento de um sistema. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. http://www.macoratti.net/vb_mds1.htm http://leandromtr.com/tipos-de-manutencao-de-software/ https://www.devmedia.com.br/manutencao-de-software-definicoes-e-dificuldades-artigo-revista-sql-magazine-86/20402
Compartilhar