However, sometimes you come across a feature that is more complicated than the normal case. There can be complex features which have dependency on multiple other features, and it is takes effort on the part of the team, and of the project manager to work on these dependencies, figure out their schedules and ensures that everything in in place and at the same time, things are going on track.
For example, consider the case of a feature which depends on a change in the database structure (addition of one more table to the database structure as well as modification of an existing table) as well as hook-ups with other features (to send and take data from this new feature). In addition, since this is an existing product and a new version is being developed, users who more from the previous version of the product to this new version will need to ensure that their existing data is migrated from the previous database structure to the new structure. For this purpose, there will need to be data migration scripts that are ready, which will need to be run before testing of the new feature can happen.
Typically in most teams, this work is done by separate feature teams. All changes to the database structure (there may be changes requested to the database from multiple feature teams and it is more efficient to ensure that only one team is doing the required database changes), and similarly, other feature teams also need to make the changes on their end.
How do you ensure that all this is happening properly ? For the feature to work properly, it is necessary that all these changes from the different feature teams be synchronized to happen so that the feature is done. This requires intensive work from the project manager to work with the schedules of these different teams, shuffling them around until these different tasks all are planned to happen before the main feature. This can be captured in a tool, where the required tasks are all captured as dependencies of the main feature, thus ensuring that the team working on the main feature is not expected to start work before the dependencies are all done (or atleast, are done to the required degree as per the dependency logic). This also ensures that any modification to the schedule of these tasks are captured in the tool, and in turns affects the schedule of the main feature.