I just finished writing two proposals for Agile 2010. As usual, I asked my friends for feedback (through Twitter.)
Since the conference’s site requires registration and some of my friends don’t have an account, I’m blogging about my proposals, hoping to get some feedback (thanks Jonathan for the suggestion!)
As a side (and funny) note, this is what Rémy said about it:
dood, a longer feedback loop because of mandatory registration ? How agile is that :p
First proposal, co-presenting with Ted Young:
Fluent Interfaces: Improving Specification Readability in Plain-Old Java
In Test-Driven Development the tests are the specification of the behavior to create. A language targeted at the kind of problem to solve can simplify the creation of readable and compact specifications. This is known as a domain-specific language (DSL.)
By providing the most direct representation of a language, dynamic languages have renewed interest in DSLs. However, discarding the compiler and the ability to use powerful IDEs is a disadvantage with this approach.
This session describes how it is possible to write DSLs using Java and suggests patterns for constructing them.
Process/Mechanics
- 10 minutes – Introduction to domain-specific languages (DSLs)
- What are DSLs?
- Types of DSLs: internal and external
- Internal DSLs vs APIs
- 5 minutes – Is Java suited for creation of internal DSLs?
- Pros and cons of using Java (the language) to create internal DSLs
- Can Java-based DSLs be written by business users?
- 10 minutes – Java as a platform for internal DSLs
- Creating internal DSLs in Java through Fluent Interfaces
- Example of a Java-based internal DSL: a type-safe SQL-like language
- 25 minutes – Patterns for creating DSLs in Java
- Method chaining: use cases and examples
- Static Factory Methods and Imports: use cases and examples
- 5 minutes – Organizing DSL code
- Inner classes vs. top-level classes
- 5 minutes – Documenting DSL code
- Overcoming limitations of Javadocs
- 30 minutes – Live coding demos
This is an extended and updated version of the article: “An Approach to Internal Domain-Specific Languages in Java” ( http://www.infoq.com/articles/internal-dsls-java ) applied to writing readable and compact test code.
Learning outcomes
- What a domain-specific language (DSL) is
- Types of DSLs
- Pros and cons of using Java to write internal DSLs
- Creating DSLs in Java using Fluent Interfaces
- Patterns for creating DSLs in Java, use cases and potential shortcomings
- DSLs applied to test code
- How to organize code in a Java-based DSL
- How to document a Java-based DSL
Second proposal, co-presenting with Stephen Chin:
Test-Driven GUI Development Made Easy
Despite the fact that Test-Driven Development (TDD) can help us build software better and faster, GUI development has been slow to include TDD as a core practice. The main reason is that writing tests for GUIs is difficult and error-prone.
In this session, we will explore several recommendations, practices and tools that can simplify test-driven GUI development. This session focuses on Swing and JavaFX GUIs. However, the practices covered in this session can be applicable to other GUI toolkits.
Process/Mechanics
- 5 minutes – Introduction to TDD and GUI testing
- 10 minutes – Requirements for robust GUI testing
- Reliable lookup of GUI components
- Challenges related to changes in layout or look-and-feel
- Native event generation vs. toolkit-specific events
- 5 minutes – Limitations of GUI testing
- 10 minutes – Introduction to open source (and free) tools that can make Test-Driven Development of GUIs possible
- Pros and cons of each
- 40 minutes – Live-code demo
- Creating a Twitter client using TDD (one in Swing and one in JavaFX)
- 10 minutes – Troubleshooting failing GUI tests
- External/environmental factors
- A GUI component cannot be found
- Multiple GUI components satisfy some search criteria
- 10 minutes – Finding and fixing threading problems in single-threaded UI toolkits
Learning outcomes
- What robust GUI tests mean
- Create GUIs using a test-first approach
- How to create testable GUIs
- How to troubleshoot failing GUI tests
- How to find and fix threading issues
- What to look for in a GUI testing tool/library
Feedback is always welcome! :)

My name is Alex Ruiz. I'm a programmer with special interest in Java, API design, testing and OOP. I'm the creator of 

