class Minireq::Dsl::FpaDSL

FPA calculator
Usage
```ruby
include Minireq::Calc::FPA
estimate do
  ILF 'Product',  det: 20, ret: 3
  ILF 'Customer', det: 20, ret: 2
  ILF 'Order',    det: 10, ret: 1
  EO 'CustomerView', det: 20, ftr: 1
  EI 'CustomerEdit', det: 20, ftr: 2
  EQ 'CustomerEdit', det: 20, ftr: 2
  characteristics ({
    data_communications:         0,
    distributed_data_processing: 0,
    performance:                 0,
    heavily_used_configuration:  0,
    transaction_rate:            0,
    online_data_entry:           0,
    enduser_efficiency:          3,
    online_update:               3,
    complex_processing:          3,
    reusability:                 0,
    installation_ease:           3,
    operational_ease:            3,
    multiple_sites:              0,
    facilitate_change:           3
  })
  puts calculate
end
```

end

Attributes

items[R]
Hash<Object>

Public Class Methods

new() click to toggle source
# File lib/minireq/dsl/fpa_dsl.rb, line 57
def initialize
  @items = {}
  @characteristics = {}
  @ufp = 0
end

Public Instance Methods

EI(object, det:, ftr:) click to toggle source
# File lib/minireq/dsl/fpa_dsl.rb, line 78
def EI(object, det:, ftr:)
  hold(object, fun: :EI, det: det, ftr: ftr)
  @ufp += ufp(type: :EI, det: det, ftr: ftr)
end
EIF(object, det:, ret:) click to toggle source
# File lib/minireq/dsl/fpa_dsl.rb, line 73
def EIF(object, det:, ret:)
  hold(object, fun: :EIF, det: det, ret: ret)
  @ufp += ufp(type: :EIF, det: det, ret: ret)
end
EO(object, det:, ftr:) click to toggle source
# File lib/minireq/dsl/fpa_dsl.rb, line 83
def EO(object, det:, ftr:)
  hold(object, fun: :EO, det: det, ftr: ftr)
  @ufp += ufp(type: :EO, det: det, ftr: ftr)
end
EQ(object, det:, ftr:) click to toggle source
# File lib/minireq/dsl/fpa_dsl.rb, line 88
def EQ(object, det:, ftr:)
  hold(object, fun: :EQ, det: det, ftr: ftr)
  @ufp += ufp(type: :EQ, det: det, ftr: ftr)
end
ILF(object, det:, ret:) click to toggle source
# File lib/minireq/dsl/fpa_dsl.rb, line 68
def ILF(object, det:, ret:)
  hold(object, fun: :ILF, det: det, ret: ret)
  @ufp += ufp(type: :ILF, det: det, ret: ret)
end
calculate() click to toggle source
# File lib/minireq/dsl/fpa_dsl.rb, line 97
def calculate
  @vaf = vaf(@characteristics)
  {ufp: @ufp, vaf: @vaf, fp: @ufp * @vaf}
end
characteristics(characteristics) click to toggle source
# File lib/minireq/dsl/fpa_dsl.rb, line 93
def characteristics(characteristics)
  @characteristics = characteristics
end
estimate(&block) click to toggle source
# File lib/minireq/dsl/fpa_dsl.rb, line 63
def estimate(&block)
  instance_eval(&block) if block_given?
  calculate
end

Private Instance Methods

hold(obj, params) click to toggle source
# File lib/minireq/dsl/fpa_dsl.rb, line 104
def hold(obj, params)
  if @items[obj]
    # TODO rescue thi error
    raise MinireqError, "An attempt of adding a duplicate estimation '#{params[:fun]}' for '#{obj}'"
  end
  @items[obj] = params
end