Software-Based Dialogue Systems: Survey, Taxonomy and Challenges