Collaborative and teamwork software development in an undergraduate software engineering course