Information engineering for developing and testing coherent, integrated and context-dependent user interfaces