MANUTENÇÃO DE SOFTWARE Francisco Luiz Sobrinho, Samily Rocha Gois Faculdade de Tecnologia SENAC – Goiânia/GO (SENAC/GO) Av. Independência número 1002 - CEP 74645-010 – Setor Leste Vila Nova - Goiânia GO – Brasil Engenharia de Software Gestão da Tecnologia da Informação II - Matutino [email protected], [email protected] Abstract. The amount of software running on any kind of organization is attracting attention for one stage of the life cycle of software, previously considered Secondly, the maintenance of software. The problems arising from this activity need to be well understood. That usually is not feasible to replace the software products of an organization by others based on recent technologies, makes the system maintenance an additional challenge to the search of techniques and methods for software maintenance. Resumo. A quantidade de software em funcionamento em todo tipo de organização vem despertando atenção para uma fase do ciclo de vida de software, até então considerada em segundo lugar, a manutenção de software. Os problemas oriundos dessa atividade precisam ser bem compreendidos. O fato de geralmente não ser viável substituir os produtos de software de uma organização por outros baseados em tecnologias recentes, torna a manutenção de sistemas um desafio adicional para a busca de técnicas e métodos para a manutenção de software. 1. Introdução A Engenharia de Software desenvolve, cria e aperfeiçoam continuamente métodos, procedimentos e ferramentas para tornar a atividade de desenvolver e manter software uma tarefa que possa ser medida, controlada e avaliada. Ao longo das últimas décadas houve uma melhora significativa do conceito de software, de suas características e dos seus processos. Todo esse desenvolvimento na atualidade destina-se à atividade de manutenção de software e essa importância ocorre por causa da quantidade de software em funcionamento nas organizações, mas não são substituídos, e é justamente por causa disso que surge a necessidade de manutenção de software. Essa Necessidade concorre a diversos problemas originados de diversas fontes como: a própria administração das organizações, o perfil dos clientes ou as deficientes técnicas utilizadas na construção de software. Este artigo colabora para melhor entender as dificuldades de uma das importantes atividades dentro do ciclo de vida do software, a atividade de manutenção de software. Existem Trabalhos em algumas instituições de ensino superior no sentido de estabelecer uma disciplina própria para manutenção de software em cursos de graduação e essa iniciativa mostra a necessidade da importância de ensinar manutenção de software no meio acadêmico, antes de os alunos se tornarem profissionais. Fica claro dessa maneira, entender a importância de pesquisar e correlacionar as informações sobre a atividade de manutenção de software dentro das organizações, evidenciando assim, quais são as dificuldades dessa atividade (manutenção de software), para que sejam estabelecidos programas de ensino baseados na prática e não apenas fechados dentro da realidade do meio acadêmico. Muitos problemas referentes ao desenvolvimento e manutenção de software continuam em muitos casos sem solução, apenas com muitos conceitos sem evolução. Entender o significado da manutenção de software constitui o passo fundamental para o estudo e aprofundamento de soluções para os problemas ligados a essa tarefa. 2. Dificuldades – O que pode ser feito? É importante destacar que diversos profissionais estão trabalhando diretamente em manutenção de software no meio organizacional mesmo sem uma graduação específica, mas contribuindo para os fatores importantes envolvidos com a manutenção de software, favorecendo opções para essa real necessidade, bem como proporcionando atendimento às organizações. A atividade de manutenção de software é distinguida pela modificação de um produto de software já entregue ao cliente para correção de supostos erros, melhorando seu desempenho ou qualquer outro atributo, para adaptação desse produto a um ambiente modificado (IEEE, 1998). Segundo Pfleeger (2001), existem três diferenças na manutenção de software muito embora o mesmo seja tratado de forma genérica, porém, com propósitos distintos: I. II. Softwares construídos com base em uma especificação rígida e bem definidos cujos resultados esperados são bem conhecidos: um software construído pode realizar operações com matrizes (adição, multiplicação e inversão). Esse software devidamente implementado praticamente não haverá necessidade de manutenção. Em outra situação, são agrupados os softwares que são implementações, de soluções aproximadas para problemas do mundo real, sendo que soluções completas só são conseguidas na teoria nesses casos. Exemplo: em um jogo de xadrez suas regras são bem definidas, mas não é possível construir um software que calcule a cada passo todos os movimentos possíveis das peças do tabuleiro, de maneira que consiga determinar o melhor movimento. O número de movimentos possíveis é grande para ser calculado em um espaço de tempo relativamente curto. A solução para esse problema baseia-se em descrever o problema de forma abstrata para então definir os requisitos de software a partir dessa abstração. Percebe-se que esse III. tipo de sistema já contempla diferentes interpretações por parte do desenvolvedor, que tende a produzir software com maior necessidade de manutenção em relação ao primeiro exemplo. Por ser uma abstração para especificação de requisitos, a mudança pode aparecer caso a abstração mude na medida em que um maior entendimento do problema seja alcançado. Nessa situação, alguns tipos de software consideram mudanças no ambiente onde o software vai ser utilizado, condição não existente nas situações anteriores. Neste caso, o software corresponde àquele criado com base em um modelo dos processos abstratos envolvidos no sistema e precisará mudar sempre que ocorrerem mudanças nesses modelos, inicia no ambiente que ele modela. Um tipo de software assim seria aquele que apresenta informações de economia de um país. À medida que a economia passa a ser compreendida o modelo muda e com ele a abstração do problema, causando uma necessidade de manutenção. Esses softwares são encontrados no dia-a-dia das organizações. O processo de manutenção de software não compreende a uma atividade isolada, pois sua execução tem partes diferentes e precisam interagir de forma que os objetivos da manutenção sejam entendidos e os resultados alcançados. Essas partes são apresentadas da seguinte forma: Organizações Cliente: corresponde ao adquirente do software, conforme definido pela norma ISO/IEC 12207. Isso significa que as organizações que possui o software requisita o serviço de manutenção; Mantenedor: trata-se da organização que oferece o serviço de manutenção; Usuário: representa a organização ou pessoa que utiliza o software, valendo-se suas funcionalidades para automatizar e facilitar as tarefas. O relacionamento entre essas partes é a constituição de um fluxo para os pedidos de manutenção conferido na figura 1.0. A organização possui um responsável pela solicitação de manutenção que especifica os requisitos e informa ao mantenedor. Esse responsável considera os erros apontados pelo help-desk encarregado do diálogo com os usuários. Do lado do mantenedor, a organização que presta o serviço encarrega alguém para avaliar as requisições, julgando ser necessário ou não para os objetivos do software e do solicitante. Se o pedido for aceito, destaca-se um encarregado para estabelecer um cronograma de entrega e o mesmo deverá ser seguido pela equipe de manutenção que são as pessoas envolvidas em atender as solicitações. O usuário utiliza o software reportando para o help-desk que por sua vez informará o responsável pelas solicitações de manutenção fechando o ciclo. Figura 1.0: Fluxo envolvido na manutenção de software Com relação à falha e ao defeito de software, Pressman (2005) explica que a IEEE define para o contexto de hardware a explicação de que um defeito o constitui uma anomalia do produto. Já uma falha pode significar um defeito em um dispositivo, uma definição incorreta de passos, processos ou de dados em um programa de computador. No contexto de manutenção de software, os termos falha e defeito são sinônimos e ambos se referem a algum problema relacionado à qualidade, identificado depois de o software ser entregue ao usuário. Atividades de manutenção de software são caracterizadas por intervenções no produto de software de forma a evitar sua deterioração. Um software não se desgasta, mas se deteriora no sentido de os objetivos de suas funcionalidades cada vez menos se adequarem ao ambiente externo. A manutenção de software deverá contemplar o nível de satisfação do usuário em relação ao software utilizado. 3. Norma ISO/IEC 12207 Em 1987 a ISO e a IEC estabeleceram om Comitê Técnico Conjunto – JTC (Join Technical Committee) sobre tecnologia da informação, a fim de efetuar a normatização no campo de sistemas de tecnologias da informação. Dentre os objetivos estava o estabelecimento de um padrão para processos de ciclo de vida de um software, que culminou a norma ISO/IEC 12207, que teve início em 1989. Essa norma provê um conjunto de Processos de Engenharia de Software que uma organização deve utilizar para adquirir, fornecer, desenvolver ou manter software, pois documenta os processos do ciclo de vida de software em um modelo de referência de processos. 4. Conclusão A grande maioria dos estudos existentes na área de manutenção de software utiliza a metodologia de “pesquisar-e-transferir”, no sentido de pesquisa fechada dentro do meio acadêmico enquanto existe uma necessidade de usar a abordagem “indústria-comolaboratório”, uma vez que é nas indústrias que a atividade de manutenção existe como atividade real e intensa do dia-a-dia. Manutenção de software deve ser considerada com base em seu ambiente de aplicação e, essa abordagem representa a melhor fonte de evidências para sustentar e guiar as pesquisas de melhoria e sistematização da atividade. A ausência de um processo de manutenção de software, como dita as normas de Engenharia de Software, não é de todo condenável se o processo criado pela própria organização funcionasse de maneira satisfatória. O que deve ser observado é a pressão gerada pelos clientes muitas vezes prejudica o cumprimento correto da sequência de passos estipulada pela própria organização para tratar a manutenção de software. A inexistência de manutenção preventiva é um fato que precisa ser analisado em conjunto com os objetivos de negócio da organização e com seus projetos em relação à vida útil do software que mantém. 5. Referências: IEEE (1998) – especifica a forma de um conjunto de documentos em oito estágios definidos de teste de software. Melhora o desempenho ou qualquer atributo para adaptação desse produto a um ambiente modificado. S. L, Pfleeger (2001) – Software Engineering Theory and Practice – second edition ISBN-10:0130290491|ISBN-13:9780130290496. R. S., Pressman (2005) – Explica IEEE – Artigo: alternativas para redução de problemas na manutenção de software: artigo revista Engenharia de software by Mateus Maida Paduelli, Mestre em Computação pela USP. Norma ISO/IEC 12207 – Comitê Técnico Conjunto-JTC (Join Technical Committee) Tecnologia da Informação – Teve início em 1989 – Versão inicial (1995) – Estrutura para manutenção de software.