Several sources of uncertainty have to be taken into account in the analysis and design of CPS. The set of parameters used in the model of the physical plant of a CPS may be uncertain due, for example, to manufacturing processes that are precise up to some bounded tolerance. Physical quantities are sensed by electronic components that add noise to the sensed signals. Abstraction of the physical world, which is often necessary to limit the complexity of the models used in analysis and at run-time in decision-making, leads to non-determinism. The cyber side of a CPS, which includes both hardware and software components, exposes several types of uncertainty such as failures, latency, and implementation errors. Design processes and tools allow engineers to minimize the impact of these types of uncertainty, and to deliver systems which can be operated with an acceptable level of risk. Control applications tend to have a stable computational workload as filtering, estimation, and control are implemented by software tasks running the same computation independently of data. Real-time operating systems, can provide hard guarantees on the execution of control functions, and several methods can be used to ensure the worst-case execution time of software. Similarly, time-triggered or priorities-based communication protocols can provide hard bounds on the delay experienced by messages exchanged over a network. Failures can be handled through redundant architectures as is typical in safety critical systems. Finally, protection from cyber-attacks can be achieved through physical isolation, careful control of the supply-chain, and other strategies such as authentication and encryption at the boundary of the system. Furthermore, many cyber-physical systems are employed in the automation of processes for which sound models are available. These models have enabled formal analysis and synthesis which further reduce human errors. In the past several years, cyber-physical systems have evolved, primarily due to pervasive connectivity, miniaturization, cost-effectiveness of hardware, and advances in the area of Artificial Intelligence. The complexity of the cyber side of the CPS is constantly increasing as more functionality is moved to software. Correspondingly, the hardware platforms on which the software runs have become more complex. Another evolution has occurred in the area of communications at all levels of the protocol stack allowing disparate computing platforms to be interconnected. Connectivity is pervasive today leveraging technologies such as WiFi, 4G and 5G, and higher-level protocols for the internet of things such as the Message Queuing Telemetry Transport (MQTT). The ability to connect sensing and actuation nodes to the internet enables deployment over a cloud computing infrastructure where data can be aggregated, and computationally expensive algorithms can be executed with virtually unlimited resources. This trend has driven the development of new applications that control societal-scale systems such as the electric grid, transportation, and logistics. Coupling between the physical world and the cyber world can also occur in unconventional ways such as through social media platforms that shape consumer preferences and even opinions of people, driving their physical acts. These new class of applications features an environment which is much more complex to model than traditional physical systems due not only to their scale, but also to new sources and types of uncertainty. Consider, for example, the typical case of echo chambers which is attributed to the effect that machine learning algorithms have on the bias of people. Such behavior is not easily predictable because of high uncertainty in the environment (people), which is only approximately represented by machine learning models, but that is inherently due to lack of knowledge. New models and analysis methods are therefore needed to capture different types of uncertainties, and to analyze these new classes of systems. In this chapter, we start by discussing how cyber-physical systems have evolved from simple controllers to networks of highly autonomous systems. In Section 2, we describe some of the most common sources of uncertainty induced by the platform supporting the software of a CPS, and in Section 3 we review the engineering methods used for analysis and implementation, aiming at reducing the risks due to uncertainty. These two sections show the complexity of dealing with many sources of uncertainty, and how current practice makes use of several models tailored to the analysis of specific classes of uncertainty. In Section 4 we discuss the need for more autonomous systems, the new challenges that they bring in terms of analysis and implementation, and the need for new methods and tools to reason compositionally about aleatoric and epistemic uncertainty. Finally, in Section 5 we present a design methodology and a modeling paradigm that addresses these gaps.