This chapter explores agile modeling, which is a collection of innovative, user-centered approaches to systems development. You will learn the values and principles, activities, resources, practices, processes, and tools associated with agile methodologies. Agile approaches have their roots in prototyping, so this chapter begins with prototyping to provide a proper context for understanding, and then takes up the agile approach in the last half of the chapter. Prototyping of information systems is a worthwhile technique for quickly gathering specific information about users’ information requirements. Generally speaking, effective prototyping should come early in the SDLC, during the requirements determination phase.
Prototyping is included at this point in the text to underscore its importance as an information-gathering technique. When using prototyping in this way, the systems analyst is seeking initial reactions from users and management to the prototype, user suggestions about changing or cleaning up the prototyped system, possible innovations for it, and revision plans detailing which parts of the system need to be done first or which branches of an organization to prototype next.
One special instance of prototyping that uses an object-oriented approach is called rapid application development (RAD). Prototyping and RAD can also be used as an alternative method to SDLC.
Prototyping is an information-gathering technique useful for supplementing the traditional SDLC; however, both agile methods and human–computer interaction share roots in prototyping. When systems analysts use prototyping, they are seeking user reactions, suggestions, innovations, and revision plans to make improvements to the prototype, and thereby modify system plans with a minimum of expense and disruption. The four major guidelines for developing a prototype are to (1) work in manageable modules, (2) build the prototype rapidly, (3) modify the prototype, and (4) stress the user interface.
Although prototyping is not always necessary or desirable, it should be noted that there are three main, interrelated advantages to using it: (1) the potential for changing the system early in its development, (2) the opportunity to stop development on a system that is not working, and (3) the possibility of developing a system that more closely addresses users’ needs and expectations. Users have a distinct role to play in the prototyping process and systems analysts must work systematically to elicit and evaluate users’ reactions to the prototype.
One particular use of prototyping is rapid application development (RAD). It is an object-oriented approach with three phases: requirements planning, the RAD design workshop, and implementation.
Agile modeling is a software development approach that defines an overall plan quickly, develops and releases software quickly, and then continuously revises software to add additional features. The values of the agile approach that are shared by the customer as well as the development team are communication, simplicity, feedback, and courage. Agile activities include coding, testing, listening, and designing. Resources available include time, cost, quality, and scope.
Agile core practices distinguish agile methods, including a type of agile method called extreme programming (XP), from other systems development processes. The four core practices of the agile approach are (1) short releases, (2) 40-hour workweek, (3) onsite customer, and (4) pair programming. The agile development process includes choosing a task that is directly related to a customer-desired feature based on user stories, choosing a programming partner, selecting and writing appropriate test cases, writing the code, running the test cases, debugging it until all test cases run, implementing it with the existing design, and integrating it into what currently exists.
Later in this chapter we compared how SDLC and agile approaches handle improving knowledge work efficiency differently. We then discussed several inherent dangers to organizations adopting innovative approaches, including an incompatible organizational culture, poor timing of the project, cost of training systems analysts, unfavorable client reactions to new behavioral expectations, difficulties in measuring the impact, and the possible compromise of the individual creative rights of programmers and analysts.
Once you have mastered the material in this chapter you will be able to:
- Understand the roots of agile modeling in prototyping and the four main types of prototyping.
- Use prototyping for human information requirements gathering.
- Understand the concept of RAD for use in human information requirements gathering and interface design.
- Understand agile modeling and the core practices that differentiate it from other development methodologies.
- Learn the importance of values critical to agile modeling.
- Understand how to improve efficiency for users who are knowledge workers using either structured methods or agile modeling.
- Prototyping: Kinds of Prototypes
- Developing a Prototype: Guidelines
- Users’ Role in Prototyping
- Rapid Application Development (RAD)
- Comparing RAD to the SDLC
- Agile Modeling : Values and Principles of Agile Modeling
- Activities, Resources, and Practices of Agile Modeling
- The Agile Development Process
- Lessons Learned from Agile Modeling
- Improving Efficiency in Knowledge Work: SDLC Vs Agile
- Risks Inherent in Organizational Innovation