CS 521/621: SimSE Lecture on Extreme Programming

Today, we are playing SimSE and learning about extreme programming. First, you'll need to download the game. As long as you have java installed, double clicking the download will start the game.

Before we start playing, there is an instructional video we should watch. (If you want to later, there are two other helpful videos you can watch: the explanatory tool tutorial and the game branching tutorial, but these are not required to start playing.)

Our development team has been hired by the Children's Television Workshop to create the Sesame Street Web portal, where kids can interact with Elmo, Big Bird, Grover, and their other favorite characters, create their own Sesame Street episodes, and watch them, all through their Web browser.

The customer has some general ideas about what exactly they want the system to do, but there are a lot of things they are not sure about yet. The customer has a firm deadline of 1800 clock ticks from today -- they hear that Nickelodian is currently working on something similar, so they want to release first.

Because of the unsure requirements and the strict deadline, management has decided that an Extreme Programming (XP) software development approach is best. XP is an agile development process that emphasizes pair programming, test-driven development, continuous testing, integration, refactoring, and small, frequent releases. Using XP, we can develop and release the most well-defined parts of the system first, and save a lot of the functionality until later, so the customer won't have to flesh out all of the requirements right away. In addition, these small, frequent releases will help the customer to decide where they want to go with the system next. In the past, XP projects have also yielded excellent results in terms of completing on schedule (a critical issue for this project).

In XP, all of development is centered around user stories, short descriptions of the different features of the system. Therefore, to monitor the progress of the project, keep an eye on the user stories artifact.

The most important rules to follow to succeed in this game are:

  1. Always create tests as early as possible, especially before coding (test-driven development).
  2. Do as many development activities in pairs as possible.
  3. Test as often as possible (continuous testing).
  4. Refactor all code.
  5. Involve the customer as much as possible.
These are the most important rules, but if you want, you can read more about XP here: http://www.extremeprogramming.org.

There are a few simplifications made in this game that you should also be aware of:

  1. In reality, XP projects typically have at least 10-12 iterations. In this project, you will have far fewer than that.
  2. XP dictates that only one pair can integrate their code at a time. In this project, multiple people can integrate at once.
  3. Budget is ignored in this game.

Finally, good luck! Remember, the deadline of 1800 ticks is strict. Once 1800 ticks are up, the customer will force you to release whatever your integrated system consists of at that point. You will then be given a game score based on how complete and correct the system is.