If you are assigned to come up with a price for a simulation software product use the following algorithm:
- List major tasks:
2. Requirements and design (these two go hand in hand)
3. Documentation (from requirements to the final test reports)
4. Testing (...at least 4 test cycles of FORMAL testing. I stress FORMAL, meaning tons of bureaucracy)
5. Project management (all tose nasty meetings, travels, coordination, logistic arrangements etc.)
6. Work done by support people (quality assurance, configuration management, project coordination, FORMAL reviews)
7. Debugging (zillion of times)
- Pick the task with which you are familiar and give it a number representing effort under best circumstances. In our case that's coding. Let's give it a 1
- Using your previous experience, assign effort numbers to other tasks:
1. Coding = 1
2. Requirements and design = 2
3. Documentation = 5
4. Testing = 5
5. Project management = 4
6. Work done by support people = 3
7. Debugging = 5
- Sum effort = 1 + 2 + 5 + 5 + 4 + 3 + 5 = 25
- Think how much time coding will take. It depends on a lot of things, mainly on your experience in the problem domain. In our example, let's say it is something easy and coding will take 1 week. So our total effort would be 25 weeks.
- Round it up to the nearest month = 7 months.
Ok, under best conditions, we would need 7 man X month effort.
If you have a good customer (i.e. he is an experienced engineer and has a vague idea about the requirements), chances are that you will end up with 50% more effort. If he is not an engineer, that extra would be 100%. If he is an idiot...well, don't do it!
Now, let's say he is a reasonable man but not an engineer. That would increase our cost to 14 man X month. That's your base cost. Anything less this amount, and you pay the project from your own pocket. Ignore it at your own peril.
On top of this number you add your profit. How do you determine that? Well, it depends on the market pressure, how much the customer wants the product, negotiation skills, bribes you pay etc.
For more in depth coverage read joel and eric.
Note 1: If you are a novice you could easily promise 1 week for a simulation and then end up in a miserable cycle of updates, rewrites etc. I have been there, done that. My current record is 6 years!
Note 2: If you work for a paying customer and adhere to quality and documentation, the easiest simulation project is..ta taa.. >10 man X month! "Let's throw quality and doc. out of the window" you say..."Throw yourself too" I reply. Life is too short to work on a simulation project without quality procedures and documentation.