What is Presenter First?
Presenter First (PF) is a technique for organizing source code and development activities to produce fully tested applications from customer stories using Test-Driven Development. Though it can be applied in a variety of settings, it is most often used in GUI applications.
”I want to thank you for the Ron Jacobs interview and for posting the Presenter First white paper online. The pattern was an important element in getting a recent project off the ground and I have to give you guys a lot of credit for improving the quality of the code we are writing.”
» Brooke Hamilton, Principal Software Engineer, FM Global
The core idea of Presenter First came when Michael Marsiglia (Atomic Object) and Brian Harleton (X-Rite) were working on an application team at X-Rite. The pain they felt on adapting a large GUI application suite to the needs of a major customer drove them to create what later developed into and became known as Presenter First. David Crosby worked with Mike and Brian, wrestled with the problems of triad composition and instantiation, and refined the process and motivations for building Presenter First style. The Burke Porter Dyno Host project was the first large project done in Presenter First style from inception.
“Big, Complex, and Tested? Just Say ‘When’”
Appeared in Better Software, February 2007
“Presenter First: Organizing Complex GUI Applications for Test-Driven Development”
The definitive technical description of Presenter First from the Agile International Conference, 2006.
Jump to our Papers page to read the abstract or open the PDF here.
Complete source code for the Ruby Contact Manager example cited in the Better Software paper.
Simple Java example of Presenter First that illustrates the structure of a simple triad – uses jmock and junit for testing.
C# Presenter First example – VS2003 project for a sliding puzzle game
Objective C/Cocoa Presenter First example – Simple contact manager application
Java Presenter First + Adapter example – Java (ant-only and/or IntelliJ) Swing application that demonstrates the Adapter pattern extension to Presenter First, including how we can use an Adapter to encapsulate the usage of rich GUI library components via their built-in data bindings.
[ZIP] – Source and build files
[JAR] – Compiled executable jar of the example. “java -jar AdapterExample.jar” to run.
The original paper on Presenter First was not formally published. It describes the core idea and many of the advantages of using this technique.
Visual Studio VB macros for MVP navigation in C# projects (includes a Test file creator).
Christopher Atkins’ approach to PF in ASP.NET: Presenter First with POA
A Modeling Tool for the Presenter First Pattern by Brooke Hamilton of FM Global
Creating a DSL for Presenter First – Brooke also provides an interesting write-up on his extension of Presenter First and how to describe the pieces using a succinct DSL
Copyright © Atomic Object LLC. — Grand Rapids +1 616 776 6020 — Detroit +1 313 444 6010 — Contact Us