25
Agile Development with C# Paweł Jarosz, [email protected] Cracow University of Technology, Poland Jyvaskyla University of Applied Sciences, February 2009

Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

Agile Development with C#

Paweł Jarosz, [email protected]

Cracow University of Technology, Poland

Jyvaskyla University of Applied Sciences, February 2009

Page 2: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

Paweł Jarosz – who am I?

● M.Sc. of Applied Physics (Cracow University of Technology, Poland)

● B.Eng. of Information Technology (Jyvaskyla University of Applied Sciences, Finland)

● Ph.D. in progress ... (Methods of Artificial Intelligence)

● Teaching and research assistant at CUT● 01.2007-05.2008 – Project Manager at

GridwiseTech (www.gridwisetech.com)

Page 3: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

Plan of the lecturesMonday 13.00-15.30

● The manifesto of the Agile Alliance● eXtreme Programming● Agile planning

Tuesday 16.30-19.30● UML● Symptoms of bad project● Design Patterns● Test Driven Development

Friday 11.00-13.30● Refactoring● Principles behind the Agile Manifesto

Page 4: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

1. The Manifesto of the Agile Alliance

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 5: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

Individuals and interactions

● People are most important parameter deciding on success

● Average programmers cooperating with each other, are better the programmers geniuses which cannot collaborate

● The team is more important than tools. First create the team, and them make them create the environment

Page 6: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

Working software

● The team should create and keep the short document describing the working software. Not more than 20 pages and it should concern only the most important issues.

● Transfer of knowledge to the new team members should be based on hard-working not just “read that documents”

● “Do not work on documents, unless you need them at the moment”

● Source code should be the best documentations

Page 7: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

Customer collaboration

● Creating the software is not selling the product in the market

● Forget about delivery to customer final and working system after some time

● Meet with the customer regularly and possibly often. Show him the software, the problems, ask the questions

Page 8: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

Responding to changes

● Creating the schedule remember to make it flexible

● Remember that requirements changes (unfortunately)

● You cannot precisely estimate the time of all activities

● Create the detailed schedules for the coming week, and general one for the following 3 months and overview of what we would like to get at the end of the project

Page 9: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

2. Extreme Programming

Page 10: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

XP practices

● All the team– Client is the team member and work with the team

● User stories– The part of requirements written as the part of

discussion. Include the priority, costs.– Team implements the user stories

Page 11: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

XP practices

● Small releases– Client should receive working release each two weeks.– Iteration plan – plan for the next 2 weeks– Release plan – plan for the next 3 months–

● Acceptance tests– Check if implemented functionality fulfill the user

story (tools, script languages)

Page 12: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

XP practices

● Pair Programming– Two programmers are working together at one

workstation. – Only one member of such pair is responsible for

coding– The second one is watching, looking for bugs and has

wider view.

Page 13: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

XP practices

● Test Driven Development– First test, then code–

● Same speed– It is a marathon not a sprint– The team cannot work after hours

● Open workspace– Team should work together, discuss and continously

exchange the thoughs

Page 14: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

XP practices

● Planning game– Create the user stories, estimate costs, prioritize

● Collective Code ownership– No programmer is personally resposnible for any piece

of code,– Programming pair can download any piece software

and work on it

● Continuous integration● Often builds (a few during a day)

Page 15: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

XP practices● Simple project

– Search for the simplest solutions– Once and only once

● Refactoring– Eliminating small bugs, mess, smells

Page 16: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

Agile planning

● User stories → points● Splitting, merging and Velocity● Priority ● Release planning● Iteration planning● Acceptance tests and “Done” meaning● Task planning● Measurement and management

Page 17: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

Task

● Make 3-4 persons teams● Set one person as a customer● Discuss the project “Video rental company”● Decide on user stories, think about points

priority

● Based on imagined velocity, plan next iteration – choose the user stories, plan and divide the tasks.

Page 18: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

3. Test Driven Development

Page 19: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

Test Driven Development

1. DO NOT CODE unless you create unit tests

2. Do not write unit tests more than for checking code correctness

3. Do not write more code than needed to pass existing tests

Page 20: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

TDD Example

● Bank– Account

● Deposit(float amount)● Withdraw(float amount)● TransferFunds(Account dest, float amount)

Page 21: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

4. Principles behind the Agile Manifesto

Page 22: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

Principles behind the Agile Manifesto

● 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.

Page 23: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

Principles behind the Agile Manifesto

● 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

Page 24: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

Principles behind the Agile Manifesto

● 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

Page 25: Agile Development with C#riad.pk.edu.pl/~pjarosz/agile/agile11.pdf · Plan of the lectures Monday 13.00-15.30 The manifesto of the Agile Alliance eXtreme Programming Agile planning

Principles behind the Agile Manifesto

● 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.