It's simply unrealistic to depend on secrecy for security in computer software. You may be able to keep the exact workings of the program out of general circulation, but can you prevent the code from being reverse-engineered by serious opponents? Probably not. The secret to strong security: less reliance on secrets.
Cloud computing means you are doing your computing on somebody else's computer. Looking ahead a little, I firmly believe cloud - previously called grid computing - will become very widespread. It's much cheaper than buying your own computing infrastructure, or maybe you don't have the power to do what you want on your own computer.
If you depend on a secret for your security, what do you do when the secret is discovered? If it is easy to change, like a cryptographic key, you do so. If it's hard to change, like a cryptographic system or an operating system, you're stuck. You will be vulnerable until you invest the time and money to design another system.