I would recommend using Collabtive. Now let me say, I am in no way affiliated with Collabtive, I just have used their product and I like it. With that being said let me explain a little bit about it. Collabtive is a web-based open-source project. They have many neat features that you can check out on their site, but I think you would be interested specifically in their milestones and tasklists portions.
The hierarchy goes like this:
In each project there are multiple milestones. For example if you were developing a program and you wanted to add a new feature, you would put that as a milestone under your main project. (Or if the feature was big enough maybe that would be a project of it's own. It's up to you.) You can set deadlines for your projects or your milestones and right on the first page you are informed on how many days are left before the deadline.
Each milestone has multiple tasklists. So let's say your new feature was a messaging center (which Collabtive has a nice messaging center by the way) you would make a milestone called Messaging Center. And under that you might have a tasklist named Database Management and another one named User Interface. You can set deadlines on tasklists as well. Then under the tasklists, you create tasks and assign them to specific users (again with a deadline).
So under the Database Management Tasklist you might create a task called Design the Database and assign it to your Lead Programmer, Phil with a deadline. And another task called Create the Messaging Class and assign it to Steve, another programmer in your company. And under your User Interface tasklist you could create a task called Design the Layout and assign it to Judy with a deadline.
Whenever new tasks are assigned to people, they are notified via e-mail. And you can change those preferences to make it how you would like. There are also many plugins that go along with Collabtive to make it even better.
As people finish tasks, they can check it off and a progress bar shows how far you have come in that project. Users can also keep track of their hours using a timetracker so you know how long they spent on each part of the process. Anyways, check it out. I like it. I think it's cool. :)