fundamentals of agile

13
Fundamentals of Agile Zulfikar Karakaya

Upload: zulfikarakaya

Post on 22-Jul-2015

191 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Fundamentals of Agile

Fundamentals of Agile

Zulfikar Karakaya

Page 2: Fundamentals of Agile

Agile 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

Page 3: Fundamentals of Agile

The Twelve Principles of Agile Software

• Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

• Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.

• Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

• Business people and developers must work together daily throughout the project.

• Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

• The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

• Working software is the primary measure of progress.

• Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

• Continuous attention to technical excellence and good design enhances agility.

• Simplicity--the art of maximizing the amount of work not done--is essential.

• The best architectures, requirements, and designs emerge from self-organizing teams.

• At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Page 4: Fundamentals of Agile

Overview of Agile Process

from the book «Agile Coaching»Rachel Davies

Liz Sedley

Page 5: Fundamentals of Agile

Agile Approaches

• Crystal (including Crystal Clear)

• DSDM

• Extreme Programming (XP) - focus on technical practices

• Feature Driven Development

• Kanban

• Lean

• Scrum - focus on maximizing value and management practices

• Team Software Process (TSP)

• Unified Process (e.g., RUP, AUP, OUP)

Page 6: Fundamentals of Agile

What is Agile?

Agile drives continous improvement by repeatedly inspecting andadapting the working process

• Works emprically

• Reduces complexity

• Handles change

Page 7: Fundamentals of Agile

Agile development principles

Eliminate waste : Automate any repetitive task, like acceptance testing or product build

Regular, rapid feedback : Make small changes and test/integrate/build immediately and forimmediate feedback work by pair (explained in detail next)

Integrate early : Difficulty of integrating new code grows exponentially with size of change

Code ownership : The team develop code. Work together, agree common standarts. Avoidstrong code ownership, it would be good weak or collective ownership. (martin fowler's code ownership article)

Emerge design : Avoid over-engineering, only design and build what is required today

Page 8: Fundamentals of Agile

Regular, rapid feedback

Regular, rapid feedback increases code quality by :

Encouraging small, incremental code changes

Discouraging the ‘Works on my machine’ mentality

Making merging easier

Visualizing code quality and shared coding standarts

Focusing Team on writing working software

Validating that the product is shippable

Page 9: Fundamentals of Agile

How can we get regular, rapid feedback

Test-driven development builds a test framework before the code is written

Pair-programming provides feedback as the code is written

Automated function or acceptance testing feeds back as the feauturesgrow

Continous integration ensures functioning builds and tests integration

Page 10: Fundamentals of Agile

Some Other Agile Concepts

Adaptive Planning (Plan is nothing, planning is everything)

Prioritization (In order to get maximum bussiness value asap)

Inspect and Adapt (Do retrospective meetings and get results in action)

Empirical process (To manage and reduce complexity and frequentchanges)

Test Early (Do not wait a formal QA cycle, test it in development phase)

Definition of Done (When the product is done?)

Page 11: Fundamentals of Agile

http://www.coverity.com Development Testing for Agile Enterprises - Helping Teams Maximize Velocity

Page 12: Fundamentals of Agile

Why agile ?

• Agile development is popular, but that's no reason to use it. The real question: will agile development make your team more successful?

• Success is usually defined as delivering on time, under budget, and as specified. That's a flawed definition. Many late projects are huge successes for their organizations, and many on-time projects don't deliver any value. Instead, think in terms of organizational, technical, and personal success.

• Agile development is no silver bullet, but it is useful. Organizationally, agile delivers value and reduces costs; technically, it highlights excellence and minimal bugs; personally, many find it their preferred way to work.

http://www.jamesshore.com/Agile-Book/why_agile.html

Page 13: Fundamentals of Agile

zulfikarakaya.blogspot.com.tr

tr.linkedin.com/in/zulfikarakaya