Agile software development (Agile)
- Pros Minimizes feature creep by developing in short intervals resulting in miniature software projects and releasing the product in mini-increments.
- Cons Short iteration may add too little functionality, leading to significant delays in final iterations. Since Agile emphasizes real-time communication (preferably face-to-face), using it is problematic for large multi-team distributed system development. Agile methods produce very little written documentation and require a significant amount of post-project documentation.
Extreme Programming (XP)
- Pros Lowers the cost of changes through quick spirals of new requirements. Most design activity occurs incrementally and on the fly.
- Cons Programmers must work in pairs, which is difficult for some people. No up-front “detailed design” occurs, which can result in more redesign effort in the long term. The business champion attached to the project full time can potentially become a single point of failure for the project and a major source of stress for a team.
Joint application design (JAD)
- Pros Captures the voice of the customer by involving them in the design and development of the application through a series of collaborative workshops called JAD sessions.
- Cons The client may create an unrealistic product vision and request extensive gold-plating, leading a team to over- or under-develop functionality.
- Pros Creates minimalist solutions (i.e., needs determine technology) and delivers less functionality earlier; per the policy that 80% today is better than 100% tomorrow.
- Cons Product may lose its competitive edge because of insufficient core functionality and may exhibit poor overall quality.
- Pros Promotes strong collaborative atmosphere and dynamic gathering of requirements. Business owner actively participates in prototyping, writing test cases and performing unit testing.
- Cons Dependence on strong cohesive teams and individual commitment to the project. Decision making relies on the feature functionality team and a communal decision-making process with lesser degree of centralized PM and engineering authority.
- Pros Improved productivity in teams previously paralyzed by heavy “process”, ability to prioritize work, use of backlog for completing items in a series of short iterations or sprints, daily measured progress and communications.
- Cons Reliance on facilitation by a master who may lack the political skills to remove impediments and deliver the sprint goal. Due to relying on self-organizing teams and rejecting traditional centralized “process control”, internal power struggles can paralyze a team.
Source material from Wikipedia.