Agile Methods

40
1 University of Sunderland CIFM03 Lecture 6 Agile Methods CIFM03 Lecture 6

description

Agile Methods. CIFM03 Lecture 6. What is Agile Software Development?. late 1990's several methodologies gained increasing public attention. Theses methodologies had a combination of old and new ideas and/or transmuted old ideas. These common threads and ideas include: - PowerPoint PPT Presentation

Transcript of Agile Methods

Page 1: Agile Methods

1University of Sunderland CIFM03 Lecture 6

Agile Methods

CIFM03

Lecture 6

Page 2: Agile Methods

2University of Sunderland CIFM03 Lecture 6

What is Agile Software Development?

• late 1990's several methodologies gained increasing public attention. Theses methodologies had a combination of old and new ideas and/or transmuted old ideas. These common threads and ideas include:

• Close collaboration between the programmer, team and business experts

• Face-to-face communication (considered to be more efficient than written documentation)

• Frequent delivery of new deployable business value

Page 3: Agile Methods

3University of Sunderland CIFM03 Lecture 6

• Cohesive and self-organizing teams• Ways of crafting the code and the team such

that the inevitable requirements change did not result in crises.

What is Agile Software Development?

Page 4: Agile Methods

4University of Sunderland CIFM03 Lecture 6

• The originators and practitioners of these methodologies identified what these methodologies had in common;

• They coined the word “Agile" to name the union of these methods;

• And, they developed the Manifesto for Agile Software Development.

What is Agile Software Development?

Page 5: Agile Methods

5University of Sunderland CIFM03 Lecture 6

The Manifesto for Agile Software Development

Here is the statement of shared development values that they identified:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

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.

Page 6: Agile Methods

6University of Sunderland CIFM03 Lecture 6

Implementation of the Manifesto Principles

• http://www.agilemanifesto.org/principles.html

• Many new Agile projects started • some succeeded and some failed• There were successes in which business

people and technical people declared there love for the project approach

• This was the way they wanted software development done

• And successful projects spawned enthusiasts.

Page 7: Agile Methods

7University of Sunderland CIFM03 Lecture 6

The Agile Alliance

• The Agile Alliance was born spawned:

• To satisfy the customer through early and continuous delivery of valuable software

• http://www.agilealliance.org/home

Page 8: Agile Methods

8University of Sunderland CIFM03 Lecture 6

The Agile Alliance

• The Agile Alliance exists to help more Agile projects succeed and to help the enthusiasts start Agile projects.

Page 9: Agile Methods

9University of Sunderland CIFM03 Lecture 6

• Emphasises:

• Face-to-face communication,

• Visits to a users group and discusions with peers about their experiences of Agile methods

• http://www.agilealliance.org/userGroups/index

Agile Alliance

Page 10: Agile Methods

10University of Sunderland CIFM03 Lecture 6

History

• http://www.agilemanifesto.org/history.html

Page 11: Agile Methods

11University of Sunderland CIFM03 Lecture 6

  Agile Database Techniques

• Agile Data (AD) methodology (Data Driven):– define strategies that apply in a wide variety of situations

so IT professionals work together effectively on the data aspects of software systems

• This gives a one size does not fit all methodology • And a collection of philosophies that will enable IT

professionals to work together effectively on the data aspects of software-based systems

Page 12: Agile Methods

12University of Sunderland CIFM03 Lecture 6

Agile Modelling

• A practice-based methodology for effective modelling and documentation of software-based systems

• A collection of values, principles, and practices for modelling software that can be applied on a software development project in an effective and light-weight manner (without overburdening planning and documentation)

• It is proposed that Agile models are more effective than traditional models because they are just barely good enough: perfection is not necessary

• Agile modelling is applicable to requirements collection and analysis, architectural design and detailed design

Page 13: Agile Methods

13University of Sunderland CIFM03 Lecture 6

Adaptive Software Development (ASD)

• ASD practices are driven by a belief in continuous adaptation:

• Using a different philosophy and a different life cycle-geared to accepting continuous change as the norm

• Replacing the static plan-design-build life cycle by a dynamic Speculate-Collaborate-Learn life cycle

• Applying a life cycle dedicated to continuous learning and oriented to change, re-evaluation, predicting (speculating on) an uncertain future

• And, enabling an intense collaboration among developers, management, and customers

Page 14: Agile Methods

14University of Sunderland CIFM03 Lecture 6

Adaptive Software Development (ASD)

• The Speculate-Collaborate-Learn life cycle:

Page 15: Agile Methods

15University of Sunderland CIFM03 Lecture 6

Speculate

1.Project Initiation, to set the project's mission 2.Establish the Time-Box for the entire project 3.Decide on the number of Iterations through project

development and assign a time-box to each one 4.Develop a theme or objective for each of the

Iterations 5.Developers and customers both assign features to

each Iteration

Page 16: Agile Methods

16University of Sunderland CIFM03 Lecture 6

Collaborate

• The Technical Team delivers working software

• The Project Managers facilitate collaboration and concurrent development activities

Page 17: Agile Methods

17University of Sunderland CIFM03 Lecture 6

Learn

• There are FOUR general categories of things to learn about at the end of each development iteration:

• Resultant Quality from the customer's perspective • Resultant Quality from a technical perspective • The Functioning of the delivery team and the

Practices team members are utilizing • The project's Status

Page 18: Agile Methods

18University of Sunderland CIFM03 Lecture 6

An ASD life cycle’s Six basic characteristics

1. Mission focused

2. Feature based

3. Iterative

4. Time-boxed

5. Risk driven

6. Change tolerant

Page 19: Agile Methods

19University of Sunderland CIFM03 Lecture 6

The Crystal Approach

• A family of human-powered and adaptive, Ultralight, Shrink-to-fit software development methodologies:

• A "Human-powered" approach - focused on achieving project success through enhancing the work of those involved (other methodologies might be process-centric, or architecture-centric, or tool-centric, but Crystal is people-centric)

• A Ultralight approach - whatever the project size and priorities, a Crystal-family methodology for the project will work to reduce the paperwork, overhead and bureaucracy to the minimum that is practical for the parameters of that project

• A "Shrink-to-fit - start with something seemingly small enough, and work to make it smaller and better fitting

• Crystal - Non-jealous, that is, allows substitution of similar elements from other methodologies

Page 20: Agile Methods

20University of Sunderland CIFM03 Lecture 6

• Crystal combines a self-adapting family of Shrink-to-fit, Human-powered software development methodologies based on the understanding that:

• Every project needs a different set of policies and conventions, or methodology

• The workings of the project are sensitive to people issues, and improve as the people issues improve, individuals get better, and their teamwork gets better

• Better communications and frequent deliveries communication reduce the need for intermediate work products

Crystal

Page 21: Agile Methods

21University of Sunderland CIFM03 Lecture 6

Feature-Driven Development (FDD)

• FDD starts with creation of a domain object model in collaboration with domain experts

• Using information from modelling and from requirements activities the developers create a features list

• Then a rough plan of development is drawn up and responsibilities are assigned

• Then small dynamically formed teams develop the features by repeatedly performing design and build iterations that last no longer than 2 weeks

Page 22: Agile Methods

22University of Sunderland CIFM03 Lecture 6

At this point Dynamic Systems Development Method (DSDM)

• The DSDM Lifecycle:

• DSDM – is more a framework than a method

• The Project Process has 7 phases, which are repeated during the life-cycle of the project (hence making DSDM an iterative and incremental method)

Page 23: Agile Methods

23University of Sunderland CIFM03 Lecture 6

DSDM

1. Pre-Project phase -- ensures that only the right projects are started and that they are set up correctly.

2. Feasibility Study -- assessment of whether DSDM is the right approach for the project and a definition of the problem, assessments of the costs and assessment of the technical feasibility of delivering a system.

Page 24: Agile Methods

24University of Sunderland CIFM03 Lecture 6

DSDM

3. Business Study -- the prime focus of attention is on the business processes affected and their information needs. Using a series of facilitated workshops to quickly gain consensus as to the priorities of the development.

4. Functional Model Iteration -- refining the business-based aspects of the system.

5. Design and Build Iteration -- is where the system is engineered.

Page 25: Agile Methods

25University of Sunderland CIFM03 Lecture 6

DSDM

6. Implementation -- covers the cutover from the development environment to the operational environment.

7. Post-Project -- this phase keeps the solution operating effectively.

Page 26: Agile Methods

26University of Sunderland CIFM03 Lecture 6

Underlying Principles

1. Clear definition of roles and responsibilities in the project

2. Active user involvement is imperative with 4 defined business roles

3. The team must be empowered to make decisions

4. The focus is on frequent delivery of products, which are defined in terms of purpose and quality and who's involved in the delivery

Page 27: Agile Methods

27University of Sunderland CIFM03 Lecture 6

1. Fitness for business purpose is the essential criterion for acceptance of deliverables

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

3. All changes during development are reversible

4. Requirements are baselined at a high level

5. Testing is integrated throughout the life-cycle

6. Collaboration and cooperation between all stakeholders is essential • http://www.agilealliance.org/programs/roadmaps/Roadmap/dsdm/

dsdm_index.htm

Page 28: Agile Methods

28University of Sunderland CIFM03 Lecture 6

Lean Software Development

• In the last 25 years, lean thinking has – had a tremendous global economic impact

– transformed how many industries operate by changing the way they think about their work and their people.

• Lean works because it produces more wealth by:– eliminating waste,

• enabling any given investment of people and productive resources to produce more value while providing more meaningful, fulfilling work to the participants.

• Lean Software Development applies lean thinking to software development contexts.

Page 29: Agile Methods

29University of Sunderland CIFM03 Lecture 6

Lean

• not about what a team does – practices – it is about how a team decides what to do and when to do it.

• starts at the level of principles derived from Deming • The application of lean thinking principles is different in each

domain and it maps differently to different software development contexts as well.

• Practices appropriate to lean manufacturing or lean construction will not necessarily be appropriate to software development.

Page 30: Agile Methods

30University of Sunderland CIFM03 Lecture 6

Principles (adapted to the software context) are:

1. Eliminate Waste - If the customer does not value it or if it slows down rapid delivery to the customer, it is waste. Don't do it.

2. Amplify Learning - Development is about discovery and feedback. Deliver in small batches to minimize uncertainty and permit the customer to steer.

3. Decide as Late as Possible - Delay commitment. Keep options open as long as possible to base decisions on the best possible information.

Page 31: Agile Methods

31University of Sunderland CIFM03 Lecture 6

1. Deliver as Fast as Possible - The best measure of organizational maturity is the speed with which it can repeatedly and consistently deliver value.

2. Empower the Team - Teams should design their own processes. Provide the training and leadership they need.

3. Build Integrity In - Concurrent development enables rich communication, the essential ingredient for system integrity.

4. See the Whole - Decomposition leads to sub-optimization. Focus on overall results.

Page 32: Agile Methods

32University of Sunderland CIFM03 Lecture 6

• Lean Software Development is not a development methodology but rather a way to think about whatever approach a team uses.

• Lean Software Development thinking tools support team decisions about which practices are appropriate in their unique context. Agile methods, including Extreme Programming, Scrum, DSDM, and Adaptive Software Development, are all consistent with the way Lean Software Development applies lean thinking to developing software.

• http://www.agilealliance.org/programs/roadmaps/Roadmap/lean/lean_index.htm

Page 33: Agile Methods

33University of Sunderland CIFM03 Lecture 6

Scrum

• Scrum - an agile, lightweight process that can be used to manage and control software and product development.

• Wrapping existing engineering practices, including Extreme Programming, Scrum generates the benefits of agile development with the advantages of a simple implementation.

• Scrum significantly increases productivity while facilitating adaptive, empirical systems development.

Page 34: Agile Methods

34University of Sunderland CIFM03 Lecture 6

Test-Driven Development

• craft of producing automated tests for production code, and using that process to drive design and programming.

• For every tiny bit of functionality in the production code, you first develop a test that specifies and validates what the code will do.

• You then produce exactly as much code as will enable that test to pass. Then you refactor (simplify and clarify) both the production code and the test code.

Page 35: Agile Methods

35University of Sunderland CIFM03 Lecture 6

In recipe format the steps of TDD are:

1. The first step is to quickly add a test, basically just enough code to fail.

2. Next you run your tests, often the complete test suite although for sake of speed you may decide to run only a subset, to ensure that the new test does in fact fail.

3. You then update your functional code to make it pass the new tests.

4. The fourth step is to run your tests again. If they fail you need to update your functional code and retest.

5. Now look for and remove duplication; clean up the test code (extract common setup into the fixture/setUp(); split fixtures if they become non-cohesive; etc.)

Page 36: Agile Methods

36University of Sunderland CIFM03 Lecture 6

• The above sequence is repeated continuously throughout the programming process.

• Each cycle has a duration of minutes, if you're not capable to fix a failing test within minutes, then throw away the test and the code that you wrote to satisfy the test and design a simpler test.

Page 37: Agile Methods

37University of Sunderland CIFM03 Lecture 6

XBreed

• XBreed is the product of mixing SCRUM, XP and Alexanderian ideas.

XBreed is the result of developing multiple applications and shared components as fast as humanly possible.

Combining Scrum and XP is very natural: • Scrum provides a solid management framework, while XP provides a basic but

complete set of engineering practices. The result is a lean but very mean (very effective) way to run software projects. In addition, Scrum practiced at the application team level, and provided a Shared Resources Team is involved, can lead to reusability.

• http://www.agilealliance.org/programs/roadmaps/Roadmap/xbreed/xbreed_index.htm

Page 38: Agile Methods

38University of Sunderland CIFM03 Lecture 6

XP - eXtreme Programming

• Extreme Programming is a discipline of software development based on values of :– simplicity, – communication, – feedback, – courage.

• Brings whole team together in the presence of simple practices, with enough feedback to enable the team to see where they are and to tune the practices to their unique situation.

Page 39: Agile Methods

39University of Sunderland CIFM03 Lecture 6

Authors

• Mike Beedle• Arie van Bennekum• Alistair Cockburn• Ward Cunningham• Martin Fowler• Jim Highsmith etc• http://agilemanifesto.org/authors.html

Page 40: Agile Methods

40University of Sunderland CIFM03 Lecture 6

The new methodology

• Rapidly growing interest in agile (aka "lightweight") methodologies.

• Alternatively characterized as an antidote to bureaucracy or a license to hack they've stirred up interest all over the software landscape.

• reasons for agile methods, focusing not so much on their weight but on their adaptive nature and their people-first orientation.

• summary and references to the processes in this school and consider the factors that should influence your choice of whether to go down this newly trodden path.

• http://www.martinfowler.com/articles/newMethodology.html