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