UNDERSTANDING SOFTWARE ARCHITECTURE : A COMPREHENSIVE METHOD