this a machine problem given to us, and i dont have any deep experience in programming, would anyone could help me on this...help badly need..thanks

Synchronization Problem:
In a cake factory, there are D machines making dough, IS machines making strawberry icing, VS machines making vanilla icing, and CS machine making chocolate icing. These machines are able to make 1 unit of dough/icing at different speed. The dough produced and placed in the universal dough pool, and each icing made by each type of icing machine are placed on separate icing pools (all strawberry icing made by each strawberry icing machine places all machines are placed on a different pool).

The factory employs chefs with different experience. The chocolate chef requires 1 unit of dough and 2 units of chocolate icing; the strawberry chef requires 1 unit of dough, 1 unit of strawberry and vanilla icing; the wedding chef requires 3 units of dough and 1 unit of each icing.

The chef will first gather the ingredients required to bake the cake. Once the ingredients are gathered the chef then waits in line to use one of N ovens in the factory. When the cake is ready, the oven signals the chef to bring the cake out of the oven and decorate it.

System requirements:
The solution must allow as much concurrency as possible avoiding deadlocks and starvations. The system must allow the user to input the values of the variables D, IS, S, CS, N. The status of each chef must also be visible, whether they are waiting for an ingredient (system must specify which ingredient), waiting for an oven, or waiting for the cake inside the oven. The system must also be able to show the status of the dough and icing pools, and be able to show the contents of each oven (identify which chef’s cake is inside the oven).

-Try to solve the synchronization problem using semaphores and monitors.
-implement features mention in the system requirements