Engenharia de Requisitos, Manutenção Corretiva e Acordo de Nível de Serviço. Nilton Ferreira Caetano, Francinaldo de Paula Santos, Thiago Lopes de Godoi Barbosa Centro Universitário de Brasília (UNICEUB) SEPN 707/907 – 70.790-075 – Brasília – DF – Brasil [email protected], [email protected], [email protected] Resumo: O presente artigo trata de uma relação entre Engenharia de Requisitos, Manutenção Corretiva e o Acordo de Nível de Serviço. A Engenharia de Requisitos é um ramo da Engenharia de Software que engloba todas as atividades que contribuem para a produção de um documento de requisitos de software. O documento de requisitos de software é útil durante o tempo em que o software é utilizado, pois serve de apoio as Manutenções Corretivas que ele sofrerá. A Manutenção Corretiva que variavelmente pode ocorrer, visa corrigir as falhas nas funcionalidades do software e dos requisitos mal especificados. O Acordo de Nível de Serviço (ANS ou SLA, do inglês Service Level Agreement) é um contrato assinado entre a área de Tecnologia da Informação e seu cliente, visando definir prioridades, etapas, responsáveis, regras, penalidades, multas, fornecedores, etc. Inclui o que é necessário para suporte às Manutenções Corretivas do software. Como resultado, demonstrase que estes três assuntos podem ajudar nas Manutenções Corretivas dos softwares. Palavras-Chave: Engenharia de Requisitos (ER), Acordos de Nível de Serviço (ANS), Manutenção Corretiva e Tecnologia da Informação (TI). 1. Introdução 2 Atualmente é uma grande preocupação a qualidade dos softwares das empresas que o foco não é a área de Tecnologia da Informação (TI). A preocupação está ligada em manter a confiabilidade, atrair mais clientes a fim de expandir seus negócios, atender questões de legislação e corrigir problemas. Nesse contexto, é importante uma estratégia que mantenha o software disponível a seus usuários, mas também um software com qualidade e de acordo com a necessidade do momento. Entender os requisitos das necessidades das empresas, entretanto é uma das tarefas mais difíceis enfrentadas por um Engenheiro de Software na manutenção. Em muitos casos, os usuários responsáveis pelo software já saíram das empresas, ou não existe nenhum documento que contenha as regras do software ou ainda pode ocorrer à má qualidade do software. (Lientz e Swanson, 1980), (Dekleva, 1992), (Dart et al., 2001). A Engenharia de Requisitos como todas as outras atividades da Engenharia de Software, precisa ser adaptada às necessidades do processo, do projeto, do produto e do pessoal que está fazendo o trabalho de manutenção do software. A Engenharia de Requisitos fornece subsídios para manutenção do software, permitindo à equipe responsável pela manutenção examinar: o contexto do trabalho necessário a ser executado; as necessidades específicas que a manutenção precisa satisfazer; as prioridades do trabalho que devem ser completadas em primeiro, as funções e os comportamentos que terão um impacto profundo com a manutenção do software (PRESSMAN, 2006). Há mais de três décadas, a manutenção de software foi caracterizada como um “iceberg”. No início dos anos 1970, o iceberg de manutenção era suficientemente grande para afundar um porta-aviões. Hoje, poderia facilmente afundar toda a Marinha (PRESSMAN, 2006). A manutenção de software existente pode ser responsável por mais de 60% de todo o esforço despendido por uma organização de desenvolvimento, e a porcentagem continua a crescer à medida que mais softwares são produzidos. Utilizando o princípio de Pareto (VALE, 2010) onde apenas 20% de todo o trabalho de manutenção é gasto consertando erros. Os restantes 80% são gastos adaptando sistemas existentes a modificações no seu ambiente 3 externo, fazendo melhorias solicitadas por usuário se submetendo uma aplicação a reengenharia (PRESSMAN, 2006). Em destaque esta atividade de Manutenção Corretiva de software que é caracterizada pela modificação de um produto de software já entregue ao cliente. Isso serve para a correção de eventuais erros, melhora em seu desempenho, ou qualquer outro atributo, ou ainda adaptações desse produto a um ambiente modificado (PADUELLI, 2011). A partir das necessidades de manutenção, são adotados os Acordos de Nível de Serviço (ANS). Eles têm por finalidade formalizar os termos para manter um software em funcionamento, definindo os tópicos mínimos aceitáveis para que um determinado um software possa atender de modo eficiente a seus usuários e as formas e procedimentos a se adotar em casos de adversidades, visando à continuidade da funcionalidade do software com qualidade. 2. Metodologia A metodologia adotada no artigo baseia-se na pesquisa bibliográfica. A pesquisa pode ser considerada um procedimento formal com método de pensamento reflexivo que requer um tratamento científico e se constitui no caminho para conhecer a realidade ou para descobrir verdades parciais. Significa muito mais do que apenas procurar a verdade: é encontrar respostas para questões propostas, utilizando métodos científicos (LAKATOS, 1992). 3. Engenharia de Requisitos A Engenharia de Requisitos é um ramo essencial da Engenharia de Software. Hoje, em amplo crescimento no mercado, nasceu da necessidade de se criar métodos e técnicas com o intuito de otimizar e racionalizar a forma do estudo de viabilidade, elicitação, análise, validação, gerenciamento dos requisitos na construção e manutenção de software. O Objetivo do processo de Engenharia de Requisitos é criar e manter um documento de requisitos do software (SOMMERVILLE, 2010). 4 4. Manutenção Corretiva A manutenção de um software é um processo geralmente de mudanças depois que o software é entregue para utilização dos seus usuários. Existem três tipos diferentes de manutenções de software (SOMMERVILLE, 2010).: Manutenção Corretiva: Aquela que se presta a reparar defeitos de software. Manutenção Adaptativa: Aquela que se presta a adaptar o software a um ambiente operacional diferente. Manutenção Evolutiva: Aquela que se presta a adicionar funcionalidade ao software ou modificá-lo para atender a evolução do negócio ou mudanças organizacionais. Por se tratar de uma porcentagem de apenas 20% do universo das manutenções existentes a corretiva não deixa de ser importante no ciclo de vida de um software, pois como se sabe há necessidade constante de reparos por falhas ocasiodas por fatores diversos muitas vezes ligados a Murphologia. Murphologia é a ciência que estuda a Lei de Murphy, inclui seus corolários e engloba todas as frases derivadas da primeira Lei. Exemplo (VALE, 2010): “Qualquer programa quando começa a funcionar já está obsoleto. Só quando um programa já está sendo usado a seis meses é que se descobre um erro fundamental. A complexidade do programa cresce até exceder a competência do programador. A manutenção começa quase sempre imediatamente. O software é liberado para os usuários finais e em alguns dias, os relatos de bugs começa, a chegar a organização de Engenharia de Software. (PRESSMAN, 2006).” 5. Acordo de Nível de Serviço O Acordo de Nível de Serviço (ANS ou SLA, do inglês Service Level Agreement) que é parte integrante do Gerenciamento de Nível de Serviço, que é uma das disciplinas do Framework ITIL, pode ser classificado em três modalidades (FREITAS, 2010): 5 Acordos baseados no Serviço: abrange um nível de serviço único para todos os clientes que utilizam esse serviço. Acordos baseados no Cliente: abrange todos os serviços entregues a um único cliente. Acordos Multinível: acordos realizados sob uma das três estruturas possíveis (FREITAS, 2010): Nível Corporativo: cobre todos os aspectos do nível de serviço para cada cliente de uma única empresa. Nível de Cliente: cobre todos os aspectos relevantes a um grupo particular de clientes ou unidades de negócio que compartilham um serviço em comum. Nível de Serviço: cobre todos os aspectos relevantes de um serviço específico entregue a um grupo específico de clientes com o mesmo nível de serviço exigido. 6. Relação entre os Assuntos O desafio da manutenção de software começa a partir do momento que surge uma fila de correções de problemas, solicitações de adaptações e melhorias que devem ser planejadas, programadas e por fim, executadas. Com o passar do tempo, descobre-se que se está gastando mais com a manutenção de programas do que criando novas aplicações. Não é raro uma organização de software depender de 60% a 70% de todo o seu recurso com manutenção de software (PRESSMAN, 2011). No caso específico da Manutenção Corretiva é essencial que haja uma suportabilidade do software. Define-se, estatisticamente, que uma média de 75% do total de recurso alocados a manutenção geral, cerca de 19% dos gastos são alocados para a Manutenção Corretivas nas organizações. Para suportar efetivamente software de classe industrial, a organização deve ser capaz de fazer correções inerentes à atividade de manutenção. Além disso, a organização deve executar outras atividades importantes que incluem suporte operacional continuando muitas vezes celebrados por Acordos de Nível 6 de Serviço, suporte ao usuário final e atividades de reengenharia durante toda vida útil do software (PRESSMAN, 2011). Essencialmente a suportabilidade é um dos muitos fatores de qualidade que devem ser considerados durante a análise e projeto na gestão de qualidade. Ela deve ser tratada como parte do modelo de requisitos (ou especificações) é considerada conforme o projeto evolui e a construção se inicia. Os Acordos de Nível de Serviço possuem as regras de atendimento, as classificações, os prazos, os envolvidos, as multas e as penalidades. Em suma, as definições contratuais para o atendimento das Manutenções Corretivas. Os Acordos de Nível de Serviço voltados a software são, por natureza, ligados a suportabilidade, que é um tópico da qualidade, são válidos como contratos entre a empresa que a produz e mantém software e os seus clientes, os que irão se beneficiar de seus produtos. Os Acordos de Nível de Serviço possuem cláusulas referentes à área responsável pela disponibilidade do serviço, se portar ou agir em caso de descontinuidade do serviço ou falhas de software que possam comprometer o processo. São definidos planos de contingências como restauração de backups, versões emergenciais do software, equipes de reparo, banco de dados de incidentes e falhas, parcerias de resolução de problemas, além de equipes de validação e testes que simulam falhas e estimam o retorno do serviço ou sistema de modo a não afetar o processo de modo negativo. A finalidade dos Acordos de Nível de Serviço é manter a continuidade do serviço, em suma, a sua disponibilidade de uso do software. Nesse contexto, é importante que haja uma documentação clara e atualizada não só do processo, mas do software e seu plano de contingência, ao qual se poderá acionar em caso de indisponibilidade do serviço ou falhas de software a fim de não comprometer o processo. Nesse ponto, a Engenharia de Requisitos irá suprir a documentação necessária e será anexada aos Acordos de Nível de Serviço para, em caso de necessidade, ser utilizada no intuito de solucionar incidentes ou auxiliar na resolução de problemas. 7 7. Conclusão Em vista disso surgem as seguintes perguntas: Como podemos prever um prazo de atendimento para uma Manutenção Corretiva?; O que será prejudicado com a Manutenção Corretiva?; Onde esta a regra de negócio necessária para a Manutenção Corretiva? Como responder estas perguntas sem um software documentado com base nos conceitos fornecidos pela Engenharia de Requisitos e um Acordo de Nível de Serviço, nesta situação fica muito complicado manter um software. A Engenharia de Requisitos tem papel essencial nesse contexto, pois é justamente por meio dos seus insumos, que são as informações necessárias não só para manter o software documentado e atualizado, mas também para poder efetuar ajustes e correções, a fim de melhorar o software da empresa. O Acordo de Nível de Serviço disponibiliza todas as informações necessárias para o atendimento das Manutenções Corretivas. Para ter regras, prioridades de atendimentos, multas, penalidades. Precisamos ter um horizonte, este horizonte é fornecido pela Engenharia de Requisitos na manutenção de software. A partir do documento de requisitos, podemos atender as demandas com qualidade e rastreabilidade do que pode ser prejudicado com a alteração, assim também podemos cumprir o Acordo de Nível de Serviço, conforme foi assinado. Buscando contribuir com a pesquisa na área de Engenharia de Requisitos, este estudo apresenta uma análise da relação entre Engenharia de Requisitos, Manutenção Corretiva e Acordo de Nível de Serviço no processo de manutenção de software nas empresas que o foco não é Tecnologia da Informação. BIBLIOGRAFIA FREITAS, M.A.S. Fundamentos do Gerenciamento de Serviços de TI. 1 Ed. São Paulo: Brasport, 2010. 8 LAKATOS E.M; MARCONI M.A. Metodologia do Trabalho Científico. 4 Ed. São Paulo Atlas, 1992. PRESSMAN, R.S. Engenharia de Software. 6 Ed. São Paulo: McGrawHill, 2006. PRESSMAN, R.S. Engenharia de Software: Uma Abordagem Profissional. 7 Ed. Porto Alegre: McGraw-Hill, 2011. SOMMERVILLE, I. Engenharia de Software 8 Ed. São Paulo: Pearson, 2010. VALE, J.A. 40 +4 Ferramentas e Técnicas de Gerenciamento. 3 Ed. Rio de Janeiro: Brasport, 2010. Lientz, B. P.; Swanson, E. B. Software Maintenance Management, Reading, MA, Addison-Wesley, 1980. Dekleva, S. M. Annual Software Maintenance Survey: Survey Results, Software Maintenance Association, Vallejo, California, USA, 1990. Dart, S.; Christie, A. M.; Brown, A. W. A Case Study in Software Maintenance, Technical Report, Carnegie Mellon University, 2001.