Using Extreme Programming in Practice: Developing DrJava - A Case Study by Charlie Reis, Study notes of Software Engineering

An insight into the use of extreme programming (xp) in the development of drjava, a pedagogic java ide. The author, charlie reis, shares his experience as a lead developer of drjava, having worked on the project during his undergraduate and graduate studies at rice university and his current phd program at the university of washington. The background of drjava, the benefits of xp, the development process, the team structure, the open-source license, and the tools and management used. It also discusses the challenges faced during the project and the lessons learned.

Typology: Study notes

Pre 2010

Uploaded on 03/18/2009

koofers-user-wh8
koofers-user-wh8 🇺🇸

10 documents

1 / 31

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Using Extreme Programming in
Practice:
Developing DrJava
Charlie Reis
CSE 403 Guest Lecture
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f

Partial preview of the text

Download Using Extreme Programming in Practice: Developing DrJava - A Case Study by Charlie Reis and more Study notes Software Engineering in PDF only on Docsity!

Using Extreme Programming in

Practice:

Developing DrJava

Charlie Reis CSE 403 Guest Lecture

My Background

1998-2002 (^) Undergrad at Rice University 2002- Masters at Rice, Lead DrJava developer 2003-Present UW PhD program (wireless networks, web browser security)

DrJava

DrJava

Pedagogic Java IDE

Simple, interactive, intuitive

Used at dozens of schools around the world

Freely available

Development Team

Professor PhD Student (^) Masters Student Undergrad Undergrad^ Undergrads Comp 312

Open Source License

Make it freely available

Tool and management support

Incorporate code from others

Educational value

Credibility?

Project Complexity

Java with generics (e.g., List)

~400 classes, 50,000 lines of code

Complex

Two JVMs, plus multithreaded GUI

RMI, JDI, Custom Classloaders

Backward compatibility

How would you do it?

Context:

Young project, quickly maturing

Small team (3 to 15), high turnover

Vocal customers (other schools)

Source code available to world

XP / Agile Methods

Set of development practices:

  1. Unit tests / test first
  2. Pair programming
  3. Continuous refactoring
  4. Incremental development
  5. Onsite customer

1. Unit Tests / Test First

Safeguard for code quality

Can't commit without testing

Improves design of program APIs

Think about how to use before building

"Executable documentation"

Knowledge transfer

2. Pair Programming

Two people coding at one machine

“Isn’t that a waste of effort?”

Knowledge transfer

Higher quality code

Stay on task

2. Pair Programming

Getting up to speed

New DrJava developers paired with old

Course projects

Student pairs in Comp 312 ...for DrJava

3. Continuous Refactoring

Anyone could change any DrJava module

Many parts changed over time

Overhaul of indent logic

New approach for configuring options ...for DrJava

4. Incremental Development

Release early and often!

Evolve in manageable amounts

Keep product stable and usable

React quickly to feedback