More categories (that the AI respect) would indeed be beneficial when it comes to making some specialist types.
A local defense cruiser may want more speed, quicker jumps, more firepower, less defense, than a cruiser for the main battle fleet. You may want special ships as carriers as mentioned.
When I tried to do all designs myself, I started to want an inheritance tree (with multiple inheritance no less) for different lines of designs.
Auto upgrade is nice. Auto upgrade is not nice when the AI changes all civilian ships to a hydrogene based reactor and you want them on caslon. Lots of clicks to undo.
I know a fair bit about programming, forgive me...
An escort has two maxos blasters, a hab module and one reactor (and some more).
A frigate is an escort that has four blasters and an extra hab module.
A destroyer is a frigate that has 6 blasters and 2 reactors, and an extra hab module (for a total of 3 habs).
Change the escort blasters to shatterforce, and frigate and destroyer also changes, they inherit all info from the escort. Then you change the frigate back and instead of saying four blasters, you say 4 maxos blasters. Frigate and destroyer changes blaster type. The escort is overridden (and still has shatterforce).
Imagine at the very top you have type of vessel and role. Top roles are civilian and military, top vessels are ship and base.
An escort is military and a ship. Military tells it to have a blaster of some type given, ship tells it to have one each of a type of engines, shields, counter measures, targeting systems, repair bots, blasters, hyper drives... Some of these are also on civilian ships of course.
So when a new reactor comes, and I want to have the civilians on caslon fuel and the military on hydrogen, I modify civilian and military... And all designs are updates as long as they don't override their parent type (they can override the number and still swap reactor type).
I am afraid that such a system would confuse those that don't know object oriented programming, though :)