legal basis for software contracts