Note: I am incredibly tired for some reason, and there may be parts of the following that make less sense than postmodern poetry. My apologies for that, and I'll attempt a more developed answer in the morning
.
I choose one ship - usually for the Federation - and work out it's weaponry, hull, shields, cost. Everything. This is now my baseline, what I scale everything to. The other ships for that race fall into place by being either weaker or stronger than the one I started with. How much they differ is something I work out in a spreadsheet, where I can directly compare all of the values. Sometimes, if I'm feeling clever, I make a formula - but that rarely works how I want it to.
When that race is done, I move on to the next. If they have practically the same build list (what I call the 'stock pattern') then I add very slight variations to the numbers and call it a day. A medium cruiser, you see, needs to be as strong as the other medium cruisers - otherwise it wouldn't be called one.
If I go for the 'FlOps' pattern', then it becomes more interesting. I take the strongest and weakest ship from my base race (hey, that rhymes!) and work out their counterparts. Doesn't matter what they're called, every race has a ship with the highest values and one with the weakest values. All of the ships are scaled between these, with a casual eye on my base race.
Then comes the fun part.
These two races go in game. I've taken to doing build buttons and such like as well, because it's easy to grab a render while I have Max open and it saves me a task at a later date but really you just need the SODs and ODFs. Using the map editor, I test the races against each other. Ship against ship in a tournament type thing, where every pairing is tried out. I record the result in excel again, and tweak where necessary. If I'm happy, I'll look over the resource costs and make sure there are no glaring errors or serious spikes.
I used to balance before I even put a ship in or made a model, but the result of that is a lot of boring numbers and a quick loss of interest. That's not good. Doing it this way means that it is a constantly evolving process - hopefully making it more reliable - and I can actually see my actions in game rather than in plain text.
Of course, there are things that go wrong or are missed. Look at FlOps. Their ODFs are calculated to three decimal places, make provisions for every ship and passive in the game, and have diverse tech trees and races - none of them comes without some serious calculation on the part of the team. Even so, there are things that the players notice. Especially online. When a mod is done, when it's released and people play it, they will notice things. That, in my opinion, is part of what a Beta is for - it's not so much to test the ships and stations as it is to check the balance and AI; both things that need every pair of eyes they can find.
I am unsure how much of that made sense (see my note at the top of the post) but I hope it helps. I'll be happy to clarify/go into further detail on anything once I'm fully rested
.