fev8th

Definindo métricas de qualidade na entrega de tarefas para desenvolvedores de sistemas

A primeira idéia

Quando decidimos utilizar uma métrica para avaliar a qualidade das tarefas entregues pelos analistas de sistemas em nossa equipe de desenvolvimento, optamos por utilizar uma metodologia de cálculo simples, baseada nas estatísticas que nos eram reportadas pelos nossos analistas de testes, ao final do processo de homologação. A métrica era bem simples: já que todos os erros identificados pelos analistas de testes recebiam uma pontuação baseada em uma classificação específica, bastava somar o número de pontos de erro de cada analista, e comparar os resultados. Assim, aquele que obtivesse o menor número seria o que apresentou o melhor desempenho. Por exemplo:

Em uma equipe de três analistas de sistemas (A, B e C), foram identificados, no processo de homologação das tarefas da equipe, 2 erros graves e 1 erro comum para o analista A, 2 erros graves e 1 erro que merece atenção para o analista B, e 3 erros graves para o analista C. Para que pudéssemos identificar o analista que apresentou o melhor desempenho, primeiro teríamos que classificar os erros de acordo com a tabela abaixo:

Erros críticos: 10 pontos
Erros graves: 7 pontos
Erros que merecem atenção: 5 pontos
Erros comuns: 2 pontos

Efetuando os cálculos, teríamos:

Analista A Analista B Analista C
2×7+1×2=16 pontos 2×7+1×5=19 pontos 3×7=21 pontos

Daí, poderíamos concluir que o analista A foi o que apresentou melhor desempenho, pois mesmo tendo cometido 3 erros, como os outros analistas, foi o que cometeu erros que apresentavam menor impacto no sistema, independente da quantidade de tarefas que cada um efetuou.

O problema

Este modelo se mostrou válido durante pouco tempo, pois já na próxima medição identificamos um problema: o analista que obteve a menor pontuação foi o que entregou menos tarefas, e o analista que obteve a maior pontuação, o que entregou mais tarefas. Como a relação entre o número total de erros de cada analista não era proporcional à quantidade de tarefas executadas por eles, verificamos uma discrepância nos dados, já que, pela lógica utilizada, o analista que trabalhou menos estaria mais propenso a cometer menos erros!

A nova proposta

Para resolver este problema, deveríamos montar uma nova métrica que considerasse, além do número de pontos de erros associados às tarefas de cada analista, o número de tarefas atribuídas a cada um e também o grau de complexidade relativo a cada uma delas - já que, a princípio, tarefas simples deveriam ter uma menor incidência de erro do que tarefas complexas.
Além disso, para evitar que os erros gerados em tarefas mais simples tivessem peso menor do que os gerados em tarefas mais complexas, nos cálculos acima o número atribuído a complexidade corresponderiam sempre ao inverso do valor dela, conforme especificação abaixo.

  • Para tarefa classificada como “Muito simples” (1), o coeficiente para cálculo será 5
  • Para tarefa classificada como “Simples” (2), o coeficiente para cálculo será 4
  • Para tarefa classificada como “Mediana” (3), o coeficiente para cálculo será 3
  • Para tarefa classificada como “Complexa” (4), o coeficiente para cálculo será 2
  • Para tarefa classificada como “Muito complexa” (5), o coeficiente para cálculo será 1

Logo, desenvolvemos um novo modelo que aplicasse todas estas variáveis:

Fórmula proposta para calcular o desempenho dos analistas de sistema

Sendo:

a = número de erros de um mesmo tipo
b = número de pontos correspondente ao tipo de erro, de acordo com a tabela de classificação de erros
c = coeficiente para cálculo da nova métrica
n = número de tarefas
i = índice da tarefa

Para que esta nova metodologia possa ser mais facilmente compreendida, consideremos o seguinte cenário:
Três analistas (A, B e C) receberem, em um determinado período, 23 tarefas, distribuídas da seguinte forma:

  • Ao analista A, foram atribuídas 7 tarefas, sendo 3 de complexidade simples (2) e 4 de complexidade muito simples (1)
  • Ao analista B, foram atribuídas 4 tarefas, sendo 1 de complexidade mediana (3), 2 de complexidade simples (2) e 1 de complexidade muito simples (1)
  • Ao analista C, foram atribuídas 12 tarefas, sendo 3 de complexidade mediana (3), e as demais, de complexidade muito simples (1)

Quando todos entregaram suas tarefas, foram constatados alguns erros, como seguem:

  • O analista A cometeu 3 erros, sendo 2 graves e 1 comum, todos gerados em uma mesma tarefa, de complexidade simples – logo, o coeficiente a ser utilizado no cálculo da métrica será igual a 4
  • O analista B cometeu 3 erros, sendo 2 graves e 1 que merece atenção, todos gerados em uma mesma tarefa, de complexidade simples – aqui, o coeficiente a ser utilizado no cálculo da métrica também será igual a 4
  • O analista C cometeu 3 erros, sendo todos eles graves, e gerados em uma mesma tarefa, de complexidade muito simples – neste caso, o coeficiente a ser utilizado no cálculo da métrica será igual a 5

Avaliando os dados mencionados acima, e submetendo-os à nova métrica de qualidade proposta, temos:

Analista A

Calculando desempenho do Analista A

Analista B

Calculando desempenho do Analista B

Analista C

Calculando desempenho do Analista C

Daí, podemos constatar que o analista C foi o que apresentou melhor qualidade na entrega de suas tarefas, pois, mesmo tendo cometido 3 erros graves em tarefas muito simples, não cometeu nenhum erro nas tarefas mais complexas que lhe foram atribuídas.

Conclusão

A nova proposta aqui apresentada tem por objetivo prover informações mais precisas sobre a qualidade das tarefas que são efetuadas pelos analistas de sistemas, permitindo aos gestores identificar quais os analistas que apresentaram os melhores e os piores desempenhos quando executando tarefas de complexidades distintas, em um determinado período. Entretanto, é necessário que sejam definidas outras métricas, como de produtividade por exemplo, para que possamos avaliar o desempenho geral de cada analista, e não apenas em relação à qualidade de suas tarefas entregues.

jan26th

Quer aprender ou aperfeiçoar-se nos estudos de TI? Material gratuito é o que não falta!

Para quem está pensando em matricular-se em cursos visando conhecer ou aperfeiçoar-se no desenvolvimento de sistemas ou em outras áreas de tecnologia da informação, especificamente as relacionadas a plataforma Microsoft, estou disponibilizando, neste post e nos próximos que se seguirem, algumas dicas de links que poderão ajudá-los nos estudos.

Todos os links relacionados apresentam bastante conteúdo (em vídeo) sobre diversos temas voltados às áreas de tecnologia (Sharepoint, Windows Server 2008, Windows Vista, etc.) e desenvolvimento (C#, VB.NET, TFS, VSTS, Testes, etc.). Gratuitos, eles são de bastante ajuda, inclusive para aqueles que pretentem prestar um dos exames de certificação da Microsoft.

Como os assuntos abordados em cada tema são extensos, irei apresentar primeiro os links relativos aos materiais do MSDN, depois os do TECHNET e, por fim, os demais.

Dêem uma olhada, acho que irão achar os conteúdos bem interessantes - de repente, vocês nem vão precisar gastar aquela grana num pacote de cursos presenciais… ;)

Microsoft MSDN Experience  - Parte 1

Web Development

Módulo 1 – Conceitual – Linguagem de Programação:

Sessão 1 - Conceitos Básicos de Programação e Introdução a C#

Tópicos Abordados:

1. A Plataforma .NET, .NET Framework e a CLR
2. Introdução a C#: Classes, Interfaces, Métodos, Propriedades, Contrutores, Eventos
3. Conceitos de Programação Orientadas a Objetos com C#
4. Tratamento de Erros
5 Delegates e Eventos
6. Manipulação de Data, Hora e Números
7. Leitura/Escrita de Arquivo Texto e Binário

Sessão 2 - Conceitos Básicos de Programação e Introdução a Visual Basic.NET

Tópicos Abordados:

1. Introdução a Plataforma Microsoft .NET
2. Características do Ambiente de Desenvolvimento
3. Linguagem e Sintaxe
4. Programação Orientada Objetos com Visual Basic .NET

Módulo 2 – Visão Geral de ASP.NET:

Sessão 1 - Introdução a ASP.NET com linguagem C#

Tópicos Abordados:

1. O Visual Web Developer Express Edition
2. Conceitos Básicos: Aplicação Web, Recursos Web, Request e Response, Sessão e WebServer
3. A Estrutura da Aplicação ASP.NET, Web Forms e Server Controls
4. Trabalhando com Controles de Validação
5. Trabalhando com Master Pages
6. Trabalhando com Controles de Navegação
7. Trabalhando com Controle de Login
8. Trabalhando com Controles de Acesso a Dados

Sessão 2 - Introdução a ASP.NET com linguagem Visual Basic.NET

Tópicos Abordados:

1. O Visual Web Developer Express Edition
2. Conceitos Básicos: Aplicação Web, Recursos Web, Request e Response, Sessão e WebServer
3. A Estrutura da Aplicação ASP.NET, Web Forms e Server Controls
4. Trabalhando com Controles de Validação
5. Trabalhando com Master Pages
6. Trabalhando com Controles de Navegação
7. Trabalhando com Controle de Login
8. Trabalhando com Controles de Acesso a Dados

Sessão 3 - Introdução a XML e Web Services

Tópicos Abordados:

1. Overview do XML Web Services
2. Por Que Utilizar XML Web Services
3. Como Localizar um XML Web Service
4. Como Criar um XML Web Service
5. Como Usar um Proxy para Chamar um XML Web Service

Sessão 4 - ASP.NET AJAX

Tópicos Abordados:

1. Conceito de ASP.NET AJAX
2. Desenvolvimento ASP.NET AJAX para Servidor
3. Desenvolvimento ASP.NET AJAX para Navegador
4. ASP.NET AJAX Control Toolkit
5. Demonstração - construindo um chat passo a passo com ASP.NET AJAX

Módulo 3 – Migração (Avaliação entre Tecnologias):

Sessão 1 - ASP.NET para desenvolvedores PHP – Introdução

Tópicos Abordados:

1. Comparação entre as Arquiteturas
2. Diferenças de Linguagens
3. Acesso a Dados
4. Migração de PHP para ASP.NET

Sessão 2 - ASP.NET para desenvolvedores JSP – Introdução

Tópicos Abordados:

1. Introdução
2. Facilite a Migração com “JLCA 3.0″
3. Ambiente de Desenvolvimento
4. Modelo de Codificação do ASP.NET e JSP
5. Elementos de Scripts e Diretivas
6. Taglibs e Web Controls
7. Publicação da Aplicação na Web

Sessão 3 - ASP.NET para desenvolvedores ASP – Introdução

Tópicos Abordados:

1. Conhecendo o .NET Framework
2. Controles com Eventos de Servidor
3. Mudanças Significativas
4. Ferramentas para Desenvolvimento
5. Referências para Estudo

Módulo 4 – Acesso a Dados, Segurança e Globalização:

Sessão 1 - Acesso e manipulação de dados (ADO.NET)

Tópicos Abordados:

1. O que é ADO.NET
2. Arquitetura do ADO.NET
3. O que o ASP.NET 2.0 oferece
4. Demonstrações

Sessão 2 - Autenticação, Autorização e Segurança (Código Seguro)

Tópicos Abordados:

1. Conceitos sobre Segurança
2. Active Directory
3. Autenticação
4. Autorização

Sessão 3 - Globalização: seu site multilingual

Tópicos Abordados:

1. Novidades do ASP.NET 2.0 para tornar o seu site multilínguagem
2. Demonstrações

Módulo 5 – Depuração e Performance:

Sessão 1 - Depuração de código (debug e trace)

Tópicos Abordados:

1. Introdução a depuração de código
2. Recursos de debugging do Visual Studio
3. Técnias usuais: Response.Write
4. Classes Debug e Trace
5. Outras técnias: Remote debugging

Sessão 2 - Testes, Estabilização, Desempenho e Deployment (instalação)

Tópicos Abordados:

1. O Objeto Cache
2. ASP.NET Output Cache
3. Configuração
4. Deployment (instalação)

jul24th

Dicionariando: Surreal

Eduardo Bueno dicionário, geral Read on

Rapaz, como está difícil encontrar comentários com conteúdo - inteligente - na web!

Há, por aí, muitos blogs com posts bacanas… posts que, como dizem, nos fazem pensar. Entretanto, mesmo estes posts, por melhor que sejam, raramente geram comentários relevantes, que vão além dos simples “bacana este post” ou “não gostei do que você escreveu”… enfim, por isso é que - mais uma vez - vou utilizar como referência aqui outro trecho de um dos comentários dos leitores do Polzonoff.

A palavra, desta vez, não me é totalmente desconhecida - eu a escolhi mais pelo contexto a que está inserida (uma sucinta observação acerca da atual situação em que o país se encontra) que pelo desconhecimento de seu significado.

Espero que apreciem!

Surreal

Datação
déc.1920

Acepções
■ adjetivo de dois gêneros
1 que denota estranheza, transgressão da verdade sensível, da razão, ou que pertence ao domínio do sonho, da imaginação, do absurdo
■ substantivo masculino
2 aquilo que se encontra para além do real
3 Rubrica: história da arte.
o que resulta da interpretação da realidade à luz do sonho e dos processos psíquicos do inconsciente

Etimologia
fr. sureél (1924) ‘id.’ > sur ’sobre’ + réel ‘real’

Contextualização
“(…) o Brasil se tornou um país surreal (…)” [sic]

Comentário
Eu até queria comentar o trecho acima mas fiquei com a incômoda sensação de que não precisava mesmo dizer mais nada… o pior é que a coisa está tão feia que não podemos nem dizer que a saída é o aeroporto…

Antes que eu me esqueça: O post que originou o comentário de onde tirei o trecho acima foi este. Novamente, se o autor (do comentário) se sentir ofendido de alguma forma com a publicação deste, peço por gentileza que entre em contato comigo, para que eu possa excluí-lo.

jul17th

Obtendo informações baseadas nas configurações regionais do Windows, utilizando Microsoft .NET

Eduardo Bueno artigos, programação Read on

Eventualmente temos que desenvolver aplicativos que necessitem apresentar informações baseadas nas configurações regionais da máquina em que ele será utilizado. No Framework .NET, da Microsoft, podemos fazer isso de forma relativamente simples, como pode ser observado a seguir.

Primeiro, é necessário obter as informações do idioma corrente executado pelo aplicativo:

Dim ciCultureInfo As CultureInfo = _
Thread.CurrentThread.CurrentUICulture

De posse dessas informações, é possível obter os dias da semana:

Dias da semana

A variável strDiasDaSemana, após a execução da primeira linha acima, conterá os nomes dos 7 dias da semana - para obter o dia correspondente a uma data específica, é só utilizar:

Dia da semana

Para obter os meses do ano:

Meses do ano

Aqui a variável strMesesDoAno conterá os nomes de cada um dos meses do ano. Para obter o mês correspondente a uma data específica, basta seguir o mesmo raciocínio do exemplo acima:

Mês do ano

Obs.: Para retornar o nome do mês corrente é necessário subtrair 1 do mês pois o índice da variável strMesesDoAno começa com 0 (zero).

Para obter a moeda corrente:

Moeda

Os exemplos acima estão todos em Visual Basic .NET, porém podem ser facilmente adaptados para o C# (ou qualquer outra linguagem compatível com o .NET).

Até mais!

About

Eduardo BuenoMe chamo José Eduardo Bueno de Camargo (não, não sou aquele famoso escritor!), tenho 33 anos, nasci em São Paulo/SP, mas atualmente moro em Osasco/SP. Estou aprendendo a tocar violão e a falar espanhol, então não estranhe se, daqui a algum tempo, você me ver por aí tocando e cantando “Volare” com a mesma desenvoltura que os Gipsy Kings…

Trabalho com web desde o século passado (meados de 1999), porém comecei a atuar na área de informática pouco antes do final de 1994, quando eu e meu amigo Ricardo nos aventuramos a programar nosso primeiro sistema em Visual Basic (na época, em sua 3ª versão) para controlar o estoque de uma Adega que havia lá no Alto da Lapa. Depois disso, já participei de projetos d’O Boticário, Valor Econômico, Fundação Pró-Sangue, Natura, CET-SP, Coca-Cola entre outros.

Atualmente sou coordenador de sistemas web e client/server em uma empresa de tecnologia em Alphaville, e estou estudando para aperfeiçoar-me nas metodologias de gerenciamento e desenvolvimento de sistemas, sobretudo SCRUM e ITIL, e também para obter mais uma certificação Microsoft - o próximo passo é tornar-me MCPD!

Contact

MSN Messenger: eduardobueno@msn.comeduardobueno@msn.com
Skype: eduardobuenoeduardobueno
Google Talk: contato@eduardobueno.comcontato@eduardobueno.com
E-mail: contato@eduardobueno.comcontato@eduardobueno.com

Certificates

  • MCTS - .NET Framework 2.0 - Distributed Applications

  • Microsoft Certified Professional

Categories

Flickr Photos

Pôr-do-SolO FarolEsperando a passagem do tremEstátua de Ercílio LuzEscadaria para o FarolPonta da praiaEscadaria para o FarolLagoa da Conceição

Recently