Tournament Software–Maintenance and Development


Tournament Software is an application built to organize and manage the progression of a bowling tournament and deliver scoring statistics to fans and players. Originally the software was built with .net 1.1, winforms and .asmx web services and only supported one type of tournament. As technologies and the PBA business evolved so did the software. Changing tournament software was increasingly difficult and stability became an issue. To help solve this I implemented software best practices such as automated testing, continues integration and software engineering design patterns.


  • Introducing new functionality should not be overly complex.
  • Existing functionality needs to be easily and quickly verified when new functionality is introduced.
  • Deploying new functionality should be one click and not require manual steps.
  • Need to be able to persist and test different states of the software.


Automated tests where written with NUnit and automatically ran on each commit using CuiseControl. Automated build and deployment was handled using combination of NAnt, ClickOnce, and MSBuild. The strategy pattern was used combined with constructor injection to easily swap data sources allowing easy creation of test cases. Command pattern was used to provide a means extending tournament software functionality.

Technology Overview:

Tournament Software is a multi tiered C# .net 3.5 application. Data access layer is written with ADO.Net, Service layer uses asmx .net 2.0 web services and GUI client is written in Winforms. Rewrite From ASP Classic to ASP.Net MVC

03.03.10 had become a maintenance issue with majority of the code base written under ASP classic by programmers who no longer worked in the organization.


  • Use a current language/framework that promotes best practices such as unit testing, separation of concerns, and  DRY code.
  • Framework needed to provide complete control over HTML giving Web designers easier means to create clean CSS/HTML design templates.
  • Search engine optimization friendly.
  • Business logic must be decoupled from the database.
  • Old URLs must give a 301 status code and be correctly routed to the new standard.

Technology Overview: was rewritten from ASP Classic to ASP.Net MVC. The MVC framework provided us with good base for the best practice we needed, improving the maintainability of the site. The MVC routing engine enabled us with a means to route old URLs to their new MVC counter part properly. For the Model in MVC we choose Nhibernate. Nhibernate proved to be both performant and flexible, giving PBA not just  a reusable stable business logic layer.



WPF – Tournament Presenter


Tournament Presenter is a customized score board display written for the PBA to allow onsite fans to quickly gauge the state of a bowling tournament.


  • The display needed to be Extendable. PBA host many different styles of tournaments, Tournament Presenter needed an easy method of adding functionality for the new tournament formats.
  • Screen Resolution independents. None of the target display  hardware  was guaranteed to  use the same resolution. Displays needed to look the same on all sizes.
  • Displays needed to look sharp be capable of animation, graphics and color.
  • Data source for displays needed to be small and work disconnected.

Technology Overview:

The displays where written in C# on .Net 3.5 platform. WPF was leverage  for rendering GUI, XML for the data source, Clickonce for publishing, NUnit for testing and MEF for Extendibility.


Tournament Presenter On ESPN

Look to the seek times at 00:22, 1:08, 3:40, 4:20, 5:40, 6:50, and 7:19 these will give a good idea of how they are used in production.
ESPN Video