Introduction To Systems Analysis and Design:: An Agile, Iterative Approach
Introduction To Systems Analysis and Design:: An Agile, Iterative Approach
Introduction To Systems Analysis and Design:: An Agile, Iterative Approach
Chapter 14
3
Learning Objectives
Describe the elements of the Unified Process (UP)
Compare and contrast the features of Extreme
Programming and Scrum development
Describe the major trends in devices, connectivity,
Internet, and telephone technologies
List and describe the various methods of deploying
application software
List and describe the various elements that enhance
Web applications
Describe the various approaches to developing Rich
Internet Applications (RIAs)
4
Overview
This book has focused on teaching you the
processes and skills associated with a system
development project emphasizing agile, iterative
development using UML
Three very specific system development
methodologies are described in this chapter:
Unified Process (UP), Scrum, and Extreme
Programming (XP)
Additionally, three important trends affecting
system development are discussed: consumer
devices, the distribution of application software,
and the continuing movement toward Web-based
applications
5
Trends in System Development
Methodologies
Throughout this text we have emphasized agile,
iterative development
We have also emphasized traditional project
management techniques (updated for iterative
development) and other widely used and up to date
planning, analysis, design, implementation, and
deployment concepts and techniques
UML models and modeling techniques have been used
throughout
The overall approach used (the book’s methodology) is
very current in this regard, but it is generic
6
Three Current Methodologies
There are many specific system development
methodologies used in practice, and this chapter
covers three influential ones
The Unified Process (UP)
Extreme Programming (XP)
Scrum
These methodologies all use an iterative SDLC
The Unified Process uses UML
Extreme Programming and Scrum are based on agile
principles, but the Unified Process can also be used in
an agile fashion
Many organizations mix and match features of each of
these when creating their own methodology
7
The Unified Process (UP)
Originally developed by Booch, Rumbaugh, and
Jacobson, who previously developed UML at Rational
Software (now part of IBM)
The UP is now widely recognized as a highly influential
innovation in software development methodologies for
object-oriented development using an adaptive
approach
The original version of UP defined an elaborate set of
activities and deliverables for every step of the
development process
More recent versions are streamlined, with fewer
activities and deliverables, simplifying the methodology
Much of the book’s methodology is loosely based on
the Unified Process (in an agile form)
8
The Unified Process
Life Cycle
The Unified Process Life Cycle model includes iterations
and phases (the SDLC in this text is very similar, but left out
the UP phases for simplicity)
Each UP phase is made up of iterations. The phases are
Inception, Elaboration, Construction, and Transition
9
The Unified Process
Disciplines
UP Disciplines – a set of functionally related activities
that combine to enable the development process in a
UP project (each like a core development process):
Business modeling
Requirements
Design
Implementation
Testing
Deployment
Configuration and change management
Project management
Environment
10
The Unified Process
Disciplines in Each Iteration
14
Extreme Programming (XP)
Core Values and Practices
15
Extreme Programming (XP)
Core Values
Communication—one of the major causes of project
failure is a lack of open communication among the
right players at the right time and at the right level
Simplicity—XP includes techniques to reinforce
keeping things simple to make it a standard way of
developing systems
Feedback—as with simplicity, getting frequent,
meaningful feedback is recognized as a best practice
of software development
Courage—developers always need courage to face the
harsh choice of doing things right or throwing away
bad code and starting over
16
Extreme Programming (XP)
XP Practices
Planning—XP planning focuses on making a rough plan
quickly and then refining it as things become clearer. This
reflects the Agile development philosophical dictum that
change is more important than detailed plans
Testing—XP intensifies testing by requiring that the tests for
each use case (story) be written first—before the solution is
programmed
Pair Programming —XP practice in which two programmers
work together on designing, coding, and testing software
Simple Designs —XP conforms to the principles of Agile
Modeling. It accomplishes the desired result with as few
classes and methods as possible and that doesn’t duplicate
code
17
Extreme Programming (XP)
XP Practices (continued)
Refactoring the Code — refactoring is the technique of
improving the code without changing what it does. XP
programmers continually refactor their code to achieve a
simpler design
Owning the Code Collectively —in XP, everyone is
responsible for the code. Collective ownership allows
anyone to modify any piece of code.
Continuous Integration —this practice embodies XP’s idea
of “growing” the software. Small pieces of code—which
have passed the unit tests—are integrated into the system
daily or even more often
On-Site Customer —as with all adaptive approaches, XP
projects require continual involvement of users who can
make business decisions about functionality and scope
18
Extreme Programming (XP)
XP Practices (continued)
System Metaphor —a system metaphor should be easily
understood and well known to the members of the
development team. It can guide members toward a vision
and help them understand the system
Small Releases —consistent with the entire philosophy of
growing the software, small and frequent releases provide
upgraded solutions to the users and keep them involved in
the project
Forty-Hour Week — the exact number of hours a developer
works isn’t the issue. The issue is that the project shouldn’t
be a death march that burns out every member of the team
Coding Standards —developers should follow standards for
coding and documentation
19
XP Activities
Project Activities
Release Activities
Iteration Activities
20
Scrum
Another influential agile, iterative development
methodology based on ideas from Rugby
A Scrum is used to get a ball back into play after a
penalty--it begins quickly, is a very intense effort,
involves the entire team, and usually only lasts for a
short duration
Scrum philosophy is the complete control a team
exerts over its own organization and its work
processes. Software is developed incrementally, and
controls are imposed empirically—by focusing on
things that can be accomplished.
21
Scrum Organization
Product backlog – a prioritized list of user requirements
used to choose work to be done in a Scrum project
Only a few of the high-priority items are worked on at a time
Product owner – the client stakeholder for whom the
system is being built
Responsible for project backlog and priorities
Scrum master – the person in charge of a Scrum
project—similar to a project manager
Scrum team is usually 5 to 9 people
Scrum team sets own goals, organizes self, makes
decisions
22
Scrum Practices
Sprint – a time-controlled mini-project that implements
a specific portion of a system
Firm 30 day time box with specific goal or deliverable
The scope of that sprint is then frozen, and no one can
change it—neither the product owner nor any other users
Sprint backlog defines the scope
23
Scrum Development Process
24
Trends in Technology
Infrastructure
New Client Computing Devices and Applications –
Small, mobile, connected
Device-top application – a computer application that is
built to execute on a local device without requiring a
client/server connection
Free-standing Internet application –a client/server
application that is self-contained and doesn’t require the
use of a Web browser
Browser-based application –a client/server application
that executes locally within the control of a Web browser
25
Trends in Technology
Infrastructure
Internet and Telephone Communications
Internet, the telephone, and television are merging
Long-distance telephone communication and long-
distance Internet communication have very similar
requirements and capability
Internet backbone – the primary data routes
between large, strategically interconnected networks
and routers on the Internet
Last mile – the final leg that delivers connectivity
from the Internet network to the customer
26
Trends in Technology
Infrastructure
Back-End Computing –the server computers that
provide the content—dynamic and static—for all
applications that access servers through the Internet
As more and more client computers try to access a particular
application, the workloads on the servers becomes incredibly
heavy
Several factors are driving the need for large back-end
computing services
Trend toward continuous connectivity to the Internet
Massive amount of data stored—many applications in the world of
commerce keep a history of all the transactions that occur
The consolidation of processing in central locations
27
Data and programs are off the PC and
back in massive data centers
28
Trends in Application Software
Availability
Software as a service (SAAS) – a software delivery
model similar to a utility, in which the application
and its associated data are accessed via the
Internet without locally installed programs
Open-source software – a method of developing,
delivering, and licensing software that makes the
application source code freely available to any
interested developer or client
29
Owning Software vs. SAAS
30
Open
Source
Software
Applications
31
The Web as an Application
Platform – The Evolution
42
Summary (continued)
Another trend is providing software applications
free of charge as open-source software
A final—and extremely important—trend is the use
of the Web as an application platform
Web-based software applications provide APIs so
Web-based applications can share functionality
and even be combined to provide new uses of
Web-based software
Rich Internet Applications (RIAs) allow a Web-
based application to function much like a desktop
application, with multimedia and active user
interactions
43