Ant ibatis software engineering thinking