A Software Engineering Approach For Agent-Based Modelling And Simulation of Public Goods Games