The early software development methodologies were limited to “code and fix” with little long-term planning, that worked fine for a small set of systems, but as the systems grew they became susceptible to bugs and were harder to run efficiently. Newer methodologies brought planning and discipline in the software development process, with the aim of making software development more efficient and flexible. The advancement of technology and greater market competition added different sets of approaches to software development methodologies. Some companies over the years have introduced their own set of customized methodology for developing their software, but the majority of the worldwide companies follow two kinds of methodologies: heavyweights and lightweight.
The traditional “heavyweight” methodologies are more structured – are process and tool oriented, and follow a predictable path, requiring comprehensive and detailed documentation. Some of the popular traditional methodologies are Waterfall, Unified Process and Spiral. These methodologies are based on a sequential series of steps in which work begins with the elicitation and detailed documentation of an overall requirements, followed by architectural and high level design development and with checkpoints & deliverables at each phase. Due to a long set of processes and relatively inflexible approach, this methodology got the name as heavyweight.
The newer “lightweight” methodology also known as “agile” modeling is a set of values or philosophy. Agile exposes organizational dysfunction. Unlike traditional methods, agile methodologies embrace iterations rather than phases. Agile employ short iterative cycles, small/short releases, simple design, refactoring continuous integration and rely on tacit knowledge within a team as opposed to documentation. Some of the popular agile methods are Extreme Programming, Scrum, Lean, Kanban, Dynamic System Development Method, Feature Driven Development and Adaptive Software Development.
The key difference between heavyweight and agile methodologies is the adaptability factor. In an agile methodology if any major change is required, the team doesn’t freeze its work process; rather it determines how to better handle changes that occur throughout the project. The verification process in agile method occurs much earlier in the development process. On the other hand heavyweight methods freeze product requirements and disallow change. It implements a predictive process and relies on defining and documenting a stable set of requirements at the beginning of a project.
Agile model delivers a working version of the product and direct user involvement in the development process is very early compared to traditional methodologies. The testing cycle for Agile is continuous and comparatively short to traditional methods, because testing is done parallel with development. Most traditional models are very rigid and doesn’t entertain changes and are relatively less flexible than the Agile model. Because of all these advantages, Agile has a comprehensive response to the most of the challenges organizations’ face in a rapidly changing, competitive global market.