escolhendo o pessoal - sigaa - sistema integrado de ...jair/es/slides/equipes.pdf• pfleeger, s....

10
Engenharia de Software, © 2006 Jair C Leite Organização de Equipes e Gerenciamento de Pessoal Problemas Escolha de pessoal Alocação de atividades (tarefas) Gerenciamento de Pessoal Estilos de trabalho Canais de Comunicação O mito do Pessoa-Mês Dependência entre tarefas em projetos de software Organização da Equipe – Clássica – programador-chefe – Sincronizar-e-Estabilizar Extreme programming Engenharia de Software, © 2006 Jair C Leite Escolhendo o pessoal Capacidade para desempenhar a atividade Interesse e motivação no trabalho Experiência com aplicações semelhantes ferramentas ou linguagens semelhantes técnicas semelhantes ambiente de desenvolvimento semelhante Treinamento Capacidade para se comunicar com outras pessoas Capacidade para compartilhar responsabilidades Habilidades de gerenciamento

Upload: vuphuc

Post on 24-Jan-2019

213 views

Category:

Documents


0 download

TRANSCRIPT

Engenharia de Software, © 2006 Jair C Leite

Organização de Equipes e Gerenciamento de Pessoal• Problemas

– Escolha de pessoal– Alocação de atividades (tarefas)– Gerenciamento de Pessoal– Estilos de trabalho– Canais de Comunicação– O mito do Pessoa-Mês– Dependência entre tarefas em projetos de software

• Organização da Equipe– Clássica – programador-chefe– Sincronizar-e-Estabilizar– Extreme programming

Engenharia de Software, © 2006 Jair C Leite

Escolhendo o pessoal

• Capacidade para desempenhar a atividade• Interesse e motivação no trabalho• Experiência com

– aplicações semelhantes– ferramentas ou linguagens semelhantes– técnicas semelhantes– ambiente de desenvolvimento semelhante

• Treinamento• Capacidade para se comunicar com outras pessoas• Capacidade para compartilhar responsabilidades• Habilidades de gerenciamento

Engenharia de Software, © 2006 Jair C Leite

Alocação de atividades para membros da equipe• A alocação pessoa-atividade depende de:

– Habilidade e experiência na atividade– Esforço necessário para cada atividade

• Exemplos de atividades de um projeto:– Levantamento de requisitos– Descrição de cenários– Modelagem de Casos de Uso– Arquitetura do sistema e do software– Projeto do Banco de Dados– Codificação e teste de unidades de software– Integração e teste de software– Manutenção

Engenharia de Software, © 2006 Jair C Leite

Gerenciamento de pessoal

• Engenharia de Software é uma atividade cognitiva.• Limitações cognitivas afetam o processo de de

software• Tarefas da gestão de pessoal:

– Resolver de problemas - Usar o pessoal disponível– Motivar –os membros do time, de acordo com capacidade,

experiência e estilo de trabalho– Planejar – o que as pessoas têm que fazer– Estimar – com que rapidez elas podem produzir– Controlar – controlar as atividades das pessoas– Organizar – a maneira com as pessoas trabalham

Fonte: Ian Sommerville

Engenharia de Software, © 2006 Jair C Leite

Estilos de trabalho

• Extrovertidos– tendem a afirmar suas

idéias

• Introvertidos:– pedem sugestões

• Intuitivos– baseiam suas decisões

nos sentimentos

• Racionais– baseiam suas decisões

em fatos

introvertidos extrovertidos

intuitivos

racionais

Fonte: Shari Pfleeger

Engenharia de Software, © 2006 Jair C Leite

Canais de comunicação em equipes

2 pessoas – 1 canal

3 pessoas – 3 canais

4 pessoas – 6 canais

5 pessoas – 10 canais N pessoas ? Resp: Cn,2 = n!/(n-2)!*2!

Engenharia de Software, © 2006 Jair C Leite

Canais de Comunicação - problema• O trabalho em equipe

estabelece canais de comunicação entre os membros.

• Os canais dependem:– Da dependência entre as

tarefas– Da organização da equipe.

• Exemplo:– Existe 3 programadores

trabalhando em um projeto. O prazo final está se aproximando rapidamente. O que fazer?

• Solução:– Contratar um novo

programador para a equipe• Mas…

– Os outros três têm que explicar o que já foi feito e o que ainda precisa ser feito.

– Isto pode atrasar ainda mais o trabalho.

Fonte: S. Schach

Engenharia de Software, © 2006 Jair C Leite

Compartilhamento de tarefas

• Quando é possível compartilhar tarefas?– Se um trabalhador pode colher um laranjal em 10 dias,

quantos trabalhadores são necessários para colher laranjal em 1 dia?

– Se uma mulher produz um bebê em 9 meses, quantas mulheres são necessárias para produzir um bebê em um mês?

• Algumas tarefas da engenharia de software podem ser compartilhadas– Entrevistas com diversos clientes para levantamento de

requisitos– Elaboração dos modelos da arquitetura de software– Codificação das diferentes unidades (módulos e

componentes) de um software– Testes de unidades

Engenharia de Software, © 2006 Jair C Leite

Esforço – pessoa-mês, homem-hora

• Para estimar a duração de uma atividade, no lugar de uma unidade de tempo, usa-se uma medida do esforço.

• O esforço mede a relação inversa entre a quantidade pessoas e o tempo gasto para realizar a atividade.– Função inversa:

• número_de_pessoas*unidade_de_tempo = 1– Unidades: pessoa-mês, homem-hora, etc.

• Esta relação quando as atividades podem ser compartilhadas e são independentes.

• Por ex., 10 homens-hora significa– 1 homem faz a atividade em 10 hora– 10 homens fazem a atividade em 1 hora

Engenharia de Software, © 2006 Jair C Leite

O mito do Pessoa-Mês• Pessoa-mês é uma unidade de medida do esforço humano

necessário para realizar uma tarefa.– Um esforço de 3 pessoa-mês indica que:

• Se existe 1 pessoa na equipe, serão gastos 3 meses para terminar a tarefa

• Se existem 3 pessoas na equipe, em 1 mês a tarefa estará concluída • Mito: este raciocínio é, na maioria das situações reais, FALSO.

– As tarefas precisam ser completamente divisíveis e independentespara que seja verdadeiro.

Pessoas

Meses

Pessoas

Meses

Tarefas divisíveise independentes

Tarefas divisíveise independentes

Tarefas indivisíveisou seqüencialmentedependentes

Tarefas indivisíveisou seqüencialmentedependentes

Engenharia de Software, © 2006 Jair C Leite

Dependência entre tarefas em projetos de software• Exemplo:

– Fred e João são responsáveis por programar 2 módulos, mA e mB. O módulo mA depende de mB.

• Que problemas podem ocorrer?– Fred e João programam mA e ninguém codifica mB.– Fred programa mA e João programa mB e…

• Fred termina a codificação de mA antes de João terminar mB. O módulo mA só poderá ser testado quando mB tiver sido concluído etestado.

• Ou, quando mA chama mB ele passa 4 parâmetros, mas o código de João para mB requer 5 parâmetros…

• Ou, a ordem dos parâmetros em mA e mB são diferentes…• Ou, os tipos de dados podem ser diferentes

mA mB

Fonte: S. Schach

Engenharia de Software, © 2006 Jair C Leite

Organização da equipe (time)

• A organização do equipe depende:– da experiência trabalho dos membros da equipe – estilo de trabalho dos membros da equipe – do número de pessoas na equipe– dos estilos de gerenciamento adotado no projeto– das atividades a serem realizadas

Engenharia de Software, © 2006 Jair C Leite

Times democráticos

• Evita a programação egoísta:– Programador trata o código como seu– Rejeição à achar falhas no seu código

• Times democráticos– Reestrutura o ambiente social e valores dos programadores– Grupos de 10 programadores “sem-ego”– O time todo é dono do código– Cometer erros é considerado normal– Encoraja o time a encontrar erros– Maior produtividade – Atuação colaborativa na resolução de problemas difíceis

• Problemas– Precisa desabrochar espontaneamente– Dificuldade de gerenciamento

Engenharia de Software, © 2006 Jair C Leite

Clássica – programador-chefe• Idéia básica: equipe de cirurgia médica

– Cirurgião-chefe, Cirurgião-auxiliar, anestesista, enfermeiros, outrosespecialistas.

• Aspectos chaves: Hierarquia e Especialidades• Equipe básica

– Programador-chefe• Capacidade gerencial associada a alta capacidade de programação.• Responsável pela arquitetura do software.• Aloca as tarefas de programação e controla as interfaces, interações e

sincronismos.– Programador reserva

• Substituto do PC. Deve conhecer tanto do projeto quanto ele e ter a mesma capacidade técnica e gerencial.

– Secretário (bibliotecário)• Pessoa ligada ao PC e responsável por toda a organização dos

códigos, modelos e documentos produzidos– Programadores

Engenharia de Software, © 2006 Jair C Leite

Clássica – programador-chefe• Dificuldades em encontrar

numa mesma pessoa as habilidades de gerência e técnicas: arquitetura e programação.

• O programador-reserva deve ter as mesmas capacidades, mas sempre tem um salário menor e não fica muito tempo no cargo.

• O secretário tem que ter conhecimento de biblioteconomia aliado ao de programação e modelagem

Organização clássica

Solução alternativa

Fonte: S. Schach

Engenharia de Software, © 2006 Jair C Leite

Sincronizar-e-Estabilizar (Microsoft)• Um produto consite de 3 ou quatro “builds” seqüenciais• Pequenos times em paralelo

– 3 a 8 programadores e testadores (um-a-um)– Para cada time é dada uma especificação que podem ser

desenhada como quiser.• Regras

– Sincronização diária– Os códigos gerados devem ser compatibilizados e integrados.– Armazenados numa base de dados em cada sincronização.

• Funciona na Microsoft. Funcionará em todas as empresas?– A Microsoft tem um time de jovens e competentes programadores– A competitividade entre eles é muito forte. Perfil de nerds.

Engenharia de Software, © 2006 Jair C Leite

Extreme programming

• Características do XP– Todo o código é escrito por duplas de

programadores (programação em pares).• Vantagens da programação em pares

– Casos de testes são elaborados por um dos programadores.

– O conhecimento sobre o sistema não é perdido se um dos programadores sai do time.

– Programadores inexperientes podem aprendercom o seu colega.

– O compartilhamento do computador promove umaprogramação mais impessoal e menos egoísta.

Engenharia de Software, © 2006 Jair C Leite

Tendências

• Existe um líder de projeto responsável pelo gerenciamento do projeto e arquitetura do software

• Várias equipes com poucos programadores, lideradas pelos líderes de times.

Fonte: S. Schach

Engenharia de Software, © 2006 Jair C Leite

Referências

• Ian Sommerville - Software Engineering -Versão em Português editada pela AddisonWesley.

• Pfleeger, S. Engenharia de Software - Teoria e Prática 2a edição - Pearson/Prentice-Hall, 2004.

• Stephen Schach. - Object-Oriented andClassical Software Engineering - Fifth Edition- McGrawHill International Edition, 2002