Individuals and interactions

Slides:



Advertisements
Similar presentations
Iteration Planning.
Advertisements

Test-First Programming. The tests should drive you to write the code, the reason you write code is to get a test to succeed, and you should only write.
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
E X treme Programming & Agile Modeling Copyright © 2003 Patrick McDermott UC Berkeley Extension
Processes. Outline Definition of process Type of processes Improvement models Example Next steps… 1.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Alternate Software Development Methodologies
ITEC 370 Lecture 25 Lifecycles. Review Questions? F give prototype demonstration –Testing plan for your software Life cycles –Scrum (Roles, Meetings,
Agile Development and Data With Scrum and TDD Andy Leonard VSTeamSystemCentral.com With thanks to Brian Knight, SQL Server MVP SQLServerCentral.com.
Agile Development.
Agile
Agile Methods and Extreme Programming CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 23, 2007.
Individuals and interactions
Individuals and interactions
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Management 421 Computer Science 350. Overview Project Roles Software Development Process Extreme Programming Management/Developer Interaction in Extreme.
Extreme Programming--a “New” Process Model Extreme Programming-- a “New” Process Model.
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Pair Programming Testing 2, October 14, Administration  Project due Monday 2PM SHARP  Remember all parts of documentation (list of tests, project.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Roles Managers Technical Team Leaders Programmers Customers Database Administrators Instructors.
1 Design and Integration: Part 1 Nuggets about Design vs Project Management.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Microsoft ® Office Access ™ 2007 Training Choose between Access and Excel ICT Staff Development presents:
Agile Modeling Theory. 2 Agile Modeling (AM) AM is a chaordic, practices-based process for modeling and documentation AM is a collection of practices.
Embracing change with Extreme Programming Method Engineering Erik ten Brinke
Project Workflow. How do you do it? -Discussion-
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
LECTURE 38: REFACTORING CSC 395 – Software Engineering.
1 Software Process Models-ii Presented By; Mehwish Shafiq.
Agile Concepts - II “Agile” Estimating & Planning Nupul Kukreja 5 th November, 2014.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Agile
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Today’s lecture Acceptance tests Review of unit tests Pair programming Models and communication Continuous improvement.
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
Extreme Programming (XP) XP is an agile methodology: –aims to be responsive to change Theme running through XP is the importance of communication –amongst.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
Goals for Presentation Explain the basics of software development methodologies Explain basic XP elements Show the structure of an XP project Give a few.
Individuals and interactions
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Extreme Programming Based on and
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Extreme programming (XP) Variant of agile Takes commonsense practices to extreme levels © 2012 by Václav Rajlich1.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
CSC 480 Software Engineering Extreme Programming.
Agile. Processes Waterfall Traditional With prototyping Sprial Agile Dynamic Systems Development Method (DSDM) Scrum Crystal eXtreme Programming (XP)
Interactions. The prey, the pack, and the hunt Your goal is to meet your customer’s needs That goal, and nothing else, is the prey Not throwaway prototypes.
Agile Development Chapter 10 - part 2. Agile Philosophy  A guiding philosophy and set of guidelines for : developing information systems in an unknown,
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
Software Engineering 2004 Jyrki Nummenmaa 1 Why new software methodologies The classic waterfall-model based techniques are strongly based on the.
Extreme Software Engineering A Hands-On Approach From Extreme Software Engineering: A Hands-On Approach Daniel H. Steinberg Daniel W. Palmer.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Lecture #9 Processes to Develop Software in the Cloud.
CS223: Software Engineering
What do you need to know about XP?
Agile and XP Development
Pair Programming.
Agile and XP Development
Coming up: What is Agile?
Individuals and interactions
Agile Development – a new way of software development?
Extreme Programming.
Extreme Programming (and Pair Programming)
Presentation transcript:

Individuals and interactions

The prey, the pack, and the hunt Your goal is to meet your customer’s needs. That goal, and nothing else, is the prey. – Not throwaway prototypes – Not documentation – Not models You will work as a team to obtain your goal.

Today’s lecture Acceptance tests Review of unit tests Pair programming Models and communication

Identifying your prey Extreme Programming offers three ways to identify your goal. 1.User stories 2.Acceptance tests 3.Unit tests SCRUM does necessarily limit us to these three ways, but we will adopt these for this class

Pop quiz on user stories How big should a story be? 3x5” card How many user stories is the customer allowed to generate? As many as desired When can the engineer prioritize the stories? Never. The customer does the prioritization

Acceptance Tests Acceptance tests Review of unit tests Pair programming Models and communication

Acceptance tests and user stories Each user story may have multiple acceptance tests. A single acceptance test validates an aspect of a user story by exercising the system the way that a user would. Acceptance tests tell what the customer will use to judge success. Main benefit of acceptance tests: you know when you can stop developing!

Example tests User Story: Generate a Receipt “As items are entered by the clerk, their name and price are added to a receipt, and the price is added to the subtotal.” PriceLookupPrintReceipt items prices receipt printer

Example tests User Story: Generate a Receipt Unit tests for PriceLookup component Input: 6-pack of beer; Verify: $6.47 Input: milk; Verify: $2.00 PriceLookup PrintReceipt items prices receipt printer

Example tests User Story: Generate a Receipt Unit tests for PrintReceipt component Input: Beer $6.47, Milk $2.00, Beer $6.47 Verify: Receipt lists items and total is $14.94 PriceLookup PrintReceipt items prices receipt printer

Example tests User Story: Generate a Receipt Acceptance test (combines several unit tests) Test: Scan 1 6-pack, 1 milk, 1 6-pack Verify: Receipt lists items and total is $14.94 PriceLookupPrintReceipt items prices receipt printer

About creating acceptance tests Ideally, the customer writes the acceptance tests Acceptance tests are blackbox tests – The test writer doesn’t get to read the tested code Tests should be unambiguous

About running acceptance tests Run acceptance tests at least once a week, preferably more often. Often useful to have an integration machine where you run acceptance tests. – Representative of what the customer would have.

Review of Unit Tests Acceptance tests Review of unit tests Pair programming Models and communication

Pop quiz on unit tests Who writes the unit tests? Programmer When do the unit tests get written? Before writing the application code

Benefits of unit tests Clarifies the task at hand Frees you from writing perfect code (temporarily) Makes reliable refactoring possible

About creating unit tests Unit tests start out as blackbox tests and become whitebox tests – They are first created for non-existent code. – At any time, you can read your (new) application code and revise the test code Exhaustive testing is usually infeasible So use representative testing instead – Typical inputs – Boundary cases

Writing the first test is the hardest. But keep in mind… – “Your test suite is more valuable than your code” – “If you want a good suite of tests next year you must start collecting them today.”

Time to program You only code when the test suite is broken or you are refactoring Your twin goals – Pass the unit tests for today’s user stories – Refactor to keep the bad smells under control

The hunt is not yours alone It’s not your code. It’s the team’s code. – “Egoless programming doesn't work; expand your ego to include everyone's code.” ANYBODY can edit ANY code that has been checked in.

Pair Programming Acceptance tests Review of unit tests Pair programming Models and communication

Pair Programming Two people work together on ONE computer to program – The “driver” is the person at the keyboard – The “co-pilot” is the person watching – Some more “advanced” pair programming practices use two keyboards XP requires every line to be written in pairs SCRUM does not dictate this, but you are free to use it (I recommend that everyone try it for at least an hour)

Pair programming – the driver The driver… controls keyboard and mouse is actively talking to the copilot explains intent of code and where s/he is going

Pair programming – the co-pilot Copilot is not a passenger! Copilots pay attention, watch for mistakes, offer ideas – Talk about and agree upon best course of action – If you can’t agree, then take turns yielding to one another’s preferences At any moment, copilot can request to switch places and become the driver. – Driver can say, “hold on a second” but should switch as soon as possible – You are working as a pair, a team.

Pair programming - principles If someone asks you to pair with him or her and you can, then you must say yes. Code formatting: pick a standard as a team, enforce it, and move on Font size and eyesight: choose a font large enough for the copilot to see, too Take turns pairing with lots of different people If you write code alone, then it must be rewritten. – If you have a brilliant idea when you’re alone, then write it down.

Pair programming - benefits Real-time code reviews Copilot can help to catch implicit assumptions Pair programming takes 15% longer but leads to 15% fewer bugs… a “win” for many projects Ideas and techniques spread throughout the group

Models and Communication Acceptance tests Review of unit tests Pair programming Models and communication

Interacting with the team Periodically communicate your progress – SCRUM meetings – Track your progress with a burndown chart – Use an issue-tracking system for each task and user story Use models judiciously – Draw diagrams to help you reason – Draw diagrams to communicate – But only draw diagrams if it helps your team to get the prey

In agile processes, models… Must provide value Must fulfill a purpose (and no more) Must be understandable Must be as simple as possible Must be sufficiently – accurate – concise – detailed

Not true about models in agile Models equal documentation. Modeling implies a heavyweight process. Modeling freezes the requirements. Models never change. Models are complete. Models must be created with a tool. All developers know how to model properly. Modeling is a waste of time. The data model is the only one that matters.

Tips for agile modeling Don’t let the models distract from the hunt Model iteratively and incrementally Model with other people – Involve stakeholders – Own models collectively – Display models publicly – Create simple content Use the simplest tools

More tips for agile modeling Don't spend time getting every line straight. Follow standards Reuse existing resources Discard temporary models

The prey, the pack, and the hunt Your goal, and nothing else, is to meet your customer’s needs. – Each of these is a means to an end, not an end in itself: – Acceptance tests – Unit tests – Pair programming – Modeling You will work as a team to obtain your goal.