MASTERING SOFTWARE ARCHITECTURE : A COMPREHENSIVE STRATEGY