Software Development Process

Software development practices and processes have evolved over the last 40 years. The waterfall process was developed as the engineering principles are applied to the software development process. Similar to any other engineering disciplines, software engineering expects to define the goals / requirements and design the specifications, construct the software, perform inspection for quality control, and manage the whole process with regard to resources, cost and schedule. But software development is generally a creative process. The engineering principles focusing on predictability and control may not work so well, because of the inherent risk associated with any creative processes.

The agile software development process appears to be the answer to that problem since the beginning of this century. It uses an iterative process to define, develop, and review the outcomes in short cycles, e.g. two-week sprints. Stakeholders and product owners are closely engaged during that process to provide guidance on that creative process so that the risk is much better controlled. Continuous improvement is pursued as the development team goes through those iterations. While waterfall methodology is still widely used for software development projects, more and more software development teams are adopting agile software development processes.

In the next few posts, I would like to explore further on agile software development process and the relevance of engineering principles, and attempt to define a maturity model for the current software development practices.