The preferred method for most projects is the Agile process. This gives you the most flexibility with your project. It allows for situations where there are many unknowns or loosely defined requirements and the Agile process invites changes. In an Agile environment, constant communication is the key to success. Nearly every aspect of the process involves collaboration to make sure we are working on what you need.
It involves a brief design phase to get an idea of the scope of your project. Your requirements are reviewed and become descriptions of features or functionality called user stories. The user stories at this point are loosely defined with the details to be filled out during the development phase. Once the design is complete, it moves on into an iterative development phase.
In this phase, each iteration is called a “sprint” and lasts for 2 to 4 weeks, with 2 weeks being the most common. Within each sprint various user stories are detailed and worked on. Each user story goes through mini-design, development, and testing phases of its own. At the end of the sprint the work completed is shown to you for feedback, and released to you so that you can use it for any additional testing or validation. Feedback received can then be turned into additional user stories and scheduled for work in a future sprint. New features and functionality can be added and turned into user stories at any point, and user stories that have not been completed yet can be removed if they are no longer needed or wanted. The sprints continue until you say the development is done.
Once you say the development is done the project moves into the deployment phase. What tasks are done in the deployment phase is largely driven by your needs, and agreed upon deliverables. Typically, this includes things like additional “as built” documentation, final installers and final validation.