Software Quality Assurance: A Self-Teaching Introduction