High level architecture should be defined.
-------

**Description:**

Whenever you are developing an application you want to map all the architecture
it contains. Whenever there are breaches, updates, or other escalations it makes it
easy and transparant for forensics, operators and developers to do their job as fast as 
possible. 


**Solution:**

Verify that a high-level architecture for the application has been defined. This means 
some sort of a technical resign has to be composed about this architecture and all the
elements it provides. This gives a visual representation about your application and 
makes it easier to work through.

While you are mapping your application architecture you should also add
all other components your application contains in terms of business functions and/or 
security functions they provide.  

When you map these components it becomes more transparent about different types of
security mitigations that might be forgotten for some of your business functions. Because
again, you now own a visual representation of this logic. Your application also becomes
more manageable in terms of keeping up with the latest security updates and patches and
gives you a better view of obsolete configurations, functions and components which
can be removed from the system. 
   
