Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cptanalatriste/techdebt-game-model
A game-theoretic model of technical debt.
https://github.com/cptanalatriste/techdebt-game-model
game-theory simulation technical-debt
Last synced: about 1 month ago
JSON representation
A game-theoretic model of technical debt.
- Host: GitHub
- URL: https://github.com/cptanalatriste/techdebt-game-model
- Owner: cptanalatriste
- License: mit
- Created: 2018-08-16T15:01:15.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-09-08T06:51:49.000Z (over 4 years ago)
- Last Synced: 2024-11-13T14:32:34.258Z (3 months ago)
- Topics: game-theory, simulation, technical-debt
- Language: Python
- Homepage: https://www.sciencedirect.com/science/article/pii/S0164121219301980
- Size: 377 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](http://www.gambit-project.org/) 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.