How to estimate the cost of the software project?

How to estimate the cost of the software project with diagrams or tools used and please explain in detail with reference web links and videos.
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Estimating project cost depends on two parameters: size and (let's call it) productivity.
The project's size can be measured or estimated using any of the different methods available. In Holland (where I reside) the method of sizing with Function Points is very popular. This method is originated from the 'old' main server systems and counts user interactions. But when used properly it is still suitable in modern projects. Other sizing methods are based on calculating Use Case Points, Story Points and all kinds of work-breakdown methods. Which to use depends on your situation and environment. I am happy to drill down into it if you can provide some more information on your environment.

Having the size of your project the real fun starts: how to map the size with the actual costs. Some say to just take the cost of one size unit (call it productivity), multiply one with the other and your project costs are written on the wall. But, as productivity depends on the technology used, on the process (e.g. waterfall versus agile), on the competence mix in your team, on the business domain, the non-functional requirements and whether or not you want to reuse existing components - to name a few - deriving the cost of this one unit is the big problem, eh challenge.
The best way to deal with this challenge is to record all project activities, categorize them, calculate their costs and learn from the experiences. Tools and processes take up with this by providing ways to connect planning with work done, by using work items and/or process enactment. The most modern ones even come close to an integration of sizing and calculating productivity, which is maybe a sign towards reaching some maturity of the IT branch?
As with the sizing methods what method fits you best again depends on your environment. Let us know.
sudhir_gs1Author Commented:
Hi Archyon,

That's a great question. I am thinking to develop in .net 3.5 framework ( 3.5 with C#) with GOF design patterns & agile process. I am going to develop a collaboration tool having all the features of web 3.0 and includes all the latest features of today's technology like widgets, mashups, and some features similar to netvibes, igoogle, pageflakes, microsoft live etc. For sure, I will reuse the existing components. Please let me know if you have any further questions.

Since you are planning to go for C# and an agile process I recommend to look into "SCRUM for Team System". SCRUM is a very popular agile software engineering process that uses Story Points for estimating the size of (portions of) your project. Team System gives you the opportunity to capture all stories (features/requirements) and get instant feedback on the effort taken, which gives you insight on the costs. From this point you may agile learn how in your situation with your team and your project your size estimation relates to the effort and costs.

You may ask "What if I want to know in front how much my project's budget should be?" In this case you may use the following:
try to look at your system in terms of persistency and calculate the number of tables your system would have as it would follow a data-driven architecture (=T). Next count the number of external interfaces (where your system has to communicate with other systems) and call this E.
A very rough estimate for your project's development cost is: $ = (T*25 + E*10) * 650
This assumes you have your team and environment fully operational and competent on developing C# with patterns etc. Please be aware that this formula is only helping to get an educated guess on the order of magnitude for your project's cost.

A very good resource on SCRUM and Team System is (what else). From here you can also download an add-in to Team System to get all process resources integrated into the development environment.

If you do not have experience with Team System a good idea would be to hire a consultant to set up the environment (both infra and process) and train your complete (!) team to work in this environment. Although very compelling, do not try to learn Team System 'on the fly'.

If you have thoughts for other environments or if this is not working for your situation, please just let us know. There are many more roads to Rome.

Regards, Peter (Archyon)

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Project Management

From novice to tech pro — start learning today.