Question: I am new to mechanical engineering, although I have a scientific background (postgrad in Mathematics), and I (mostly) code for a living.

I have an idea about creating a mechanical device; I envisage it will entail gears, linkages and actuators.

I have a rough idea where things will fit but I would like to be able to test and tweak the design in software before building the actual device. As a point of clarification, when I say "test," I mean view via animation, for example, whether two items will collide when in motion, or if there is sufficient leeway between them as they move past each other.

This allows me to do the design and simulation testing of the parts, before finalising the design and then building the physical system from the design.

The stages are:

1. Build the 3D design in software
2. Run simulation to see if it "works," if not fix design and iterate
3. Build physical system from design that "works"

I have figured out that the system consists of three subsystems working together.

So, I would like to design and test each sub-component before integrating them into the complete system.

### My question then is this:

* Is this how design is done in the real world?
* What are the pros and cons of the scheme I have planned?

I am intending to use FreeCAD to do the design and testing.

Answer: 
I work for a fortune 500 mechanical engineering company.

The process of product development in an mechanical system is broadly: 

I assume that you have a complete specification of things like forces, temperatures, pressures etc. and can begin designing straight away. The first thing is to start generating design concepts that might or might not meet the specification. This is a combination of selecting the geometry that will accomplish the task, the material that will enable ease of manufacture and performance at all operating conditions, with the right structural integrity properties to last for the specified design life.

This design is completed in a CAD package, where the solid components are modeled. 

From there, assemblies and production drawings can be made, but first we must validate our design with some analysis. This can be basic math and physics to show the dimensions will work within the design envelope, basic kinematics and kinetics, or mass balances for a design that processes a fluid for example.

More accurate analysis requires the use of sophisticated methods implemented in software known as CAE (computer aided engineering) or ALD (analysis led design)

For studying stresses and strains, temperatures, and to some extent fluids, the finite element method is used to calculate local properties based on a meshed model and some boundary conditions.

For studying fluid interaction with the geometry and looking at pressures, temperatures, and other fluid and thermal properties, computational fluid dynamics is used. This is most commonly an implementation of the finite volume method.

You alluded to simulate and iterate. That is essentially how the process is done. However, statistically verified methods are used using design of experiments theory to produce optimized design configurations.
> 
> I am new to mechanical engineering, although I have a scientific
>  background (postgrad in Mathematics), and I (mostly) code for a
>  living.
> 
> 
> 

My observation is that there are plenty of analogues between how software is designed, tested for, coded (heh, in that order), and distributed - and how mechanical models are described in CAD. Maybe this is because most of what I do is parametric modeling, e.g. describing the computer a recipe on how to produce a model from parameters, that can then be tested.

You certainly sound to be on the right tracks.

As with software tools, you need to pick and know your tools well, to work with them and not against them.

---

Meta note: this question is going against the StackOverflow [tour](https://engineering.stackexchange.com/tour). It advices e.g. against opinionated answers and those ".. with too many possible answers or that would require an extremely long answer". What this might mean is someone closes the entry eventually.