The relationship between software and contracts