Class: Montecasting::Metrics

Inherits:
Object
  • Object
show all
Defined in:
lib/montecasting.rb

Overview

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

Class Method Summary collapse

Class Method Details

.median(array_of_time = []) ⇒ Object



21
22
23
24
# 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) ⇒ Object



40
41
42
43
# 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) ⇒ Object



31
32
33
34
# 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 = []) ⇒ Object



11
12
13
14
15
16
17
18
19
# 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) ⇒ Object



36
37
38
# 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) ⇒ Object



26
27
28
29
# 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