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.

Slides:



Advertisements
Similar presentations
Context Diagram Yong Choi BPA CSUB.
Advertisements

Iteration Planning.
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.
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
Agile Development.
Agile
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Chapter 17: Rapid software development November 3, 2008.
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 Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Remedy, a BMC Software company Storyboarding the User Interface: Blueprint for an Application Shanaz Kanga | Michele Sarko Sr. UI Design Engineer | Manager,
©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.
Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Agile Modeling Theory. 2 Agile Modeling (AM) AM is a chaordic, practices-based process for modeling and documentation AM is a collection of practices.
Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:
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.
1 Software Process Models-ii Presented By; Mehwish Shafiq.
Software Engineering Saeed Akhtar The University of Lahore Lecture 7 Originally shared for: mashhoood.webs.com.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
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.
Software Construction Lecture 18 Software Testing.
Intermediate 2 Software Development Process. Software You should already know that any computer system is made up of hardware and software. The term hardware.
TEST-1 6. Testing & Refactoring. TEST-2 How we create classes? We think about what a class must do We focus on its implementation We write fields We write.
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
Individuals and interactions
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
The Software Development Process
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
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)
Requirement Engineering
CREATING GREAT STANDS: A STEP-BY-STEP GUIDE TO CREATING A TEAM’S MOST VALUABLE TOOL DFA Coaches DoLE Team.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
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.
Requirements capture: Using UML Use Cases David Millard and Yvonne Howard {dem,
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.
Software Development - Methodologies
Software Development.
What do you need to know about XP?
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:

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 1 sweet airbrush!!

Identifying your Prey Extreme Programming offers three ways to identify your goal 1.User stories 2.Acceptance tests 3.Unit tests 2

User Stories (Review) How big should a story be? 3”x5” card How many user stories is the customer allowed to generate? As many as they want When can the engineer prioritize the stories? Never! The customer does the prioritization 3

Acceptance Tests and User Stories Each user story may have multiple acceptance tests A single acceptance test validates an aspect of a user story Exercising the system the way 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!!! 4

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” 5 PriceLookup PrintReceipt items prices receipt printer

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” Unit tests for PrintReceipt component: Input: 6-pack of craft beer; Verify: $8.99 Input: milk; Verify: $2.00 6

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” Unit tests for PriceLookup component: Input: Beer $8.99, Milk $2.00, Beer $ 8.99 Verify: Receipt lists items and total: $

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” Acceptance test (combines several unit tests): Test: Scan one 6-pack, one mile, one 6-pack Verify: Receipt lists items and total: $

Creating Acceptance Tests Ideally, customer writes acceptance tests Acceptance tests are blackbox tests The test writer doesn’t get to read the testbed code Tests should be unambiguous 9

10 FIT Framework Framework for Integrated Test

Running Acceptance Tests Run acceptance tests once a week, preferably more often Often useful to have an integration machine where you run acceptance tests Representative of what customer would have 11

Unit Tests (Review) Who write the unit tests? Programmer! When do unit tests get written? Before writing the application code 12

Benefits of Unit Tests Clarifies the task at hand Frees you from writing perfect code (temporarily) Make reliable refactoring possible 13

Creating Unit Tests Unit tests start out as blackbox tests, become whitebox tests 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 Use representative testing instead Typical inputs Boundary cases 14

Creating Unit Tests Writing the first test is the hardest “Your test suite is more valuable than your code” “If you want a good suite of tests next year, you must being collecting them today” 15

When to Program You only write code when the test suite is broken or if you are refactoring Your twin goals: Pass the unit tests for today’s user stories Refactor to keep things under control 16

“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 17

Benefits of Pair Programming Similar to a real-time code review Copilot can help catch implicit assumptions Pair programming takes 15% longer but leads to 15% fewer bugs (a “win” for many projects) Ideas and techniques spread throughout group 18

Pair Programming: The Driver Controls the keyboard and mouse Is actively talking to the copilot Explains intent of code and where he/she is going 19

Pair Programming: The Copilot Not a passenger!! Pays attention, watches for mistakes, offers ideas Talk about and agree upon best course of action If you can’t agree, then take turns yielding to each other’s preferences At any moment, copilot can request to switch places and drive Driver can say “hold on a second”, but should switch as soon as possible You are working as a pair, a team 20

Principles of Pair Programming If someone asks to pair with you, (and you can), you must say yes (No “playing favorites”) Code formatting: pick a standard as a team, enforce, move on Font size: choose a font large enough for copilot to see Take turns pairing with many different people If you write code alone, then it must be rewritten 21

Interacting with Team Periodically communicate progress E.g., end-of-day Track progress with wiki or other tools Use models judiciously Draw diagrams to help you reason Draw diagrams to communicate Only draw diagrams if it helps your team get the prey 22

Models in Agile Processes Must provide value Must fulfill a purpose Must be understandable Must be as simple as possible Must be sufficiently: Accurate Concise Detailed 23

NOT TRUE about Models in Agile Models = documentation Modeling implies a heavyweight process Modeling freezes requirements Models never change Models are complete Models must be created with a tool All developers must know how to model properly Modeling is a waste of time The data model is the only one that matters 24

Tips for Agile Modeling Don’t let the models distract from the hunt Model iteratively and incrementally Model with other people Stakeholders Collectively (as a team) Display models publicly Create simple content Use the simplest tools 25

More Tips for Agile Modeling Don’t spend time getting things perfect Follow agreed upon standards Reuse existing resources Discard temporary models 26

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 27

Next Steps Final Vision Statement due Friday!! (11/21) No late material will be accepted Midterm due 11/25 No late material will be accepted Homework #6 (Implementation Plan) due 12/03 28