1. A computer implemented method of assigning work to a software factory for executing a project, the computer implemented method comprising: a processor generating a project model from a process, wherein the project model is of a current project state that describes executable deliverables and states of the executable deliverables of a current project, wherein the project model is comprised of a set of model elements, wherein each model element is characterized by an element type, wherein each element type defines a set of element states, wherein each element state from the set of element states describes lifecycle states for a particular model element of the project model, and wherein each element state from the set of elements states describes a set of relationships that exist between the particular model element and other model elements in the project model; the processor mapping project model subcomponents of the project model to work packets that are available in a software factory, wherein each of said work packets comprises a header, wherein the header comprises a unique identification number, a description of said each of said work packets, a type description of said each of said work packets, an identifier of a parent object from which said each of said work packets has inheritance and a checklist for returning said each of said work packets to the Software factory after a customized deliverable unit of software has been delivered by the software factory; the processor determining which available work packets in the software factory are necessary work packets for executing the current project, wherein the determining is based on which work assignments are necessary for executing the current project; and the processor generating an initial work plan for executing the project via an execution of the available work packets.