MASTERING SOFTWARE ARCHITECTURE : A COMPREHENSIVE APPROACH