High-Assurance Design: Architecting Secure and Reliable Enterprise Applications