Comprehensive introduction to professional software engineering