Modularization serves to allow code to be interchangeable by subdividing software into modules. Cohesion and coupling serve as tools to identify how interchangeable modules are. As cohesion increases, a module focuses more heavily on a single function. Whereas, as coupling increases, a module becomes more dependent on the connected module, increasing the risk of spaghetti code.