gerenciamento de equipes no desenvolvimento de software

35
GERENCIAMENTO DE EQUIPES NO DESENVOLVIMENTO DE SOFTWARE 14/11/2011

Upload: roberto-brandini

Post on 18-Dec-2014

2.736 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Gerenciamento de equipes no desenvolvimento de software

GERENCIAMENTO DE EQUIPES NO

DESENVOLVIMENTO DE SOFTWARE

14/11/2011

Page 2: Gerenciamento de equipes no desenvolvimento de software

Roberto Provinciali Brandini

Programador com experiência em Clipper, Foxpro, c#, .Net, Java, SQL, PHP, ASP

Analista de Sistemas Analista de Negócio Analista de Processos Formado em Desenvolvimento de Aplicações Web

– FANESE Pós Graduado em Gestão de Projetos de Software

– FANESE Gestor de Projetos da DPSISTEMAS

Contato (79) 3259-1038 [email protected] [email protected]

Page 3: Gerenciamento de equipes no desenvolvimento de software

O QUE É UM PROJETO DE SOFTWARE ?

“Projeto de Software é a parte da engenharia de software que se encarrega de transformar os resultados da Análise de Requisitos em um documento ou conjunto de documentos capazes de serem interpretados diretamente pelo programador.”

http://pt.wikipedia.org/wiki/Projeto_de_software

Page 4: Gerenciamento de equipes no desenvolvimento de software

PROJETO DE SOFTWARE

A única certeza que temos num projeto de software é a mudança.

Page 5: Gerenciamento de equipes no desenvolvimento de software

O QUE É GERENCIAR ?

Organizar, planejar e executar atividades que facilitem o processo de trabalho. Atividade relativas ao gerente, administrador ou líder.

A gerência pode-se dar sobre coisas, pessoas ou ambos.

O gerente organiza seu ambiente de trabalho, toma decisões, direciona o trabalho de funcionários ou membros de uma equipe.

Page 6: Gerenciamento de equipes no desenvolvimento de software

O QUE É UMA EQUIPE ?

Podemos definir “Equipe”, como um conjunto de pessoas trabalhando para atingir o mesmo objetivo (Projeto);

Page 7: Gerenciamento de equipes no desenvolvimento de software

MÉTODOS USADOS PARA GERENCIAR EQUIPES

Informal

• Caos

Pouco Planeja

da• Pressão

Clássico

• PMI• RUP

Ágil

• SCRUM• LEAN• XP

Page 8: Gerenciamento de equipes no desenvolvimento de software

INFORMAL (CAOS)

Não se sabe o que vai se fazer; Tudo é urgente; Entrega imediata; Não tem como medir eficiência,

prazo e custo; Sem gerenciamento de risco; Sem comunicação formal; Tarefas não documentadas;

Page 9: Gerenciamento de equipes no desenvolvimento de software

POUCO PLANEJADA (PRESSÃO)

Sabe-se mais ou menos o que vai se fazer;

Tudo é urgente; Entrega imediata; Não tem como medir eficiência,

prazo e custo; Sem gerenciamento de risco; Sem comunicação formal; Tarefas não documentadas;

Page 10: Gerenciamento de equipes no desenvolvimento de software

CLÁSSICO (PMI/RUP)

Sabe-se exatamente o que vai se fazer;

Tudo é planejado; Entrega é planejada; Pode-se medir eficiência, prazo e

custo; Possui processo de implantação. Possui gerenciamento de risco; Possui comunicação formal; Tarefas documentadas;

Page 11: Gerenciamento de equipes no desenvolvimento de software

DOCUMENTAÇÃO FORMAL

Page 12: Gerenciamento de equipes no desenvolvimento de software

ÁGIL (SCRUM/LEAN/XP)

Sabe-se mais ou menos o que vai se fazer;

Tudo é planejado; Entrega planejada; Tem como medir eficiência, prazo e

custo; Pode haver gerenciamento de Risco; Comunicação constante com

stakeholder; Tarefas pouco documentadas;

Page 13: Gerenciamento de equipes no desenvolvimento de software

SCRUM

Uma alternativa de utilizar métodos ágeis na gerência de projetos

Pode ser aplicável a qualquer tipo de projeto

É simples Processo, artefatos e regras são poucos

e fáceis de entender A simplicidade pode ser decepcionante

aos acostumados com metodologias clássicas

Page 14: Gerenciamento de equipes no desenvolvimento de software

QUEBRA DE PARADIGMA

Clássico Ágil

Escopo Prazo

Custo

Qualidade Prazo

Custo

Qualidade Escopo

Page 15: Gerenciamento de equipes no desenvolvimento de software

SCRUM (FASES)

Planejamento Sprints

Reuniões Diárias Revisão Retrospectivas

Encerramento

Page 16: Gerenciamento de equipes no desenvolvimento de software

PLANEJAMENTO

Relativamente curto Projeto da arquitetura do sistema Estimativas de datas e custos Criação do backlog

Participação de clientes e outros departamentos▪ Levantamento dos requisitos e atribuição de

prioridades Definição de equipes e seus líderes Definição de pacotes a serem

desenvolvidos

Page 17: Gerenciamento de equipes no desenvolvimento de software

SPRINT

O time recebe uma parte do backlog para desenvolvimento O backlog não sofrerá modificações

durante o Sprint Duração de 1 a 4 semanas Sempre apresentam um executável

ao final

Page 18: Gerenciamento de equipes no desenvolvimento de software

SPRINT – REUNIÕES DIÁRIAS

Cerca de 15 minutos de duração Todos respondem às perguntas:

O que você realizou desde a última reunião? Quais problemas você enfrentou? Em que você trabalhará até a próxima reunião?

Benefícios: Maior integração entre os membros da equipe Rápida solução de problemas

▪ Promovem o compartilhamento de conhecimento Progresso medido continuamente

▪ Minimização de riscos

Page 19: Gerenciamento de equipes no desenvolvimento de software

SPRINT - REVISÃO

Deve obedecer à data de entrega Permitida a diminuição de funcionalidades

Apresentação do produto ao cliente Sugestões de mudanças são incorporadas

ao backlog

Benefícios: Apresentar resultados concretos ao cliente Integrar e testar uma boa parte do software Motivação da equipe

Page 20: Gerenciamento de equipes no desenvolvimento de software

ENCERRAMENTO

Finalização do projeto Atividades:

Testes de integração Testes de sistema Documentação do usuário Preparação de material de treinamento Preparação de material de marketing

Page 21: Gerenciamento de equipes no desenvolvimento de software

PAPÉIS DO SCRUM

Todas as responsabilidades de gerenciamento são divididas entre três papéis: Product Owner Scrum Master Time

Para o bom funcionamento do Scrum as pessoas responsáveis pelo projeto devem ter autoridade para fazer o que for necessário pelo seu sucesso

Pessoas não responsáveis não podem interferir no projeto Gera aumento de produtividade Evita situações constrangedoras para os envolvidos

Page 22: Gerenciamento de equipes no desenvolvimento de software

PAPÉIS – PRODUCT OWNER

Responsável por apresentar os interesses de todos os stakeholders

Define fundamentos iniciais do projeto, objetivos e planos de release

Responsável pela lista de requisitos (Product Backlog)

Certifica se as atividades com maior valor para o negócio são desenvolvidas primeiro Priorização freqüente das funcionalidades antes

de cada iteração

Page 23: Gerenciamento de equipes no desenvolvimento de software

PAPÉIS – SCRUM MASTER

Responsável pelo sucesso do Scrum Ensina o Scrum para os envolvidos com o

projeto Implementa o Scrum na empresa de forma

adaptada a sua cultura, para continuamente gerar benefícios

Certifica se cada pessoa envolvida está seguindo seus papéis e as regras do Scrum

Certifica que pessoas não responsáveis não interfiram no processo

Page 24: Gerenciamento de equipes no desenvolvimento de software

PAPÉIS – TIME

Responsável por escolher as funcionalidades a serem desenvolvidas em cada interação e desenvolvê-las

O time se auto-gerencia, se auto-organiza

Todos os membros do time são coletivamente responsáveis pelo sucesso de cada iteração

Page 25: Gerenciamento de equipes no desenvolvimento de software

REGRAS NO SCRUM

O ScrumMaster deve se certificar de que cada envolvido no projeto siga suas regras

As regras permitem a execução correta do Scrum

Mudanças das regras devem se originar do time O ScrumMaster deve ser convencido de que

todos envolvidos entenderam suficientemente as regras do Scrum para o correto discernimento

Discussões desnecessárias são perda de tempo de produção da equipe

Page 26: Gerenciamento de equipes no desenvolvimento de software

QUADRO SCRUM

Page 27: Gerenciamento de equipes no desenvolvimento de software

PONTOS IMPORTANTES PARA GERENCIAR EQUIPES. (PDCA)

Plan (Planejamento)

Do (Execução)

Check (Checagem)

Act (Ação)

Page 28: Gerenciamento de equipes no desenvolvimento de software

XP DEVELOPMENT

Page 29: Gerenciamento de equipes no desenvolvimento de software

XP – PONTOS IMPORTANTES

Escrever teste antes de código (TDD);

Programação em pares; Comunicação frente a frente (video

conferencia para trabalho remoto); Prescença do cliente; Integração continua; Refatorar codigo quando necessário; Padrões de codificação (design

pattern)

Page 30: Gerenciamento de equipes no desenvolvimento de software

LEAN Toyota System (LTS)

Lean (Magro)

Page 31: Gerenciamento de equipes no desenvolvimento de software

LEAN – PONTOS IMPORTANTES

Eliminar todo tipo de desperdício; Bugs; Retrabalho; Interrupções; Desperdício de mão-de-obra;

Eliminar requisitos pouco específicos; Eliminar burocracia; Eliminar comunicação lenta Executar decisões tardia; Entregar o quanto antes; Ampliar aprendizado.

Page 32: Gerenciamento de equipes no desenvolvimento de software

COMPLEXIDADE X CLIENTE X DOCUMENTAÇÃO

1940 1950 1960 1970 1980 1990 2000 20100

5

10

15

20

25

Complexidade Envolvimento ClienteDocumentação Formal

Page 33: Gerenciamento de equipes no desenvolvimento de software

INTEGRANDO CONCEITOS

Page 34: Gerenciamento de equipes no desenvolvimento de software

REFLEXÃO ?

Qual a melhor abordagem de gerenciamento para o desenvolvimento de software conduzido por metodologias ágeis?

Grandes projetos podem ser gerenciados de forma ágil? Como é possível? É confiável?

Gerenciamento ágil para qualquer tipo de projeto Construção de edifícios, aviões, robôs Como é possível?

Page 35: Gerenciamento de equipes no desenvolvimento de software