Model-based Performance Self-adaptation: A Tutorial