The Motivation of Software Engineers : Developing a Rigorous and Usable Model