Want to know the magic formula of how to develop software successfully?

The magic formula is: Success == People + Process + Tools

Well this is hardly a revelation of historic proportions, but why is it people keep looking for that elusive tool that will solve all their problems?  Tools are very important, don't get me wrong, but they are not a substitute for inappropriate processes and they are certainly not a substitute for lack of skills - they are a necessary complement.

So which addend carries more weight?  Well it depends .... :-)

If we view software engineering as a series of transformations (shown below and explained in detail here) starting with a business need and ending with a software solution - tools become more useful the closer you get to the source code.

At higher levels of abstractions (i.e. during analysis or design) processes and people are very important and when gathering requirements people are by far the most important addend - why do you think poor requirements continue to be THE major challenge in software engineering?

 

Bullseye Framework

NOTE:  I am not suggesting these activities occur sequentially or result in producing formal artifacts.