33 votes

Logiciel de développement des indicateurs et des rapports

J'ai eu quelques conversations intéressantes récemment au sujet de développement de logiciels métriques, en particulier la façon dont ils peuvent être utilisés dans une assez grande organisation pour aider les équipes de développement travaillent mieux. Je sais qu'il y a eu un Débordement de Pile questions sur lesquelles les mesures sont bonnes à utiliser - comme ce un seul, mais ma question est plus sur quelles statistiques sont utiles dans laquelle les parties prenantes, et à ce niveau d'agrégation.

Comme un exemple, mon point de vue est que la couverture de code est une mesure utile de la manière suivante (et peut-être d'autres):

  • Pour une équipe de sa propre utilisation en interne lorsqu'il est combiné avec d'autres mesures.
  • Pour faciliter/activation/de mentorat les équipes de, où il pourrait être instructif lorsqu'on compte sur une équipe par équipe base comme une tendance (par exemple, si l'équipe A et de B ont la couverture ce mois-ci de 75 et 50, je serais plus préoccupé par l'équipe A que B si le mois précédent, ils avaient a 80 et 40).
  • Pour la haute direction lorsqu'il est présenté comme un agrégé statistique à travers un certain nombre d'équipes ou de l'ensemble d'un ministère.

Mais je ne pense que c'est utile pour la haute direction afin de voir cela sur une équipe par équipe, car cela encourage artificielle tentatives pour renforcer la couverture des tests que le simple fait de l'exercice, plutôt que de test, code.

Je suis dans une organisation avec un couple de niveaux de sa hiérarchie, mais où la grande majorité des gestionnaires sont techniquement d'esprit et capables (avec encore nombreux à se salir les mains). Certains des équipes de développement sont à la pointe en route vers les pratiques de développement agile, mais d'autres gal, et il y a maintenant un grave mandat du haut pour que ce soit la façon dont l'organisation fonctionne. Un couple nous sommes au début d'un programme pour encourager cette. Dans ce genre d'organisation, de quelle sorte de mesures pensez-vous sont utiles, à qui, pourquoi, et à quel niveau de l'agrégation?

Je ne veux pas que les gens sentent que leur performance est évaluée sur la base d'une métrique ils peuvent artificiellement influence; dans le même temps, la direction vont vouloir une sorte de preuve que des progrès sont réalisés. Quels conseils ou mises en garde peut vous fournir basée sur l'expérience de votre propre organisation?

MODIFIER

Nous sommes certainement vouloir utiliser des métriques comme un outil pour l'organisation d'amélioration, pas comme un outil pour chaque mesure de la performance.

47voto

Paul Stephenson Points 17507

Un conte à partir de l'expérience personnelle. Mes excuses pour la longueur.

Il y A quelques années, notre groupe de développement essayé paramètre "propres", des objectifs mesurables pour les particuliers et les chefs d'équipe. L'expérience a duré à peine un an, parce que dur métriques n'a pas vraiment très bien pour les objectifs individuels (voir ma question sur le sujet pour certains liens, et d'autres discussions).

Notez que j'ai été un chef d'équipe, et de les impliquer dans la planification de tout cela avec ma technique de boss et les autres chefs d'équipe, de sorte que les objectifs n'étaient pas quelque chose de dictée d'en haut par un ignorant de la haute direction à l'époque, nous voulions vraiment à travailler. Il est également intéressant de noter que la structure de bonus, par inadvertance, encourage la concurrence entre les développeurs. Voici mes observations sur les choses que nous avons essayé.

Client-visible questions

Dans notre cas, nous avons compté les pannes sur le service que nous avons fourni aux clients. Dans un film rétractable produit, il pourrait être le nombre de bugs signalés par les clients.

Avantages: C'était la seule vraie mesure qui a été visible à la haute direction. Il a également été le plus objectif, mesuré à l'extérieur du groupe de développement.

Inconvénients: Il n'y avait pas beaucoup de pannes -- juste autour de l'un par le développeur de l'ensemble de l'année, ce qui signifiait que le défaut ou le dépassement de l'objectif a été question de "l'épinglage de blâmer" les quelques pannes qui se produisent dans chaque équipe. Cela a conduit à de mauvais sentiments et de la perte de moral.

Quantité de travail accompli

Avantages: C'était le seul positif de la mesure. Tout le reste a été "nous avons remarqué lors de mauvaises choses arrivent," qui était démoralisant. Son inclusion a été aussi nécessaire, car, sans cela, un développeur qui n'a rien fait tout l'exercice dépasse tous les autres objectifs, qui, clairement, ne serait pas dans l'intérêt de la société. La mesure de la quantité de travail accompli vérifié l'optimisme naturel des développeurs lors de l'estimation de la taille des tâches, ce qui est utile.

Inconvénients: La mesure de "travail terminé" a été basé sur les estimations fournies par les développeurs eux-mêmes (généralement une bonne chose), mais il fait partie de leurs objectifs encouragé jeu du système pour gonfler les estimations. Nous n'avions pas viable mesure du travail accompli: je pense que la seule manière valable de mesure de la productivité est "l'impact sur les résultats de l'entreprise," mais la plupart des développeurs sont si éloignés de la vente directe que c'est rarement pratique à un niveau individuel.

Les défauts présents dans le nouveau code de production

Nous avons mesuré les défauts introduits dans le nouveau code de production au cours de l'année, comme il a été estimé que les bugs de la précédente ans ne devrait pas compter l'encontre de toute personne dans cette les objectifs de l'année. Les défauts repérés par la qualité interne des équipes ont été inclus dans le décompte, même si ils n'ont pas d'incidence sur les clients.

Avantages: Étonnamment peu. Le décalage dans le temps entre l'introduction d'un défaut et de sa découverte signifiait qu'il y avait vraiment aucun mécanisme de rétroaction pour améliorer la qualité du code. Macro-tendances au niveau de l'équipe ont été plus utile.

Inconvénients: Il y avait un accent lourd sur le négatif, étant donné que cet objectif a été invoqué lorsqu'un défaut a été trouvé et nous avons besoin de quelqu'un à blâmer pour cela. Les développeurs sont réticents à enregistrer les défauts qu'ils ont trouvé eux-mêmes, et un simple comptage signifiait que des bugs mineurs ont été aussi mauvais que de graves problèmes. Étant donné que le nombre de défauts par individu était encore assez faible, le nombre de mineurs et de graves défauts n'ai même pas comme il le peut avec un échantillon plus grand. Vieux défauts n'ont pas été inclus, de sorte que la réputation du groupe pour la qualité du code (basé sur tous les bugs trouvés) ne correspondent pas toujours à la mesurables introduit cette année le comte.

La rapidité de la livraison du projet

Nous avons mesuré la rapidité que le pourcentage de travail à l'interne équipes QA par la date d'échéance indiquée.

Avantages: à la différence de comptage des défauts, c'était une mesure qui a été immédiat, le contrôle direct de la part des développeurs, qu'ils ont effectivement décidé, quand le travail était terminé. La présence de l'objectif concentre l'esprit sur la façon de remplir les tâches. Cela a permis à l'équipe de s'engager à réaliste quantités de travail, et l'amélioration de la perception par les clients internes du groupe pour le développement de la capacité à tenir ses promesses.

Inconvénients: le seul objectif directement sous les développeurs de contrôle, il a été maximisée au détriment de la qualité du code: le jour d'une date limite, étant donné le choix entre dire qu'une tâche est terminée ou de faire d'autres tests pour améliorer la confiance dans la qualité, le développeur devra choisir de marquer il complète et l'espoir de tout les bugs ne viennent jamais à la surface.

Les plaintes des clients internes

Pour évaluer la mesure dans laquelle les développeurs communiqué avec les clients internes au cours du développement et de soutien ultérieur de leur logiciel, nous avons décidé que le nombre de plaintes reçues au sujet de chaque personne serait enregistrée. Les plaintes seraient validées par le gestionnaire, afin d'éviter toute envie de vengeance.

Avantages: Vraiment rien, je me souviens. Mesurée à un groupe suffisamment grand niveau, il devient plus utile pour la "satisfaction du client" score.

Inconvénients: Non seulement très négatif, mais aussi une mesure subjective. Comme avec d'autres objectifs, les chiffres de chaque individu ont été autour de la barre du zéro, ce qui signifie qu'un seul commentaire à propos de quelqu'un qui pourrait signifier la différence entre "l'infiniment dépassé" et "ne pas répondre".

Commentaires généraux

La bureaucratie: Alors que notre mission des outils de gestion a tenu une grande partie des données pour ces indicateurs, il y a encore beaucoup d'efforts consacrés à rassembler tout cela. Le temps consacré à l'obtention de tous les nombres n'était pas agréable, généralement porté sur les aspects négatifs de nos travaux et peuvent même ne pas avoir été remis en état par l'augmentation de la productivité.

Moral: Pour les mesures où les individus ont été blâmés pour des problèmes, pas seulement ceux de "mauvais" scores se sentent démotivés, mais ceux avec les "bons" scores, car elles n'ont pas, comme la perte de moral du groupe et s'est parfois senti qu'ils étaient d'un rang plus élevé, non pas parce qu'ils sont meilleurs, mais parce qu'ils ont eu plus de chance.

Résumé

Qu'avons-nous donc apprendre à partir de l'épisode? Dans les dernières années, nous avons essayé de ré-utiliser certaines des idées, mais dans un "plus doux", où il y avait moins d'accent sur l'individu blâmer et plus sur l'équipe d'amélioration.

  • Il est impossible de définir des objectifs pour les développeurs individuels qui sont objectivement mesurables, ajouter de la valeur à l'entreprise et ne peut pas être gamed, donc ne vous embêtez pas à essayer.
  • Les problèmes des clients et les défauts peuvent être comptés à un plus large niveau de l'équipe, si l'emplacement du défaut est, sans équivoque, la responsabilité de l'équipe-qui est, vous n'avez pas à jouer le "jeu du blâme".
  • Une fois que vous mesurer uniquement les défauts au niveau de la responsabilité d'un module de code, vous pouvez (et devriez) mesure de vieilles bugs ainsi que les nouveaux, car il est dans l'intérêt du groupe pour éliminer tous les défauts.
  • La mesure de défaut de compte au niveau du groupe, augmente la taille de l'échantillon par groupe, et donc des anomalies entre les mineurs et de graves défauts sont lissés et un simple "nombre de bugs" mesure peut signifier quelque chose, comme pour voir si vous êtes l'amélioration de mois à mois.
  • Inclure quelque chose que la direction supérieure de soins, parce que les garder heureux est votre objectif principal en tant que groupe de développement. Dans notre cas, c'était à la clientèle-visible des pannes, de sorte que même si la mesure est parfois arbitraire ou apparemment injuste, si c'est ce que les patrons sont de mesure, alors vous devez prendre l'avis de trop.
  • La haute direction n'avez pas besoin de voir les mesures qu'ils n'ont pas dans leurs propres objectifs. De cette manière, il évite la tentation de blâmer les individus pour les erreurs.
  • La mesure des délais de livraison du projet n'a changement de développeur de comportement et de mettre l'accent sur l'achèvement de tâches. Il a amélioré l'estimation et permis au groupe de faire des promesses. Si c'était facile de recueillir la rapidité de l'information, alors je voudrais envisager de l'utiliser à nouveau à un niveau de l'équipe, afin de mesurer l'amélioration au fil du temps.

Tout cela n'aide pas lorsque vous avez besoin de fixer des objectifs mesurables pour les développeurs individuels, mais j'espère que les idées vont être plus utile pour l'équipe d'amélioration.

19voto

mopoke Points 6437

La clé de la chose au sujet des mesures est de savoir ce que vous utilisez pour. Êtes-vous de les utiliser comme un outil d'amélioration, un outil pour la récompense, un outil pour la peine, etc. Il semble que vous avez l'intention de les utiliser comme un outil d'amélioration.

Le numéro un principe lors de la définition des métriques pour garder les renseignements pertinents, de sorte que la personne qui la reçoit peut l'utiliser pour prendre une décision. Le plus probable d'un senior manager ne peut pas dicter le niveau micro de savoir si vous avez besoin de plus de tests, moins de complexité, etc. Mais un chef d'équipe qui peut le faire.

Par conséquent, je ne crois pas une mesure de la couverture de code va être utile pour la gestion au-delà de la personne de l'équipe. Au niveau macro-économique, l'organisation est probablement intéressé par:

  • Coût de la livraison
  • La rapidité de la livraison
  • Étendue de la livraison et de la qualité externe

Interne de la qualité ne sera pas élevé sur leur liste de choses à couvrir. C'est une équipe de développement à la mission, il est clair que la qualité interne (maintenabilité, la couverture de test, l'auto-documentation du code, etc) est un facteur clé dans la réalisation des trois autres.

Par conséquent, vous devriez les mesures de cible à plus de cadres qui couvrent ces trois tels que:

  • La Vitesse globale (à noter que la comparaison de vitesse entre les équipes est souvent artificiel)
  • Attendu vs portée Réelle livré aux échéances convenues,
  • Nombre de défauts de production (éventuellement par habitant)

Et de mesurer des choses comme la couverture de code, la complexité du code, cut 'n' coller score (répétition de code à l'aide de flay ou similaire), la méthode de la longueur, etc au niveau de l'équipe, où les destinataires de l'information peuvent vraiment faire une différence.

4voto

Dave Kirby Points 12310

Une métrique est une façon de répondre à une question à propos d'un projet, d'une équipe ou d'une entreprise. Avant de commencer à chercher les réponses, vous devez décider quelles sont les questions que vous voulez poser.

Questions typiques comprennent:

  • quelle est la qualité de notre code?

  • est l'amélioration de la qualité ou dégradant au fil du temps?

  • comment productif est l'équipe? Est-il améliorer ou dégradants?

  • quelle est l'efficacité de nos tests?

  • ...et ainsi de suite.

Chaque question nécessite un ensemble différent de données pour répondre. En recueillant des données sans savoir ce que les questions auxquelles vous voulez répondre est au mieux une perte de temps et au pire contre-productive.

Vous devez également être conscient qu'il existe un "principe d'incertitude" au travail - sauf si vous êtes très prudent de la loi de la collecte de métriques de changer le comportement des gens, souvent inattendus et parfois nuisibles façons. C'est en particulier le cas si les gens croient qu'ils sont en cours d'évaluation sur les mesures, ou pire encore, les paramètres liés à une récompense ou d'une punition régime.

Je recommande la lecture de Gerald Weinberg de la Qualité des Logiciels de Gestion de Vol 2: Première Commande de Mesure. Il entre dans beaucoup de détails sur les indicateurs logiciels, mais qui en dit le plus important, ce sont souvent ce qu'il appelle "l'Ordre Zéro de la Mesure" - demander aux gens leur avis sur la façon dont un projet est en cours. Tous les quatre volumes de la série sont coûteux et difficiles à se procurer, mais bien la peine.

4voto

martinr Points 2152

Logiciel d'écriture

  • Ce qui doit être amélioré?

PROCESSEUR(s), mémoire(s) de l'utilisation, de la mémoire cache(s) d'utilisation, l'utilisateur utilisation du temps, la taille du code au moment de l'exécution, la taille des données au moment de l'exécution, performance graphique, les performances d'accès aux fichiers, accès réseau, de la performance, utilisation de la bande passante, le code de la concision et de lisibilité, l'utilisation de l'électricité, (comte de) distinctes appels d'API utilisées, (comte de) distincts des méthodes et des algorithmes utilisés, peut-être plus.

  • Combien doit-il être optimisé?

Il doit être optimisé au minimum montant raisonnable (sauf dans les zones où le dépassement de l'acceptation des critères de test est souhaitable) doivent passer des tests d'acceptation, de faciliter l'entretien, de faciliter la vérification et de répondre aux exigences des utilisateurs.

("... pour l'légal/illégal d'entrée des données de test et légal/illégal des événements de test dans le test de tous les états, à tous les requis d'essai des volumes de données et de la demande de test volumes pour tous les actuels et futurs de l'essai de scénarios d'intégration.")

  • Pourquoi le minimum montant raisonnable?

Car optimisé le code est plus difficile d'écrire et donc des frais en plus.

  • Ce leadership est nécessaire?

Les normes de codage, la structure de base, les critères d'acceptation et des conseils sur les niveaux de l'optimisation nécessaire.

Comment le succès d'un logiciel écrit-elle être mesurée?

  • Coût
  • Le temps
  • Test d'acceptation passe
  • Dans quelle mesure les tests d'acceptation, il est souhaitable de dépasser sont dépassés
  • L'approbation de l'utilisateur
  • Facilité d'entretien
  • La facilité d'audit
  • Le degré de l'absence de la sur-optimisation

Ce coût doit être ignorée dans l'évaluation globale de la performance de programmeurs?

  • Gaspillage de coût et de temps encourus en raison d'exigences (inc architecture) changements
  • Supplémentaire de coût et de temps encourus en raison de lacunes dans les plates-formes/outils

Mais ce coût doit être inclus dans l'évaluation globale de la performance des équipes (inc architectes, gestionnaires).

Comment peut-succès des architectes-elle être mesurée?

D'autres mesures plus:

  • Les Instances de "en évitant début" d'être affecté par des carences dans les plates-formes/outils
  • Le degré de l'absence de changements dans l'architecture

2voto

Paddy Points 16834

C'est un peu une note de côté à la question principale, mais j'ai eu une expérience très similaire à Paul Stephensons réponse ci-dessus. Une chose que je voudrais ajouter, c'est à propos de la collecte de données et la visibilité de métriques.

Dans notre cas, le directeur du développement visait à rassembler un tas de données provenant de différents systèmes disparates et distribue des résultats des métriques une fois par mois. Souvent, ce n'est pas arrivé, que c'était une perte de temps de travail et il a été un homme très occupé.

Les résultats de ce programme sont:

  1. Malheureux les développeurs, comme des primes de performance ont été basées sur les indicateurs et les gens ne savaient pas qu'ils prenaient.

  2. Quelques temps plusieurs entrée de données dans différents systèmes.

Si vous allez vers le bas de cette route, vous devez être sûr que toutes les données de mesure peuvent être recueillies automatiquement et est facilement visible à ceux qu'il affecte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X