J'ai du mal à déterminer une manière appropriée de répartir uniformément les ressources dans un tableau de type Excel [fermé]

StackOverflow https://stackoverflow.com/questions/8968434

Question

Je vais essayer d'expliquer cela de la meilleure façon possible, mais n'hésitez pas à demander des éclaircissements.

Tout d'abord, je vais essayer d'expliquer le problème.

J'ai besoin de calculer le nombre de coûts de ressources (points) pour une itération donnée.Cela étant dit, imaginez un document Excel.La colonne la plus à gauche contient une liste des versions ou des projets qui doivent être terminés.Sur la ligne du haut, les en-têtes de colonne sont des itérations.

J'ai les informations suivantes.J'ai le nombre de ressources nécessaires pour chaque version individuelle.Mais, comme une version peut s'étendre sur plusieurs itérations, j'ai besoin d'un moyen de répartir équitablement les ressources requises sur chaque itération.

Par exemple.Une version peut commencer un jour avant la prochaine itération, je ne dois donc allouer qu'un petit pourcentage de ressources à cette combinaison version/itération.

J'ai inclus dans une image ce que j'ai jusqu'à présent.Pour une raison quelconque, je ne peux pas calculer correctement le bon montant, probablement en raison de mes faibles compétences en mathématiques.J'espère que c'est trivial pour l'un d'entre vous, et je remercie pour toutes les tentatives.

Ceci est ma première tentative de javascript, alors n'hésitez pas à ajouter des suggestions également.

Ce que j'ai maintenant est à peu près ceci.

for (var i = 0; i < results.Iterations.length; i++) {
var iteration = results.Iterations[i];
for (var z = 0; z < results.Releases.length; z++) {
    var release = results.Releases[z];
    release[iteration.Name] = release[iteration.Name] || 0;

    if (dates.inRange(iteration.StartDate, release.ReleaseStartDate, release.ReleaseDate) 
    || dates.inRange(iteration.EndDate, release.ReleaseStartDate, release.ReleaseDate))
    {
       var availableReleaseDays = dates.workingDaysBetweenDates(release.ReleaseStartDate, release.ReleaseDate);
       var availableIterationDays = dates.workingDaysBetweenDates(iteration.StartDate, iteration.EndDate);
       var iterations = calculateIterations(release, results.Iterations, dates);
       var resources = Math.round(release.Resources/iterations );

       release[iteration.Name] += resources;
    }

}

Current View

Était-ce utile?

La solution

J'ai élaboré un code qui fait ce que je pense que vous demandez.C'est dans ça essentiel.

L'idée de base est que pour chaque version, j'ai réparti toutes ses ressources sur toutes les journées de travail entre son début et sa fin.Je parcours ensuite chaque jour et si ce jour est dans une itération, j'ajoute ces ressources à cette itération.C'est ce que tu essaies de faire?

L'ancien Coach Agile en moi veut remettre en question l'approche.Cela ressemble à un peu trop de planification à long terme avec un niveau de précision dans les calculs qui dépasse la précision de l'estimation des ressources...mais j'ai suffisamment retenu ces instincts pour vous donner un code utilisable.

C'est probablement exagéré pour cette situation, mais la solution utilise une bibliothèque sur laquelle je travaille appelée Heure du graphique.ChartTime vous permet d'effectuer des manipulations et des calculs de date et de timebox.Il a la capacité de supprimer les vacances et les week-ends, que j'ai utilisés dans mon exemple de solution à votre problème même si cette précision n'était pas nécessaire.Il a également une précision de fuseau horaire, que je n'ai pas utilisée.

ChartTime est écrit en CoffeeScript et ma solution à votre problème est également écrite en CoffeeScript.CoffeeScript est juste une syntaxe plus propre pour JavaScript et il se compile en JavaScript afin que vous puissiez utiliser la bibliothèque ChartTime directement à partir de JavaScript.J'y travaille tous les week-ends / soirs et ça marche bien.Les documents sont plutôt bons mais pas encore complets.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top