Cyber-physical systems (CPS) are engineered systems that integrate computation, networking, and physical process. CPS classifies in many ways, including their scale, embeddedness, and the nature of their physical processes. In this article, we consider CPS from a software engineering perspective, examining how software engineers conceptualize CPS and which established software engineering concepts may be relevant to the study of CPS.
We introduce a definition of CPS based on existing definitions but informed by our understanding of software development processes.
While many people use this term loosely, there are two main types of cyber-physical systems (CPSs): CPSs that use the software only and CPSs that also use hardware components (or physical devices).
“Cyber” comes from the Greek word for steersman or pilot. It refers to any system composed of software and hardware components that operate together to perform a goal or solve a problem. By combining these two separate areas, we can achieve great things! It means that if you have a physical device—be it an airplane wing or car engine—you could have it controlled by software instead of just physics alone!
While discussion of CPS is not new, the term has only recently entered the mainstream. In fact, it has been around since at least 2006, when it was coined by Helen Gill at the National Science Foundation in the United States. The definition of CPS is similar to “the use of software and information technology in physical devices that perform real-world tasks under control of computer programs.”
However, what if we take this definition one step further? Imagine a world where all of our cars drive themselves, or where we can use Google Search to direct us through traffic jams without having to focus on driving, or even imagine how it would be if our refrigerators knew when they needed restocking; before we did! These are all examples of cyber-physical systems (CPS).
A common theme throughout many definitions of cyber-physical systems is that these systems involve both computing hardware and real-world devices such as sensors and actuators. For example: “Cyber-physical systems consist of computational elements interacting with physical elements to sense events from their environment and actuate accordingly.”
The software engineering perspective on CPS
The software engineering perspective on CPS is a rich conceptual framework for the study of CPS. It is because it provides several frameworks for thinking about the design and implementation of CPS, including:
- The system modelis an abstract representation of a system’s overall structure or architecture. The system model can represent both physical and logical aspects of the system. In particular, it can support modeling several interconnected components by various communication interfaces (e.g., wireless links). The software engineer uses this model to specify requirements and constraints on each element to ensure they work together as intended once implemented in a real-world setting such as an automobile chassis or aircraft fuselage.
- Specifying interfaces between components using formal language descriptions known as protocols or contracts allows different software modules to
- communicate with each other without knowing anything about their inner workings;
- enforce standard conventions across different implementations;
- detect errors early during execution time rather than later when testing time comes around again!
Software Engineering Provides a Rich Conceptual Framework for The Study Of CPS
As we have seen, the software engineering perspective on CPS brings about a new way of thinking about cyber-physical systems. From a software engineering point of view, CPS is not just a gadget. They can be viewed as complex systems composed of two layers:
- the physical layer
- the information layers
The physical layer involves tangible objects and sensors which interact with their environment through actuators. In contrast, an information system consists of data processing devices that acquire information from their environment through sensors and send messages to each other using communication channels.
Software engineering is a well-established discipline with a rich conceptual framework, which provides a valuable perspective for the study of CPS. In particular, software engineering provides us with a framework for understanding what it means to build and maintain highly distributed and interconnected systems.
The primary concern of software engineering is the production of correct programs (or “correctness”). This definition excludes issues such as efficiency or usability—essential concerns in their own right when building large-scale software systems but generally less critical than correctness when dealing with cyber-physical systems.
In addition to the correctness, there are other aspects of software design that matter for CPS: robustness (how well does the system perform under stress conditions); reliability (how often does my system fail?); availability (how quickly can I respond to an interruption); maintainability; portability; testability; modifiability; extensibility; etc.
These characteristics emerge from careful consideration of all aspects of system design, including architecture and organizational structures within firms or institutions responsible for developing them.
This article presented the concept of cyber-physical systems and their importance in software engineering. We explained the definition and types of cyber-physical systems to make this concept clear. We also discussed their impact on software engineering. In addition, we gave a review of some relevant works related to the cyber-physical system.