Escolhendo o pessoal - SIGAA - Sistema Integrado de ...jair/ES/slides/Equipes.pdf• Pfleeger, S....

Post on 24-Jan-2019

213 views 0 download

Transcript of Escolhendo o pessoal - SIGAA - Sistema Integrado de ...jair/ES/slides/Equipes.pdf• Pfleeger, S....

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