This is where every software project starts. Requirements serve many purposes for a software development project. For starters, requirements define what the software is supposed to do. The software requirements serve as the basis for all the future design, coding, and testing that will be done on the project. Typically, requirements start out as high-level general statements about the software's functionality as perceived by the users of the software. Requirements are further defined through performance, look and feel, and other criteria. Each top level requirement is assigned to one or more subsystems within an application. Subsystem level requirements are further refined and allocated to individual modules. As this process points out, requirements definition is not just a process that takes place at the start of a development project, but is an ongoing process. This is especially true when a spiral development model is used. The ability to manage the definition and tracking of requirements is a key process area required of level two organizations by the SW-CMM.