Class: Montecasting::Metrics
- Inherits:
-
Object
- Object
- Montecasting::Metrics
- Defined in:
- lib/montecasting.rb
Overview
Metrics class will contains methods to get specific product development metrics pr
Class Method Summary collapse
- .median(array_of_time = []) ⇒ Object
- .percent_of_items_at(array_of_time, time_units = 0) ⇒ Object
- .throughput(number_of_issues, start_date, end_date = DateTime.now) ⇒ Object
- .variance(array_of_time = []) ⇒ Object
- .week_days(start_date, end_date = DateTime.now) ⇒ Object
- .wip_limit(array_of_time, start_date, end_date = DateTime.now) ⇒ Object
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 |