Software Technology for Self-Adaptive Systems