Understanding the Legal Framework for Software Patents in California