module Minireq::Dsl::Fpa

Constants

AVG
COMPLEXITY
FACTOR
HIGH
LOW
POINT_TYPE
UFP_VALUES

Public Instance Methods

ufp(type:, det:, ret: 0, ftr: 0) click to toggle source

Calculate unadjusted funtion points TODO check input values and their cobinations

# File lib/minireq/dsl/fpa.rb, line 8
def ufp(type:, det:, ret: 0, ftr: 0)
  complexity = case type
    when :ILF, :EIF
      case ret
      when 1;    det > 50 ? AVG : LOW
      when 2..5; det < 20 ? LOW : det > 50 ? HIGH : AVG
      else       det < 20 ? AVG : HIGH
      end
    when :EI
      case ftr
      when 0..1; det > 15 ? AVG  : LOW
      when 2;    det > 15 ? HIGH : det > 4 ? AVG : LOW
      else       det > 4  ? HIGH : AVG
      end
    when :EO, :EQ
      case ftr
      when 0..1; det > 19 ? AVG  : LOW
      when 2..3; det > 19 ? HIGH : det > 5 ? AVG : LOW
      else       det > 5 ? HIGH : AVG
      end
  end
  UFP_VALUES[type][complexity]
end
vaf(system_characteristics) click to toggle source

@return [Number] Value Adjustment Factor @param system_characteristic [Hash] vaule must be in range 0..5. Hash keys don't bring anything in calculation

:data_communications, :distributed_data_processing, :performance, :heavily_used_configuration, :transaction_rate, :online_data_entry, :enduser_efficiency, :online_update, :complex_processing, :reusability, :installation_ease, :operational_ease, :multiple_sites, :facilitate_change

TODO check value in range?

# File lib/minireq/dsl/fpa.rb, line 37
def vaf(system_characteristics)
  sum = system_characteristics.values.inject(0, :+)
  sum * 0.01 + 0.65
end