CSL is a C++-based library and a core environment for the modeling and analysis of Systems of Systems (SoS), large-scale distributed systems with components that are complex systems themselves. To be able to model SoS, the whole diversity of their components and structures is represented as Communicating Structures, uniform and systematic compositions of a small number of basic concepts that describe communication, data traffic, and data placement inside SoS. SoS are represented as hierarchical networks of nodes. Each node has memory that may contain items. Nets are sets of links that connect the nodes. The items are generated at some nodes and move from node to node along links, with some delay. The item generation, transformation, and movement is controlled by the parallel processes running on the nodes. Items, nodes, memories, and nets may be elementary or aggregated objects. CSL uses modified structures of C++/CSIM, a process-oriented discrete-event simulation package [Sch95, Mes96], to generate and coordinate concurrent processes as well as GUI and visualization tools for the model construction, providing input parameters, and analysis of the modeling results. 56 Pages