What are the requirements and design constraints of an application? Please give a general answer that applies to all applications.

Anything that's not an operating system kernel.