compilation, and then linked by a linker. A just-in-time compiler may perform some of this construction "on-the-fly" at run time. These independent functions are commonly classified as either program control functions or specific task functions. Program control functions are designed to work for one program. Specific task functions are closely prepared to be applicable for various programs. This makes modular designed systems, if built correctly, far more reusable than a traditional monolithic design, since all (or many) of these modules may then be reused (without change) in other projects. This also facilitates the "breaking down" of projects into several smaller projects. Theoretically, a modularized software project will be more easily assembled by large teams, since no team members are creating the whole system, or even need to know about the system as a whole. They can focus just on the assigned smaller task. See also Architecture description language Cohesion (computer science) Component-based software engineering Conway's law Coupling (computer science) David Parnas Information hiding (encapsulation) Library (computing) List of system quality attributes Modular design Plug-in (computing) Snippet (programming) Structured Analysis Structured programming Notes References External links How To Decompose a System into Modules SMC Platform Programming paradigms Programming