SoftwareEngineering: A clear definition and classification taxonomy for safety-critical self-adaptive robotic systems