interface engineering techniques