03 Agile Development
03 Agile Development
Engineering
Chapter 3
Agile Development
Yielding …
Rapid, incremental delivery of software
The development guidelines stress
delivery over analysis and design although
these activates are not discouraged, and
active and continuous communication
between developers and customers.
the process molds to the needs of the people and team, not the other
way around
key traits must exist among the people on an agile team and
the team itself:
Competence. ( talent, skills, knowledge)
Common focus. ( deliver a working software increment )
Collaboration. ( peers and stakeholders)
Decision-making ability. ( freedom to control its own destiny)
Fuzzy problem-solving ability.(ambiguity and constant changes, today
problem may not be tomorrow’s problem)
Mutual trust and respect.
Self-organization. ( themselves for the work done, process for its local
environment, the work schedule)
These slides are designed to accompany Software Engineering: A Practitioner’s
Approach, 7/e (McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 11
Extreme Programming (XP)
The most widely used agile process, originally proposed by Kent
Beck in 2004. It uses an object-oriented approach.
XP Planning
Begins with the listening, leads to creation of “user stories” that
describes required output, features, and functionality. Customer
assigns a value(i.e., a priority) to each story.
Agile team assesses each story and assigns a cost (development weeks. If
more than 3 weeks, customer asked to split into smaller stories)
Working together, stories are grouped for a deliverable increment next
release.
A commitment (stories to be included, delivery date and other project
matters) is made. Three ways: 1. Either all stories will be implemented in a
few weeks, 2. high priority stories first, or 3. the riskiest stories will be
implemented first.
After the first increment “project velocity”, namely number of stories
implemented during the first release is used to help define subsequent
delivery dates for other increments. Customers can add stories, delete
existing stories, change values of an existing story, split stories as
development work proceeds.
These slides are designed to accompany Software Engineering: A Practitioner’s
Approach, 7/e (McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman. 12
Extreme Programming
(XP)
XP Design ( occurs both before and after coding as refactoring is encouraged)
Follows the KIS principle (keep it simple) Nothing more nothing less than the story.
Encourage the use of CRC (class-responsibility-collaborator) cards in an object-
oriented context. The only design work product of XP. They identify and organize
the classes that are relevant to the current software increment. (see Chapter 8)
For difficult design problems, suggests the creation of “spike solutions”—a design
prototype for that portion is implemented and evaluated.
Encourages “refactoring”—an iterative refinement of the internal program design.
Does not alter the external behavior yet improve the internal structure. Minimize
chances of bugs. More efficient, easy to read.
XP Coding
Recommends the construction of a unit test for a story before coding commences.
So implementer can focus on what must be implemented to pass the test.
Encourages “pair programming”. Two people work together at one workstation. Real
time problem solving, real time review for quality assurance. Take slightly different
roles.
XP Testing
All unit tests are executed daily and ideally should be automated. Regression tests
are conducted to test current and previous components.
“Acceptance tests” are defined by the customer and executed to assess customer
visible functionality
refact o ring
p air
p ro g ramming
Release
soft wa re incre m e nt unit t est
proje ct v e locit y com put e d co nt inuo us int eg rat io n
Release
soft wa re incre m e nt
adjust m e nt s f or subse que nt cy cle s
co mp o nent s imp lement ed / t est ed
fo cus g ro up s fo r feed b ack
fo rm al t echnical reviews
p o st mo rt ems