Watch, Follow, &
Connect with Us

Please visit our new home
community.embarcadero.com.

Public Report
Report From: Conference/US/2006/Delphi    [ Add a report in this area ]  
Report #:  32293   Status: Open
Extreme Programming: In a Delphi Context by Rob Park
Project:  Conference Build #:  No
Version:    1 Submitted By:   Christine Ellis
Report Type:  Suggestion / Enhancement Request Date Reported:  8/7/2006 3:15:46 PM
Severity:    Infrequently encountered problem Last Updated: 8/28/2006 1:31:04 PM
Platform:    All platforms Internal Tracking #:  
Resolution: None  Resolved in Build: : None
Duplicate of:  None
Voting and Rating
Overall Rating: (8 Total Ratings)
4.13 out of 5
Total Votes: 16
Description
Extreme Programming: In a Delphi Context by Rob Park
TYPE: Regular Session
LEVEL: All
PREREQUISITES: None.
ABSTRACT: Our objective is to show why utilizing the Extreme Programming development process is so successful at delivering real customer value.  There are so many aspects to Extreme Programming and agile disciplines, that they can sometimes be overwhelming.  We will go through them in a way that not only explains the point to the practice, but also demonstrates how to implement the practice.  To do this we will refer to our own day-to-day practice using index cards, Delphi, and open-source tools to achieve results.

First of all, we don t believe that you ever truly achieve perfection, but what we re about is maintaining an  intention  towards always doing what s right and what s right for the customer.  The concept of the  whole team  is the driving force behind this.  Different members of your team at different times will step up and keep the team on track.  XP teams are very disciplined this way and nothing of what some of the myths of a hack ish approach suggest.

The big picture is contained in release planning.  We plan out work in 2-4 month chunks.  Sometimes management may want a longer-term road map, but outside the window of the next quarter, only high level themes are required and appropriate.  In our case, we have multiple products with multiple projects on the  To Do  list, so we can target what might get worked on when, but plans that far out in advance in the software world really need to be extremely flexible.  They are so likely to change, that we should expect that and allow for it.  Be very careful not to over commit in that timeframe.  What you can commit to is a very rigorous tracking of real functioning product and an extremely low defect rate.  

How are you going to consistently deliver functioning software?  And by consistently we mean often as well.  Generally speaking, the longest we go been releases of software is a month.  For web apps, it s common to release much more frequently than that.  It is important not to  sit on code  and maintain inventory.  The goal is to build the highest priority stories and then release them.  This requires a high level of automated testing in order to have confidence in each delivery.  It also requires you to have very tight feedback loops for every code change.  This is why we use a continuous integration environment.

Continuous integration is a best practice followed by many agile development teams.  At Eclipse Software Systems, we use CruiseControl.NET and Subversion as the drivers of this process.  When code changes are committed to the Subversion repository, CruiseControl automatically detects the check in and immediately runs a build.  We even have a build indicator lamp, an Ambient Orb, that changes color depending on the build s status.

Our automated builds are run using Nant.  Nant is driven by XML-based build scripts.  We can update a code tree from the repository, run fresh Delphi build of 1 or more projects, and we can even run the unit tests via the text runner and immediately report any failures.  It is important to always have builds that can be run from the command line, so that they can be run by a service without user interaction.  This is what allows any build server to function independently of the rest of the development process.

Extreme programmers are very priority driven.  The release plan is composed of stories for the top priority project or theme.  The iteration plan is the top priority stories of the release.  And when test-driving the implementation of a story, we prefer to build top-down in a customer priority order.  We ll go over this priority basis as well as discuss what makes a good  story  in the first place.

We will point out how change control with XP has no budgetary approval process.  As things come up, a new index card goes on the board and it is discuss and prioritized at the next standup meeting.  Standup meetings happen every day.  We answer the basic questions: What did we do yesterday, what are we going to do today, and is anything in our way?

We ll discuss iteration planning as well.  You need to decide on a iteration length.  1, 2, and 3 weeks seem to be the most popular lengths.  1 week iterations work very well for us.  We will discuss estimating stories at the release level and at the iteration level.  We will also go over how this is used to track velocity and how we determine what counts towards the iteration and what doesn t.

We ll also discuss the concept of a customer role.  In our case, we have over 2000 clients, so we ll discuss how we represent the customer.

The  whole team  is another important concept, so no handing things off to QA when you re  done  coding.  Every story needs to be tested to even be accepted and to move to the next.  In fact, we have no QA team.  Rather we all wear programmer and tester and customer hats.  We pair program whenever possible in order to help bring multiple hats to the development.

This presentation also exemplifies the powerful process of test-driven development in a Delphi environment.  We use DUnit as the primary testing driver.  We will also demonstrate how we generally segregate unit test code versus acceptance test code versus production code across Delphi units.

SPEAKER BIOGRAPHY: I have been a software engineer, technical manager, architect, and coach for over 15 years working in multiple languages.  Currently, I am working on multiple Windows applications in Delphi that are used by over 2000 clients nationwide.
Steps to Reproduce:
None
Workarounds
None
Attachment
None
Comments

None

Server Response from: ETNACODE01