Modularity is ubiquitous in complex adaptive systems. Modules are clusters of components that interact with their environment as a single unit. They provide the most widespread means of coping with complexity, in both natural and artificial systems. When modules occur at several different levels, they form a hierarchy. The effects of modules and hierarchies can be understood using network theory, which makes predictions about certain properties of systems such as the effects of critical phase changes in connectivity. Modular and hierarchic structures simplify complex systems by reducing long-range connections, thus constraining groups of components to act as a single component. In both plants and animals, the organisation of development includes modules, such as branches and organs. In artificial systems, modularity is used to simplify design, provide fault tolerance, and solve difficult problems by decomposition.