Dance Competition Management System

Ballroom dancing's just got even more stylish.

Overview

This project aims at creating an application to ease the process of organizing and judging a dance competition in addition to an existing dance competition management system. The motivation to create an additional application comes from a group of organizers who realized the need for an automated system that could work well with the existing system as well as add more essential functionalities, such as PDA wireless communication and synchronized projector, to the dance competition.

Vision

The system when completed should enable the user of the system to effectively and efficiently organize and conduct dance competition. In particular, the final project should allow the Deck Captain, through a mean of a PDA device, to identify who missing dancers and notify to the MC almost in real-time through a wireless network. Moreover, the final project should enable the judges to use their PDA to judge the dance event and send the result to their scrutineer digitally and wirelessly. Finally, the project should enable the projector to synchronize all organized dance events and display them accordingly to their order on the screen.

Scope

Regarding to the scope, this project will only servers as an additional piece of software to an existing system (the Skating System Software). It does not concern with modifying the existing system, rather just make the existing system work better as a whole. The project assumes all functionalities of the existing system, and requires the existing system to be executed simultaneously in order to perform at a dance competition.

Stakeholders

    Fig 2. Dancing Couples at a Competition.

  1. Scrutineer: A person who manages the system on the day of the competition. He is responsible for scheduling the events, and associating the work of different users of the system for the smooth running of the competition.
  2. Deck Captain: A person who is responsible for checking the presence of the teams prior to the start of the event, lining them up for the event and informing the Scrutineer and the MC about the missing teams.
  3. MC (Master of Ceremony): A person who is responsible for letting the audience know of what is happening in the competition and what is coming next.
  4. Judge: A person who judges the dancing couples and returns the list of recalled couples.

Design

Fig 3. Model View Controller in this project.

MVC - Model View Controller

The MVC definition and examples can be located at its - Wikipedia page.

"Model View Controller (MVC) is a software architecture, currently considered as an architectural pattern used in software engineering. The pattern isolates "domain logic" (the application logic for the user) from input and presentation (GUI), permitting independent development, testing and maintenance of each.

An MVC application may be a collection of model/view/controller triplets, each responsible for a different UI element.

MVC is often seen in web applications where the view is the HTML or XHTML generated by the app. The controller receives GET or POST input and decides what to do with it, handing over to domain objects (i.e. the model) that contain the business rules and know how to carry out specific tasks such as processing a new subscription."

Sequence Diagram

Before any couple can enter the dance floor, they are required to be lined up and checked in by the Deck Captain. A Couple IDs List is provided in the Deck Captain PDA as series of buttons for each event. Checking the lined up couple with his list, the Deck Captain determines which couple are missing. He can notify the missing couples to the judge, the MC on the projector screen by simply click on the couple ID in his list. As soon as a coupleID button is clicked, the Controller fires a function to execute SQL statement to update the database Model. The Deck Captain can also view the next event by clicking on the Next Event Button provided on his PDA. Then, the Controller retrieves the next event information from the database and updates his view on the PDA.
While a dance event is taken place, the judges, equipped with PDA Wi-Fi enabled, can concurrently select the dancing couple by their ID. For instance, judge A clicks on '115' button if he decides that the couple with the ID of 115 are qualified to the next round. As soon as the 115 button is clicked, the Controller fires a function to modify the database. Mean while, judge B may decide couple 252 are qualify to the next round, so he click on the 252 button. Both judges' action may occur concurrently, however, since it triggered by different Controller, the server will treat them as different threads. Therefore, each action get its turn to update the database on the server side.
After a dance event is over, the judges clicks on the Next button, which triggers the Controller to fires nextEvent() methods, this methods retrieves the next event information on the database and return the information to the judges' view. The judges, then, are ready for the next dance event. At the end of a competition or intermission break, the judges may close the browser on his PDA. This event will destroy the Controller on the server. The Controller is not created again until the judges open their browser again.

Fig 3. A sample environment for motion planning.

Software

Key features

The project is implemented in ASP.NET framework with Visual Studio 2008 . The Dance Competition Management System, aka. DCMS, is developed as the result of the project. DCMS offers an array of amazing features in which users can managing a dance competition. Below is a few key features that is available in DCMS.

Fig. The different views of DCMS

Distinctive screen design

The UI for PDA is different from that for the projector due to the screen estate.Since this application is browser-based, it can be run on various devices such as the iPhone, iMac, PC, and the projector.

Real-time Synchronization

Under a Wifi network, the synchronization among PDA devices, the server, and projector screen is real-time. The audience will experience what event much faster and seamlesssly.

Ease of use

It could not be easier for checking in. All the deck captain needs to do is click on the number of the signed up couple that is not present at the line up. As for the judge, to recall a couple to the next round is simple click on the that couple. With a device in their hand, both the deck captain and judge are free to walk around to do their part.

Downloads

The program is free for non-commericial usage. This download include the Microsoft Visual Studio project. If you do not have Visual Studio 2008 installed on your computer, you also need to download and install it in order to run this program. DCMS can be downloaded below.

DCMS Codes

Visual Studio 2008 IDE

Documentations

Developer Reflection

It was a distinctive experience as a part of the software engineering team this semester. We had a unique team of student software engineers in which each member has a different communication style and way of thinking. As we work together, we had resolved many differences and become better team players. I personally learned many things about being a software engineer as well as a project team member.
First, I learned that working on what you really like is much more motivated. Prior to selecting the project, I participated on the several dance lessons at the University. Working on this project, I am more involved in ballroom dancing, especially its organization in a competition. In effort of understanding the competition, I actually went to a regional competition and had a good time watching the art of dancing.
Second, through this project, I have developed a new skill set that might help me as a computer programmer: .NET programming. As I developing the software, I learned much more about .NET framework which I always been interested in getting a deep understanding. It was somewhat difficult to learn a new development tool, MS Visual Studio, for such a short amount of time, but the project as well as each design process drove me to gather more knowledge in programming.
Third, the process of software development has opened a new insight in me about what goes on in the industry. I was a computer programmer before, now I move closer to become a software engineer. The lesson on dealing with the customer needs as the same time as determining whether those needs could be realized in the project is crucial to the success of any software team. Communicating with the customer as well as collaborating with my teammates, I gain experience in the interpersonal relationship in which I really value.
Last, but not least, I learn to be more effective in time management skill. While is active in my own research interested, I manage to handle a full coursework and a time demanding dance competition management system. Not only developing the software that actually realizes all customer needs, but also understanding the correct path to build the system. I realized that the design process is as important, if not more, as the implementation. The entire semester dedicating to developing the dance management has certainly improved my sense of self-motivated, my skill in team work, my coding dedication, and my delight in software design process.

Software Engineering Documents

Requirements

Use Case Specifications

Unit Testing

Developer Google Group Page