## 4 Development
### COTS-based System Development  
The COTS-based system development methodology we have adopted is shown in Figure 4.  
At first, COTS-based requirements analysis is performed that determines the important design specification parameters that correspond to the needs of the application environment. According to the COTS-based specifications generated, the development proceeds into the synthesis of the COTS-based system architecture. At this stage, optimal integration of the hardware (HW) and software (SW) COTS components is very important. Therefore, appropriate selection of existing COTS HW components (e.g., commercially available low-cost development boards, open-source hardware, etc.) and SW components (e.g., available open-source software and real-time operating systems), or the design and development of a new one (e.g., real-time multithreaded control software, as it is the case in our implementations), is a necessity. At this step, we must primarily consider those hardware/software components that most fulfill the real-time specifications and requirements, irrespective of the fact that their real-time features could be further improved during the development. For instance, in embedded systems for real-time control, an advisable and wise choice would be for a system based on a COTS processor (such as ARM), instead of other specific CPUs, micro-controllers, or Digital Signal Processors (DSPs). Many hardware vendors develop system-on-chip (SoC) devices, which usually include on the same integrated circuit one or more COTS processors, together with other specialized peripherals. In our implementation, we make use of such a device (e.g., the RPi3 which integrates an ARMv8 Cortex-A53 quad-core processor unit within a Broadcom BCM2837 SoC), since it is cheaper, more reliable, and consumes less power than other equivalent systems. The simultaneous co-design of system hardware and software components and their integrations keeps low the development  
Figure 4: Commercial off-the-shelf (COTS)-based system development process. Figure 3: Traditional development process. time and cost. That will ensure achieving optimal performance for the entire system and satisfy all the requirements. Model-based techniques play an important role in systems engineering for verification purposes and diagnosis. Model-based reasoning is the symbolic processing of an explicit representation of the internal workings of a system, in order to describe and examine (simulate) its behavior from its structural components. Many different techniques and tools have been developed to support such modeling tasks in systems design and development. In our case studies, we adopt a model-based methodology for systems modeling using a qualitative modeling and simulation tool (QMTOOL) [41] that utilizes both conventional numerical methods and more advanced qualitative techniques to deal efficiently with the description of control systems, mechanisms, and processes. Qualitative models are introduced at a high-level abstraction form, using a relatively small amount of information, similar to human reasoning in studying a complex system's behavior. Thus, by using this model-based checking approach, the performance of the system model is verified through extensive simulations against the predefined requirements and specifications. For any design errors found, appropriate modification requests are made (COTS components reevaluation) and the system model is rebuilt and verified again. One of the major advantages of this approach in developing control systems applications in manufacturing is the increased flexibility provided in the description of system parameters, components, and their functional relationships in symbolic qualitative terms and forms, easily understood by system engineers and non-specialists in the industry. Further on, based on a credible and well balanced integrated system model, a prototype system is physically constructed.