As a developer and later a technical architect, I have been doing software development for almost nine years after I graduated from school. I witnessed the fast evolvement of new technologies, for example, from Java Applet in the early days to AJAX recently in front end field and from EJB to Spring in the business logics field. However, the process we do software development changes much slower. In one organization, the same process is usually used for all types of projects, from new and complicate multi-year projects to simple and repetitive bug fix releases. I feel the knowledge we have in software development processes are way behind the knowledge we have in technologies. To me, the software development process and methodologies are more fundamental and important than specific technologies. Because it affects the entire lifecycle of software development project, the entire software development team and every aspects of the software product.

I did some researches on this field and would like to list the most popular software development process frameworks here. A more comprehensive list can be found in here.

  • Cowboy coding: Follow no rules. Totally up to the individual developer. It’s good for a quick prototype or proof of concept. Not good for teamwork and big projects.
  • Waterfall Model: A sequential software development process. It goes steadily through the phrases of requirement analysis, design, implementation, testing, integration and maintenance. It was widely followed years ago and still followed in many software shops. It’s useful for developing small scale software with a relatively stable set of requirements. But, obviously not suitable for large scale software in current fast pace business world.
  • Rational Unified Process: An iterative software development process framework created by Rational Software and later part of IBM. It is a refinement of the Unified Process and have many variations like AUP and OpenUP.
  • Extreme Programming (XP): It’s a set of software development practices that embody and encourage XP values (Communication, Simplicity, Feedback, Courage, Respect). It’s considered as a form of Agile software development.
  • Agile Software Development: It’s the most popular conceptual software development framework. It’s a umbrella of many methodologies that follow the same set of principles announced in Agile Manifesto.
  • CMMi: It’s a process improvement approach to help organizations to achieve effective processes. Many software consulting/outsourcing companies seek to be appraised by CMMi, using an appraisal method like SCAMPI to proof their maturity in software development process.

Each framework listed above follows a set of underline principles and have a set of practices/methodologies. Each organization should pick the right one that fits into its culture. Different types of project can follow different practices based on its unique nature. The key is find the most suitable one for your project instead of blindly repeating the old ways of doing software development.