Conception, that is, the early engineering work is your most most important and should be longest and most intense period.
Any fool can sit down and start writing code and what comes out is usually called spaghetti code, meaning a tangled mess.
You need to sit down, work out specifically what the customer wants. LISTEN to the customer, write it down. Work it through on paper. Present a realist cost analysis of what the customer is asking for.
Once the customer sees a realist cost analysis (don't tamper it down because you will almost always go over anyways) he may change his mind and cut back. Non-technical customers rarely realize the actual cost of development.
Make mock ups of the screens and a diagram board of how the program works...scenario out each step and option to see how the logic will need to be formed.
Work and rework and rework you database tables, on paper.
You need to think through a 90% solution on paper before you lay down even 1 line of code.
The software development life cycle, traditionally, was mostly based off of Winston Royce's whitepaper: http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
Unfortunately, much of what he wrote was misapplied and became a series of phase gates and check points.
Today, most of what you'll see from a software development life cycle is loosely based off of the Agile SDLC: http://agilemanifesto.org/
Basically concept, sketch, build, and test iteratively.
It varies for every type of software and market. First find the market before you develop the product.
Don't stop taking massive action.
Best of Luck,
Michael T. Irvin
My books are available exclusively through Amazon Books. Check out my book "Copywriting Blackbook of Secrets"
Copywriting, Startups, Internet Entrepreneur, Online Marketing, Making Money