Comparison Of Software Development Methodologies

Software development methodologies or frameworks, define the process that the development team follows in order to deliver a timely product that satisfies customers.

Agile software development is a conceptual framework for doing software engineering projects. There are several Agile software development methods, such as the crystal methods, dynamic systems development model and scrum. Most agile methodologies attempt to minimize risk via developing software in short time boxes that are called iterations that typically last one to four weeks. Every iteration is like a miniature software project of its own and includes all the necessary tasks to release mini-increment of new functionality, like planning, design, requirements analysis, coding, testing and documentation.
Agile methods put emphasis on communication in real-time, most preferably face-to-face, instead of over written documents. Most agile teams are located in a bullpen and has all the necessary people to finish the software. At minimum, it includes programmers and those who define the product, including business analysts, product managers or actual customers. Furthermore, the bullpen could also include testers, technical writers, interface designers and management.

Lean development focuses on creating change-tolerant software. This method embodies the notion of dynamic stability that could be considered as the same as to how Scrum embraces controlled chaos. Lean development has twelve principles, such as:
  • Satisfying customer as the highest priority
  • Success depends on active participation of customer
  • Always provide the best money value
  • Everything is changeable
  • Each LD project is a team effort
  • Complete, don’t construct
  • Domain, not point, solutions
  • Minimalism is important
  • 80 percent solution now rather than 100 percent solution tomorrow

The waterfall method is considered as the traditional method of explaining the process of software development in software engineering. The model happens to clarify the process to a linear flow with a sequence specified to allow the users to understand that further levels are made progressive upon the completion of a previous one. Furthermore, the methodology also talks about the fact that going back to deal with changes isn’t possible.
  • Functional and easy to understand
  • Simple enough to handle as model is rigid
  • Allows easy analysis and testing
  • Saves considerable amount of time

Rapid-development is a general term that refers to any programming language that provides faster implementation compared to traditional third-generation languages. Rapid development languages produce savings by lowering the amount of construction required to build a product. While the savings are realized during construction, the ability of shortening the construction cycle has project-wide implications. Rapid app development of RAD proposes that products could be developed rapidly and of higher quality by,
  • Prototyping and user testing of designs
  • Using workshops or focus groups for requirements gathering
  • Software components re-use
  • Following schedule that defers design enhancements to the next product version
  • Keeping review meetings as well as other team communication informal
Usually, RAD embraces object-oriented programming method, which inherently fosters re-use of software. The most popular object-oriented programming languages such as Java and C++ are offered in different programming packages that are often described as offering rapid app development.

Scrum is an agile methodology for project management that was developed by Ken Schwaber. The goal is to dramatically boost productivity in teams that are paralyzed previously by heavier, process-laden methods. Scrum is characterized by the following,
  • a living backlog or work to be prioritized
  • completion of a largely fixed set of backlog items in a series of short iterations
  • short daily meeting wherein progress is explained, upcoming work as described and obstacles raised
  • brief planning session wherein the backlog items for the sprint would be defined
Scrum is facilitated by a scrum master, whose main work is to eradicate the hindrances to the team’s ability for the delivery of the goal. The scrum master does not work as the leader of the development team but instead acts as the productivity buffer of the team and any influences that could destabilize the process of development. It enables creating self-organizing teams through the encouragement of verbal communication with all the members of the team and across all disciplines involved in a project.

A software development methodology is similar to a cooking recipe. The same way that  a recipe teaches one how to cook a meal, a software development method teaches how to build a software product. Methodologies boost efforts to improve the quality of products by enhancing processes that product the products. A formally defined standard or method is required to control the development processes.
The different software development methodologies have strengths and weaknesses. The choice of which method to use really depends on the goals that a business wants to achieve