Customer Involvement
The Agile Manifesto values “customer collaboration over contract negotiation.” A more traditional way of doing things would be to lock-in the system requirements early on in the project. Any subsequent…
Micro-Optimizing
This gene represents the adaptive nature of agile processes. We employ the term “Optimizing” because, in most agile methodologies, teams are empowered if not encouraged to modify aspects of the…
Refactoring
An incremental and feature driven approach to the development of software systems can produce sub-optimal architectures compared to a waterfall model, as discussed previously. One of the advantages of BDUF…
Waterfall/BDUF
Figure 14 depicts the flow of a classic Waterfall/BDUF approach: In the Analysis phase the requirements for the ATM system may be documented in a “System Requirements” document as the…
Iterative-Incremental
Another principle of the Agile Alliance is to “deliver working software frequently, from a couple of weeks to a couple of months.” · Take advantage of what was learned during earlier…
The Agile Genome
After review and analysis of many Agile methodologies, some of which were described in section 3.2, we come to find that they all share common characteristics. The project teams that…
Test Driven Development
Inspired by the “test first” philosophy from XP, Test Driven Development (TDD) starts the development process by coding automated test cases for the software features that are to be produced.…
A Brief Review of Agile Methodologies
This research aims to produce a System Dynamics model of Agile software projects. In order to model Agile, we must first understand the essence of agility: What makes software development…
Agile Software Development
In the 1990s, as the large software firms were “maturing” along the CMM dimension, and coinciding with the internet boom and massive growth in the commercial software industry, a parallel…
The Software Capability Maturity Model (SW-CMM)
To deal with the “software crisis” in the 1980s, the US Air Force prompted the Software Engineering Institute (SEI) to develop a method for selecting software contractors. A study of…


