A manutenção de software nas empresas Ronan Assumpção Silva (UTFPR) [email protected] Simone Nasser Matos (UTFPR) [email protected] João Umberto Furquim de Souza (UEPG) [email protected] Louisi Francis Moura (UTFPR) [email protected] Resumo A manutenção de software pode tomar 80% do tempo total no desenvolvimento do produto de software. O tempo para se entender o produto é alto e pode ser otimizado. A falta de boas práticas e a falta de consideração de pontos de impacto tem levado muitos projetos de software ao fracasso. O artigo apresenta um estudo através de revisão bibliográfica sobre a tecnologia nas empresas e a manutenção de produtos de softwares utilizados. É possível apresentar o software manutenível e atender as necessidades do cliente de forma evolutiva, aumentando a durabilidade do software. Paralelamente, é possível acrescentar informações pertinentes a escolha de um produto de software por parte do cliente. O artigo conclui que a manutenção de software é fator relevante na diminuição dos custos, para a maximização do seu uso nas empresas, além de contribuir para o aperfeiçoamento do desenvolvedor. Palavras chave: Manutenção de software, Tecnologia da Informação, gestão. The software maintenance in the companies Abstract The software maintenance can take 80% of the total time in the development of the software product. The time to understand the product is high and can be optimized. The fault of good practices and the fault of consideration of impact points it has been carrying lots of projects to the failure. The article shows a study through bibliographical revision about the technology in the companies and the maintenance of software products used. It is possible to show the maintainable software and attend the needs of customer of evolutionary form, increasing the software durability. As the same time, it is possible to increase information pertinent the choice of software product by the client. The article concludes that the software maintenance is important factor in the costs decrease, maximizing its use in the companies, besides contributing for the improvement of the developer. Key-words: Software maintenance, technology of the information, administration. 1 INTRODUÇÃO Com o advento da Tecnologia da Informação (TI) uma significativa parcela das atividades e ações do ser humano depende da utilização de softwares o que tem acarretado na necessidade de seu desenvolvimento de modo rápido e com baixo custo. Assim, a qualidade dos softwares está interligada com um produto adequado ao uso que se propõe. Essa rápida e crescente demanda de Tecnologias da Informação tem aberto muitas oportunidades de trabalho. Inúmeros são os desenvolvedores de softwares na expectativa de altos retornos financeiros, porém gerando alta concorrência. Percebe-se que esse fato tem levado ao desenvolvimento de softwares baratos, de rápida comercialização. Porém, para se manter no mercado é necessário que, além de preço baixo, garantias de excelência e qualidade seja parte do produto vendido. Como todos os produtos em geral, os softwares também necessitam de manutenção. Essa necessidade é derivada, principalmente, do avanço da tecnologia e as constantes atualizações nos processos empresariais dos clientes – comércios, indústrias, prestadores de serviço. É crescente o estudo de padrões de manutenção. Pois a demanda por produtos de software de qualidade sob todos os aspectos é uma questão global. Em extremos, haverá sempre a questão do custo de continuidade e a questão do desenvolvimento de um novo produto de software. Outro fator que demonstra essa preocupação são as pesquisas realizadas com o fim de fazer da manutenção de software, uma disciplina nos cursos de Tecnologia em Informática, Bacharelado em Informática e Engenharia da Computação entre outros. Diante desse cenário, como a tecnologia da informação se apresenta no sentido de garantir qualidade nos softwares às empresas? Esse artigo, através de revisão bibliográfica, apresenta a necessidade da manutenção de softwares para que as empresas clientes possam usufruir do produto adquirido, garantido pela qualidade dos serviços prestados e a viabilidade para o mercado da TI. 2 METODOLOGIA O presente artigo quanto a sua natureza é classificado como pesquisa básica, e quanto ao problema sua abordagem é qualitativa. Em sua pesquisa bibliográfica, o artigo apresenta referencial teórico quanto à importância da tecnologia para as empresas no quesito da manutenibilidade dos softwares. 3 O IMPACTO DA T.I. NAS ORGANIZAÇÕES O avanço da tecnologia tem deixado cada vez mais o ser humano dependente dela para a realização das suas ações, principalmente no que tange às atividades empresariais. Talvez seja ainda possível encontrar pequenas e micro empresas que pouco utilize computadores, impressoras, aparelhos de fax, celulares, mas grandes empresas não compartilham dessa realidade, uma vez que a informação é fator determinante para empresas que investem no controle de seus processos. Isso permite o progresso das tecnologias da informação e também do aumento de seus desenvolvedores. Com essa expansão no mercado, cada cliente tem a expectativa que o software adquirido atenda suas necessidades empresariais para a qual realmente se destina, e em um caso específico de necessidade, espera-se que a resposta do desenvolvedor seja pontual, realizando a manutenção que a necessidade irá exigir. O MRP (Material Requirements Planning - Planejamento das Necessidades de Material) identifica a necessidade real de material para produção e o momento a ser requisitado, a fim de que a data estabelecida seja cumprida, minimizando a formação de estoques. A principal informação pelo MRP é o Programa-Mestre de Produção que estabelece as datas da entrega, a produção e especificação do produto e liberação do produto. A carteira de pedidos disponibiliza dados como, o que produzir e quanto produzir. Esses dados são utilizados pelo Programa-Mestre ao organizar a produção. Assim, o MRP pode verificar a lista de material para cada produto e remeter-se ao estoque. O sistema pode, a partir desses dados, liberar as ordens de produção. Com o conhecimento da técnica do MRP, o programa foi se expandindo ao usar da lógica do sistema para o cálculo de outras necessidades de manufatura. Surgiu então, o MRP II (Manufacturing Resources Planning) – Planejamento dos Recursos de Manufatura. Slack et al. (1997) afirmam que o MRP II é considerado como um plano global para uma empresa, ao envolver as áreas de produção, marketing, finanças e engenharia. O ERP (Sistemas Integrados de Gestão - Enterprise Resource Planning) é derivado desses softwares. Como propõe o nome, o ERP é um software que abrange a empresa e seus processos em sua totalidade. Rochetti, Campos, Galera (2008) explicam que o sistema ERP é utilizado principalmente em médias e grandes empresas devido ao complexo e caro processo de implantação, que nem sempre atende a todas as expectativas do cliente. A venda dos sistemas ERP se caracteriza por um pacote de software: módulos para implantação daquilo que o cliente deseja. Apesar dessa possibilidade de customização do ERP na empresa, ela não é incentivada pelos desenvolvedores devido ao risco do desempenho e integridade do sistema (ROCHETTI, CAMPOS, GALERA, 2008). Não há garantia de que o desenvolvedor do software se disponha a desenvolver mais módulos. Neste caso, o desenvolvimento de módulos segundo uma prioridade é tema de estudos de metodologias de análise e desenvolvimento de sistemas e uma necessidade de produzir o necessário. Além disso, a qualidade envolvendo tal ação, pode definir se o projeto de produto de software irá ter continuidade ou será vantajoso adotar uma outra solução, que pode ser desenvolver um novo produto ou adquirir um já bem estabelecido no mercado, flexível a ponto de atender as necessidades já percebidas. 4 REQUISITOS DE SOFTWARE Os requisitos de software correspondem ao processo de desenvolvimento que auxilia no resultado eficaz. O processo é delimitado a partir de estudos de viabilidade verificando a sua viabilidade ou não. Fernandes; Pessoa (2008) descrevem os requisitos para o desenvolvimento de software a fim de garantir o resultado esperado. Segundo os autores, “o processo de descobrir, analisar, documentar e verificar essas funções e restrições é chamado de engenharia de requisitos” (FERNANDES; PESSOA, 2008, P.3). É importante que se tenha esses requisitos definidos para que o projeto seja corretamente desenvolvido, pois: Como o insumo para a próxima fase depende do resultado da fase anterior e, assim sucessivamente até o produto estiver concluído e, existe a possibilidade de haver mais de uma pessoa envolvida, é necessário um rigor maior na documentação do trabalho executado além do próprio trabalho realizado (TONINI, PLONSKI, SPÍNOLA, 2008, P. 7). Esses requisitos são importantes aliados ao sucesso do software, pois definem com antecedência as etapas de desenvolvimento. Essas definições são feitas a partir da oferta pelo desenvolvedor e pela necessidade do provável cliente. Assim, é de interesse ao desenvolvedor um alto nível de detalhamento dos requisitos, os quais serão de interesse também para o designer, a descrição e documentação. 5 MANUTENÇÃO DE SOFTWARES Um software necessita de uma série de requisitos para seu desenvolvimento. Entretanto, isso não o exclui da necessidade de manutenção com o fim de garantir sua eficiência ao longo do seu tempo de uso. Segundo Pigoski (1996) e Pfleeger (2001) 80% dos custos de um software referem-se à sua manutenção. O processo de manutenção do software então pode ser definido como a mudança e aperfeiçoamento do produto após a sua implementação, com o fim da correção de erros e defeitos, melhorando seu desempenho e adaptando-o às necessidades reais do negócio (CALAZANS; OLIVEIRA, 2005). Desse conceito, pode-se definir a evolução dos softwares a partir das mudanças proporcionadas pela sua manutenção ao corrigir erros e falhas, agregar novas funcionalidades, deixando-o completo, adaptado, em pleno funcionamento, proporcionando dados e informações a que ele deve atender e não perder a habilidade de ser manutenível. Além disso, a manutenção do software também minimiza os custos de suporte. Como citado anteriormente, o planejamento permite definições do sistema de modo a delimitar seu uso. A manutenção, portanto, engloba a pós-entrega, com modificações a partir do real uso e adaptação do software. 6 OS TIPOS DE MANUTENÇÃO DE SOFTWARE A manutenção dos softwares é classificada conforme sua necessidade. Calazans; Oliveira (2005) apresentam a classificação geral de manutenção de softwares. Ela é dividida em quatro categorias: a) manutenção corretiva; b) manutenção adaptativa; c) manutenção perfectiva; d) manutenção preventiva. 6.1 Manutenção Corretiva Esse tipo de manutenção refere-se refere àquela que objetiva a identificação e remoção de falhas. falhas Compreende erros de design, lógica e codificação no sistema. 6.2 Manutenção Adaptativa Refere-se se à manutenção devido às modificações no software quanto ao ambiente externo, ou seja, plataformas de software e hardwares diferenciados. Compreende compiladores, banco de dados, novos processadores e sistemas operacionais. 6.3 Manutenção Perfectiva Também conhecida como Manutenção Evolutiva, é o tipo de manutenção com o fim de que o software tenha seus requisitos funcionais aprimorados, melhorando a eficiência do sistema. A partir de observação e participação dos desenvolvedores do software e dos usuários, estabelece-se se planos de melhoria incluindo novas funcionalidades e expandindo a abrangência abra das funcionalidades ncionalidades já em uso. 6.4 Manutenção Preventiva Ao longo do ciclo de vida do software, fatores internos e externos a ele implicam em modificações que o deterioram. A manutenção preventiva caracteriza-se caracteriza deve permitir uma facilidade maior na modificação do software quanto a correção, adaptação ou melhoria. melhoria Resulta em maior confiabilidade e manutenibilidade. Vendas 4% 25% 21% Adaptativa Corretiva Evolutiva/Perfectiva Preventiva 50% as manutenções de acordo com o tipo. Fonte: Pleefger, Pleefger 2001. Figura 1 – Percentual das A figura 1 mostra que metade das ocorrências que correspondem à manutenção de software, é a manutenção do tipo corretiva, ou seja, aquela responsável por tratar das falhas e erros. Em 25% está a adaptativa, que se refere a mudanças que ocorrem no ambiente externo. Com 4% está a manutenção do tipo preventiva, que é o investimento no software em mantê-lo manutenível, organizado e documentado. E com uma importância de 21% das ocorrências de manutenção de software, está a manutenção evolutiva, também conhecida como perfectiva. Esta influencia no processo de maturidade do software. 7 MANUTENIBILIDADE DE SOFTWARE Todo software pode evoluir ao longo do tempo quando ele é aperfeiçoado pelos seus usuários e desenvolvedores. Pressman (2006) conceitua como a facilidade que um produto de software pode ser entendido, corrigido, adaptado e/ou aumentado. Em estudos para determinar a influência na manutenibilidade de software, Brusamolin (2004) classificou fatores de impacto, como: a) arquitetura: o investimento em arquitetura de software aprimora a manutenibilidade. A divisão da aplicação em componentes e dos componentes em classes tornou cada unidade de código-fonte bem menor do que em uma abordagem monolítica, de modo que o esforço para modificar o código apresenta-se pequeno e o potencial de inclusão de erros nessa modificação é reduzido; b) tecnologia: Uma das preocupações que o gerente deve ter é a de verificar o software permite um bom grau de manutenibilidade. Ao longo do ciclo de vida de grandes sistemas, a programação de softwares usando a orientação a objetos se mostrou positiva, devido às manutenções mais localizadas levarem menor degradação do código; c) documentação: o investimento em tempo para compreender o produto antes de modificá-lo é maior quando a documentação ou especificações de design do software não estão disponíveis; d) compreensibilidade do programa: cerca de metade do tempo da manutenção, é usado para entender a documentação e lógica dos produtos de software. Estes fatores de impacto abrangem todo o ciclo de vida do software. A interdependência desses fatores irão determinar a capacidade de um software ser manutenível. É possível observar que esses fatores partem basicamente da organização bem feita de um projeto de produto de software. 7.1 Práticas de manutenibilidade Para que o software tenha um alto nível de manutenibilidade, foram observados alguns quesitos que funcionam no desenvolvimento e manutenção de software. Para Pigoski (1996) produzir sistemas manuteníveis deve ser levado em consideração já no levantamento de requisitos. Ele sugere algumas práticas que levam à manutenibilidade: a) Revisões de averiguação; b) Caminhamentos estruturados; c) Uso de design orientado a objetos; d) Assegurar que cada linha de código tenha no máximo uma declaração; e) Assegurar que comentários tenham informação útil; f) Assegurar que programação “esotérica” seja evitada; g) Empregar convenções de programação; h) Usar definições de dados comuns; i) Estabelecer padrões para desenvolvimento de procedimentos e documentos do sistema; j) Registrar o processo de desenvolvimento explicando a filosofia de desenvolvimento e o processo decisório; k) Estimular a simplicidade; l) Estudar possíveis mudanças futuras e aperfeiçoamentos; m) Medir a complexidade dos componentes do sistema; n) Registrar os pontos fracos do sistema e pontos problemáticos; o) Estabelecer critérios de aceitação para avaliar a qualidade do software, com particular atenção na qualidade da manutenibilidade; p) Previsão de falhas. 7.2 A ISO/IEC 9126 Esta norma aborda um modelo de qualidade de produto software. Costa (2005) observou através de estudo da norma ISO/IEC 9126, que esta facilita: a) diagnosticar as deficiências ou causas de falhas ou ainda identificar as partes a serem modificadas; b) modificar o produto de software, de forma a remover os defeitos ou a adaptá-lo às mudanças ambientais; c) validar o produto de software que sofreu modificação; d) identificar o risco de efeitos inesperados, os quais ocasionados por modificações. Além disso, a norma ISO/IEC 9126 propõe um modelo de qualidade de uso, que é a visão da qualidade de produto de software sob a perspectiva do usuário. Observe a figura 2 a seguir: Qualidade de uso Eficácia Produtividade Segurança Figura 2 – Qualidade de uso. Fonte: ISO/IEC 9126. Satisfação Qualidade em uso é a capacidade com que um produto de software deve realizar os objetivos para um usuário de acordo com a eficácia, produtividade, segurança e a satisfação em um dado contexto. Estes conceitos seguem abaixo: Eficácia: entende-se como eficácia a capacidade com que um produto de software atinge os objetivos com exatidão e plenamente para os usuários; Produtividade: capacidade do produto de permitir aos usuários agregar recursos a eficácia obtida; Segurança: produto deve apresentar níveis aceitáveis de riscos de danos no tocante a pessoas, negócio, software, propriedades ou ao ambiente; Satisfação: alcançar a satisfação dos usuários. 8 CONSIDERAÇÕES FINAIS A tecnologia da informação se apresenta favorável no sentido de garantir qualidade nos softwares às empresas. Normas como a ISO evidenciam a preocupação com que a tecnologia da informação vem evoluindo, entre outras coisas, na qualidade. Dentre muitos fatores que irão determinar se um software será capaz de atender as necessidades do cliente está a sua manutenção. A manutenção de software vem evidenciando que adotar práticas de manutenibilidade desde o levantamento de requisitos para o desenvolvimento de software deve ser uma preocupação do cliente e do desenvolvedor e/ou mantenedor do software. Com a crescente busca por informação os produtos de software vêm sendo adaptados às realidades da empresa, quando este é manutenível e quando o custo de manter o projeto é vantajoso em relação ao investimento em um produto de software novo. Independente dessa relação, a manutenção de software deve ser levada em consideração desde o início do projeto e em todo o ciclo de vida do produto de software. Considera-se o produto de software como inacabado, pois a manutenção não é realizada somente para corrigir falhas. Ela passa por constante revisão para a maturidade relativa à sua funcionalidade proposta e as demais que surgem no uso do sistema e nas necessidades do cliente. Como a manutenção é o item do ciclo de vida do software que mais exige tempo, minimizar os riscos do mantenedor não atende a demanda solicitada. É importante que os quesitos para o software ser manutenível esteja de acordo entre a sua documentação e o seu desenvolvimento com o fim de assegurar que o produto atinja a maturação a que foi destinado. O artigo também mostrou a importância de ter os fatores de impacto como base para todo e qualquer estudo sobre manutenibilidade de software. A preocupação quanto à abordagem da documentação do software deve ser realizada de maneira contínua, minimizando o tempo gasto com o entendimento do produto. Em geral o tempo para esta percepção é longo, exigindo maior esforço do mantenedor e maior tempo para conclusão de uma determinada manutenção. O conhecimento de requisitos e as práticas de manutenção de software tornam-se importante fator de eficiência na sua implementação, pois é uma tarefa que leva mais da metade do tempo em todo o desenvolvimento de produtos de software. Analisando a qualidade de uso, a manutenção do software não tem valor algum se perder o propósito combinado com o cliente de atender as necessidades a que ele se destina. Conclui-se que a manutenção de software é fator relevante na diminuição dos custos, para a maximização do seu uso nas empresas, além de contribuir para o aperfeiçoamento do desenvolvedor. REFERÊNCIAS BIBLIOGRÁFICAS BRUSAMOLIN, V. Manutenibilidade de Software. In: Revista Digital Online, v.2, jan. 2004; CALAZANS, A. T. S.; OLIVEIRA, M. A. L. Avaliação de Estimativa de Tamanho para Projetos de Manutenção de Softwares. Toffano Seidel Calazans et al./Proc. of Argentine Symposium on Software Engineering, 2005; COSTA, H. A. X. Critérios e Diretrizes de Manutenibilidade para a Construção do Modelo de Projeto Orientado a Objetos. Tese (Doutorado). Escola Politécnica – Universidade de São Paulo, São Paulo, SP, 2005; FERNANDES, V.; PESSOA, M. Diretrizes Estratégicas para empresa de software. XXVIII Encontro Nacional de Engenharia de Produção. Rio de Janeiro, RJ, 2008; ISO/IEC 9126-1. Software engineering– Software product quality- Part 1: Quality Model. 2001; Oliveira, T. M. A. de. et al. Perception on software maintenance: a case study with information technology managers. In: International Conference on Information Systems and Technology Management, 5, São Paulo, 2008; PIGOSKI, T. M. Pratical Software Maintenance: Best Practices for Managing your Software Investment. Wiley Computer Publishing, 1996; PFLEEGER, S. L. Software Engineering – Theory and Practice, 2ª ed. Prentice-Hall, 2001; PRESSMAN, R. S. Engenharia de Software, 6ª ed. McGraw-Hill, 2006; ROCHETTI, A. T.; CAMPOS, R; GALERA, R. G. Um estudo sobre correspondências entre as classes do ERP5 e os construtores de linguagem Cimosa. XXVIII Encontro Nacional de Engenharia de Produção. Rio de Janeiro, RJ, 2008; SLACK, N.; CHAMBERS, S.; HARLAND, C.; HARRISON, A. & JOHNSTON, R. Administração da Produção. Atlas. São Paulo, 1997; TONINI, A. C.; PLONSKY, G. A.; SPÍNOLA, M. M. Maturidade e inovação no desenvolvimento de software: convergência ou conflito. XXVIII Encontro Nacional de Engenharia de Produção. Rio de Janeiro, RJ, 2008.