Software and patents