Managing Information Technology

(Frankie) #1
Chapter 9 • Methodologies for Custom Software Development 379

Advantages


  • Dramatic savings in development time

  • Focuses on essential system requirements

  • Ability to rapidly change system design at user request


Disadvantages


  • Quality may be sacrificed for speed

  • Time-consuming commitments for key user personnel

  • Possible shortcuts on internal standards and module reusability


FIGURE 9.13 RAD Advantages and Disadvantages


  • The business (and developers, too) may not know
    what is possible with IT, so they may limit their re-
    quirements to what they think is possible or to cur-
    rent business rules rather than what could be done
    with “out-of-the-box” thinking.

  • Business conditions are constantly changing, so
    freezing requirements always means being out of
    step once the system is implemented (by the way,
    there is a similar truth with textbooks!)

  • There is often not a consensus about what is required
    (due to different situations or cultures in different
    user groups), so agreements may not be able to be
    reached until well into a project.

  • Personnel turnover during a project, from both the
    user community and the development team, means
    new ideas, new skills, and relearning.


Different methodologies attempt to deal with these issues
in different ways.
In recent years an agile software development disci-
pline has emerged as an alternative methodology for smaller
projects (e.g., project teams not larger than 20) in order to ad-
dress some of these issues. The objective is to deliver software
with very low defect rates, based on a set of four key values:



  • Simplicity

  • Communication

  • Feedback

  • Courage


A project is not a full application, but rather one mod-
ule or working piece of a full application. These four prin-
ciples are based on “The Agile Manifesto,” which has been
adopted by 17 leaders in the field (see http://www.agileAlliance.
org, http://agilemanifesto.org, and Hoffer et al, 2011).
A “whole team” approach is taken in which business
representatives (customers) and technical team members
(programmers) work in a co-located workspace (some-
times called a bullpen) on a daily basis. Emphasis is placed


on interactions among these participants, rather than on the
processes they follow, tools they use, or formal contracts
between developers and clients. Daily, face-to-face conver-
sations among these core team members, rather than docu-
mentation and interviews with subject matter experts,
dominate requirements determination. Team members use
processes utilizing adaptation rather than planning.
Working versions of software, not artifacts, are measures
of progress, and these working components or increments
(pieces of the whole) are produced very frequently.
Proponents suggest that the more engineering approach of
traditional systems development methods fails because it is
not designed to handle the changing requirements (due to
business changes or better understanding of needs) in most
software development activities. Late changes to require-
ments are welcomed by agile methods. In fact, a core prin-
ciple of agile methods is to respond to change rather than
adhere to a plan. Learning occurs through repletion and
readdressing requirements in increments.
Agile methods are similar to other iterative methods,
such as prototyping and RAD, but differ in that cycles for
delivery of new code products are much shorter (in fact,
timeboxed to be weeks not months) and in the very close
collaboration of team members. Emphasis is on working
software over comprehensive documentation. Figure 9.14

Steps Focus
Feasibility
Requirements
Design
Coding
Testing
Documentation
Installation

Functionality

Architecture

Release 1 Release 2

Time

Release 3

FIGURE 9.14 Agile Systems Development Process
Free download pdf