## 1 Introduction  
Robotic systems are real-time systems whose behavior, of type \"perception, decision, action\", is founded on information extracted from the environment with the help of sensors (for example, images captured by a camera). The information provided by the sensors should be processed within a bounded time interval in order to provide a new command to the robot, before the capture of new data. Robotic systems are generally composed of two parts: a material part and an immaterial part. The material part contains the physical elements of the robot. The immaterial part contains the knowledge (programs) that allow the robot to operate in a complex, dynamic, and unstructured environment, and that affects its behavior [1]. This second part is called the control system of the robot. The control system can be completely embedded in the robot. It can also be split into two sub-parts: a remote sub-part and a sub-part embedded in the robot. The control system comprises control software system as well as other automated control processes. This paper focuses mainly on control software systems of robots. This software part has an architecture that is considered as the software architecture of the robotic system. The software integration of the robot's functionalities, which for a long time has been the hidden face of robotics, has become a central issue for the future robotic service industry (medical, assistance, etc.). Due to the increasing complexity of robotic systems and the ever-increasing diversity of applications and missions of robots, the design and development of performing and correct robotic software architectures has become a major issue [2]. The progress of the software industry has opened new opportunities and made the application of software engineering one of the main research areas in the robotics field, as shown by the important number of recent research works carried out on the development of robotic software ([3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17], etc.). One of the challenges of robotics today is to use techniques, tools, and methods that are proven in the development of \"traditional\" software systems to increase productivity in the development of robotic systems while ensuring the quality of their software architecture. The proposals [18] in this field aim to define methods, making it possible to describe and encapsulate the various functions of the robot in the form of a set of interactive software entities(function, class, module, components, etc.). The goal is to provide a solution for the design of robotic software that satisfies properties of modularity, portability, reusability, maintainability, etc. Describing the robotic software architecture is not enough. Indeed, it must be implemented, deployed, and executed in order to be fully used. Implementing the robotic software architecture and deploying it on an execution target, while controlling the logical and temporal constraints of the robotic system, requires the constraints coming from the underlying platform (hardware, operating system, and programming languages) to be taken into account. Building sustainable, reusable, and adaptable architectures for a wide variety of physical platforms and components (sensors and actuators, but also processors, networks, and other hardware sometimes specific to robotics) is a significant challenge [2]. In order to meet the aforementioned challenges, robotics is currently facing a fundamental question: How can we develop standardized and understandable control architectures that can capitalize designers' knowledge and best practices, and which are based on reliable, composable, and reusable software entities, thus leading to optimization of time and development costs? To answer this question, one needs to respond to several other questions:  
* How can we capitalize know-how in terms of architectural design? * How can we describe and encapsulate the functions of the robot in the form of software entities?