artigo GERENCIAMENTO DE PROJETOS GERENCIAMENTO ÁGIL DE PROJETOS EM TA Samarone Guimarães Ruas ([email protected]), Diretor de Aplicações da iTech Soluções, uma divisão da Techplus Automação. INTRODUÇÃO ao ambiente de desenvolvimento implantado em uma Desde a Crise do Software, que forçou com que as Software organização e às características dos projetos: O tempo Houses realizassem projetos de desenvolvimento de que pode ser gasto e a real necessidade do cliente a fim de Software de uma maneira mais profissional e organizada, estimar custos e prazos reais. muitas metodologias para esse desenvolvimento surgiram. Entretanto, a crise do software perdura até hoje. Mesmo Linguagens foram criadas para modelar e facilitar o com técnicas avançadas de desenvolvimento e padrões entendimento do produto pelo cliente e pela própria empresa consolidados na área de criação de softwares, ainda existem desenvolvedora [1]. características da época da crise: projetos atrasados, erros Na década de 70, a atividade “desenvolvimento de de estimativa de custos e de tempo que tornam o processo, software” era executada de forma desorganizada, ainda que sistematizado, passível de muitos erros. desestruturada e sem planejamento. Gerava-se um produto Um famoso estudo feito pelo Standish Group, publicado final de má qualidade, pois não existia documentação, era anualmente, mostrava na sua última revisão em 2009 [2]: entregue fora do prazo ou o levantamento de tempo e • 24% dos projetos fracassam. esforço não correspondia com a real necessidade. Muitas • 44% dos projetos são entregues com sucesso parcial. vezes, esta atividade não satisfazia às necessidades do cliente, desperdiçavam-se recursos da empresa e aumentavam-se gastos que não viriam a ser compensadores para o cliente, demandando tempo, esforço e dinheiro. Essa • E apenas 32% dos projetos obtêm sucesso. A pergunta que fica é: O que podemos fazer para aumentar estes 32%? época ficou conhecida como Crise do Software [1]. A partir deste cenário, surgiu a necessidade de tornar o Desenvolvimento de Software como um processo PROCESSO DE DESENVOLVIMENTO DE SOFTWARE estruturado, Pela perspectiva dos clientes o processo de desenvolvimento planejado e padronizado, para que as necessidades fossem atendidas e os gastos com informatização de processos de informações se tornassem compensadores. Para o “caixa-preta”. Os requisitos entram por um lado e o produto sai do outro, normalmente muito tarde. atendimento Metodologias de um software muitas vezes se assemelha a uma de desta padronização, que surgiram dividem intervalo podemos ver a Especificação Funcional e outros o documentos e produtos que nos mostra que alguma coisa processo de desenvolvimento em fases pré-definidas. Essas está acontecendo, mas que não podemos ter certeza do Metodologias se adequam às características organizacionais, que exatamente. 32 InTech 130 Desenvolvimento Neste Normalmente, a probabilidade de uma GERENCIAMENTO DE PROJETOS artigo mudança de requisito aumenta com o tamanho do projeto, Uma abordagem linear significa que o projeto é desenvolvido o que aumenta ainda mais a dúvida se o resultado do projeto etapa por etapa. Por exemplo: vai atender as nossas necessidades. Então só resta aguardar e 1.O time de projeto primeiro analisa, determinando e ter esperança que tudo dê certo. Os resultados, no entanto, são incertos e normalmente decepcionantes. Os clientes normalmente ao verem o resultado pela primeira vez tem a síndrome da reação “Sim... Mas...” [3]: Sim, isto é realmente legal e apreciamos o que foi feito, mas não é exatamente o que precisamos. Talvez: 1. Você não tenha entendido o que queríamos; ou 2. Você tenha entendido, mas mesmo assim tenha feito algo diferente; ou 3. Isto é o que queríamos, mas agora precisamos de algo diferente. priorizando os requisitos. 2. Em seguida, na fase de “Design” os requisitos são traduzidos em soluções técnicas e as decisões são tomadas em relação a qual tecnologia utilizar, i.e. Java, VB, etc.. 3. Uma vez que os processos são definidos se inicia a fase de “desenvolvimento do código”. 4. A próxima fase envolve o teste completo do software. 5. Por fim, a última fase envolve a manutenção do software. A Figura 1 mostra a sequência de desenvolvimento em um modelo “cascata” O que precisamos é de uma forma do cliente ver e avaliar o Water progresso antes que seja tarde demais. Precisamos de um processo que ofereça visibilidade mais cedo e que aceite mudanças, mas que mantenha rigor em relação à qualidade. DISCOVER Business requirements fall method DESIGN Technical design METODOLOGIAS DE DESENVOLVIMENTO DEVELOP Coding & testing Metodologia de Desenvolvimento é um conjunto de DEPLOY práticas recomendadas para o Desenvolvimento de Client OK & launch Software, sendo que essas práticas, geralmente, passam por fases ou passos que são subdivisões do processo para ordená-lo e melhor gerenciá-lo [4]. Figura 1 2 – Metodologias de desenvolvimento ágeis 1 – Metodologias tradicionais No começo de 2001, motivados pela observação de times de As metodologias consideradas tradicionais têm como desenvolvimento perdidos entre os processos que existiam na característica marcante serem divididas em etapas e/ou fases. época, alguns especialistas da indústria do desenvolvimento Essas fases são muito bem definidas e englobam atividades de softwares se uniram para encontrar valores e princípios como Análise, Modelagem, Desenvolvimento e Testes. relacionados ao desenvolvimento que seriam capazes de Muitas metodologias pesadas são desenvolvidas no fazer com que as equipes de desenvolvimento pudessem modelo em cascata o que dificulta o controle do projeto. responder mais rápidos às mudanças nas especificações e que A cada alteração em determinado ponto do projeto, o projeto fosse desenvolvido mais rapidamente. como os requisitos, será necessário uma volta ao início do Depois de algum tempo de pesquisa, esses especialistas mesmo para alteração de documentação ou outro marco. escreveram um manifesto que ficou conhecido como Neste modelo as fases definidas são sistematicamente “Manifesto for Agile Software Development” [5]. Esse seguidas de forma linear. É o modelo mais usado em todo manifesto destaca quatro valores. São eles: o mercado, porém não é o mais eficaz. Raros projetos seguem esse fluxo linear, além das mudanças de requisitos que ocorrem no decorrer do projeto não serem de fácil • Indivíduos e iterações ao invés de processos e ferramentas. • Software funcional ao invés de documentação detalhada. adaptação, porque alteram toda a documentação já • Colaboração do Cliente ao invés de negociação de contratos. desenvolvida, o que implica em retrabalho [1]. • Responder às mudanças ao invés de seguir um plano. InTech 130 33 artigo GERENCIAMENTO DE PROJETOS Neste sentido, este novo modelo de desenvolvimento de software foca em dois objetivos comuns: 1. Desenvolver software “utilizável” mais rapidamente. 2. Fornecer de forma frequente e regular visibilidade ao cliente e “stakeholders” da solução; Agilidade, para uma organização de desenvolvimento de software, é a habilidade de se adaptar e reagir apropriadamente às mudanças. Um processo ágil é aquele que suporta este grau de adaptabilidade. Portanto não é apenas velocidade de entrega, mas, Figura 2 – Fonte: Forrester Research, Inc. sobretudo, flexibilidade. Um fator comum nestas metodologias é que elas fornecem Um projeto descrito por adjetivos como “incerto”, “complexo”, visibilidade através de iterações. Uma iteração é uma sequencia de atividades de desenvolvimento conduzidas de acordo com um plano e critérios de avaliação que culmina em um produto de software consistente, integrado e testado. Iterações tem o objetivo expresso de fornecer em um curto período de tempo evidências objetivas da funcionalidade, qualidade e adequação às necessidades do usuário do software em desenvolvimento. Com certeza, um processo que produza incrementos de software mensuráveis frequentemente tem uma importante vantagem competitiva em relação a processos que não o fazem. “de alto risco” e “urgente” não soa como um bom candidato para desenvolvimento. No entanto, esta é uma realidade encontrada em grande parte dos projetos. As práticas de desenvolvimento de software precisam evoluir para: • Gerar valor ao negócio ao invés de fazer apenas o que está especificado no papel. No tempo e dentro do orçamento não são mais as únicas diretrizes no desenvolvimento de um projeto de software. Hoje projetos devem gerar valor ao negócio e satisfação ao cliente. Um projeto que entrega uma funcionalidade errada, mesmo que seja o que estava especificado em contrato, ainda assim pode ser considerado um fracasso. • Ter um feedback mais rápido. A rapidez pode significar a diferença entre o sucesso e o fracasso em muitos mercados. No entanto a rapidez não está apenas associada VISÃO GERAL DE UMA METODOLOGIA ÁGIL à velocidade na entrega de software utilizável e na De forma resumida, uma metodologia Ágil descreve interações colaborativas, mudanças rápidas e entrega flexibilidade mas também nos benefícios de um feedback mais cedo no ciclo de desenvolvimento do software. frequente de software em funcionamento ao invés • Produzir qualidade na aplicação mais cedo. Qualidade de um processo formal por fases, documentação não é mais apenas software confiável, mas também está definida e uma ênfase pesada no planejamento. associado à facilidade de aprender e usar. As aplicações Desenvolvedores normalmente justificam a adoção hoje são mais complexas do que antes. Não são mais da abordagem Ágil pela maior rapidez na entrega de apenas projetos de automação. Compreendem muitas software de alta qualidade. No entanto, um estudo vezes da Forrester Research [10] vê a metodologia Ágil requisitos desconhecidos. complexos projetos multidisciplinares com ganhando terreno em situações em que se tem muita • Aumentar a probabilidade de sucesso do projeto. incerteza. A possibilidade de aplicar uma metodologia Se o software aumenta sua importância em um negócio, baseada na experimentação e na observação possibilita também o seu fracasso tem um impacto maior. Em muitas que compreendam organizações o sucesso de projetos continua baixo. E quanto melhor o problema e faça as correções apropriadas no os times maior e mais complexo o projeto maior a probabilidade de curso do projeto. falha. A reação natural ao aumento desta complexidade é 34 InTech 130 de desenvolvimento GERENCIAMENTO DE PROJETOS artigo aumentar o rigor do processo de planejamento e aumentar • O trabalho dentro de um Sprint é fixo. Uma vez que o a disciplina. No entanto os processos modernos de escopo é definido, é proibida a adição de funcionalidade desenvolvimento sugerem introduzir uma abordagem durante o Sprint exceto pelo time de desenvolvimento. que encoraje o planejamento frequente em que os times • Todo o trabalho a ser feito é caracterizado como um usem a experiência ganha ao longo do projeto e o usem na próxima etapa de planejamento. • Encarar a incerteza. Para melhor gerenciar a incerteza os times de desenvolvimento de software precisam mudar da forma tradicional, com abordagem preditiva baseada em artefatos e processos definidos para uma mais flexível, baseada em observações. O processo de desenvolvimento é melhor descrito como uma série de objetivos ao invés “product backlog”. Inclui requisitos a serem entregues, testes e atividades de infraestrutura e projeto. • Um “Scrum Master” gerencia a equipe “auto- organizada” que é responsável pelo sucesso dos resultados de cada Sprint. • Uma reunião diária em pé é o método de comunicação padrão; de uma lista de atividades para serem feitas. Focando • Uma grande ênfase em obedecer o período de tempo no “Por que” ao invés do “como” as técnicas modernas definido. Sprints, reuniões diárias, reuniões de revisão e permitem aos times mais flexibilidade para criar um apresentação são todas finalizadas no tempo combinado. produto de sucesso. A Figura 3 resume os artefatos do Scrum: 1 – Scrum Scrum é um processo de gerenciamento de projetos ágeis, adaptado para a área de desenvolvimento de software pelo especialista Ken Schwaber. Ken define Scrum em um de seus livros como: “um processo Ágil, ou ainda, um framework para gerenciamento de projetos Ágeis. É um processo de gerência de projetos” [6], [7]. Martin Fowler, um dos maiores estudiosos em desenvolvimento Figura 3 de software, comenta em seu artigo A Nova Metodologia [8] que: “Nos últimos anos vem crescendo rapidamente o interesse em metodologias ágeis. Também caracterizadas como um antídoto contra a burocracia, estas metodologias despertaram os interesses em toda a extensão da indústria do software”. Importante destacar que a participação ativa do cliente no processo de desenvolvimento de software faz com que sejam atribuídas a ele algumas responsabilidades como definição das funcionalidades do produto, decisão Dentre as técnicas de utilização do Scrum, há a entrega de quanto às datas de lançamento de conteúdo e ajuste de produtos em períodos de tempo pré-estabelecidos, nunca funcionalidades [7]. inferiores a uma semana ou superiores a trinta dias. Para estimular o contato entre empresa e cliente, os projetos ações dá-se o nome de Sprint. Ao término de cada Sprint, o GERENCIAMENTO ÁGIL DE PROJETOS EM EMPRESAS DE INTEGRAÇÃO DE SISTEMAS cliente recebe um conjunto de funcionalidades desenvolvidas O desenvolvimento Ágil de Projetos funciona para empresas e prontas para serem utilizadas. A melhor maneira de de Integração de Sistemas? Esta é uma pergunta frequente comprovar se o software atende às necessidades é fazer com em artigos e blogs pelo mundo e iremos aqui apresentar os que o cliente o utilize, apontando as qualidades e o que falta resultados de algumas pesquisas realizadas neste sentido. são divididos em períodos regulares de tempo. A essas ser aperfeiçoado. Um estudo realizado pela Forrester [10] mostra que As práticas chaves do Scrum incluem: Integradores de Sistemas (SI) estão cada vez mais utilizando • Sprints são iterações com um tempo fixo entre 15 e 30 metodologias Ágeis para melhor atender as necessidades dos dias de duração. clientes. Veja a Figura 4. InTech 130 35 artigo GERENCIAMENTO DE PROJETOS A convergência entre o chão de fábrica e o ambiente de TI provoca grandes mudanças nas empresas de manufatura ao redor do mundo. À medida que o mundo globalizado aumenta a competitividade e abre novas oportunidades, flexibilidade e eficiência são requisitos para atender uma demanda mais exigente. As empresas precisam da informação no tempo certo, no formato certo e para Figura 4 – Fonte: Forrester Research, Inc. as pessoas certas. É preciso ter um alinhamento entre a tecnologia e os objetivos do negócio. A maior utilização de métodos Ágeis está criando novas situações A Figura 5 ilustra um modelo de convergência para ajudar em suas aplicações. Quando originalmente descrita no Manifesto a definir os componentes que devem ser verificados em Ágil, o objetivo das práticas Ágeis era ajudar times a desenvolver cada área [8]. melhor softwares customizados. O estudo da Forrester mostrou que os Integradores de Sistema (SI) estão expandindo o uso de técnicas Ágeis a qualquer situação em que se tenha um time, um problema, e um alto risco. Estas situações incluem desenvolvimento de softwares customizados, mas também manutenção de sistemas, gerenciamento de projetos, desenvolvimento de interfaces com usuário e levantamento de requisitos. Alguns integradores estão utilizando Scrum até mesmo para atividades que não estão relacionadas com o desenvolvimento de software. Na prática o que vemos são Integradores de Sistemas aplicando os princípios do Gerenciamento Ágil, mas com algumas pequenas modificações. Por exemplo, eles nem sempre entregam um software pronto para uso a cada Figura 5 Sprint, ao invés disto, podem entregar um protótipo. Esta abordagem pragmática permite usar o melhor do Manifesto Ágil numa abordagem em que se deseja criar valor para os clientes. As práticas Ágeis estão expandindo para incluir: • Implantação de Sistemas: As empresas estão utilizando os métodos ágeis não apenas no desenvolvimento de softwares customizados mas também na implantação de pacotes de aplicações (ERP, CRM, etc.) e soluções de Business Intelligence (BI). • Manutenção de software existente: Uma tendência É sempre importante pensar em como a integração entre a área de automação e a área de TI pode ajudar a empresa a realizar o seu negócio de forma mais efetiva. A pesquisa realizada por Thanesh [12] indica que há um profundo relacionamento entre as funções da Automação Industrial e a Tecnologia da Informação (TI) nas organizações e desta forma existem várias responsabilidades comuns entre as duas áreas. crescente entre Integradores de Sistemas é a utilização da Levando em conta estas pesquisas podemos concluir abordagem Ágil para melhor gerenciar a manutenção de que é perfeitamente plausível a utilização de métodos sistemas existentes. Ágeis para gerenciamento de projetos em automação industrial. Cuidado especial deve ser tomado para GERENCIAMENTO ÁGIL DE PROJETOS EM TA softwares com “missão crítica”, visto que uma análise detalhada de cada elemento do software é necessária e Mudando a pergunta anterior, O desenvolvimento Ágil o sistema pode ter uma interação com outros softwares e de Projetos funciona para empresas de TA (Tecnologia de hardwares [13]. Apesar disto não encontramos nenhuma Automação)? Vários estudos tem demostrado o impacto da publicação indicando a utilização destas técnicas por convergência crescente entre TI e TA nos últimos anos [11], [12]. empresas de automação. 36 InTech 130 GERENCIAMENTO DE PROJETOS artigo ESTUDO DE CASO A fim de avaliarmos os resultados da utilização de Gerenciamento Ágil de projetos em TA, analisaremos os resultados em uma empresa que atua na área de Automação Industrial e Integração de sistemas de informação há mais de 15 anos [14]. Há cerca de 5 anos, sentindo as dificuldades de gerenciamento de custo/prazo e escopo dos projetos a empresa adotou uma metodologia derivada dos fundamentos do PMI (Project Management Institute). Com aplicados os base métodos nesta metodologia são de gerenciamento do projeto por fases, de modo a registrar, controlar e assegurar as metas acertadas, priorizando sempre Figura 6 o tratamento formal dos eventos, sem perder a flexibilidade exigida pelo mercado. No início de 2010, uma das divisões da empresa, não satisfeita com os resultados advindos da utilização do PMBOK A condução do projeto é efetuada com base em no gerenciamento de seus projetos, iniciou a implantação dos eventos e fases conforme Figura 6. conceitos de Gerenciamento Ágil e Lean IT. InTech 130 37 artigo GERENCIAMENTO DE PROJETOS O Scrum foi adotado como metodologia formal e, após vários ganho de qualidade. Fazer a mudança para uma prática ágil projetos executados sob esta nova abordagem de gerenciamento, desafia as nossas noções de best practices de engenharia podemos citar as seguintes vantagens/desvantagens: de software, metodologias de gerenciamento de projetos e Vantagens: estilos de liderança de times de projeto. • Equipe mais comprometida com as metas traçadas no O caminho para esta transição nem sempre é fácil e a dia-a-dia. • Software pronto mais cedo para avaliação do cliente. • Alta visibilidade do projeto. Os problemas e dificuldades ficam explícitos permitindo uma atuação mais rápida. • Equipe focada. À medida que temos atividades diárias explicitadas a equipe não se dispersa. • Melhor atendimento aos requisitos de prazo, com menos burocracia e mais iteração. • As prioridades do cliente são atendidas mais cedo. Desvantagens: • Necessidade de uma maior participação do cliente. Se o cliente não participa do projeto por indisponibilidade os resultados são comprometidos, pois a diminuição da documentação formal neste caso deixa o cliente sem feedback sobre o andamento do projeto. • Clientes que exigem uma grande documentação formal como item contratual tendem a dificultar a adoção da abordagem Ágil. • Durante o período de comissionamento e startup é mais complicada a utilização da metodologia ágil pela dificuldade de realização da reunião diária e pela grande dependência de fatores externos à equipe. CONCLUSÃO A indústria de desenvolvimento de software evoluiu e se transformou em uma das mais importantes indústrias do nosso tempo. Do controle da produção de alimentos, passando pelo fornecimento de segurança e controle dos veículos que dirigimos à automação e gerenciamento de negócios o software se tornou uma das propriedades intelectuais mais valiosas do mundo. Neste ambiente competitivo, a empresa para ter sucesso tem que ter a habilidade de criar e desenvolver produtos de software de forma mais rápida e que melhor atenda às necessidades reais dos seus clientes. Metodologias ágeis de desenvolvimento estão liderando metodologia tradicional e a metodologia Ágil não só podem como devem coexistir para atender os diferentes tipos de projetos e clientes. O futuro aponta para uma coexistência pacífica onde o melhor de cada um seja utilizado [15], [16]. Projetos de indústrias que são regulamentadas, e que exigem a validação do sistema ao seu final não vão deixar de existir simplesmente porque a equipe está adotando uma metodologia Ágil. Ao invés disto estes times precisam aprender a integrar estas necessidades em seus procedimentos ágeis e iniciar um trabalho de investigação de como fazer para que estes requisitos não prejudiquem o projeto. REFERÊNCIAS BIBLIOGRÁFICAS 1. Pressman, R. S. Engenharia de Software, 5ª Edição Makron Books 2002. 2. CHAOS Summary 2009. The Standish Group International, 2009. www.standishgroup.com 3. Leffingwell, Dean e Muirhead, Dave, Tactical Management of Agile Development: Achieving Competitive Advantage. Rally Software Development Corporation Whitepaper, 2004. 4. Sommerville. Software Engineering. 6th Edition, Addison Wesley, 2000. 5. Agile Manifesto, http://agilemanifesto.org 6. Schwaber, Ken, Mike Beedle. Agile Software Development with Scrum. Prentice Hall 2002. 7. Schwaber, Ken. Agile Project management with Scrum. Microsoft Press, 2004. 8. Fowler, Martin. The New Metodology. http://martinfowler.com/articles/newMethodology.html 9. Neto, Oscar Nogueira de Souza. Análise Comparativa das Metodologias de Desenvolvimento de Softwares Tradicionais e Ágeis: TCC Bacharelado Ciência da Computação da Universidade da Amazônia, 2004. 10. West, Dave. Agile Systems Integrators: Plausible or Paradoxical? Forrester Research, July 2010. 11. The New Megatrend: Convergence in Manufacturing. Publicação ENET-SP007A-EN-P – June 2008. Rockwell Automation. 12. Marimuthu, Thanesh: The impact of the convergence of Information Technology and Industrial Automation on operational excellence in the Manufacturing Environment. Dissertação para o MBA na Universidade de Kwazulu-Natal, 2007. 13. Wang, Lingfeng and Tan, Kay chen. Modern industrial automation software design: Principles and real-world examples. John Wiley and Sons, 2006. 14. www.techplus.com.br/itech este caminho ajudando equipes de software a entregarem 15. Sliger, Michele. Bridging the Gap: Agile Projects in the Waterfall Enterprise. Better Software magazine, July/August 2006. produtos de forma mais frequente e com significativo 16. http://agile.vc.pmi.org: Agile Community of Practice. 38 InTech 130