2012-01-23 3 views
1

최선의 방법을 설명하려고하지만 설명을 요청하십시오.Excel을 사용하는 테이블에서 리소스를 균등하게 나눌 수있는 적절한 방법을 결정하는 데 문제가 있습니다.

먼저이 문제를 설명하려고합니다.

주어진 반복에 대한 리소스 비용 (포인트)의 수를 계산해야합니다. 즉, 그림은 Excel 문서입니다. 맨 왼쪽 열에는 릴리스 목록이나 완료해야하는 프로젝트가 있습니다. 맨 위 행에서 열 머리글은 반복됩니다.

다음 정보가 있습니다. 각 개별 릴리스에 필요한 리소스 수가 많습니다. 그러나 릴리스가 여러 반복에 걸쳐있을 수 있으므로 각 반복에 대해 필요한 자원을 상당히 분할해야합니다.

예. 릴리즈는 다음 반복 이전에 시작될 수 있으므로이 릴리스/반복 조합에 대한 리소스의 비율을 조금만 할당해야합니다.

나는 지금까지 내가 가진 것을 이미지에 포함 시켰습니다. 웬일인지, 나는 적당량을 올바르게 계산할 수 없다. 아마도 가장 어려운 수학 기술로 말이다. 나는 이것이 너에게 사소한 일이 아니길 바라며 어떤 시도라도 해 주셔서 감사합니다.

이것은 자바 스크립트의 첫 번째 시도이므로 어떤 제안도 포함 시켜도 좋습니다.

지금 내가 대략있는 것은 대략입니다.

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

+0

calculateIterations 함수의 기능은 무엇입니까? –

+0

이미지를 읽기가 매우 어렵습니다. 확대했을 때도 데이터가 의미하는 바를 알 수 없었습니다. –

+0

@StephenOstermiller, 미안하지만 이것은 5 년 전 제가 일했던 회사에서였습니다. 나는 더 이상 거기에서 일하지 않는다. – tylerjgarland

답변

1

나는 당신이 요구하는 생각 않는 코드를 일했다. 이 부분은 gist입니다.

기본 아이디어는 각 릴리스마다 모든 시작일과 종료일 사이의 모든 작업 일에 걸쳐 리소스를 모두 분할한다는 것입니다. 나는 매일 매일을 반복하며 그 날이 반복되면 그 반복에 그 자원을 추가한다. 그게 당신이하려는 일입니까?

저의 이전 애자일 코치는 접근 방식에 의문을 제기하고 싶습니다. 그것은 자원 추정 정확도를 초과하는 계산에서 정밀도가있는 장거리 계획을 너무 길게 느낀다. 그러나 나는 당신에게 유용한 코드를주기에 충분할 정도의 본능을 가지고있다.

아마도이 상황에서는 과도한 것이지만 해결책은 내가 일하고있는 ChartTime이라는 라이브러리를 사용합니다. ChartTime을 사용하면 날짜 및 시간 상자 조작 및 계산을 수행 할 수 있습니다. 그것은 정밀도가 필요하지 않더라도 당신의 문제에 대한 나의 예제 솔루션에서 사용한 공휴일과 주말을 녹아웃시키는 능력을 가지고 있습니다. 그것은 또한 내가 사용하지 않은 시간대 정밀도를 가지고 있습니다.

ChartTime은 CoffeeScript로 작성되었으며 문제에 대한 솔루션도 CoffeeScript로 작성되었습니다. CoffeeScript는 JavaScript에 대한 단순한 구문이며 JavaScript로 컴파일되므로 JavaScript에서 직접 ChartTime 라이브러리를 사용할 수 있습니다. 매주 주말/저녁에 작업 중이므로 잘 작동합니다. 문서는 꽤 좋지만 아직 완성되지 않았습니다.

+0

제가 생각하기에이 솔루션에서 만든 하나의 가정은 릴리스 용 리소스가 분출물로 사용되는 것이 아니라 전체 릴리스에 분산된다는 것입니다. 다른 것을 시작하기 전에 한 가지를 끝내려고하지 않겠습니까? 리소스가 바뀔 것입니다. 또한 Agile/Scrum은 반복마다 동일한 리소스를 사용한다고 가정하고 빌드하려는 시간과 범위가 다양하도록합니다. –

+0

고맙습니다 래리. 나는 이것을 작성하는 임무를 맡았지만, 관리자는 프로젝트 또는 직원을 초과 또는 미달 한 일정을 파악하고이 데이터를 바탕으로 판단 전화를하려고합니다. – tylerjgarland

+0

내가 제공 한 코드를 실행하는 데 도움이 필요하면 알려주십시오. –