Older Talks
These talks probably need a slight update.
Enterprise Integration Patterns
Repeatable success in delivering complex enterprise systems depends on the ability to leverage experience from past systems. On an architectural level, direct reuse is usually not practical and blueprint architectures are often not flexible enough for complex systems. However, design patterns provide a middle-ground by describing idiomatic use of technologies and capturing the essence of successful designs.
Topics discussed include: An introduction to Enterprise Integration patterns, real world examples, an in-depth look at central patterns and an overview of Enterprise Integration technologies.
Keynote, Microsoft EMEA Architect Forum 2005:
- Athens, Greece
- Dublin, Ireland
- Istanbul, Turkey
- Lisbon, Portugal
- Moscow, Russian Federation
- Prague, Czech Republic
- Reading, UK
- Stockholm, Sweden
- Warsaw, Poland
Automated Web Application Testing with Selenium
Selenium is a test tool that allows you to write automated web application tests in many programming languages. The test use any mainstream browser with JavaScript support and can target arbitrary websites.
This talk starts with a quick demo of creating automated tests using the Selenium IDE and then show how these tests can be integrated with existing Java, C#, or Ruby test suites. We’ll end with a discussion on how to write robust tests, and how to structure tests to make them more reusable.
History:
- Skills Matter Session (April 2007) – London, UK
- QCon 2007 – London, UK
- Øredev 2006 – Malmö, Sweden
Dependency Injection
An introduction into the Inversion of Control principle and the Dependency Injection pattern, with a discussion of the benefits of using these, practical examples using the popular Spring IoC container, and an explanation why using IoC will benefit any Agile development effort.
The presentation follows the implementation of an examplary user story. It discusses different implementation strategies, including traditional Service Locators, and demonstrates the benefits of an implementation that uses Dependency Injection. It also contrasts testability of the respective designs. The source code linked on the left hand side is the code written on stage at ØreDev.
History:
- Øredev 2005 – Malmö, Sweden
Open Source Software
This presentation gives a very brief introduction into Open Source Software (OSS) and its relevance to IT projects in commercial organisations.
In the first half I talk about the Open Source movement, describing how it came into existence, how it works and why people and companies are interested in it. The second half is concerned with the adoption of Open Source Software and I discuss perceived barriers and outline some basic criteria for the selection of OSS.
History:
- Lloyds IT Club – London, UK
[Slides] [ThoughtWork OSS site]
Test-Driven Development – An Overview
Our opening statement is that Test Driven Development is, despite its name, not mainly about testing. This is explained and we briefly discuss the TDD mantra “red-green-refactor” before demonstrating Test Driven Development in a programming session. We start from scratch with no prepared code and implement 5 user stories in 3 iterations, each of which has a theme:TDD using state-based testing, embracing change and refactoring, and interaction-based testing with Mock Objects.
Of course, we pair-program and discuss many of the small design decisions we are making. It is worth noting that we use the ReSharper and TestDriven.NET add-ins for Visual Studio to increase our productivity and thus the pace of the session.
History:
- NorDev 2005 – Stockholm, Sweden – with Jimmy Nilsson
Towards a testable application architecture
In the first half of the presentation John Horgan and I discuss Dependency Injection and Infrastructure wrappers, which we think are essential ingredients for testable application architectures. We also introduce PicoContainer, a lightweight Inversion of Control container that pioneered constructor based dependency injection.
In the second half of the presentation we show how these concepts can be applied in a real enterprise application. In particular, we will show how to refactor a set of EJBs that use service locators into a set of objects that are managed by PicoContainer and wrapped by a single EJB facade. We will also show how to exend the popular Struts MVC framework so that it uses the Dependency Injection pattern for it web actions.
History:
- JAOO 2004 – Århus, Denmark – with John Horgan
Data programming beyond ADO.NET
With the first versions of the .NET framework Microsoft released a new data programming API in the form of ADO.NET. This has proven quite flexible and popular with developers. Nonetheless, there are several projects underway that either extend ADO.NET or provide more advanced frameworks.
I am presenting the Neo framework, an Open Source project which I started, and the forthcoming ObjectSpaces framework from Microsoft. [Plans for this have changed substantially since the talk.] I will also compare their individual strengths and differences in approach.
History:
- B.NET User Group meeting May 2004 – Bangalore, India
[Slides] [Neo site] [ObjectSpaces on MSDN]
Persistence Neutrality using the EOB application service framework
Working with J2EE for almost five years [as of 2003], developers of enterprise software have gained much experience with this platform. Common enterprise design patterns have emerged and strength as much as weaknesses of the EJB model have been discovered. Despite the successful introduction of container managed persistence we believe to have spotted a trend towards reduced EJB container usage and the appearance of several new persistence frameworks.
Enterprise Object Broker (EOB) is an application service framework that imposes no restriction on the persistence framework used. Common choices include Prevayler and Hibernate. It is an open framework to leverage existing designs and provides transparent RPC for easy client-side usage.
History:
- JAOO 2003 – Aarhus, Denmark – September 2003
I'm Erik Dörnenburg, a veteran software developer with an interest in using visualisation techniques to help people better understand code and architecture.