I think there are a number of additional enhancements that could be made.

Like
- If a certain product is required. Then the quantity should change when you change the main product (at least as option).
- If you remove the required product, then the main product should automatically be removed.

- The requirement should allow for circular requirement. As in Product A required B and vice versa.