In dwarf fortress, cities have 100 people in them. Seiges have attackers numbering closer to 90 in number, but that's because they're useless recruits who still get slaughtered by two or three heavily armored, well-trained defenders. Really, we're talking about battles that are simply scaled down significantly because of the incapability of the game/computers to model a realistic city size.
Of course, if we are talking about SEIGES, it was entirely historically accurate for 30 soldiers in a castle to hold off armies of hundreds, or even a thousand men. Seiges were long, drawn out affairs where the attacker would simply try to starve an opposing side to death because they couldn't mount the castle's walls.
Frankly, even then with that much attrition (90 goblins, 3 dwarves), the best strategy is to just plain "dog pile" the dwarf, because it's exactly the "stupid charge into enemy ranks" that Mustard was talking about... Instead, especially in the last version, dwarves are capable of playing goblin croquet, and flinging goblins 50 tiles with a single hammer whack, and goblin attacks all whiff eternally because there is no dodging penalty to being outnumbered 30 to 1, and fatigue is no major problem.
Also, if you're worried about seige engines, don't worry, they're on the devpages and on the way... you know, whenever Toady gets around to pushing out his next massive set of updates. Frankly, I'm looking far more forward to the farming improvements or the mechanics improvements.