Software Engineering for Cognitive Robots and Cognitive Systems