With GanttProject you can break down your project into a tree of tasks and assign human resources that have to work on each task. You can also establish dependencies between tasks, like "this task can't start until this one is finished".
J. Smith, S. Bohner, and D. McCrickard. ACM-SE 43: Proceedings of the 43rd annual Southeast regional conference, page 300--305. New York, NY, USA, ACM, (2005)