Let's assume some software consists of 6 components where A, B, C are server side components and D, E, F are client-side components (different user interfaces). The dependency graph is as follows. This also describes the data flow. Data that is generated in A is processed in B and then can directly be used in F. Before D and E can use the data it needs to be processed in addition by C.
Now A provides new types data that needs to be available in the client-side components D, E, F. The question now is: How to create a WBS that incorporates all the required changes so that all client-side components will show the new data.
While a WBS also, to some extend, represents the dependencies I have problems transforming this scenario into an appropriate WBS.
- Changes in A, B and C can be done in parallel because of well-defined interfaces
- On client-side, changing D has the highest priority, F the lowest.
My first suggestion incorporates the fact that A, B and C can be done in parallel and D, E, F are placed in the order of their priorities.
The downside here is that, according to the WBS, changes in F can only be done after D, and E are finished. But as can be seen in the dependency graph, changes in F can be started right after A and B have finished. So this WBS leads to the impression that developers will have to wait until D and E are finished wich isn't true. So if there is a developer that could do the job now he could start it right away.
In my second suggestion F is uncoupled from D and E. D and E stay in the same order due to their priorities. Changes in F can now be started as soon as A and B are finished.
However, this is not a WBS. While this sample still seams to be fairly easy, real world projects tend to be much larger. So when uncoupling such changes in that way your not just loosing the WBS but also the understanding of the resulting graph.
How can this scenario be modeled in a better way?