Software Licensing: Controlling Software Distribution and Usage