Thanks for the additional information. It is helpful. However, your dog should not be snapping at people without provocation. Your son should also not be barking at your dog either. That will make a dog more aggressive.
While you feel she is well behaved and she likely is, but she is attempting to reprimand them for touching her without her permission. If they are leaning over her to pet her, that would be seen as a dominant gesture as well. So the first thing is to not have them ever lean over her. They should sit down and let her come to them. They should not pet her unless she wants them to. I'd also tend to recommend not allowing her to even approach them since she has shown aggression toward them by snapping at them.
What you need to do is start daily obedience training with her. I know she knows the commands but she needs to see you as the boss and listen to you all the time, every time. Working with her daily for 2 15 minutes sessions will help you maintain control over her. In addition, you need to protect her completely. You can not let your son tease her or antagonize her by making noises at her. Tell him to stop or not come. He is your son and you are his mother and it is your house. I'm glad they both are not doing that.
Ask them to not lean over her or try and pet her. You might go ahead and put a basket style muzzle on her when you know they are coming to visit. This will help them be more comfortable and thus the dog won't pick up on their worry. You are likely worried as well when they come over and that can make a dog more protective as well, so the basket style muzzle can be a great tool to help with retraining her to not react to them in that manner.
When they come, have her sit ans stay. Let them be seated and then have her heal to the room you will be in and then direct her to sit and stay there. There is no NEED for them to interact with her at all. If they choose to participate in trying to resolve the issue, let them help with daily training. I recommend using hot dog slivers as the treat for obeying. Dogs love them. You can have them give commands that your dog knows and reward her for obeying. After working with her for awhile she will see them as her boss as well and won't reprimand them any more. Dogs don't reprimand the bosses. Her snapping is her way of reprimanding them.
So while your son is in the wrong, your dog is displaying aggressive behavior as well. So get the basket muzzle so you can be sure that the dog isn't picking up on any worry you might have or they might have. That will create a calm atmosphere in order to work on changing the interactions between them and your dog.
I hope this information is helpful to you. If you would like any additional information or have more questions please don’t hesitate to press the reply to expert or continue conversation button so I can address any issues you still have . If you do find this helpful, please take this opportunity to rate my answer.