  Assuring the correct behavior of cyber-physical systems requires significant
modeling effort, particularly during early stages of the engineering and design
process when a system is not yet available for testing or verification of
proper behavior. A primary motivation for `getting things right' in these early
design stages is that altering the design is significantly less costly and more
effective than when hardware and software have already been developed.
Engineering cyber-physical systems requires the construction of several
different types of models, each representing a different view, which include
stakeholder requirements, system behavior, and the system architecture.
Furthermore, each of these models can be represented at different levels of
abstraction. Formal reasoning has improved the precision and expanded the
available types of analysis in assuring correctness of requirements, behaviors,
and architectures. However, each is usually modeled in distinct formalisms and
corresponding tools. Currently, this disparity means that a system designer
must manually check that the different models are in agreement. Manually
editing and checking models is error prone, time consuming, and sensitive to
any changes in the design of the models themselves. Wiring diagrams and related
theory provide a means for formally organizing these different but related
modeling views, resulting in a compositional modeling language for
cyber-physical systems. Such a categorical language can make concrete the
relationship between different model views, thereby managing complexity,
allowing hierarchical decomposition of system models, and formally proving
consistency between models.
