Runtime adaptation of technical systems: An architectural framework for self-configuration and self-improvement at runtime