Programming Pervasive and Mobile Computing Applications: The TOTA Approach