A gestão de projetos na area de desenvolvimento de software Freise Andrade 1. Introdução Projetos de desenvolvimento de software historicamente são caracterizados por atrasos, descuidos com o orçamento, e resultados muito abaixo das expectativas dos clientes e usuários finais. O acúmulo destas falhas acaba provocando por sua vez, retrabalho, solução quebra-galho e consertos. Dentro deste cenário este artigo visa analisar os erros mais comuns que acontecem durante a execução de um projeto de desenvolvimento de software e relacioná-los com os processos descritos pelo PMBOK que podem auxiliar na mitigação ou ate na eliminação de tais erros, e desta forma reduzir o número de insucessos e aumentar a probabilidade de realizar projetos de desenvolvimento de softwares que atendam aos parâmetros de custo, prazo, qualidade e o mais importante, atendendo as expectativas dos clientes e usuários. 2. Desenvolvimento 2.1 Definindo projeto Segundo o PMBOK (2008), um “projeto é um esforço temporário empreendido para criar um produto, serviço ou resultado exclusivo”. A natureza temporária implica que o projeto tem início e fim definidos. Assim, dado um objetivo, que pode ser um produto, um serviço ou um resultado, é necessário planejar as ações necessárias para atingir este objetivo, que devem ser realizadas entre as datas de início e término definidas ou a serem estabelecidas. Para executar estas ações, são alocadas pessoas e outros recursos, conforme o orçamento disponível e o produto, serviço ou resultado devem atender aos níveis de qualidade estabelecidos. 2.2 Porque os projetos de desenvolvimento de software falham A maioria dos projetos de software falham, de acordo com os relatórios do Standish Group relatam que mais de 80% dos projetos são finalizados sem sucesso por estarem acima do orçamento, do prazo, não atendendo aos requisitos ou a combinação destes fatores. Além disso, 30% dos projetos de software são tão mal executados que eles são cancelados antes da sua conclusão. DINSMORE (2001) apresentou uma lista dos “pecados clássicos” que levam um projeto de desenvolvimento de software ao fracasso: Pecado 1: Não começar o projeto pelo início ... particularmente no que diz respeito aos requisitos do sistema a ser desenvolvido e o escopo do trabalho a ser realizado para construir o sistema aplicativo. Pecado 2: Definição ambígua dos requisitos do sistema e do escopo do trabalho ... A clara fixação do escopo do trabalho garante que todo o trabalho necessário será realizado e elimina a realização de trabalho desnecessário. Pecado 3: Não gerenciar mudanças nos requisitos do sistema e no escopo do trabalho ... Pecado 4: Utilizar profissionais de TI com pouca experiência e treinamento em gerenciamento de projetos ... Pecado 5: Fornecer pouco apoio e infra-estrutura ... Pecado 6: Dar pouca ênfase a questões comportamentais e de gerência das Partes Interessadas ... Pecado 7: Dar pouca atenção ao controle dos projetos ... Nesta lista há três itens diretamente relacionados ao Gerenciamento de Escopo do Projeto, os “pecados” 1, 2 e 3, constituindo uma parcela significativa (43%) das causas de fracasso em projetos de desenvolvimento de software. O Gerenciamento de Escopo do Projeto é uma das áreas de conhecimento da Gerência de Projetos. A nossa referência principal para a abordagem da Gerência de Projetos é o Project Management Body of Knoyledge (PMBOK). O Gerenciamento de Escopo do Projeto segundo o PMBOK é responsável por garantir que o projeto inclua todo o trabalho exigido, e somente o trabalho exigido, para completar o projeto com sucesso. O Gerenciamento do escopo do projeto deve garantir que esteja definido todo o trabalho necessário, e somente o trabalho necessário, para que o projeto cumpra seu objetivo, garantindo seu sucesso. Os processos que compõem esta área de conhecimento são: • Coletar requisitos; • Definir o escopo; • Criar EAP; • Verificar o escopo; • Controlar o escopo. MCCONNELL (1996) enumera outros erros clássicos que levam um projeto de desenvolvimento de software ao fracasso: • Falta de motivação da equipe. Estudo após estudo tem mostrado que a motivação provavelmente tem um efeito maior sobre a produtividade e a qualidade do que qualquer outro fator. • Equipe despreparada. Depois de motivação, tanto as capacidades individuais dos membros da equipe ou a sua relação como uma equipe, provavelmente, tem a maior influência sobre a produtividade. • Adicionar pessoas a um projeto atrasado. Este é talvez o mais clássico dos erros. Adicionar pessoas a um projeto atrasado seria como jogar gasolina sobre um incêndio. • O atrito entre desenvolvedores e clientes. O principal efeito do atrito é a comunicação pobre, e os efeitos secundários da má comunicação incluem requisitos mal compreendidos, design de interface de usuário pobre. • Expectativas irrealistas. Uma das causas mais comuns de atrito entre os desenvolvedores e seus clientes ou gerentes. • Falta de participação eficaz do patrocinador. O patrocinador do projeto é necessário para suportar muitos aspectos do desenvolvimento, incluindo planejamento realista, controle de mudanças, e a introdução de novas práticas de desenvolvimento. • A falta de interessados. Todas as partes interessadas em um esforço de desenvolvimento de software devem aderir ao projeto. • Falta de participação do usuário. A razão número um dos projetos de sucesso é por causa do envolvimento do usuário. • Tempo excessivamente otimista. Os desafios enfrentados por alguém construindo uma aplicação de três meses são bastante diferentes do que os desafios enfrentados por alguém que tem que criar uma aplicação em um ano. • Gestão de riscos insuficiente. A falta de gestão de riscos é um dos erros mais comuns. • Falhas em aquisições. Se a relação contratante não é gerida com cuidado, o uso de contratados pode retardar um projeto em vez de acelerá-lo. • Planejamento insuficiente. Se você não planeja para alcançar um desenvolvimento rápido, você não pode esperar alcançá-lo. • Cortes na garantia da qualidade. Projetos que estão com o prazo apertado muitas vezes cortam custos, eliminando revisões de projeto e código, eliminando planejamento de teste, e realizando apenas os testes superficiais. • Desenvolver coisas além do escopo. Os desenvolvedores são fascinados por novas tecnologias e às vezes são ansiosos para experimentar novos recursos desenvolvendo coisas que não estão dentro do escopo do projeto. • Falta de controle de código-fonte automatizado. A não utilização de controle de código fonte automatizada expõe projetos a riscos desnecessários. 2.3 Implementando projetos de desenvolvimento de software com sucesso Para que um projeto tenha sucesso (KERZNER, 2003), ele deverá ser completado: 1. No prazo previsto; 2. Dentro do orçamento previsto; 3. No nível correto de desempenho ou especificação; 4. Com o aceite do cliente; 5. Com o mínimo ou com um acordo mútuo (fornecedor e cliente) sobre as mudanças de escopo; 6. Sem perturbar o fluxo de trabalho da organização; 7. Sem mudar a cultura corporativa. Para que seja possível cumprir prazos e respeitar custos (itens 1 e 2 acima), é necessário saber exatamente o que será feito. Isto só é possível com uma correta e precisa definição do escopo do projeto. Atingir o nível correto de desempenho ou especificação (item 3 acima) exige o conhecimento das restrições, das premissas e dos requisitos do produto / serviço a ser entregue. Minimizar as mudanças de escopo, ou conseguir um acordo mútuo sobre estas mudanças (item 5 acima), também depende de se ter o escopo documentado e de uma correta gerência de mudanças. Obter o aceite do cliente (item 4 acima), por sua vez, depende do correto entendimento do que é o produto final a ser entregue e das entregas intermediárias que serão necessárias. Na tabela abaixo o relacionamos os principais erros ocorridos no desenvolvimento softwares com os processos do PMBOK que podem auxiliar na mitigação ou ate na eliminação dos erros citados: Erros comuns nos projetos de desenvolvimento de software Processos do PMBOK que podem auxiliar na mitigação\eliminação dos erros • Falta de motivação da equipe. • Equipe despreparada. 9.3 Desenvolver a equipe do projeto 9.4 Gerenciar a equipe do projeto 10.5 Reportar o desempenho • A falta de interessados • Falta de participação do usuário • O atrito entre desenvolvedores e clientes. 10.1 Identificar as partes interessadas 10.2 Planejar as comunicações 10.3 Distribuir informações 10.4 Gerenciar expectativas das partes interessadas • Falta de participação eficaz do patrocinador 4.1 Desenvolver o termo de abertura do projeto • Tempo excessivamente otimista • Expectativas irrealistas • Adicionar pessoas a um projeto atrasado 5.1 Coletar os requisitos 5.2 Definir o escopo 5.3 Criar a EAP 6.1 Definir as atividades 6.2 Sequenciar atividades 6.3 Estimar recursos das atividades 6.4 Estimar as durações das atividades 6.5 Desenvolver o cronograma • Gestão de riscos insuficiente • Falta de controle de código-fonte automatizado • Cortes na garantia da qualidade. 11.1 Planejar o gerenciamento de riscos 11.2 Identificar os riscos 11.3 Executar a analise qualitativa dos riscos 11.4 Executar a analise quantitativa dos riscos 11.5 Planejar respostas a riscos 11.6 Monitorar e controlar riscos • Falhas em aquisições 12.1 Planejar aquisições 12.2 Realizar aquisições 12.3 Administrar aquisições 12.4 Encerrar aquisições • Planejamento insuficiente 4.2 Desenvolver o plano de gerenciamento do projeto • Desenvolver coisas além do escopo 5.4 Verificar o escopo 5.5 Controlar o escopo TABELA 1: Relacionamento entre os erros comuns nos projetos de desenvolvimento de software e os processos do PMBOK que podem auxiliar na mitigação\eliminação dos erros 3. Conclusão Projetos de desenvolvimento de softwares possuem os mesmos desafios que qualquer projeto possui. A solução para os responsáveis nas organizações bem como os profissionais da área que atuam com este tipo de projeto são de ficar atentos aos erros clássicos historicamente cometidos e passarem a praticar a boa gerência de projetos, tendo em vista que o PMBOK nos fornece varias ferramentas e técnicas que nos auxiliam na boa gerencia de um projeto. E desta forma reduzir o número de insucessos e aumentar a probabilidade de realizar projetos de desenvolvimento de softwares que atendam aos parâmetros de custo, prazo, qualidade e o mais importante, atendendo completamente as expectativas dos clientes e usuários. 4. Referências PROJECT MANAGEMENT INSTITUTE. Um guia do conhecimento em gerenciamento de projetos: Guia PMBOK . 4th ed. Pennsylvania, USA: PMI, 2008. DINSMORE, Paul Campbell. Por que Tantos Projetos Fracassam?: Os Sete Pecados.... Developers Cio Magazine, Rio de Janeiro, nº 55 - Março/2001. Disponível em: http://inforum.insite.com.br/arquivos/2106/Por_que_tantos_projetos_fracassam.doc. Acesso em: Acesso em: 03 mar. 2012. KERZNER, Harold. Project management: a systems aproach to planning, scheduling, and controlling. 8th ed. New Jersey: John Wiley & Sons, 2003. MCCONNELLl, Steve. Classic Mistakes Enumerated. Disponível http://www.stevemcconnell.com/rdenum.htm. Acesso em: 03 mar. 2012.