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.
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.