Skip to content

cptanalatriste/techdebt-game-model

Repository files navigation

Equilibrium Analysis for Technical Debt

For an in-depht discussion of our empirical game-theoretic model, you can read our paper in the Journal of Systems and Software: https://www.sciencedirect.com/science/article/pii/S0164121219301980

This model can generate the payoff values for a payoff matrix representing technical debt. After triggering the script payoffbuilder.py, the payoff information per strategy profile will be stored in the file payoff_table_builder.log. This values can be later ported to a game solver like Gambit to obtain its Nash Equilibrium.

Some relevant parameters of payoffbuilder.py are:

  • simulation_episodes at line 44 controls the number of simulation iterations to execute. The payoff values generated by the script is the average number of fixes per developer over these iterations.
  • sloppy_rework_factor at line 48 controls the increased probability that a kludge commit will later generate rework, like a bug or a change request due to code review.

The payoff values are generated via simulation. Simulation-specific parameters are exposed via the script trainingdriver.py. Some of them are:

  • SCENARIO_TIME_UNITS at line 13 is the time units simulated during an iteration.
  • SCENARIO_AVG_RESOLUTION_TIME at line 14 is the average resolution time of a programming task.
  • SCENARIO_PROB_REWORK at line 15 is the base probability of rework for the project.