I am a recovering yeller. Here are some things that have helped me.
Taking a time-out myself when I'm angry, before I speak, helps. This does not necessarily mean actually walking away from my child and going somewhere to sit by myself (my kids freak if I try to do this, they follow me screaming and the one time I shut myself in the bathroom there was a child pounding on the door). I look at it more as finding a peaceful place inside myself, choosing to be quiet and not speak or act for a few moments, taking some breaths, finding some space in my own head. This helps me calm down. Also, taking a time-out is an opportunity to listen to myself and become aware of what I'm feeling and needing and thinking, and (on a good day) becoming aware of how my thoughts, feelings and needs are affecting my perception of the situation. This allows me to give myself some empathy, and it frees me to listen to my children.
It helps to reframe, to reconsider my assumptions about what my kids are doing and why. It helps to rethink my expectations, too, because sometimes my expectations are inappropriate. When my expectations are inappropriate and my assumptions about my kids' abilities/motivations/reasons are inaccurate, my responses are ineffective and I get more and more frustrated. When I reframe, when I think about other potential reasons my kids might be doing something (like apparently ignoring my "request"), I tend to calm down and then I can open up to listen to my kids and to empathize with my kids. When I realize an expectation is inappropriate, I can find another way of handling whatever the situation is. How I understand the problem and how I understand my child leads to how I respond. So, often, to respond better I need to understand differently. If that makes any sense.
It helps to have support, someone to listen to my concerns and feeelings. This is hugely, immeasurably important.
It helps to take care of myself: get enough rest, good nutrition, plenty of water, exercise, sunlight/time outdoors, time to engage in activities that nourish me and are relaxing, and so on.
It helps to focus on connection first. No matter what. If I focus first on connecting with my child, everything else seems to go more smoothly. If we're having a problem, taking the time to connect first (connection without intention of fixing or getting my child to do what I want, connection for the sake of connection) allows both of us to relax and allows us both to open to each other's needs and allows us to cooperate with each other. When we've been through a rough patch and I'm yelling and things aren't going well, it helps to come back to just connecting-it's very healing. For us, connection is the foundation on which eveything else stands and it needs to be nurtured.
It helps me to let go of attachment to outcome, to learn to identify what my concerns are versus what solutions I'm attached to, and to learn to become a little more creative so that I am more able to address my concerns in multiple ways (and to help my child learn that there is often more than one way to address her concerns as well). The reason this is so important to me is that when I am firmly attached to my child doing this one thing in this one way because I need it just this way, then we are going to get into a power struggle and that is when I am likely to yell. OTOH, when I am able to say, for example, "my concern is that each person in this family helps care for the house" instead of "I need to empty the dishwasher, I can't do everything around here. I'm waiting. Time to empty the dishwasher..." then I am able to find other ways to address my concern: "you don't want to empty the dishwasher? What's up? You're tired of that, it's boring. I think it's boring too. Thing is, I need some help cleaning up this kitchen so I can get dinner finished on time. Maybe there's another way you can help me. Any ideas?" And really, this helps so much. Not all the time, no. Sometimes we still get stuck. But that's okay, we get stuck a lot less when I approach problem-solving in this way, and it helps my kids learn to problem-solve better and to consider the needs of others as well. This method is (more or less) the Collaborative Problem Solving model from the book The Explosive Child by Ross Greene. While I have one "explosive" child, I also have two other children and I find this model of conflict resolution to be very effective and it helps me to not yell. The steps of the method are 1) empathy-get the child's concern on the table and take your time doing it so you get to the real concern (and know the difference between a solution and a concern) 2) identify the problem-get the parent's concern (not solution) on the table and 3) invite the child to problem solve-invite the child to come up with ideas to address both concerns in a way that is realistic and satisfactory to both parties (this requires letting go of attachment to a particular outcome, and an openness to not knowing in advance what solution you'll come up with-but knowing the goal is to find a solution that works for both parties. Yes, sometimes there isn't time for this, and that's okay too).
Some books that have been of particular help to me in this journey: Time Out For Parents: A Guide to Compassionate Parenting by Cheri Huber; Connection Parenting by Pam Leo; Nonviolent Communication by Marshall Rosenberg.