1. A computer implemented method for enforcing functionality in computer software through policy, the method comprising: creating a natural language policy to define how the computer software should be operating to achieve a predetermined level of security or functionality; converting the natural language policy to a sample code template including variable name placeholders, wherein the natural language policy is represented by logical patterns enforcing centralization of critical functionality of the policy in the computer software to enforce execution of the critical functions at their centralized sources in a source code of the computer software; automatically creating one or more static analysis rules from the sample code template to identify code in the computer software which does not conform to the natural language policy; substituting the variable name placeholders in the sample code template with parameters from the computer software; and electronically enforcing the created one or more static analysis rules for the computer software to check whether any code in the computer software matches patterns that indicate violations of the natural language policy.
1. A computer implemented method for enforcing functionality in computer software through policy, the method comprising: creating a natural language policy to define how the computer software should be operating to achieve a predetermined level of security or functionality; converting the natural language policy to a sample code template including variable name placeholders, wherein the natural language policy is represented by logical patterns enforcing centralization of critical functionality of the policy in the computer software to enforce execution of the critical functions at their centralized sources in a source code of the computer software; automatically creating one or more static analysis rules from the sample code template to identify code in the computer software which does not conform to the natural language policy; substituting the variable name placeholders in the sample code template with parameters from the computer software; and electronically enforcing the created one or more static analysis rules for the computer software to check whether any code in the computer software matches patterns that indicate violations of the natural language policy. 6. The method of claim 1 , further comprising performing penetration testing on the computer software.