UNDERSTANDING SOFTWARE ARCHITECTURE : A COMPREHENSIVE STRATEGY