Chapter 4 Agile Development Discussion of Agile Development and Agile Process Models

advertisement

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

Chapter 4

Agile Development

Discussion of Agile Development and

Agile Process Models

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

The Agile Movement (1)

• Prescriptive process models are high on discipline and structure , but with less consideration to the “inequalities” among teams members (human factor).

• “Light” or “Lean” development methods have been around for many years.

• Light methods evolved into Agile movement :

“ an effort to define new development methods to overcome the weakness and stiffness of conventional SE methods ”

Key change : Agile methods should be responsive to changing business requirements, end-user needs, and technology. But, should also be based on good SE principles, concepts, and methods.

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

The Agile Movement (2)

• Agile development places more emphasis on the “ human factor

” and difference among people, the interactions among the team and team self-organization, the interactions with the customer and frequent feedback, and the response to changes throughout the development process.

The values of Agile development: ( Manifesto )

 Individuals and interactions over processes and tools

 Working software over comprehensive documentation

 Customer collaboration over contract negotiation

 Responding to change over following a plan

“That is, while there is value in the items on the right, we value the items on the left more.”

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

What is Agility?

Agility calls for:

• Effective (rapid and adaptive) response to change

• Effective communication and collaboration among all stakeholders at all levels

• Organizing a team so that it is in control of the work performed

• Recognition that planning is uncertain and planning must be flexible

• More customer involvement in the development process

Yielding …

Rapid delivery of working increments of software

See the 12 principles defined by the Agile Alliance, page 73.

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

What is an Agile Process?

An Agility process:

• Is driven by customer descriptions of what is required of the software (scenarios)

• Recognizes that plans are short-lived

• Develops software iteratively with a heavy emphasis on construction activities

• Delivers multiple ‘working software increments’

• Adapts as changes occur

• Seeks constant customer feedback

Key characteristics:

• Must be adaptable

• Must be incremental

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

Concerns with an Agile Process

• May not be applicable to large and complex projects

• May not be suitable to all people

• Resulting products may not be scalable into “enterprise-wide systems”

• Resulting products may not be scalable to meet future business needs

• Others?

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

The Human Factor

• The “People Factor” is the center of an Agile process.

• The process “molds” to the team needs, rather than the reverse.

• An effective team should have these characteristics:

– Competence

– Common goal

– Collaboration

– Decision-making ability

– Fuzzy problem-solving ability (ambiguity)

– Mutual trust and respect (jelled team)

– Self-organization (work tasks, process, work schedule)

Note that most characteristics are derived from conventional SE processes.

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

Agile Process Models

All Agile process models conform to the Agile Development

Manifesto and Principles.

• Extreme Programming (XP)

• Adaptive Software Development (ASD)

• Dynamic System Development Method (DSDM)

• Scrum Method

• Crystal (family of processes for different types of projects)

• Feature Driven Development

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

Extreme Programming (XP) (1)

• The most widely used agile process, originally started in

1980s, and documented by Kent Beck in 1999

• It uses OO approach.

• XP is based on Planning, Design, Coding, and Testing activities

• XP Planning (similar to use-case approach)

– Begins by creating “ user stories ” with customer values

– Agile team assesses each story and assigns a cost

– Stories are grouped to for a deliverable increment

– Agile team prioritizes grouped stories

– A commitment is made on delivery date

– After the first increment, “ project velocity ” is used to help define subsequent delivery dates for other increments

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

Extreme Programming (XP) (2)

• XP Design ( there is no true design!

)

– Follows the KIS principle

– It is guidance for implementation

– Encourages the use of CRC cards (see Chapter 8)

– For difficult design problems, suggests the creation of “ spike solution ” - a partial design prototyping

– Encourages “ refactoring ” - an iterative refinement of the

“internal” program design after the code is written

• XP Coding

– Recommends building unit tests for a store before coding commences

– Encourages “ pair programming ” - better problem solving and quality assurance

– Requires continuous code integration (daily)

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

Extreme Programming (XP) (3)

• XP Testing

– Unit tests are developed before coding!

– All unit tests are executed daily (smoke/integration testing)

– Unit test evolve to test suits

– “ Acceptance tests ” are defined by the customer (derived from user stories) and executed to assess customer visible functionality

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

Extreme Programming (XP) (4)

simple design

CRC cards spike solut ions prot ot ypes user st ories values accept ance t est crit eria it erat ion plan ref act oring

Release sof t w ar e incr ement pr oj ect v elocity com put ed unit t est cont inuous int egrat ion acceptance test ing pair programming

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

Adaptive Software Development (1)

• ASD is originally proposed by Jim Highsmith for developing complex software systems

• Its focus is human collaboration and team self-organization

• Life cycle is Speculation , Collaboration , and Learning

• ASD distinguishing features:

– Mission-driven planning

– Component-based focus

– Joint Application Development/Design/Requirements (JAD/JAR)

– Explicit consideration of risks

– Emphasizes collaboration for requirements gathering

– Emphasizes “learning” throughout the process

– Formal technical reviews

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

Adaptive Software Development (2)

adapt ive cycle planning uses m ission st at ement pro ject co nst raint s b asic requirem ent s t i m e - b o x e d r e l e a se p l a n

Requirement s gat hering

J A D m i n i- sp e c s

Release sof t w ar e incr ement adj ustm ent s f or subsequent cy cles component s implement ed/ t est ed f o c u s g r o u p s f o r f e e d b a c k f o r m a l t e c h n i c a l r e v i e w s post mort ems

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

Dynamic System Development Method

• Promoted by the DSDM Consortium ( www.dsdm.org

)

• Developed for projects that have tight time constraints

• Utilizes incremental prototyping (similar to RAD)

• The process is called DSDM Life Cycle

• DSDM distinguishing features (principles):

– Active user involvement is imperative

– DSDM teams must be empowered to make decisions

– The focus is on frequent delivery of products

– Fitness for business purpose is the essential criterion for acceptance of deliverables

– Iterative and incremental development is necessary to converge on an accurate business solution

– Requirements are baselined at a high level

– Testing is integrated throughout the life-cycle

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

SCRUM

• Agile process that focuses on “ process patterns ”, small working teams , and well-defined work increments .

• Distinguishing features:

– Development work is partitioned into “ packets ”

– Short-term work (30 days time-box) in stable environment

– Testing and documentation are on-going as the product is constructed

– Work occurs in “ sprints ” and is derived from a “ backlog ” of existing requirements

– Meetings are very short and sometimes conducted without chairs

– “Demos” are delivered to the customer with the time-box allocated

– Frequent customer feedback

– Heavy on communication

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

Other Agile Process Models

Crystal is a family of process models that allow “maneuverability” based on problem characteristics, face-to-face communication, and “reflection workshops” to review the work habits of the team.

Feature Driven Development (FDD) emphasizes “features” as a client-valued function that can be implemented in two weeks or less. A features list is created and “plan by feature” is conducted.

Agile Modeling (AM) emphasizes modeling and suggests a set of agile modeling principles to guide the developer during analysis an design tasks.

Please read the chapter for more details.

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

Suggested Problems

Try to work problems 1, 2, 3, 4, 5, 8, 9, 11, and 12 from

Chapter 4, page 93.

No submission is required for practice assignments.

Work it for yourself!

CS 3610: Software Engineering – Fall 2009 Dr. Hisham Haddad – CSIS Dept.

Last Slide

End of chapter 4

Download