1. A computer implemented method of project management, comprising: providing a work breakdown structure of dependencies between project tasks; providing a resource breakdown structure of available resources; providing a calendar breakdown structure of availability of the resources; optimizing allocation of the resources to the project tasks within constraints of the resources in accordance with the work breakdown structure and calendar breakdown structure; and scheduling the resources to complete the project tasks.