This article relates our experiences over the last 15 years in the development of robotic applications within the field of service robotics, using the techniques proposed by software engineering. The process began with domain engineering and reference architectures, moved on to component-oriented development, and currently centered on model-driven design. One of the key problems in software development for robotic systems is that the possibilities of reusing software in new applications are frequently limited. This means that we are forced over and over to solve the same problems starting practically from zero every time. The possible causes of this include the following: 1) robotics specialists normally concentrate more on developing algorithms and the way to solve concrete problems than on organizing the software; 2) lack of good standards for the development of robotic software and implementations of these standards; 3) the case studies conducted to demonstrate the viability of software engineering techniques traditionally deal with information management systems; and 4) the robotics community see software engineering not as a solution but as another problem that adds complexity to already complex problems. This research has helped to demonstrate the viability of using software engineering techniques in real industrial applications, albeit using academic tools that cannot readily be accepted by industry.