UNDERSTANDING SOFTWARE DESIGN : A GROKKING METHOD