Hi,
By creating many option product (one by generator) and assigning them to each software, allow the softwares to have their own generator.
But if it's only an option, it can be added or not. To avoid this problem, you can create a characteristic, for example "generator" and add it to the option product.
By this way, the option is automatically added in the cart with the product. So the generator with the software.
You can too create a custom field, like "generator" and in the software product page set the value to "softwarename" and in the generator set the value of "softwarename_gen".
Then create a plugin which will check if the product has the custom field "generator" filled, check if the generator is present in the cart. If it is not, display a custom error message.