I think artillery is pretty crude as it is; it's unchanged for many iterations now and I'm sure it's due for an overhaul at some point in the far future. Some ideas:
Each piece of artillery has a number of variables:
* Energy storage: Artillery needs a way to get kinetic energy to launch things; that's how artillery works. The earliest siege artillery used animal sinews, which are elastic and able to thus store a lot of energy, and later torsion springs further amplified it.
Items you can use for energy:
Sinew fiber taken from butchery (finally a use for it!)
Wood logs (younger trees are much more elastic) - just bend a branch and watch it spring back.
Fiber ropes (made from fibers)
Chemicals - explosives! Applies huge force but requires very tough materials. Uses expanding pressure to fire things.
The amount of force applied is directly proportional to the torsion value of the material in raws, as well as the quality. Obviously raw sinews would have less force than master-crafted sinew/thread rope.
* Launcher arms (needs 1 item): (OPTIONAL): This would be attached to the energy storage item and transfers power from there either directly to the item being launched or the transfer item. Here I'm talking about, for example, the arm of a catapult or the arms of a ballista. It directly impacts the force but not as much as the energy transfer item. Using no launcher arm is basically just a springy rope and drastically lowers the firing force.
Items you can use:
Wood logs - standard. Elastic enough to not break except under very high strain.
Metal bars - More difficult to use; if there's not enough pure force, the item won't fire. However, it can take much higher strains than wood and thus give higher potential force with enough energy applied.
* Item storage: (OPTIONAL): This is the part of the artillery that holds the item being fired while it's waiting to be launched. Here you can have some fun- Using no item storage is the equivalent of a ballista - the bolt simply rests right against the energy storage mechanism. This part also determines what kind of ammo it uses - with none it uses ballista bolts.
Slings - Both early and late RL artillery used these, for example in the well-known trebuchet. Can be made from virtually any fiber and uses the momentum/inertia of the item to launch it. High weight ammo = better launching force. Can be inaccurate.
Bowls - The catapult everyone pictures uses this, simply a hardened place to put ammunition. Can be made from wood, stone or metal - wood can't hold heavier ammo but using metal bowls reduces the firing speed. Metal also allows you to use burning ammunition, or magma-safe metals for those horrible globs.
Tube - Can only hold specific ammunition (bolts, spikes, and spears), but allows very high accuracy coupled with excellent range.
* Structural: This is the basic structure of the artillery piece, the supporting sections. This takes a proportion of the overall firing force but not as much as the 'arms'. If arms are not included the structure takes the full brunt of it. Stronger structure makes the weapon more accurate, fires faster, and breaks less often - but heavier parts are more difficult to move.
Structural materials can be just about anything - rock, bone, wood, metal, prepared goat brains. Torsion values directly determine how much strain it can take - a catapult with a structure made of +goat cheese+ might simply rip apart as it's being fired, giving injuries to nearby dwarves.
* Winding mechanism: Most artillery weapons need some way of actually moving the kinetic energy into the storage part (ie. the sinew fibers). This can be anything from a single hand-cranked mechanism (slow, requires high strength), multiple mechanisms, or attaching the whole thing to a windmill/watermill/screw pump/whathaveyou. If this part is not added, it defaults to firing manually. Chemical artillery does not require this part, but torsion artillery does. Better winding mechanisms mostly improve reload speeds and have less chance of a misfire, as well as being able to automate the entire thing.
Parts used for this are: any mechanism, any energy transfer part (ie. screw pump). Automated artillery will continuously fire once built unless it's connected to a lever.
* Ammo Storage (optional): This is an attached container for storing ammo. Autofiring artillery will draw from this storage; otherwise it will need to be continually hand-loaded. This also works as a custom local stockpile, allowing you to choose which items to fire. If no ammo storage is defined, you can still select ammunition types/specific items, but dwarves will have to run to the nearest instance of it to reload.
Items can be logs, stone, or wood (basically a storage bin for boulders/unbinnable items), any existing bin or chest (smaller items).
Launched items suffer damage and can be destroyed on hitting something.
* Mobility (optional): Attaching wheels to an artillery piece allows it to be moved. Artillery attached to permanent mechanisms (windmills, levers) cannot be moved.
Movement speed and turning rates are based on the speed & strength of the pusher/puller, the total weight of the piece + artillery, and the terrain type.
Though nearly any construction material (logs, bars, stone) can be used for mobility, there's a special case - you can attach the whole shebang to a minecart. This makes the minecart unable to hold items, but the artillery piece moves on the track with the minecart. Set up an automated mini-ballista with hundreds of stored crossbow bolts on a minecart, send it off and watch the bolts fly! If the minecart flies off the track, the whole artillery piece takes massive structural damage.
Phew, I think that's it for now. Basically this would require a lot of work to code - probably new build menus, artillery firing menus, new firing arcs, and so on. Plus 'stock' artillery that could be moved onto the battlefield by siegers.. Elves with grown wood catapults, goblins that kill local wildlife to launch them at your depot, kobolds who launch other kobolds into your fort, humans who build elaborate trebuchets in-situ.. the possibilities are endless!