Software Contract Model