32 - techplus automação industrial · final de má qualidade, pois não existia documentação,...

8

Upload: lamnhi

Post on 10-Nov-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

32 InTech 130

Samarone Guimarães Ruas ([email protected]), Diretor de Aplicações da iTech Soluções, uma divisão da Techplus Automação.

GERENCIAMENTO ÁGILDE PROJETOS EM TA

artigo GERENCIAMENTO DE PROJETOS

INTRODUÇÃO

Desde a Crise do Software, que forçou com que as Software

Houses realizassem projetos de desenvolvimento de

Software de uma maneira mais profissional e organizada,

muitas metodologias para esse desenvolvimento surgiram.

Linguagens foram criadas para modelar e facilitar o

entendimento do produto pelo cliente e pela própria empresa

desenvolvedora [1].

Na década de 70, a atividade “desenvolvimento de

software” era executada de forma desorganizada,

desestruturada e sem planejamento. Gerava-se um produto

final de má qualidade, pois não existia documentação, era

entregue fora do prazo ou o levantamento de tempo e

esforço não correspondia com a real necessidade. Muitas

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

é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

estruturado, 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 atendimento desta padronização, surgiram

Metodologias de Desenvolvimento que dividem o

processo de desenvolvimento em fases pré-definidas. Essas

Metodologias se adequam às características organizacionais,

ao ambiente de desenvolvimento implantado em uma

organização e às características dos projetos: O tempo

que pode ser gasto e a real necessidade do cliente a fim de

estimar custos e prazos reais.

Entretanto, a crise do software perdura até hoje. Mesmo

com técnicas avançadas de desenvolvimento e padrões

consolidados na área de criação de softwares, ainda existem

características da época da crise: projetos atrasados, erros

de estimativa de custos e de tempo que tornam o processo,

ainda que sistematizado, passível de muitos erros.

Um famoso estudo feito pelo Standish Group, publicado

anualmente, mostrava na sua última revisão em 2009 [2]:

• 24%dosprojetosfracassam.

• 44%dosprojetossãoentreguescomsucessoparcial.

• Eapenas32%dosprojetosobtêmsucesso.

A pergunta que fica é: O que podemos fazer para aumentar

estes32%?

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

Pela perspectiva dos clientes o processo de desenvolvimento

de um software muitas vezes se assemelha a uma

“caixa-preta”. Os requisitos entram por um lado e o

produto sai do outro, normalmente muito tarde. Neste

intervalo podemos ver a Especificação Funcional e outros

documentos e produtos que nos mostra que alguma coisa

está acontecendo, mas que não podemos ter certeza do

que exatamente. Normalmente, a probabilidade de uma

InTech 130 33

GERENCIAMENTO DE PROJETOS artigo

mudança de requisito aumenta com o tamanho do projeto,

o que aumenta ainda mais a dúvida se o resultado do projeto

vai atender as nossas necessidades. Então só resta aguardar e

teresperançaquetudodêcerto.Osresultados,noentanto,

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ãotenhaentendidooquequeríamos;ou

2. Vocêtenhaentendido,masmesmoassimtenhafeitoalgo

diferente;ou

3. Isto é o que queríamos, mas agora precisamos de algo

diferente.

O que precisamos é de uma forma do cliente ver e avaliar o

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.

METODOLOGIAS DE DESENVOLVIMENTO

Metodologia de Desenvolvimento é um conjunto de

práticas recomendadas para o Desenvolvimento de

Software, sendo que essas práticas, geralmente, passam

por fases ou passos que são subdivisões do processo para

ordená-loemelhorgerenciá-lo[4].

1 – Metodologias tradicionais

As metodologias consideradas tradicionais têm como

característica marcante serem divididas em etapas e/ou fases.

Essas fases são muito bem definidas e englobam atividades

como Análise, Modelagem, Desenvolvimento e Testes.

Muitas metodologias pesadas são desenvolvidas no

modelo em cascata o que dificulta o controle do projeto.

A cada alteração em determinado ponto do projeto,

como os requisitos, será necessário uma volta ao início do

mesmo para alteração de documentação ou outro marco.

Neste modelo as fases definidas são sistematicamente

seguidas de forma linear. É o modelo mais usado em todo

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

adaptação, porque alteram toda a documentação já

desenvolvida, o que implica em retrabalho [1].

Uma abordagem linear significa que o projeto é desenvolvido

etapa por etapa. Por exemplo:

1. O time de projeto primeiro analisa, determinando e

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. Apróximafaseenvolveotestecompletodosoftware.

5. Por fim, a última fase envolve a manutenção do software.

AFigura1mostraasequênciadedesenvolvimentoemum

modelo “cascata”

Figura 1

2 – Metodologias de desenvolvimento ágeis

No começo de 2001, motivados pela observação de times de

desenvolvimento perdidos entre os processos que existiam na

época, alguns especialistas da indústria do desenvolvimento

de softwares se uniram para encontrar valores e princípios

relacionados ao desenvolvimento que seriam capazes de

fazer com que as equipes de desenvolvimento pudessem

responder mais rápidos às mudanças nas especificações e que

o projeto fosse desenvolvido mais rapidamente.

Depois de algum tempo de pesquisa, esses especialistas

escreveram um manifesto que ficou conhecido como

“Manifesto for Agile Software Development” [5]. Esse

manifesto destaca quatro valores. São eles:

•Indivíduoseiteraçõesaoinvésdeprocessoseferramentas.

•Softwarefuncionalaoinvésdedocumentaçãodetalhada.

•ColaboraçãodoClienteaoinvésdenegociaçãodecontratos.

•Responderàsmudançasaoinvésdeseguirumplano.

Businessrequirements

Technicaldesign

Coding& testing

Client OK& launch

DISCOVER

DESIGN

DEVELOP

DEPLOY

Waterfall

method

34 InTech 130

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”dasoluçã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,

sobretudo, flexibilidade.

Um fator comum nestas metodologias é que elas fornecem

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.

VISÃO GERAL DE UMA METODOLOGIA ÁGIL

De forma resumida, uma metodologia Ágil descreve

interações colaborativas, mudanças rápidas e entrega

frequente de software em funcionamento ao invés

de um processo formal por fases, documentação

definida e uma ênfase pesada no planejamento.

Desenvolvedores normalmente justificam a adoção

da abordagem Ágil pela maior rapidez na entrega de

software de alta qualidade. No entanto, um estudo

da Forrester Research [10] vê a metodologia Ágil

ganhando terreno em situações em que se tem muita

incerteza. A possibilidade de aplicar uma metodologia

baseada na experimentação e na observação possibilita

que os times de desenvolvimento compreendam

melhor o problema e faça as correções apropriadas no

curso do projeto.

Figura 2 – Fonte: Forrester Research, Inc.

Um projeto descrito por adjetivos como “incerto”, “complexo”,

“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

à velocidade na entrega de software utilizável e na

flexibilidade mas também nos benefícios de um feedback

mais cedo no ciclo de desenvolvimento do software.

• Produzir qualidade na aplicação mais cedo. Qualidade

não é mais apenas software confiável, mas também está

associado à facilidade de aprender e usar. As aplicações

hoje são mais complexas do que antes. Não são mais

apenas projetos de automação. Compreendem muitas

vezes complexos projetos multidisciplinares com

requisitos desconhecidos.

• Aumentar a probabilidade de sucesso do projeto.

Se o software aumenta sua importância em um negócio,

também o seu fracasso tem um impacto maior. Em muitas

organizações o sucesso de projetos continua baixo. E quanto

maior e mais complexo o projeto maior a probabilidade de

falha. A reação natural ao aumento desta complexidade é

InTech 130 35

GERENCIAMENTO DE PROJETOS artigo

aumentar o rigor do processo de planejamento e aumentar

a disciplina. No entanto os processos modernos de

desenvolvimento sugerem introduzir uma abordagem

que encoraje o planejamento frequente em que os times

usemaexperiênciaganhaaolongodoprojetoeousem

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

de uma lista de atividades para serem feitas. Focando

no “Por que” ao invés do “como” as técnicas modernas

permitem aos times mais flexibilidade para criar um

produto de sucesso.

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ênciadeprojetos”[6],[7].

Martin Fowler, um dos maiores estudiosos em desenvolvimento

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”.

Dentre as técnicas de utilização do Scrum, há a entrega de

produtos em períodos de tempo pré-estabelecidos, nunca

inferiores a uma semana ou superiores a trinta dias.

Para estimular o contato entre empresa e cliente, os projetos

são divididos em períodos regulares de tempo. A essas

ações dá-se o nome de Sprint. Ao término de cada Sprint, o

cliente recebe um conjunto de funcionalidades desenvolvidas

e prontas para serem utilizadas. A melhor maneira de

comprovar se o software atende às necessidades é fazer com

que o cliente o utilize, apontando as qualidades e o que falta

ser aperfeiçoado.

As práticas chaves do Scrum incluem:

• Sprints são iterações com um tempo fixo entre 15 e 30

dias de duração.

• O trabalhodentrodeumSprint é fixo. Uma vez que o

escopo é definido, é proibida a adição de funcionalidade

durante o Sprint exceto pelo time de desenvolvimento.

• Todo o trabalho a ser feito é caracterizado como um

“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.

• Umareuniãodiáriaempééométododecomunicação

padrão;

• Uma grande ênfase em obedecer o período de tempo

definido. Sprints, reuniões diárias, reuniões de revisão e

apresentação são todas finalizadas no tempo combinado.

A Figura 3 resume os artefatos do Scrum:

Figura 3

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

quanto às datas de lançamento de conteúdo e ajuste de

funcionalidades [7].

GERENCIAMENTO ÁGIL DE PROJETOS EM EMPRESAS DE INTEGRAÇÃO DE SISTEMAS

O desenvolvimento Ágil de Projetos funciona para empresas

de IntegraçãodeSistemas?Estaéumaperguntafrequente

em artigos e blogs pelo mundo e iremos aqui apresentar os

resultados de algumas pesquisas realizadas neste sentido.

Um estudo realizado pela Forrester [10] mostra que

Integradores de Sistemas (SI) estão cada vez mais utilizando

metodologias Ágeis para melhor atender as necessidades dos

clientes.VejaaFigura4.

36 InTech 130

artigo GERENCIAMENTO DE PROJETOS

AconvergênciaentreochãodefábricaeoambientedeTI

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

as pessoas certas. É preciso ter um alinhamento entre a

tecnologia e os objetivos do negócio.

AFigura5ilustraummodelodeconvergênciaparaajudar

a definir os componentes que devem ser verificados em

cada área [8].

Figura 5

É 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.

Levando em conta estas pesquisas podemos concluir

que é perfeitamente plausível a utilização de métodos

Ágeis para gerenciamento de projetos em automação

industrial. Cuidado especial deve ser tomado para

softwares com “missão crítica”, visto que uma análise

detalhada de cada elemento do software é necessária e

o sistema pode ter uma interação com outros softwares e

hardwares [13]. Apesar disto não encontramos nenhuma

publicação indicando a utilização destas técnicas por

empresas de automação.

Figura 4 – Fonte: Forrester Research, Inc.

A maior utilização de métodos Ágeis está criando novas situações

em suas aplicações. Quando originalmente descrita no Manifesto

Ágil, o objetivo das práticas Ágeis era ajudar times a desenvolver

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

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

crescente entre Integradores de Sistemas é a utilização da

abordagem Ágil para melhor gerenciar a manutenção de

sistemas existentes.

GERENCIAMENTO ÁGIL DE PROJETOS EM TA

Mudando a pergunta anterior, O desenvolvimento Ágil

de Projetos funciona para empresas de TA (Tecnologia de

Automação)? Vários estudos tem demostrado o impacto da

convergênciacrescenteentreTIeTAnosúltimosanos[11],[12].

InTech 130 37

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çãohámaisde15anos[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 base nesta metodologia são

aplicados os métodos de gerenciamento do

projeto por fases, de modo a registrar, controlar e

assegurar as metas acertadas, priorizando sempre

o tratamento formal dos eventos, sem perder a

flexibil idade exigida pelo mercado.

A condução do projeto é efetuada com base em

eventosefasesconformeFigura6.

Figura 6

No início de 2010, uma das divisões da empresa, não

satisfeita com os resultados advindos da utilização do PMBOK

no gerenciamento de seus projetos, iniciou a implantação dos

conceitos de Gerenciamento Ágil e Lean IT.

38 InTech 130

artigo GERENCIAMENTO DE PROJETOS

O Scrum foi adotado como metodologia formal e, após vários

projetos executados sob esta nova abordagem de gerenciamento,

podemos citar as seguintes vantagens/desvantagens:

Vantagens:

• Equipe mais comprometida com as metas traçadas no

dia-a-dia.

• Softwareprontomaiscedoparaavaliaçãodocliente.

• Altavisibilidadedoprojeto.Osproblemasedificuldades

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.

• Melhoratendimentoaosrequisitosdeprazo,commenos

burocracia e mais iteração.

• Asprioridadesdoclientesãoatendidasmaiscedo.

Desvantagens:

• Necessidadedeumamaiorparticipaçãodocliente.Seo

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.

• Clientesqueexigemumagrandedocumentaçã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ênciadefatoresexternosà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

este caminho ajudando equipes de software a entregarem

produtos de forma mais frequente e com significativo

ganho de qualidade. Fazer a mudança para uma prática ágil

desafia as nossas noções de best practices de engenharia

de software, metodologias de gerenciamento de projetos e

estilos de liderança de times de projeto.

O caminho para esta transição nem sempre é fácil e a

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 DevelopmentCorporationWhitepaper,2004.

4. Sommerville.SoftwareEngineering.6thEdition,AddisonWesley,2000.

5. Agile Manifesto, http://agilemanifesto.org

6. Schwaber,Ken,MikeBeedle.AgileSoftwareDevelopmentwithScrum. Prentice Hall 2002.

7. Schwaber, Ken. Agile Project management with Scrum. MicrosoftPress,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:TCCBachareladoCiênciadaComputaçãodaUniversidadedaAmazônia,2004.

10.West,Dave.AgileSystemsIntegrators:PlausibleorParadoxical?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. JohnWileyandSons,2006.

14.www.techplus.com.br/itech

15. Sliger, Michele. Bridging the Gap: Agile Projects in the Waterfall Enterprise.BetterSoftwaremagazine,July/August2006.

16.http://agile.vc.pmi.org: Agile Community of Practice.