
Project Construction: Programming and Development
When all of the primary documentation is complete, the actual development work starts. The technical team will study the use cases and the object and data models, and start planning the delivery cycles. Here, we can use one of the following famous development methodologies:
- SCRUM Development
- Waterfall Model
- Agile Development/Extreme Programming (XP)
- Iterative Development
You can find more information about each of these techniques online via the list of references I have provided. There is a lot of online as well as offline text available on these methodologies. I personally prefer SCRUM development, which is a Chaos Theory based approach. In SCRUM, we have sprint, which is an iteration with a certain number of days (for example, 30) at the end of which the development team covers a certain set of use cases and lets the stakeholders see and test the application. During the next iteration, they cover more features, which are prioritized accordingly. Each iteration passes through a full software development cycle: planning, requirements, design, coding, testing, and documentation. The goal is to have an available release (without bugs) at the end of each iteration.
A major goal to be achieved by using this process is to allow the client to take their new product to market before it is completed in its entirety. We are also minimizing risk by developing highly-focused components in a short period of time. This development process will continue throughout all phases, promoting the release of components to a beta phase in a live environment as the life cycles are completed. The following are the major benefits or principles of the SCRUM method:
- Keeping things simple by chunking (or batching)
- Customer satisfaction through rapid, continuous delivery of useful software they can get their hands on
- Working software is delivered frequently (taking weeks rather than months)
- Working software is the primary measure of progress
- Late changes or additions in requirements are welcome and can be added to iterations with ease
- Close, daily cooperation between clients and developers
- Continuous attention to technical excellence and good design
- Regular adaptation to changing circumstances
Because the stakeholders can see and review the current application at the end of each sprint, it gives them a valuable opportunity to change anything they don't like. Changes made at a later stage (such as when all use cases are covered) would take a longer time to absorb into the application, and can sometimes derail the project completely.