class Montecasting::Metrics

Metrics class will contains methods to get specific product development metrics pr

Public Class Methods

median(array_of_time = []) click to toggle source
# File lib/montecasting.rb, line 21
def self.median(array_of_time = [])
  return nil unless array_of_time.all? Numeric
  array_of_time.map(&:abs).median
end
percent_of_items_at(array_of_time, time_units = 0) click to toggle source
# File lib/montecasting.rb, line 40
def self.percent_of_items_at(array_of_time, time_units = 0)
  return nil unless array_of_time.all? Numeric
  array_of_time.select {|time| time < time_units}.count.percent_of(array_of_time.count)
end
throughput(number_of_issues, start_date, end_date = DateTime.now) click to toggle source
# File lib/montecasting.rb, line 31
def self.throughput(number_of_issues, start_date, end_date = DateTime.now)
  return nil unless number_of_issues.is_a? Numeric
  ((number_of_issues).to_f / week_days(start_date, end_date).count)
end
variance(array_of_time = []) click to toggle source
# File lib/montecasting.rb, line 11
def self.variance(array_of_time = [])
  return nil unless array_of_time.all? Numeric
  variance = 0
  avg = array_of_time.map(&:abs).average
  array_of_time.each {|spt|
    variance += ((avg - spt) ** 2)
  }
  Math.sqrt(variance)
end
week_days(start_date, end_date = DateTime.now) click to toggle source
# File lib/montecasting.rb, line 36
def self.week_days(start_date, end_date = DateTime.now)
  (start_date..end_date).select {|day| !day.sunday? && !day.saturday?}
end
wip_limit(array_of_time, start_date, end_date = DateTime.now) click to toggle source
# File lib/montecasting.rb, line 26
def self.wip_limit(array_of_time, start_date, end_date = DateTime.now)
  return nil unless array_of_time.all? Numeric
  (array_of_time.map(&:abs).average * throughput(array_of_time.count, start_date, end_date))
end