Selecting the Appropriate Development Methodology

Since there are many methodologies, the first challenge faced by analysts is to select which methodology to use. Choosing a methodology is not simple, because no one methodology is always best (if it were, we’d simply use it everywhere!). Many organizations have standards and policies to guide the choice of methodology. You will find that organizations range from having one “approved” methodology, to having several methodology options, to having no formal policies at all.

Ability to Develop Systems

Structured Methodologies

RAD Methodologies

Agile Methodologies

Waterfall

Parallel

Phased

Prototyping

Throwaway Prototyping

XP

with Unclear User Requirements

Poor

Poor

Good

Excellent

Excellent

Excellent

with Unfamiliar Technology

Poor

Poor

Good

Poor

Excellent

Poor

that are Complex

Good

Good

Good

Poor

Excellent

Poor

that are Reliable

Good

Good

Good

Poor

Excellent

Good

with a Short Time Schedule

Poor

Good

Excellent

Excellent

Good

Excellent

with Schedule Visibility

Poor

Poor

Excellent

Excellent

Good

Good 

Clarity of User Requirements   When the user requirements for what the system should do are unclear, it is difficult to understand them by talking about them and explaining them with written reports. Users normally need to interact with technology to really understand what the new system can do and how to best apply it to their needs. Prototyping and throwaway prototyping–based RAD methodologies are usually more appropriate when user requirements are unclear because they provide prototypes for users to interact with early in the SDLC.

Familiarity with Technology   When the system will use new technology with which the analysts and programmers are not familiar (e.g., the first Web development project with Java), early application of the new technology in the methodology will improve the chance of success. If the system is designed without some familiarity with the base technology, risks increase because the tools might not be capable of doing what is needed. Throwaway prototyping–based methodologies are particularly appropriate for a lack of familiarity with technology because they explicitly encourage the developers to develop design prototypes for areas with high risks. Phased development-based methodologies are good as well, because they create opportunities to investigate the technology in some depth before the design is complete. While one might think prototyping-based methodologies would also be appropriate, they are much less so, since the early prototypes that are built usually only scratch the surface of the new technology. Usually, it is only after several prototypes and several months that the developers discover weaknesses or problems in the new technology.

System Complexity   Complex systems require careful and detailed analysis and design. Throwaway prototyping–based methodologies are particularly well suited to such detailed analysis and design, as opposed to prototyping-based methodologies, which are not. The traditional structured design–based methodologies can handle complex systems, but without the ability to get the system or prototypes into the users’ hands early on, some key issues may be overlooked. Although phased development–based methodologies enable users to interact with the system early in the process, we have observed that project teams who follow these tend to devote less attention to the analysis of the complete problem domain than they might using others.

System Reliability   System reliability is usually an important factor in system development—after all, who wants an unreliable system? However, reliability is just one factor among several. For some applications reliability is truly critical (e.g., medical equipment, missile control systems), while for other applications is it is merely important (e.g., games, Internet video). Throwaway prototyping methodologies are the most appropriate when system reliability is a high priority, because it combines detailed analysis and design phases with the ability for the project team to test many different approaches through design prototypes before completing the design. Prototyping methodologies are generally not a good choice when reliability is critical because it lacks the careful analysis and design phases that are essential for dependable systems.

Short Time Schedules   Projects that have short time schedules are well suited for RAD-based methodologies. This is due to them being designed to increase the speed of development. Prototyping and phased development–based methodologies are excellent choices when timelines are short because they best enable the project team to adjust the functionality in the system based on a specific delivery date, and if the project schedule starts to slip, it can be readjusted by removing functionality from the version or prototype under development. Waterfall-based methodologies are the worst choice when time is at a premium because it does not allow for easy schedule changes.

Schedule Visibility   One of the greatest challenges in systems development is determining whether a project is on schedule. This is particularly true of the structured design methodologies since design and implementation occur at the end of the project. The RAD-based methodologies move many of the critical design decisions earlier in the project to help project managers recognize and address risk factors and keep expectations in check.