Software engineering design : theory and practice - Otero, Carlos E. (Applied software engineering series., 2012)