Buscar

IC822_-_II_Fatores_Humanos_de_Qualidade

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Qualidade de Software
Fatores Humanos
Eduardo Kinder Almentero
ekalmentero@gmail.com
Fatores Humanos de Qualidade
• A forma como pessoas trabalham, 
individualmente e em equipe, no 
desenvolvimento de software tem impacto
importante sobre os resultados obtidos.
• Parte importante deste trabalho não é 
repetitivo, o que faz com que não seja trivial 
administrá-lo.
17/09/2014 Prof. Eduardo Kinder Almentero 2
Organizações que desenvolvem 
software
• Em todo ambiente de trabalho há situações de estresse 
e problemas de relacionamento pessoal.
• Empresas podem tratar este problema até certo ponto.
– Investir em qualidade de trabalho e vida
– Oferecer opções de lazer e conforto
• Software é diferente de outros produtos, pois o 
processo de manufatura exige grande volume de 
trabalho intelectual não repetitivo.
• Como administrá-lo se este trabalho é aleatório?
• Sistematizar!
17/09/2014 Prof. Eduardo Kinder Almentero 3
Organização do Trabalho
• “Ao elaborar um novo software, os desenvolvedores precisam criar 
soluções e, para conseguir fazê-lo, é essencial que trabalhem em perfeita 
sintonia.” (Weinberg, 1971)
• Obter sintonia depende de fatores como: boas relações informais entre os 
desenvolvedores e uma liderança adequada.
• Weinberg propõe uma medida com conceito simples: fazer o grupo 
partilhar a responsabilidade de definir objetivos.
– Tem impacto positivo, pois permite que todos conheçam o trabalho que está 
sendo desenvolvido.
– Reduzir partes obscuras reduz a probabilidade de incluir erros no código por 
incompreensão de detalhes de seu código.
• A aplicação do conceito é menos óbvia. 
– Dividir um projeto entre várias pessoas pressupõe uma organização perfeita, 
que no caso de software é muito difícil devido as inúmeros itens que devem 
ser administrados (recursos humanos, financeiros, ferramentas e produtos 
intermediários).
17/09/2014 Prof. Eduardo Kinder Almentero 4
Organização do Trabalho
• Uma forma de minimizar o problema é utilizar 
métodos e técnicas para este tipo de contexto.
– CMMI, XP, SCRUM e MPS.BR
• Contudo, uma organização de trabalho não faz 
sentido se as pessoas não sabem porque estão 
utilizando ela, como aplicá-la, quais problemas 
envolvidos e o papel de cada um no processo.
• Por isso, uma boa comunicação desempenha 
papel fundamental na correta realização destas 
tarefas.
17/09/2014 Prof. Eduardo Kinder Almentero 5
Comunicação
• Todo desenvolvedor sabe que para uma 
mesma especificação é possível criar um 
número infinito de programas diferentes.
• Um dos problemas do processo é justamente 
garantir que todos saibam qual a única 
solução adotada.
• Portanto, é essencial que todos possam se 
comunicar corretamente.
17/09/2014 Prof. Eduardo Kinder Almentero 6
Comunicação
• Uma comunicação possibilita a compreensão sobre o 
que se está trabalhando.
• A necessidade de informações vale para todos os 
envolvidos
– Programadores podem trocar informações sobre o código, 
engenheiros de requisitos podem discutir sobre requisitos 
com os clientes
• Segundo Yourdon (1989)
“... o simples ato de colocar três ou quatro pessoas em um 
projeto não faz uma equipe. Implícito no conceito de equipe 
está a ideia de se trabalhar muito juntamente, lendo o 
trabalho um do outro, compartilhando responsabilidades, 
passando a conhecer temperamentos”
17/09/2014 Prof. Eduardo Kinder Almentero 7
Individualismo
• Desenvolver software é uma atividade onde a criatividade tem 
grande influência.
• A solução de um problema ocorre na cabeça de um desenvolvedor.
• Escrever código e projetar arquitetura não é uma atividade 
repetitiva.
• Nas engenharias de um modo geral, há a estética associada com 
uma nova solução.
• Em razão disto, pode haver grande influência do ego dos envolvidos 
durante o trabalho em equipe.
• Livro de Weinberg de 1970: A Psicologia da Programação de 
Computadores.
• O livro continua sendo bastante citado, pois os problemas
abordados continuam existindo.
17/09/2014 Prof. Eduardo Kinder Almentero 8
Individualismo
• Neste cenário, dois pontos merecem atenção:
– Aplicação de padrões.
• Desenvolvedores podem se ofender com a ideia de deixar de 
lado seus próprios hábitos e adotar os padrões de uma 
equipe.
• Weinberg propõe o termo egoless programming 
(programação sem ego) para lidar com esta dificuldade.
– Posse entre desenvolvedor e o produto
• Defeitos no software podem ser interpretador como crítica 
pessoas e esta reação pode acontecer de maneira 
inconsciente.
• Esta postura pode explicar a dificuldade (ou menor 
eficiência) dos programadores em detectar defeitos ao testar 
seu próprio código.
17/09/2014 Prof. Eduardo Kinder Almentero 9
Gerência de Manufatura
• Muito material de qualidade aplicada à indústria. 
• Foi na manufatura que o conceito se fortaleceu.
• A manufatura não é o modelo ideal para pensar em uma 
fábrica de software.
• Com isto, alguns critérios de gerência não são aplicáveis e 
podem até ter resultados opostos ao que se espera.
• Dentre estes critérios, o mais perigoso é, provavelmente, o 
de produtividade.
– Aplicado erroneamente pode resultar em volume maior, mas 
dificilmente em qualidade.
– Algumas organizações adotam este critério, por exemplo, 
premiando àqueles que produzem mais código ou com relação a 
metas do cronograma.
17/09/2014 Prof. Eduardo Kinder Almentero 10
Gerência de Manufatura
• Outro critério perigoso é alocar mais recursos para resolver problemas de 
prazo.
• Se dois caminhões transportam o dobro do volume, dois programadores 
devem produzir o dobro de código.
• 1 trabalhador constrói um muro em 4 dias, dois em 2 dias e 100 em 10 
minutos?
– Problema de aplicar um modelo linear a um problema que não é (Weinberg, 1994)
• O volume de trabalho não cresce na mesma proporção do número de 
pessoas.
– A diferença é ainda mais sensível em programação.
– Quanto maior o número de pessoas, o volume de trabalho que se ganha ao adicionar 
um novo membro na equipe tende a diminuir.
• Problemas de se adicionar mais pessoas:
– Maior volume de comunicação;
– Interação mais complexa; 
– Custo de treinamento para novos funcionários (aprendizado de métodos e padrões 
utilizados pela equipe).
17/09/2014 Prof. Eduardo Kinder Almentero 11
Relação comercial-desenvolvimento
• O ambiente empresarial é muitas vezes inconsistente
– Objetivos e valores declarados não são considerados na execução das 
atividades.
– Ex: “nosso principal ativo são as pessoas”
– Na prática isto não é respeitado, ocorrem jogos de interesses e 
conflitos por poder.
• Em empresas de consultoria em TI, normalmente, há conflito de 
interesses entre áreas comercial e técnica.
• Área comercial: 
– Pressão para obter resultados (muita competição, baixas margens de 
lucro). 
– É necessário vender serviços e apresentar vantagens competitivas a 
todo momento
– Muitas vezes os vendedores acabam realizando promessas difíceis de 
cumprir com relação a prazo ou especificações de produtos/serviços.
17/09/2014 Prof. Eduardo Kinder Almentero 12
Relação comercial-desenvolvimento
• Área técnica
– Desenvolve e implanta soluções.
– Sofre com seus próprios problemas de prazo, modificações de requisitos e correção de 
erros.
– Tendência é simplificar produtos, reduzindo o trabalho (oposto ao vendedor).
• Como consequência ocorrem sérios atritos.
• Normalmente, desenvolvedores ficam desconfortáveis em fazer trabalho sem 
qualidade.
• Também não querem fazer muitas horas extras (causam insatisfação e perda de 
produtividade e qualidade) e trabalhar sob pressão de prazos.
• Nível de atenção, criatividade e diminui após muitas horas consecutivas de 
trabalho sem descanso.
• Mas a tarefa de programação depende destascaracterísticas!
• Qual a solução?
17/09/2014 Prof. Eduardo Kinder Almentero 13
Relação comercial-desenvolvimento
• Uma possível solução é a proposta de uma área 
intermediária entre vendas e desenvolvimento.
• Formada por pessoas com conhecimento em ambas as 
áreas.
– Desenvolvedores que sabem vender e vendedores que 
sabem desenvolver
• O conhecimento técnico possibilitaria entender o 
problema e propor soluções em prazos realistas.
• A responsabilidade do grupo seria harmonizar as 
expectativas do setor comercial com as possibilidades 
de realização do setor de desenvolvimento.
17/09/2014 Prof. Eduardo Kinder Almentero 14
Maturidade de Organizações
• Crosby classificou os estilos de gerência em 5 categorias 
(correspondem aos modelos de maturidade do 
CMM/CMMI)
– Incerteza;
– Despertar;
– Esclarecimento;
– Sabedoria;
– Certeza;
• Cada categoria identifica um estilo de gerência, desde um 
nível onde se trabalha através de tentativa e erro 
(incerteza) até o nível ideal, em que as decisões são 
tomadas com o mínimo de erro e de forma a garantir o 
máximo de eficiência.
17/09/2014 Prof. Eduardo Kinder Almentero 15
Maturidade de Organizações
• Outros autores propuseram classificações segundo 
visões diferentes do funcionamento organizacional.
17/09/2014 Prof. Eduardo Kinder Almentero 16
Nível Maturidade de 
Processo
Maturidade de 
recursos humanos
Congruência entre 
declarado e executado
0 Esquecido
1 Inicial Arrebanhado Variável
2 Repetitivo Gerenciado Rotina
3 Definido Adaptado Direção
4 Gerenciado Institucionalizado Antecipação
5 Otimizado Otimizado Congruência
W. Humphrey B. Curtis G. Weinberg
Maturidade de Organizações
• Cada nível se refere ao estilo de organização e a forma 
de trabalhar da empresa.
• Embora cada indivíduo tenha um comportamento 
distinto, o nível de maturidade representa o 
funcionamento da empresa como um todo.
• Empresas de baixa maturidade podem ser bem 
sucedidas.
– Tudo depende do produto que estiver sendo produzido.
• Os níveis de maturidade devem ser vistos como 
oportunidade de ganho para empresa e não níveis de 
perfeição idealizados.
17/09/2014 Prof. Eduardo Kinder Almentero 17
Maturidade de Organizações
• Avançar nos níveis de maturidade significa que a empresa 
aprende a ser mais precisa ao:
– Traçar objetivos
– Estimar variáveis, como custo e tempo
– Elaborar planos
• A seguir será apresentada uma descrição, de maneira geral 
dos 5 níveis de maturidade. É importante entender que:
– As descrições não traçam limites absolutos entre um nível 
e outro.
– Uma organização pode apresentar características de vários 
níveis.
• Por exemplo, para projetos e setores diferentes.
17/09/2014 Prof. Eduardo Kinder Almentero 18
Maturidade de Organizações
• Nível 1: caótico
– Empresa não possui processos;
– Trabalho realizado sem planejamento;
– Pessoas reagem a medida que problemas surgem;
– Projetos desenvolvidos através de improvisações;
– Projetos dependem de “heróis”;
– Conhecimento pertence ao individuo;
– Não há trabalho em equipe.
• Sem coordenação e planejamento.
– Existem equipes e gerentes!
– Ainda assim, algumas conseguem sobreviver.
17/09/2014 Prof. Eduardo Kinder Almentero 19
Maturidade de Organizações
• Nível 2: repetitivo
– Organizações neste nível funcionam com base em 
rotina: o que funcionou no passado é, 
provavelmente, a solução dos problemas atuais.
– Naturalmente, isto não é verdade.
– A diferença para o nível caótico é que a 
organização possui receitas prontas e é capaz de 
repetir formulas que já deram certo, ainda que 
estas não sejam as ideais.
17/09/2014 Prof. Eduardo Kinder Almentero 20
Maturidade de Organizações
• Nível 3: definido
– A transição para este nível ocorre quando a organização percebe 
que o desenvolvimento de um produto pode ser feito com mais 
segurança se forem aplicados os processos corretos.
– Uma característica chave neste é o conhecimento das pessoas.
• Compreendem os processos, sua utilidade e importância; 
– Cada tarefa tem um propósito claro, permitindo que as pessoas 
executem suas tarefas sabendo o porquê da necessidade de 
seguir um padrão.
– É possível escolher os processos corretos em função de sua 
adequação ao contexto tratado.
• Sem seguir uma base puramente empírica (experiência/observação).
17/09/2014 Prof. Eduardo Kinder Almentero 21
Maturidade de Organizações
• Nível 4: gerenciado
– Os problemas que podem surgir são antecipados.
• É preciso controle sobre a execução de processos.
– Processo são medidos com intuito de otimização.
– Detecção de problemas e elaboração de planos de 
contingência.
– Medidas são parte integrante dos processos e 
atividades de trabalho
• Permite que cada tarefa seja acompanhada de maneira 
muito mais próxima que os níveis anteriores.
17/09/2014 Prof. Eduardo Kinder Almentero 22
Maturidade de Organizações
• Nível 5: otimizado
– Organização incorpora qualidade como um valor que 
se torna institucionalizado.
• Reflete nos seus produtos e em seu funcionamento com um 
todo.
– Procura constante por alternativas para melhorar 
todas as atividades que realiza.
– Histórico de informações sobre processos anteriores 
e coleta de dados sobre processos em andamento.
• Permite analisar sua maneira de produzir e buscar opções 
para torna-la mais eficiente.
17/09/2014 Prof. Eduardo Kinder Almentero 23
Práticas de organizações maduras
• Organizações não precisam sempre inventar 
novas maneiras para resolver seus problemas.
• A maioria das dificuldades são recorrentes e bem 
conhecidas.
• É possível buscar soluções desenvolvidas por 
outras organizações, que foram refinadas ao 
longo do tempo.
• Algumas boas práticas conhecidas: interação com 
o cliente, gerenciamento de projetos, métricas, 
treinamento e revisão por pares. 
17/09/2014 Prof. Eduardo Kinder Almentero 24
Interação com o cliente
• Um dos maiores fatores de fracasso em projetos de software é a constante 
alteração nos requisitos e escopo.
• Porém, estas alterações são inevitáveis. O problema reside em saber como lidar
com elas.
• As duas partes devem ceder
– Desenvolvedores devem saber que é necessário atender as mudanças, apesar do trabalho 
extra que elas acarretam.
– Os clientes devem entender que há riscos nas mudanças: atraso do projeto e aumento dos 
custos.
• Organizações maduras veem os clientes como um parceiro com interesse em 
comum.
– Transparência na discussão de prazos, custo e qualidade do projeto.
– Toda não conformidade é comunicada ao cliente.
– O cliente é encorajado a se comunicar com os desenvolvedores.
• Contratos formais são necessários, mas diálogos informais podem ajudar na 
resolução de conflitos.
• Organizações maduras entendem a importância de contratos bem definidos, mas 
procuram envolver o usuário na sua escrita e estão preparadas para imprevistos.
17/09/2014 Prof. Eduardo Kinder Almentero 25
Gerenciamento de projetos
• Organizações maduras elaboram planos de projetos 
realísticos e honestos.
– Algumas adotam estratégias diferentes para ganhar a concorrência.
• Acarreta projetos de baixa qualidade, cliente sem confiança e 
desenvolvedores pressionados.
– Para elaborar estes planos, são os riscos são analisados e gerenciados.
– Busca-se métricas mais precisas para calcular prazos e custo.
– Base histórica é utilizada para definir parâmetros para os projetos 
atuais e alimentada com os dados destes projetos.
– A utilização de experiências anteriores favorece a repetição de 
sucesso, diminuindo as chances de fracasso.
17/09/2014 Prof. Eduardo Kinder Almentero 26
Treinamento
• Organizações maduras oferecem treinamentos formais para 
novos contratados.
– Introdução aos padrões da organização(processos).
• Garante a padronização do método de trabalho
• Programas com reciclagem para os funcionários antigos.
– Novos projetos podem demandar a utilização de 
tecnologia, processos, linguagem que não são dominados 
pelos funcionários.
– Treinar os funcionários antigos em detrimento de 
contratar novos reduz os custos do projeto.
• Coaching: funcionários mais experientes monitoram e 
auxiliam o desenvolvimento da carreira dos mais novos.
17/09/2014 Prof. Eduardo Kinder Almentero 27
Revisão por pares
• Há uma resistência natural de desenvolvedores em encontrar defeitos em 
seu próprio código.
– Problema da propriedade.
• Uma maneira simples de contornar a situação é solicitar outra pessoa 
para realizar uma revisão.
• Organizações maduras utilizam a revisão por pares.
– Todo artefato produzido por um membro da equipe passa pela revisão de 
outro funcionário.
• Documentos de requisitos, código, diagramas de análise, ...
• Prática eficaz para encontrar erros e não conformidades com os padrões 
estabelecidos.
• Deve ser conduzida corretamente, para evitar conflitos entre os 
integrantes da equipe.
• Gerentes são responsáveis por administrar as revisões
– Participantes devem entender que o que se está julgando são os resultados do 
trabalho, e não a pessoa que o executou.
17/09/2014 Prof. Eduardo Kinder Almentero 28
Material de apoio
• Bibliografia básica
– KOSCIANSKI, A. Qualidade de software. 2. ed. São 
Paulo: Novatec, 2007
– SOMMERVILLE, I. Engenharia de software. 8. ed. São 
Paulo: Addison Wesley, 2007.
• Bibliografia complementar
– PFLEEGER, S.L., et al, “Software Engineering”, Prentice 
Hall, 2005, 3rd edition.
– Guide to the Software Engineering Body of 
Knowledge, IEEE Computer Society, 2004. Disponível 
em http://swebok.org.
17/09/2014 Prof. Eduardo Kinder Almentero 29

Outros materiais

Outros materiais