Production Programming in the Classroom Eric Allen, Robert Cartwright, and Charles Reis Rice University {eallen, cork,

Slides:



Advertisements
Similar presentations
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
Advertisements

A little Software Engineering: Agile Software Development C Sc 335 Rick Mercer.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Alternate Software Development Methodologies
NAUG NAUG Knowledge Evening – th February 2007.
 User assignments (product owner)  ‘circle’  1 st sprint: ◦ Scrum Boards (informative workspace)  Product -, release -, sprint -, defect backlog 
Agile Process Models. Prescriptive models don’t work It is unrealistic to not have changes. Why? The Agile Manifesto: Individuals and interactions over.
Agile development By Sam Chamberlain. First a bit of history..
XP – eXtreme Programming A gentle introduction. Cleviton Vinícius Jobson Ronan Thiago Rodrigues.
Agile Requirements Methods CSSE 371 Software Requirements and Specification Mark Ardis, Rose-Hulman Institute October 26, 2004.
Review: Agile Software Testing in Large-Scale Project Talha Majeed COMP 587 Spring 2011.
Extreme Programming Team Members Gowri Devi Yalamanchi Sandhya Ravi.
EXtreme Programming Quick Introduction Daniel Arraes Pereira Eduardo Lourenço Apolinário Ricardo de Oliveira Cavalcanti.
Extreme Programming Mark Steverson. What Is Extreme Programming? ● Extreme Programming (XP) is a lightweight, agile methodology developed by Kent Beck.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Transitioning to XP or The Fanciful Opinions of Don Wells.
Extreme Programming--a “New” Process Model Extreme Programming-- a “New” Process Model.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
A Distance Learning Approach to Teaching eXtreme Programming Chris Murphy, Dan Phung, Gail Kaiser Columbia University.
Chapter 3 – Agile Software Development Lecture 1 1Chapter 3 Agile software development.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Chapter 3 – Agile Software Development Lecture 1 1Chapter 3 Agile software development.
Software Development Landscape
Software Engineering Modern Approaches
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Extreme Programming(XP)
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
Extreme Programming Daniel Baranowski 3/29/06. What is Extreme Programming? An agile development methodology Created by Kent Beck in the mid 1990’s A.
Unified Process versus Extreme Programming. Outline Compare and contrast UP and XP  Processes / Disciplines  Management  Artefacts Risk management.
EXtreme Programming: An Introduction Presentation by: Jon Banta.
1 e X treme P rogramming D. Dranidis September 2000 CITY College.
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.
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
XP – Extreme Programming
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
Chapter 3 Agile Software Development (1/2) Yonsei University 2 nd Semester, 2015 Sanghyun Park.
XP Overview Short Life cycle Risky / Dynamic Requirements Increase developer productivity.
CS3100 Software Project Management Agile Approaches.
Extreme Programming (XP) XP is an agile methodology: –aims to be responsive to change Theme running through XP is the importance of communication –amongst.
DrJava A lightweight pedagogic environment for Java Eric Allen, Robert Cartwright, and Brian Stoler Rice University
Comp 312 Production Programming Lecture 1 Course Overview and Culture Corky Cartwright January 12, 2005.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Lecture 4 – XP and Agile 17/9/15. Plan-driven and agile development Plan-driven development A plan-driven approach to software engineering is based around.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
AGILE XP AND SCRUM © University of LiverpoolCOMP 319slide 1.
Agile Methods Presentation By: Jason Abbett. Definition A process to rapidly develop software Many kinds of agile methods but few are practiced.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
Agenda: Overview of Agile testing Difference between Agile and traditional Methodology Agile Development Methodologies Extreme Programming Test Driven.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
An Extreme Makeover Jill Burkart H. Leonard Liaw Amaris Vigil Andrew Switzky Diana Miranda-Murillo Don Turnbull The University of Texas at Austin.
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Toward Maturity Model for eXtreme Programming Copyright, 2001 © J. Nawrocki, B. Walter, A.. Wojciechowski
Project Management Software development models & methodologies
Continuous Delivery and Quality Monitoring 1 iCSC2016, Kamil Henryk Król, CERN Continuous Delivery and Quality Monitoring Kamil Henryk Król CERN Inverted.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Chapter 3 Agile software development 1 Chapter 3 – Agile Software Development.
Advanced Software Engineering Dr. Cheng
Embedded Systems Software Engineering
CS223: Software Engineering
Planning User stories are written.
Waterfall and Agile Quality Techniques
What do you need to know about XP?
Chapter 3 – Agile Software Development
Chapter 3: Agile Software Processes
Extreme Programming.
Chapter 5: New and Emerging Process Methodologies
Presentation transcript:

Production Programming in the Classroom Eric Allen, Robert Cartwright, and Charles Reis Rice University {eallen, cork,

Missing Part of CS Education Students are not taught to program in a production environment  Projects written from scratch, then discarded  No project maintenance  No real users to consider

Teach Production Programming Students should:  Maintain an existing codebase  Support real customers  Learn effective methodologies

But… Where does the project come from? Who are the customers? How can an instructor manage all this?

Selecting a Project On-campus customers  Ideally, the students themselves Open Source  Free, high quality tools  Easy to gain customers At least one year old, sustainable

Selecting a Methodology Extreme Programming! (XP) Effective methodology in industry  Leading edge practices  Rapid development, reliable products Translates well to classroom

XP: Pair Programming Better Design, Fewer Bugs  Quick development pace Knowledge Transfer  Students pair with experienced developers  Effective against very high turnover

XP: Unit Testing Unit tests for every non-trivial method!  Enforce tests are run before committing Confidence to make changes  Won’t break old functionality “Executable Documentation”  Quickly learn the code

XP: Continuous Refactoring Let students improve any part of the code  Collective ownership: sense of pride  Prevents fragile code Unit tests provide safeguard  Always safe to refactor!

XP: Incremental Development Break down into small tasks  Estimate time-to-completion  Keeps codebase stable Release frequently  Students get feedback from real users  Much more powerful than just grades

But… XP in the classroom? Difficult to apply XP in a course:  Scheduling pair programming time?  Maintaining unit test coverage?  Finding on-site customers?  Managing a work force?

Applying Pair Programming Schedule time to pair program in class  Two lectures, one closed lab per week Allow students to choose pairs  Avoid scheduling conflicts

Ensure Unit Tests are Written Hard to get students in right mindset  Early assignments for writing tests  Emphasize the importance of tests! Test-Driven Development  Write the test first, then the code

Providing On-site Customers Students themselves should be customers  Careful selection of project Discuss new features, specs in class Also support off-campus customers

Course Management Experienced TA’s as Project Managers  Pair program with new students  Sustainable Supervise progress on tasks  Monitor students like employees

SourceForge.net Free open source project hosting Professional Management Tools  Track features/bugs online  Task management  Respond to customers

Open Source Tools JUnit  Framework for writing unit tests Ant  Build tool with XML build scripts  Enforce all tests pass before committing code

Case Study: DrJava Pedagogic IDE developed at Rice University  Used in intro Java courses  Also useful for advanced developers

DrJava: Ideal Candidate Open Source Full unit test coverage  >35% of codebase is test code Students can be customers! Other customers around the world  14+ schools, 10+ countries

DrJava as Course Project Many small projects in pairs  Bug fixes, feature requests from customers Three major projects  JUnit Integration  Configurability  Integrated Debugger

Results, Spring 2002 Mostly successful  High quality code Large projects not completed  Two unfinished, one had a bug  Difficult to estimate  No fixed deadlines: course became low priority

Changes for Spring 2003 Students must log 10 hours per week Emphasize test-first programming!

Conclusion You CAN Teach Production Programming  Extreme Programming works in classroom  Unit tests are a safeguard  Open Source tools