RFID and surveillance of festivals - VBN
Transcription
RFID and surveillance of festivals - VBN
RFID and surveillance of festivals Authors: Kimmo V. Andersen Steffen Raahede Rune Ettrup Sune S. Nilausen Eric V. Ruder Bjarke M. Lauridsen Mathias Andersen December 2011 Preface This report is created by a group of 7 computer science students on their 3. semester at Aalborg University, Denmark. The report was made in the period between the 2nd of September and the 20th of December. The purpose of this report was to gain experience in the development of an application with focus on; Investigating a realistic setting which includes the involvement of 2 informants or more, using object-oriented analysis and design, through prototypes and systematic evaluation of usability. The report is created with LaTeX. The development report is part 1. The academic report is attached at the end of the development report as part 2. The C# source code and the compiled version of the product is attached with the report on a CD along with the code used in the database ind the audio files from the interviews. We would like to thank Nibe festival representative Peter Møller Madsen and Aalborg Karneval representatives Michael Børsting and Klaus Bystrup for acting as our informants. Det Teknisk - Naturvidenskabelige Fakultet Datalogi Strandvejen 12-14 Telefon 96 35 97 31 Fax 98 13 63 93 Title: Project of Dat303e11 Theme: Developing applications – from users to data, algorithms and tests – and back again Project period: P3, the autumn semester 2011 Project group: d303e11 Authors: Kimmo V. Andersen Steffen Raahede Rune Ettrup Sune S. Nilausen Eric V. Ruder Bjarke M. Lauridsen Mathias M. Andersen Councilor: Benjamin Krogh Total pages: 92 Pages: 80 Appendix pages: 1 Synopsis: Modern technologies contains a powerful tool for surveillance and service. In this report we present the work we have made, about RFID surveillance of festival and carnival guests. An interview with relevant informants is the basis for a problem statement. An analysis of the problem and user area, through the object oriented paradigm, showed that RFID wristbands for guests at festivals can be a very useful tool for managing the crowds, including many other aspects. To focus the work for the project, a scope was created so that only the main requirements of the software design were actually implemented, including a user interface, a way to give the guards at festivals an overview of the guests’ location and a way to represent data from the guests’ activity using a database. An conclusion is made on our work, where a test shows that our application fits into some real life needs, but further work must be done to widen the functionality. Finished 20th of December 2011 The content of this report is freely available, but publishing (with reference) must be with the approval of the authors. Contents 1 Introduction 6 2 Informants 2.1 Interview with Aalborg Karneval 2.1.1 Summary . . . . . . . . . 2.2 Interview with Nibe Festival . . . 2.2.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 10 11 11 14 3 Problem Statement 16 4 Analysis 4.1 Technology Analysis . 4.1.1 Technology . . 4.1.2 Knowledge . . . 4.1.3 Organization . 4.1.4 Product . . . . 4.1.5 Summary . . . 4.2 RFID technology . . . 4.3 Choice of technology . 4.4 Project goal . . . . . . 4.5 Class definition . . . . 4.6 Event definition . . . . 4.7 Behaviour patterns . . 4.8 User interaction . . . . 4.8.1 Users . . . . . . 4.8.2 User description 4.9 Functions . . . . . . . 4.10 Focus areas . . . . . . 4.11 Summary . . . . . . . 17 17 18 19 20 21 22 22 23 25 25 27 28 30 30 31 32 33 35 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Design 5.1 Quality goals . . . . . . 5.2 Detailed system overview 5.3 Component architecture 5.4 User interface . . . . . . 5.4.1 The menu . . . . 5.4.2 Areas . . . . . . 5.4.3 Gates . . . . . . 5.4.4 Search . . . . . . 5.4.5 Guest . . . . . . 5.4.6 Bank . . . . . . . 5.4.7 Setup . . . . . . 5.4.8 Export database 5.5 Design principles . . . . 5.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Implementation of the Administrative Program 6.1 Program Design . . . . . . . . . . . . . . . . . . . . 6.1.1 The Administrative Program is a Subsystem 6.1.2 Layered Architectural Pattern . . . . . . . . 6.2 Classes . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Handlers . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1 SOAPHandler . . . . . . . . . . . . . . . . . 6.3.2 RfidElementHandler . . . . . . . . . . . . . 6.3.3 AreaHandler . . . . . . . . . . . . . . . . . . 6.4 Interfaces . . . . . . . . . . . . . . . . . . . . . . . 6.4.1 Main Window . . . . . . . . . . . . . . . . . 6.4.2 Area Overview Interface . . . . . . . . . . . 6.4.3 Gateway Control Interface . . . . . . . . . . 6.4.4 Search Interface . . . . . . . . . . . . . . . . 6.4.5 Customer Manager Interface . . . . . . . . . 6.4.6 Setup Interface . . . . . . . . . . . . . . . . 6.4.7 Area Control Interface . . . . . . . . . . . . 6.4.8 Customer Control Interface . . . . . . . . . 6.4.9 Equipment Control Interface . . . . . . . . . 6.4.10 Area Statistics . . . . . . . . . . . . . . . . 6.5 Server side implementation . . . . . . . . . . . . . . 6.5.1 Database . . . . . . . . . . . . . . . . . . . 6.5.2 Communication . . . . . . . . . . . . . . . . 6.5.3 SOAP API . . . . . . . . . . . . . . . . . . 6.6 Checkpoint . . . . . . . . . . . . . . . . . . . . . . 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 36 38 39 40 41 42 42 42 43 44 45 46 47 48 . . . . . . . . . . . . . . . . . . . . . . . . 50 51 51 51 52 53 54 55 56 56 56 57 58 59 60 61 62 62 63 64 67 67 67 68 70 6.7 6.8 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 6.7.1 Use Case Tests . . . . . . . . . . . . . . . . . . . . . . 73 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 7 Conclusion 76 8 Future Works 78 5 Chapter 1 Introduction Festivals, especially music festivals, attract a lot of people who wants to listen to music and meet other music enthusiasts. A gathering like a festival rises a problem regarding crowd control. First of all, entrances can be congested by people and hour long queues can occur. Festivals often celebrate a certain theme. A few examples would be art, culture or music. In this project, the term ”festival” will be used only in relation to a music festival. In Denmark there are more than 170 festivals, twice as many as only 10 years ago [2], the largest, ”Roskilde Festival”, attracts around 100,000 people annually [3]. When attending a festival, the participants usually have to buy a ticket to cover expenses such as administration, renting of the location, paying performers and more. Tickets are often exchanged for a wristband which is less likely to be lost and is visible, so security at entrances easily can see an attendant’s level of authorization. Many attendants at music festivals gets free access by volunteering as assistants. Roskilde Festival, for instance, have 25,000 volunteers every year. Music festivals have often multiple stages that participants can choose to walk between, which can create moving crowds at each stage. Festivals, especially if it lasts for more than a day, often have camping sites, toilets, baths and shops with food, alcohol and more, all of which generates crowd traffic. To control these crowds, festivals usually use volunteers and other personnel to overlook the crowds and admit participants into the festival areas. There have been employed several different solutions to some of these crowd control problems such as RFID in wristbands to ease congestion at entrances [4], however, many of these solutions remain partially or completely unsolved. This report will investigate crowd control problems at festivals and carnivals. The report will work with Radio Frequency Identification (RFID) technology 6 in order to see if this technology can solve or ease some of these problems and develop a software product that uses this solution. As a part of developing this software, an analysis will be produced which consists of contact with two informants, in order to gain insight into the requirements they have as well as the potential limitations they have. Second, an evaluation of the product will be made in order to do quality assurance. The interview with the two informants will be documented in chapter 2 along with the decisions made about why the informants were chosen, why informants are a valuable asset in analysing a problem and what information was gained through the interviews with the informants. The problem statement is located in chapter 3 where the main problem of this report will be thoroughly formulated. In chapter 4, an analysis of the problem is described with focus on product specification and technology choices. The chapter will also contain designs of the software solution along with the project scope. In chapter 5, the application is designed and a prototype of the user interface is made. The documentation of the implementation of the administrative program is located in chapter 6, where the development and design of the application will be described. Finally in chapter 7, a conclusion is located, defining how a solution was obtained, according to the problem statement. In chapter 8, the project will be put into perspective and further work will be considered. The first informant is Aalborg Karneval in which around 30,000 people gather and dress up according to a specific theme. They go through town in a parade, showing off their costumes and music wagons. Music wagons are home made wagons, often with a speaker system attached to them. Some of the music wagons are able to support several people dancing on top of them, others are smaller, made only for the sound system. This carnival is held once a year in Aalborg, spanning over a weekend. After the parade ends, most people move towards a park by the name of Kildeparken. Aalborg Karneval sets up a closed party area with music stages, beverage and food stands in this park. There is an entrance fee to enter this area, unlike the parade which is free to attend. The second informant is Nibe Festival which is a yearly festival which takes place at the end of June or the beginning of July and spans over 4 days. It is held at Skalskoven in the city of Nibe, northern part of Denmark. Nibe festival have averagely 15,000 participants each day and 4,000 volunteers. Nibe Festival is split into several areas which require different access rights and the amount of participants in each area is limited by fire regulations 7 to averagely 3 persons per squaremeter. Some of the areas are dedicated to stages and others are dedicated to camping areas and in each area there is beverage and food stands which is manned by volunteers. The learning goals [9] with this report are to: • Analyse and model requirements in the object-oriented paradigm. • Design, realize and test an application in the object-oriented paradigm, understand and use the concepts and facilities in the paradigm and on that basis construct an application of high internal and external quality. • Perform systematic testing of the application and show that the application corresponds to the intentions and the users needs. • Perform systematic evaluation of the user interface. • Argue for choices in the activities of the development including explaining how requirements, architecture and the user’s needs are related. • Develop a running application that solves the user’s problems. • Describe and reflect on the applied development practice in the project. 8 Chapter 2 Informants In order to get specific requirements regarding the project, there was arranged a meeting with two different informants where they were interviewed. First is Aalborg Karneval and second is Nibe Festival. The purpose of interviewing these informants is to find out how it is to administer a festival and specifically what they require in relation to their area. A vital question is knowing how many people are at the festival in total and how many are at any given time. The following questions need to be elaborated: • How much security and how many guards are available as well as what the safety procedures are. • What kind of information is necessary about the attendees and how to handle this information. • How many checkpoints there are and how many areas needs to be covered. • The frequence of incidents with regard to troublemakers and people who try to gain unauthorized access to areas they do not belong in. For example people entering the backstage area without a backstage pass. • To know if the security personnel is moved around depending on how many people are at any given area. 9 2.1 Interview with Aalborg Karneval The first meeting was with Aalborg Karneval. They had attempted to integrate RFID technology before but were unable to do so because of costs and technology insecurity. Aalborg Karneval were not quite sure the RFID technology was stable enough or it would live up to their expectations and needs. They were asked what they attempted to do with it and what their main goal in implementing the technology was. Their main interest was monitoring the participants general behaviour on carnival day. They wanted to know when people joined the parade, where the participants joined the parade and went afterwards. For example if they entered the carnival area or they left for a pub. Aalborg Karneval wanted to know the general flow of the parade and the flow at the entrance to the carnival area to determine the average waiting time for getting in. Aalborg Karneval had great focus on the overall experience, from the start of the day to the end. They talked about the differences between a parade and a music festival, where in a music festival you go to get a music experience. This can then be used to analyse which artists are popular by seeing when there are most people at the stage. That way, it is possible to improve the music festival. That chain of thought is not applicable to the carnival - the participants go there to have a whole-day experience. What they are interested in, is figuring out what people want to do during the day so Aalborg Karneval can improve in those areas and improve the overall experience of the carnival. Aalborg Karneval also described a problem regarding participants standing in line to enter the carnival area after the parade is done. The entrance to the carnival area is located at the end of the parade. Since a large part of the participants at the parade is trying to enter the carnival area at the same time, bottlenecks occur at the entrance. Aalborg Karneval described cases where people had been waiting up to 4 hours to get through the entrance, resulting in some people gave up and headed to a pub instead of the carnival area. This ties into the idea that Aalborg Karneval wishes to improve the whole-day experience, which will require to speed up the check-in procedure at the entrance. One solution Aalborg Karneval attempted was to pre-sell tickets. This did not solve the problem of people getting through because even though some people had bought tickets in pre-sale, they were still required to stand in line with the people who needed to buy their tickets at the entrance. Another problem which occurred at the entrance was that participants are not allowed to bring beverage through the entrance and into the park. This causes a lot of people standing at the entrance to drink their own 10 beverage and therefore blocking the entrance for other participants. Aalborg Karneval wants a solution to this problem as well. Furthermore, Aalborg Karneval described the security procedures they had in place. They told it was not their responsibility to have security personnel at the scene because Aalborg Karneval had agreements with both the police and the hospital in which they would have extra people on work that day. It is the police’s responsibility to monitor the crowd in regard to fights, theft and general criminal activity. The hospital look out for the general welfare of the participants at the parade and at the carnival area. They also have a group of volunteers known as ”Samaritans” who manage satellite positions to help with smaller cases which the hospital does not need to be involved in. 2.1.1 Summary The following sums up the interview with Aalborg Karneval: • Monitor the movement pattern of people attending the carnival • Monitor the movement flow at the carnival • Monitor the movement flow at the entrance to the party area 2.2 Interview with Nibe Festival The second meeting was with the informant Nibe Festival. The first subject discussed, was about monitoring the participants. Nibe Festival were interested in an automated system which is able to distribute guards to different areas in the most efficient manner. They where also intrested in having the computer system manage the number of people in a given area, making sure it did not exceed the maximum number of people allowed in each area. Aalborg Beredskabscenter has estimated fire safety regulations and made the first estimate on two people per m2 , which Nibe Festival found unrealistic and could cause immediate shutdown of the festival. Nibe Festival made some research and found out that Skanderborg Festival, a festival in Northern Jutland, got estimated 4 people per m2 in the front closest to the stage, 3 people per m2 in the middle and 2 people per m2 in the back, which Aalborg Beredskabscenter approved for Nibe Festival as well. The current wristband Nibe Festival uses is a fabric wristband without any 11 kind of technology. They have different kind of wristband types, One-day, Part-out, VIP and a warning wristband. With the current fabric wristband it is necessary that there are guards to check whether they are valid on the day and whether they have access to the area. With 14,000 - 15,000 participants it is usually difficult to achieve a constant flow and avoid bottlenecks. By using RFID technology, the different kinds of tickets such as one-day, partout and VIP can be programmed into the RFID wristbands and hopefully reduce traffic jam at every checkpoint. The RFID wristband location will be logged so that the administration quickly can find the given participant or festival volunteer in situations like finding trouble makers or a volunteer who did not show up for work. Nibe Festival does a great deal in keeping control with the trouble makers on the festival by giving the trouble makers a warning wristband that is a supplementary wristband. That way, trouble makers are easily visible for the festival guards. For the trouble makers to remain on the festival area, they are forced to have a ”friendly” conversation with one of the security guards once a day. The security guards want to keep the ”friendly” conversation because they think it is a preventive method which has worked very well. If the trouble makers do not show up for the ”friendly” conversation, the security guards have to throw the trouble makers out of the festival. Sometimes though they have trouble finding a given trouble maker, which the RFID wristband can improve by showing in which area the trouble maker are in. Nibe Festival has gotten permission to make a trouble maker database but only if the information can be accessed inside the organization. A trouble maker database can have some benefits for future events. The Security guards could also have a RFID wristband on them. That way it would be easy to delegate them from the administration office by monitoring which areas could spare some security guards. Many of the security guards are police officers in their daily life and some of the security guards at the checkpoints today have a doorman certificate. The festival’s volunteers could, like the security guards, wear a RFID wristband to show their location and this way they could be delegated for needed assistance in a area. Nibe Festival are experiencing that because the festival tickets are quickly sold out, people sign up for festival volunteer jobs. Nibe Festival has 4,000 festival volunteers and wish that their volunteers have a good team spirit and work together as a team. Many applicants for the volunteer jobs do not have the same purpose. Many people actually sign up for volunteer jobs only to get a ticket to the festival and Nibe Festival 12 has a theory that some of the festival assistants are selling drugs, stealing money or partaking in other criminal activity. Nibe Festival has had good experience with the festival volunteers but bad as well. They have experienced the festival assistants being drunk or simply not appearing on their shifts, which results in Nibe Festival taking their ticket for not doing their job. Nibe Festival have trouble finding the unreliable volunteers in the volume of participants. An idea to locate the unreliable volunteers can be the RFID wristband. They can see which festival area the volunteers are located in, they can also deactivate their wristband so when the unreliable volunteer is trying to go through a checkpoint, the ticket will not be accepted with a green light but instead a red warning light. Nibe Festival had a great interest in knowing how many are living in the Lux-camp, which is for campers, and how many are living in Rolig-camp, which is for people with tents, and in which time periods the camp areas are most crowded. Nibe Festival also discussed how it could be possible monitoring the general stage area in order to see how long a band would be able to keep the audience. They wanted to know how many people were at a concert in the beginning, how many people entered the area and how many people left the area during the concert. By reviewing those statistics they could see which bands were the most popular and which bands could not keep their audience. In safety manner they also know in advance where to place their security guards for future festivals. By knowing the amount of participant in the festival areas, Nibe Festival could predict when there are participants enough in a given area to put one of the popular bands on the stage. Another subject Nibe Festival had interest in was advertising displays in the bar area that should suggest the participants what they should buy, based on the participants’ previous purchases. When their RFID chip is discovered by a nearby bar, the advertisement will be displayed on the screen. The advertising screens might increase beverage sales in the festival bars. In the interview it was discussed how to make a non-cash environment. This is because it is a hypothetical problem with thieves who steal from participants but also festival volunteers who steal from cash registers while they work. One solution that Nibe Festival came up with was to make a money account that the participants could insert money on while they buy their ticket at home over the Internet. If they are running out of money on the account they could go to a festival personnel stand who has the ability of 13 refilling the account by receiving payment through a credit card. Thereby they could use their RFID wristband as a payment method in the beverage bars and food stands. Dankort, Mastercard and other credit cards are also non-cash but once their wallet is stolen the credit card is stolen. Thieves and unreliable festival volunteers are not the only things that could be solved with the RFID non-cash environment. Participants can put a limit on the amount of money they use by only inserting the maximum amount of money they want to use at the festival. This can be ideal for parents who have their kids with them to the festival. That way the kids do not have to go around with cash on them. This solution may also give a better crowd flow at the beverage bars and food stands because the RFID chips only needs to run over a scanner and no money needs to be exchanged. Nibe Festival already have experience with non-cash solutions including money cards which are distributed to the suppliers to use in the festival area. The purpose with the money card is that the suppliers do not have to go around with cash. The suppliers manage who has the card and when the festival is over the supplier will receive an invoice with the used amount from Nibe Festival. The money card has the same technology as liftcard with a portable card terminal and is delivered by SKYdata. Nibe Festival has a large amount of equipment such as cars, backhoe excavators and drilling machines that they want to monitor the position of. The smaller tools like drilling machine and hammers can be lent by participant and therefore quickly disappear. Tools can be mounted with a RFID tag and monitored just like participants. This way they can be located in a specific area. The last idea Nibe Festival had was to include smartphones in the system. Most people today own a smartphone and they wanted to create groups through a social network like Facebook which were based different interests. The idea was an application that participants could make and join groups from social networks like Facebook and give the participants a message when a nearby event is starting etc. If a heavy metal group receives a message when a heavy metal band is playing or when there is happy hour in a nearby party-tent. 2.2.1 Summary The following sums up the interview with Nibe Festival: 14 • Monitoring the participants in specific areas. • How their current wristbands work. • How they handle trouble makers. • How RFID technology would be able to replace the current wristbands. • Guard distribution system depending on how many people are at specific areas. • How to monitor and control volunteers. • Statistic of how the bands keep the audience. • Making commercials on a nearby screen based on the participants recent purchase. • A money system, so that cash would be removed from the festival. • Monitoring the equipment in specific areas. • A way of incorporating social networks like Facebook, possibly a group system to know where other participants from a group are. • Graphical overview of where everyone is located and where all their equipment is. • The ability to overview movement flow and to control movement by closing specific gates or making them one-way only. • Different types of tickets, mainly VIP, Normal and Troublemakers. • A money system, so that cash would be removed from the festival. • Making commercials on a nearby screen based on your recent purchase. • A system to be able to tell people what is happening in the given area they are located. • A way of incorporating social networks like Facebook, possibly a group system to know where other participants from a group are. 15 Chapter 3 Problem Statement The two informants have large crowd of participants in common, which based on their assessment is a source of congestion at any given checkpoint. In order to address this problem it is necessary to develop a viable solution to ease the congestion and obtain a smoother flow through the checkpoints. To prevent the congestion, both the informants were wondering whether it was possible to track the movement flow of the participants. Nibe Festival wanted this information in real time in order to act upon the information as fast as possible. Nibe Festival suggested an expansion for the system which could be able to track equipment, as well as the ability to issue different access rights to the people at the festival location. Because the festival is offering different ticket types which lasts from one day to all four days and some of these tickets give heightened access to the festival. Nibe Festival also wanted a way of controlling movement flow by being able to close specific entrances and exits or make them one-way only. Another requirement they had was the ability to automatically distribute guards among the festival areas, depending on crowd numbers in order to have the necessary personnel available at any given time. This leads to the following problem statement: Is it possible to create a system, capable of monitoring a crowd using RFID technology, with the ability to ease congestion at checkpoints by speeding up the admittance process. 16 Chapter 4 Analysis 4.1 Technology Analysis In this section the current system of both Nibe Festival and Aalborg Karneval will be analyzed from a technological point of view. The analysis helps gain insight into the procedures which are currently implemented with each informant in order to create an overview of how to improve these procedures. The technology analysis is based on Jens Müllers article about technology which contains four components; Technology, Knowledge, Organization and Product. The four components in figure 4.1 are illustrated as pieces in a puzzle to show they are tightly connected. Figure 4.1: Technology concepts four components [7] 17 4.1.1 Technology Technology covers the physical tools which the technology is a part of. This includes work resources, work objects and physical labor. The technological process is dependent on human interaction, otherwise it would not have a purpose and therefore not be a part of solving any problems. Nibe Festival In order to attend Nibe Festival, participants need a ticket in order to get in. Most of the tickets, if not all, are sold through a webshop before the actual festival begins. Once a ticket is bought, the participant receives a digital ticket which they then print out and bring to the festival. Because of this the festival usually gets sold out before it even starts and therefor limits the amount of tickets that can be sold at the entrance. When the participant arrives at the festival with the printed ticket, it gets scanned by a volunteer at ticket sale and each participant get a wristband put on. This wristband functions as an identification representing the ticket the participant has bought and gives admittance to the areas of which the ticket apply. When the participants crosses a checkpoint they are required to show the wristband in order to be admitted through the checkpoint. The way security personnel is distributed is through radio communication. This communication is handled by the local security office at the festival. When there is urgent need of extra security personnel at a given location, the security office will be contacted and they will dispatch the required security personnel. Aalborg Karneval Participants at Aalborg Karneval have the ability to buy a tickets online which is a new addition to the ticket sale. Typically tickets are usually only sold at the entrance to Kildeparken. The participants receive a wristband by mail which then acts as a proof that they have bought a ticket. The participants put the wristband on at the carnival day and they are required to show it when entering Kildeparken. Security is outsourced to the local police which will patrol the park as well as 18 the parade and if trouble occurs Aalborg Karneval contacts the acting police chief on site, who then dispatches officers to handle the issue. 4.1.2 Knowledge Knowledge consists of the experience people have with the work resources and work objects. Nibe Festival Nibe Festival is held once a year which creates problems regarding knowledge. The volunteers who use the work resources and work objects can not be expected to maintain the knowledge about the daily operation of the festival. Therefore the volunteers must renew their knowledge which requires resources, both in relation to time and mental energy. Another subject in regards to knowledge is the trouble makers with minor infractions. They are not registered between festivals and the security personnel are not able to point out trouble makers in advance. At each festival the amount of allowed people in the festival area are based on estimates which is subjective and no concrete data is available. Aalborg Karneval Aalborg Karneval is held once a year but in several ways it is not required from the volunteers to have much knowledge of the daily operation. Most of the management, which requires interaction beyond selling beverage and food, is managed by a team which functions as the daily management. Aalborg Karneval has a limited use of technology at the carnival day. All purchases are done with cash and credit card and the participants receive their wristband by mail if they have pre-ordered it through the webshop. Aalborg Karneval do experience trouble makers but they are handled by the police, which removes the responsibility from Aalborg Karneval and the trouble maker loses their wristband and they are not welcome again. The area of Kildeparken is designed to handle large crowds. This is an advantage for Aalborg Karneval because there are escape routes in several places and accessibility for emergency vehicles is good. This way they can quickly get in and out of the park area. 19 4.1.3 Organization Organization is the unification of the technology which consists of leadership and coordination of labor division. Nibe Festival The organization of Nibe Festival is built on the principle of dividing responsibilities to a group of volunteers who have another group of volunteers who serve under them. This is illustrated in the figure 4.2. Figure 4.2: Organization of Nibe Festival The elements Security, Area, Assistant, Stock & stands, Backstage and Production are the main areas of work in the festival. These elements each have one or more Team Leaders who are responsible for the given area. Below the Team Leaders are a group of Chairmen. At Nibe Festival there are over 300 chairmen who handle specific areas within the main area of work. This works by the Team Leaders being responsible for all bars at the festival and at each bar is assigned one or more Chairmen who handle the daily operations. The main reason for this division is that Nibe Festival has 4,000 volunteers during the festival and several bars, stands and other areas which requires an overview of the entire festival, which is not possible for a few people to handle. 20 Figure 4.3: Organization of Aalborg Karneval Aalborg Karneval Aalborg Karneval is a small organization which has a department called Daily management. They handle the operations of Aalborg Karneval at the carnival day as well as the planning of the carnival. They also handle the parade and the carnival area. On the carnival day the responsibilities are distributed to Check-in responsible, Stock & stands responsible, Area responsible and Stage responsible. They handle each of their areas of work and coordinate with the volunteers under each of these areas. 4.1.4 Product The product is a result of the combination of Technology, Knowledge and Organization which can be a physical product or a service. Nibe Festival To check-in a person, it requires personnel at each checkpoint to validate that each participant has a valid wristband on to access the given area at the given time. In order for the participant to be able to receive a wristband there has to be a ticket sale who handles the attachment of wristbands to the participants. Aalborg Karneval Aalborg Karneval focuses on people buying their ticket at the entrance to Kildeparken. This requires personnel at the entrances, both to admit the participants and to sell the tickets. Aalborg Karneval is trying to implement a solution which enables the participant to buy their ticket in presale in order to skip the line at the ticket-sale and enter directly to Kildeparken. 21 4.1.5 Summary In both the cases of Nibe Festival and Aalborg Karneval, the way of buying tickets is very similar. The participants are able to buy tickets online and get the ticket exchanged for a wristband. They differ in the way security is handled though. Nibe Festival handles security with their own security team and Aalborg Karneval have outsourced the security to the local police and only handle the checkpoints with their own team of volunteers. Nibe Festival has several systems which are managed by volunteers at the festival. This causes problems when the volunteers are forced to learn how to use each systems every year. Aalborg Karneval is more limited from a technical point of view because they are using physical validation of each of the tickets the participants bring. Nibe Festival has a more extensive organization than Aalborg Karneval. Nibe Festival distributes the management into several smaller responsibilities with the title of ”Team coordinator” which is divided into even smaller responsibilities with the title of ”Chairman”. Aalborg Karneval is limited to a single person for each responsibility. 4.2 RFID technology Radio Frequency Identification (RFID) is a technology that uses radio waves to identify a RFID tag. The advantage of this technology is that it does not require line-of-sight communication between the RFID reader and the RFID tag which is a drawback of other technologies for example infrared communication. This technology features two main components, a reader and a tag. The reader works by scanning for a certain radio frequency in the electromagnetic spectrum. This is possible by having an antenna and a transceiver, which represents the reader. Different antennas provide different reading ranges to read the RFID tags, while the transceiver works as the main control unit [1]. This tranceiver exchanges data between the RFID tag in halfduplex mode [13] which means that it can only use one connection type at a time, send or receive [11]. The way it works is the transceiver sends out a requesting signal through the antenna. All the tags in the immediate vicinity receives this signal and uses the power from this transmission to reflect its own identification number back to the reader through the same frequency. It should be noted that the system requires the reader and the tag to work on the same frequency. Since the transceiver is swapping between sending and 22 receiving, it will after the signal is transmitted swap to a receiving mode in order to receive nearby device’s data. The transceiver converts the reflected data to digital data and then outputs this data to a connected device. This reflection technique is based on using passive RFID tags. This is however only one type of RFID tag. The two main types of RFID tags are the passive tag and the active tag [1]. The passive tag is normally smaller than the active tag and does not require any power supply beyond the signal from the transceiver. Because of this, the passive tag can generally only be read and not written to and its readable range is not dependant on the tag but instead on the range of the reader [12]. The active tag however features a power source usually in form of a built-in battery. This enables the tag to be read at longer distances since it is able to send out its own signal without the tag itself being in range of the reader. The active tags also have the functionality of both read and write, so in some cases it is possible to customize the data on the tag, whereas the passive is created with a unique ID from the factory [10]. 4.3 Choice of technology To find a technology which could be used for monitoring participants, two technologies where evaluated, Bluetooth and RFID technology. To find which one of the technologies to choose, the pros and cons for each of the technologies where noted. Bluetooth Pros: • Range of which communication is possible. • Most mobile phones have Bluetooth. • Has a unique Mac address. Cons: • Need internal power to work. • If using a mobile phone solution it would drain the battery for power fast. • Would require everyone to enable bluetooth in their mobile phone. 23 RFID Pros: • Cheaper then Bluetooth enabled devices. • Passive chip, does not need external powersource. • Easy to work with. • Has a unique ID number. Cons: • Not yet common in most mobile devices. If the Bluetooth in mobile phones should be used to track people it must be taken into account that not everyone has got a mobile phone with Bluetooth. A good thing about the Bluetooth technology is the range which make monitoring people more precise based on the possibility to triangulate every participants location. Bluetooth is expensive if it is required to track every participant and if the system would rely on the built-in Bluetooth capabilities in the mobile phones of the participants, it would only be able to give a representative sample and not an overview of every participant. The RFID technology is chosen because the chips are cheap and therefore gives the opportunity to monitor a large amount of people at a low price. The software languages chosen for this project is respectively C#, C and php. These languages are chosen based on they were assessed to be the most fitting languages for the system’s needs. C# is chosen because it, through Visual Studio, gives an easy way of implementing a graphical user interface in an easy manner and it natively supports the use of the SOAP protocol. The programming language C is chosen to be used on the scanners at each checkpoint because it is a fast language in terms of execution time and it is easier to develop so it uses less resources than other languages through memory management. The idea behind the checkpoints is they must run on small embedded computers which puts limits in term of processing power and memory. One drawback which is expected, is it does not have as many supplied libraries as C# and php which requires more development time and effort. The language, php, is used because the system was designed to be based 24 on as much open source as possible which fell on the choice of using a Linux server with and Apache installation to handle communication between the checkpoints and client applications. 4.4 Project goal The main goal of this project is to create a system that gives festival administrators the possibility to monitor festival participants and possibly equipment in an easy fashion. This system will be used by people with varying degrees of technological expertise. The users of the system is security personnel, administrative committee of the festival and personnel at ticket sale. The system will be designed to make sure all safety precautions are upheld regarding the amount of participants in a given area and the administrative committee will use it to create statistics over their festival to see what people are interested in and be able to see where crowd complications occur. Also the system will be designed to validate whether the participants have the necessary ticket to enter a given area. This system will be created, by using a combination of personal computers in order to administrate the system, which is capable of displaying information visually and statistically. Smaller embedded computer devices will handle the validation of participants and upload of information to a database server for later use in statistics generation combined with RFID reading technology. 4.5 Class definition The system is built around a few classes which handle the information regarding among other, participants, staff members and equipment, see Figure-4.4. One of the primary classes is named ”surveillance objects”, which have two subclasses classed ”person” and ”equipment”. The class ”Surveillance Objects” contains the most basic information to uniquely identify an object, which is the ID number from the RFID tag. The subclass ”person” contains information which is necessary to identify a person, and consists of name and Social Security Number (CPR) . The choice of using CPR is based on the fact that CPR is the most unique identifier about a single person even though in rare cases, CPR can be subject to change. Everyone at the festival also has a ticket type, which is stored as an attribute under the person class. Nibe 25 Festival stated the requirement that it should be possible to state whether a person is a trouble maker or not, which is added as an attribute under the person class. The subclass ”equipment” contains information necessary to identify equipment, which consists of an equipment description. The function of the system is to log whenever a RFID tag is passing by a checkpoint and save this data along with information about which areas the participant or equipment is moving from and to. This provides the system with access to a list of timestamps for each object, which then can be used to show data of objects visually to the administrative user. A specialization of the participant class, called the Worker class, only have one unique attribute which is where the worker is supposed to be at the given moment. There is also an Area class. Each area can have zero or more surveillance elements located inside of them at any given time. Each area can have one or more checkpoints associated with them as well. The Cross class is used to show whenever a person goes through the checkpoint. It has two areas associated with itself, the one the Surveillance Element is coming from and where it is headed. It also has a timestamp. The Checkpoint class is a part of the Area class. This class has two RFID Reader classes associated with itself. Another class is the RFID Reader class. This class only has one attribute, open or closed. There is also an Administration class. It is the owner of the Area class. It has the ability to change specific attributes of each area, decide whether the area is open or closed, decide attributes of specific checkpoints as well as closing, opening or making them one way only. Finally there is the Account class which is the account of the participant which is used to store money that the participant can use to buy food, beverages, items and more. 26 Figure 4.4: The abstract class structure in UML 4.6 Event definition The system will need to be designed to handle a number of different events. An overview is listed in Figure 4.5. One of these events is the Registration which is the registration of a surveillance element to a person or equipment, so they are connected. Similarly unregistration unregisters a person to a surveillance element. There is also the event Authentication which occurs when a surveillance element approaches a gate and requests authentication to go through a gate. This should happen automatically depending on the rules dictated by administration. Another event is the physical opening and closing of gates, which, for instance, occurs when the festival starts or whenever administration feels the need to open or close a gate. This event has been truncated to Open/close gates. Also there is the event Distribute guards which involves distributing guards to an area, a checkpoint or something else. 27 There is also modification and removal of ID on a surveillance element. These events have been truncated to Modify/remove ID. Another event is the transactions involved with an account. A person can deposit money to an account which is used to buy beverages, merchandise, food, etc. at the festival. When a transaction occurs, the buying of a beer for instance, money is withdrawn from the account. Alternatively a person can withdraw the money to himself or transfer money to one of his accounts or check the balance of his account. This is part of administration and the event has been truncated to Account transactions. Lastly there is the event Checkpoint which occurs when a person crosses from one area to another via a checkpoint. Events: Registration Unregistration Checkpoint Authentication Open/close gates Distribute guards Modify/remove ID Account transactions Classes: Persons x x x Equipment x x x x x x Administration x x Area x x x x x x Figure 4.5: Events associated with this system 4.7 Behaviour patterns The dynamic of the problem area is mainly connected to the behaviour of the objects ”Surveillance Element”, ”Person”, ”Administration” and ”Checkpoint”. The state diagram in Figure 4.6 describes the behavior pattern of the Surveillance Element class. An element is born into the system when it is registered and its state is of course ”active”. Whenever it goes through a checkpoint then a crossing happens which updates its area and logs the crossing with a timestamp. 28 Figure 4.6: The Surveillance Element state diagram in UML Figure 4.7: The Person state diagram in UML The behaviour pattern of the Person class is described by the state diagram in Figure 4.7. The class is born by registration and becomes a ”Participant” which can check balance on his accounts, and make transactions. If a trouble event happens the state changes to ”Troublemaker”. In Figure 4.8 you see the state diagram describing the behavior pattern of the Administration class. The class is involved with events such as ”Distribute guards”, ”Registration”, ”Unregistration”, ”Modify ID”, ”Remove ID” and ”Check area”. The Figure 4.9 shows the state diagram describing the behavior pattern of 29 Figure 4.8: The Administration state diagram in UML Figure 4.9: The Checkpoint state diagram in UML the Checkpoint class. This class is responsible for registering the approach of a surveillance element and then checking whether it is allowed to gain entrance, which decides the response. 4.8 4.8.1 User interaction Users There are several different people who will be using the software. These people all have different roles in regards to the festival. E.g. a bartender should not be able to close a gate at a checkpoint. To give a better overview of these people and what functions they should be able to access in the system 30 see Figure 4.10. Figure 4.10: Table of roles and their functions 4.8.2 User description In order to clarify the differences between the individual roles at the festival the following section describes the these roles and their responsibility. The guards are responsible for the security at the festival. Their primary function is to validate participants are wearing the correct wristband in order to be at the festival. Festival guards also have to stop any sort of trouble which could arise. The guard office is the central point of communication between different departments of the festival guards. The guard office are also responsible for contact with ambulances, police and other rescue personnel. The safety officer is the head of the guards and the guard office. The safety officer’s main purpose is to monitor the daily operations at the festival and be the one to make the final decision in non trivial matters where the guard office is unable to make a decision. The secretariat is responsible for the daily operations at the entire festival regarding where to distribute commodities and in some cases handle the contact between different departments. The bartenders main responsibility is to service drinks and receive money from the participants. The financial manager is responsible for the economics at the festival. This implies amounts of which commodities are distributed and to where, with 31 focus on the economical aspect. The ticket sale is selling tickets to participants and putting wristbands on the participants, whether they are buying a ticket at the festival and on participants who have bought a ticket before the festival. The festival bank is responsible for the management of the participants money. They are managing money deposits and withdrawals for the participants. 4.9 Functions Our solution must be able to perform several different functions. Complex functions will be described in detail, while straight forward functions will be described more abstract to give the programmer a larger degree of flexibility in regards to programming the actual function. It must be able to... • Fetch a list of users/equipments in a given area. • Fetch a list of locations for a specific user/equipment. • Assign different tickets to different users. • Assign a warning to participants. • Remotely control individual gates. • Add money to a wristband. • Modify the access rights of a given user. • Allow participants to pay for items with the wristband. For an overview of how the system works, see Figure 4.11. The general idea behind the project is that there will be several different checkpoints placed all around the festival area. At each of these checkpoints, there will be a RFID scanner and a small computer connected to the RFID scanner which is responsible for communicating with the rest of the system. Each time a RFID tag gets picked up by the scanner, it tells the system where he passed by and when, so that the system can log that information. 32 Figure 4.11: How the system works Depending on the checkpoint, it will then await an answer from the main system, in regards to if the user is allowed to go through or not. The user client will be able to communicate with the database and get the requested information it needs from there. The user client will also be able to edit some parts of the database. 4.10 Focus areas We must put our focus in the main functionality of the system, which keeps track of where people are located. This is also a crucial building block in the system, since all other parts are built upon this. Implementing tracking functionality of equipment can be easily implemented once we have built the base for the system, tracking people. Being able to display this information is also a crucial part of the final system. If the data is not displayed to the user, this would ruin the purpose of collecting the data in the first place. So a great part of our focus will also be in displaying this data in the best way possible. A big part of this system is to make it able to distinguish between different types of tickets, and inform the checkpoints whether or not the given 33 person have the right to enter the given area. Once we are able to inform the checkpoints of access rights, it would be possible to implement a way to completely deny all access through a specific checkpoint, making it easier to control the movement flow. The requirement of automatic guard distribution will not have a very high focus when we develop the system. This is due to the fact that it only serves as an additional feature, since it is already possible to directly monitor the assets. So this will be a functionality we might incorporate if we have time, but there are other functions that have a higher priority. Another implementation is the money system. This is also something we would like to implement, but does not have the highest priority either. The reason for this is that when we start managing persons money, there is a lot of different issues we will have to consider. The security aspects of the system become paramount for the system. Also, there might be some legal aspects we need to consider in order to legally implement this. Since the requirement of having commercials showing after a purchase, relies on having a money system in place, this also does not have a very high priority in our system. Having a backup power supply source for the system is also extremely crucial if it were to be implemented in a real-life scenario. This however, is more of a hardware solution rather than a software solution. This means that we will make our system able to cope with a power outage, so that it can restore its previous state once the power is back. But ensuring that the system is always powered is something that has to be solved on the hardware side. Due to our current equipment it should be possible to add this in some way, since it is currently just powered by a USB connection. We were also asked to implement some kind of location based event-viewer. This was to be used mainly by the user after entering an area by having some kind of connection between his RFID chip’s location and his phone. This would open up for the possibility of sending information about the events happening in the area the user is currently located in. Such an implementation would have to be implemented for a smartphone. Since this does not supplement the main functionality of our system, this has a very low priority for us. 34 However, if we were to implement a connection between the tag and the phone, it would also be possible to incorporate it into Facebook in some way. This would enable the user to find the location of his friends in a Facebook group etc. But due to the previous implementation, this also has a very low priority. 4.11 Summary Through a technology analysis, it was possible to decide what kind of technology should be used for the system. Also, by creating a class defenition as well as a detailed class structure graph it was possible to get a good understanding of the problem-area. With the help of an event table and state diagram charts, it was possible to understand how the system should behave and in which states it should find itself in. Based on the focus areas it was possible to create a priority list and structure the work process from most important elements to least important elements. 35 Chapter 5 Design The purpose of this project is to create a system that is capable of tracking the position of certain assets using RFID technology. Due to the fact that there is a time limit for developing this system, a prioritisation must be made in order to complete the most important parts of the system first. That means we must prioritize the list of requirements from the informants so that we develop the most relevant and most crucial parts of the system first since some of these parts are a building block for other system parts. 5.1 Quality goals This section covers some criteria for the application. A list of criteria is given, described and finally summarised in a table to give an overview. The overall idea with these goals is to be able to guide the design process of the application. User friendliness is considered important since the analysis showed that parts of the workforce is not educated in their specific tasks and different people will be using the application from one year to another. The application should therefore be very intuitive for new users. It can be difficult to conclude on user friendliness but by following known methods and laws for good user interface it is possible to create a good user interface. Secureness is also valued as important because the database potentially will contain some personal information about guests and the workforce. To enforce the importance of this aspect the system should be built in such a way that any user only has access to information to that specific user, while illegal or unwanted intrusion of the database must be handled in some way in the 36 program. Efficiency is considered to become trivially fulfilled. This must not be understood as the system’s efficiency, but the application’s. The application will be running on a platform where efficiency problems most likely can be solved through hardware choices. The goal for this criterion is simply to make an application that can run without hassle on a modern computer. Correctness is important as the software is mainly developed for a rather specific market. The development should not sacrifice the correctness of the functionality, compared to what interest the informants have delivered to the project. To reasonably take care of this criterion, the main functionality interests from the informants must be clearly presented in the application whereas other interests may be implemented in a lesser degree. Testability is valued very important because the system itself seems to only be used in short timespans every year. This means that the system and the application have to be put together and tested as a routine event. For this to work properly, the development of the application must include that every part of the application can be tested. Flexibility of the code is valued less important. The code for the application should always be flexible for object oriented programming but it is not considered to be important compared to other aspects for this application. Understandability of the application code is likewise a flexibility, also not marked as important. Like the flexibility aspect, good object orientated programming should be readable and meaningful but other aspects of the application are again valued higher. Criteria User friendliness Secureness Efficiency Correctness Testability Flexibility Understandability Very imp. Important Less Irrelevant imp. Trivially fulfilled x x x x x x x 37 5.2 Detailed system overview The system is to be composed of several different smaller components as seen in Figure 4.11. Each component will be described in detail along with its responsibilities, capability and use. It will also be described how these components are associated and how they interact with each other. The database is responsible for handling all the data about the festivalparticipants and all the different checkpoints. It basically stores all information that the system will be using. It delivers information to each checkpoint regarding the access rights of each festival-participant. The database also contains information of each checkpoint, specifying whether or not each checkpoint is open. It is also responsible for administrating whether or not each user has the rights to view or modify data in the database. The checkpoint manages the entrance to an area and scans all festivalparticipants RFID tag before they enter that area. Based on the information it gets from the database about that specific festival-participant it will either deny or allow access to the area. The checkpoint also constantly checks the database to know whether or not that specific checkpoint is open or closed. Each RFID wristband has the sole purpose of storing a unique ID that can be read by the checkpoints. The ID is used to uniquely identify each festival-participant so that the checkpoint it able to determine the access rights of the correct festival-participant. The user interface provides the users with a way to manipulate data from the database through a graphical interface. It is able to add and remove festival-participants from the database, along with modifying existing ones. The modification include changing ticket types and modifying trouble maker status. Managing money for each individual is one of its responsibilities as well. The user interface also needs to fetch data from the database and display it intuitively to the user. This data includes information about each festival-participant’s location, ticket type and trouble maker status. It must also display an overview of where each worker is supposed to be and wheter or not that is violated. Through the user interface it is also possible to open or close a specific checkpoints. 38 5.3 Component architecture The component architecture describes the system’s components and also gives a rough overview of the system. A system can be designed based on different patterns. Our system is based on the client-server pattern which consists of a server component and a number of clients – connected to the server. Figure 5.1: The component architecture The server component contains a model and a function component. The model component’s responsibility is to maintain a technical representation of the problem area and it is connected to the function component. The model also contains a representation of the database. The function component is responsible for making the model accessible for actors in the scope. The client components in the system are the RFID gateways and the administration. The RFID gateway scanners user interface is very simple and include LEDs and registration of the RFID chip. The administration component’s user interface is a program running on a computer. The administration client is linked to the server and it has both a user interface and a function component. The client has a graphical interface the user can interact with. The user’s interaction with the program calls functions, which then communicates with functions in the server component. 39 Figure 5.2: The model component Timestamp has an association to both user and equipment. This association is a many-to-one, which means it is possible to have many timestamps to user and equipment respectively. Timestamp is also associated to gateway with a many-to-one relation and gateway is associated to area with a one-to-many relation. This gives a possibility to see where a user has been at a given time. One user can have one ticket and therefore user has an association to ticket with a one-to-one relation. 5.4 User interface This section contains sketches for a user interface with the needed functions, presented in a simple and effective way, combined with argumentation for the most important aspects of the design. 40 Figure 5.3: Areas window 5.4.1 The menu The main menu of the application will always be visible which makes navigation easy to master, safe to use and effective, as the user always have a static reference point to go from. In the top half of the menu the general user windows is located in a group of buttons in the top-left. They communicate a starting point of the main functions in the application. In the bottom of the menu two buttons are located together, the buttons text are cursive. These two changes in the design translates to more specific and ”non-general user” parts of the application. The buttons in the menu are located after the individual window’s relative relationship to each other, for instance the area overview is placed right next to the port-control window. The menu is adaptive to the user. A bartender would probably never need to export data or find a guest, so these buttons should in this case be removed to not confuse the user and prevent misuse of the functions. 41 5.4.2 Areas The main function of the application is located in this window: an overview of all the areas, with the actual amount of people in the area including a max amount of people allowed in the area and how much of the work force is distributed in the area. As seen on Figure 5.3, a progress bar is added to the individual areas. This is done to make the observation of the actual amount of people in the area compared to the max amount of people quick to visualize and easy to understand. The numbers for this progress is shown since a misreading could occur if the user reads a progress bar of one area but thinks of it as from another. The last number for every area is based on the amount of employees in the area. This number would also be difficult to relate to a progress bar, which again requires actual number to represent the areas. The individual area objects in the window is auto fitted in size so that an unlimited amount of areas can be added, without any area objects leaving the window and thereby optimizing the quality of the overview. This choice could become a problem if for instance 50 areas are added to the application but it is considered very unlikely that a such large amount of areas is needed. If a very large amount of areas is needed in a given system, a bigger screen with a higher resolution would make the problem less profound. 5.4.3 Gates The port management, see Figure 5.4, is basically a subwindow of ”areas”. The only difference is the content of every area object, which is changed to a list of gate-connected areas. Next to all the listed areas is the open/closed checkbox. This checkbox is built so that no confusion can exist from the chosen box. The two rows of boxes is placed underneath ”open” and ”closed”, which constantly updates what setting has been chosen, and what has not. 5.4.4 Search This window, see Figure 5.5, is based on a search function with filters. The search bar will search on anything inside the database, unless restricted through the filters. The reason for the time span filter is that the user have interest in the activity of a given item or person inside a time span. But this function would be complex to master if it based on a text-code inside the search bar itself. The same goes for area and type choice. The user might 42 Figure 5.4: Gate window not know exactly which word to use in the search bar alone, but with a presentation the user can easily browse for the correct words. The person/item filter is useful for wider searches, for instance if all activity of all items in a area have interest. The search bar contains a greyed out text that gives the user some additional ideas for search terms. The search result window adapt to the search items found to minimize the clutter of the window. The phone number row will for instance not appear if only items has been returned. Every result list can be sorted by given rows to optimize the usefulness of the list. Every person returned in the search can be double clicked or right-clicked to take the person’s ID to the ”guest” window. 5.4.5 Guest This window, see Figure 5.6, is based on scanned IDs from wristbands or the ”search” window. The function of this window is to add, remove or edit the information bound to an ID, change the ID, ticket type, add warnings or make the wristband inactive. The Information section will adapt to the 43 Figure 5.5: Search window existing information bound to the ID. If the user want to add information, the button ”add/edit” will present a simple pop-up windows with a form to add, remove or edit information. The ”comment” section is a text field, where the user can add any comment they want. The buttons ”give warning”, ”new wristband” and ”turn off wristband” will add a line of information in the comment field, as a log over the actions done to the ID. This gives a simple and effective way to keep a relationship to the person’s actions. The ”new wristband” button will also prompt a pop-up that requests a new ID from a scanned wristband, in order to avoid faulty use of the system. 5.4.6 Bank This window, see Figure 5.7, contains a very basic function. When an ID is scanned from a wristband the ID and the balance of money related to the ID is shown. From this point the user can add and/or subtract an amount of money from the ID. The chosen action is either terminated with the ”cancel” button or performed with the ”transact” button. The two functions add and subtract is separated graphically to avoid misunderstandings with the layout of the text fields. The ”transact” and ”cancel” buttons is located in 44 Figure 5.6: Guest window the middle in a top down format, to communicate that the actions of both buttons is performed on both functions. Right above the button ”transact” is the final outcome of either functions. This is simply done to help the administrators communicate the costumers resulting money-balance. 5.4.7 Setup This window and contains two sub-menus, ”area”, see Figure 5.8, and ”RFID”, see Figure 5.9. Both menus contains setup functions for the problem area. The procedure of ”areas” follows an intuitive thinking, where you have to create two or more areas to make a gateway between them. All other options are referred to through the name of the area. A list is chosen to contain all the different areas to make the overview easier. To delete or edit the attributes of an area, the user clicks on an area from the list and the options is shown in the form above. The RFID-setup menu contains relevant options that can be changed and modified as the user might want to. All RFIDs are split in two groups: persons and items. A person is defined through its type, so that an employee and a partout guest is a ”person” and will therefore both contain information 45 Figure 5.7: Bank window and access rights. On items, the ”access to” option will be forced to ”all” so that no items can be denied through gates. To link IDs to the type, the user can either type in one ID, an ID range or scan a package of RFID. Again a list in the bottom of the window shows all the added types, where a click on an item will show that item’s options and information right above in the form. The ”delete RFID” button deletes the type. The button is located in the top so the user will relate the button to the information in the form and not the list itself. The ”save” button on the other hand, is located right above the list which gives a more combined effect of the information in the form and the list. The location of the button is like the area-setup window, to enforce uniformity and overview. 5.4.8 Export database This button have no effect inside the application, as it simply exports all the data from the database into an open file container where statistics can easily 46 Figure 5.8: Area setup window be built from. 5.5 Design principles In the design we have chosen to make use of several design principles in order to improve usability. One of such is consistency, where it is important to be consistent in the use of design features. For instance if you look at Figure 5.4 and Figure 5.3 the layout is quite consistent. Another principle is to give users feedback on their actions. To enhance the users feeling of control, it is important that the interface will let the users know the response to their actions. For instance if you press a menu button, it gets highlighted to let the user know that they successfully clicked it. Visibility of what is possible is also quite important. For instance if you 47 Figure 5.9: RFID setup window look at the search field in Figure 5.5 you can see it is possible to search for several different things. This ensures that people are able to recognize what they are able to search for. The search field also accommodates flexibility. People have different interests and experience and will be searching for different things in many different ways, especially depending on which piece of informationt they have and which they are looking for. 5.6 Summary In this chapter we made some goals for the application to help focus design and implementation in the wanted direction. The application is designed and defined through several diagrams to help the overview and understanding of 48 the functions. Lastly a prototype of the user interface is created and design considerations is presented. 49 Chapter 6 Implementation of the Administrative Program Figure 6.1: Program goal The picture on Figure 6.1 is what the program should look like once the development process is completed. It should be a really simple, yet 50 informative user interface and must be extremely simple to navigate. The goal is based on the information that was acquired during the analysis phase for the graphical user interface. This chapter is dedicated to describing how this goal is achieved through a detailed description of the design process along with an explanation of each implementation. 6.1 Program Design As mentioned earlier, the whole system is based on a client-server architectural pattern. The administrative program is a client component in the system. It connects to the database, which is the server-component in the system. The system is built around the idea that no clients have connections to each other. This means that if there is a need to edit information about specific customers, areas or gateways it must go through the database to achieve this. 6.1.1 The Administrative Program is a Subsystem The administrative program is by nature a subsystem of the main system, because it is a component that communicates with another component: the database. This allows the program to have its own architectural pattern as long as it achieves the desired functionality. By doing so, the development process is eased significantly which enables the possibility of dismantling the main task of this program into even smaller tasks. 6.1.2 Layered Architectural Pattern It was decided that the program would use a layered architectural pattern to ease implementation and separate functionality. As can be seen on Figure 6.2 the program is divided into three component layers. All the components will be described in detail later in this chapter. The interface layer consists of all the interface components used in the program. These components are the components responsible for displaying all relevant information through a graphical user interface. In accordance to the layered architectural pattern this layer is not allowed to access the model layer directly - it must go through the functions layer. The functions layer is composed of different components which each manages different aspects of the problem domain. This layer provides functionality to 51 Figure 6.2: The Layered Architectural Pattern the interface layer. It then communicates with the model layer according to the request from the interface layer. The model layer is actually an interface to the rest of the system because it is the only connection to the database. But because all information to and from the database goes through this component, it can also be seen as the model component in this architecture. This also eases implementation because whenever information is needed about specific objects in the problem domain, this layer is accessed. Only the functions layer can access this layer. 6.2 Classes Implementation of the classes was based on the class definition in section 4.5. The main classes SurveillanceObject, Person, Participant, Worker and 52 Equipment are all basically unchanged compared to the original class definition, with some minor modifications. A few extra attributes were added such as a string called ”Comment” and a date called ”DateRegistered” these were added to the SurveillanceObject class since these attributes can exist in any of the other subclasses. A ”PhoneNumber” attribute was also added to the Person class, in case this was needed. There was another change that was made was to the Checkpoint class. Originally the idea was to have a checkpoint class contain two gateways: from and to specific areas. Instead, a Gateway class was created to contain every individual gateway, describing a one-way connection from one area to another. This ruled out the need for the checkpoint class, since it would be possible to run through all gateways to find the exact gateways associated with an area. Several attributes was added to the Gateway class including the following attributes: Open, AreaFrom, AreaTo, Description and a unique GatewayID. The Area class is also changed considerably from the original class definition. This class have a number of new attributes: MaxNumberOfPeople, NumberOfEmployees, AreaID, Description and NumberOfPeople. The class also has a few List attributes including ConnectedGateways, ConnectedAreas and GatewaysOut. These three lists were created since there were difficulties navigating through each area object. By adding these attributes it became much easier to develop the program. All these attributes are needed to be able to represent an area and easily navigate through each class. An overview of the updated class diagram is shown in Figure 6.3. 6.3 Handlers Different handlers were created in order to distribute the different functionalities required by the program. Each handler is responsible for handling these functionalities for a certain class. These handlers include SOAPHandler, RfidElementHandler and AreaHandler. Both RfidElementHandler and AreaHandler have some methods in common: Add, Delete and Modify. Each method takes an object of the given class as a parameter, e.g. the Add method in RfidElementHandler takes either a Person or an Equipment object as a parameter and creates the relevant object. This makes it easy to create, delete and modify content since the entire, and already created, object is passed. 53 Figure 6.3: The detailed class diagram with attributes 6.3.1 SOAPHandler The SOAPHandler is the ”model” of the previously described layered architectural pattern on Figure 6.2. This handler’s purpose is to create a communication from the program to the database. Having this handler provides a way to easily retrieve data from the database without having to know how to directly communicate with it. A good example of this is the GetGateways method, which takes an area ID as parameter. This method returns a list of all gateways associated with the given area ID by running through the information from the database. Most of the methods contained in the SOAPHandler basically converts the data from the database into objects usable in the program. In other words the SOAPHandler is responsible for interpreting data received from the SOAP client to something the rest of the program can understand. The SOAPHandler is merely an encapsulation of the SOAP client, which keeps it isolated from the rest of the program. 54 AuthHandler As an extension to the SOAPHandler the AuthHandler was created. This handler’s purpose is to handle login information to the system and pass this to the SOAPHandler. Having this as a separate class provides an easy way to change login methods to the database if this is needed. The handler consists of two main methods: SetUsername and SetPassword. These methods refer to private properties in the class which prevents access to the username and password outside this scope. 6.3.2 RfidElementHandler The handlers for the surveillance elements is mostly divided into two methods. This is necessary since the class Person and Equipment do not have the same attributes and therefore need to be handled differently. This is done by having overloaded each duplicate method to take a different parameter, e.g. when adding a person the Add method has a Person object as parameter, while the Add method for adding an equipment has an Equipment object as parameter. Handling these objects requires some additional methods including SearchPerson, SearchEquipment, GetTimeStamps, GetRequiredLocations and SearchInAreas. The SearchPerson method is used to search a person by entering any of the information originally provided by the user as a search criteria. This method returns a list of all Person objects that match this search criteria. SearchEquipment does the same except it returns a list of Equipment objects. GetTimeStamps returns a list of time stamps for a given element, each time stamp representing a movement from one area to another along with the time of this event. It was necessary to implement GetRequiredLocations into this handler since Worker inherits from Participant and therefore also uses this handler. This method returns a list of time stamps defining when and where the worker is supposed to be. SearchInAreas is used to retrieve every person who is currently located in the given area(s). The idea behind the RfidElementHandler was to add more functionality than is currently implemented. The thought behind it was to have methods such as AssignWarning, Deposit and Withdraw money, so that the logic would be handled by the handler instead of having to call a modify method. E.g. if AssignWarning was called, the handler would know the logic behind that method. It would know that it would have to assign the TroubleMaker property to true and assign the given comment to the ”Comment” property. 55 At the moment this is handled through the Modify method. While most of the currently implemented methods work as intended, implementing such smaller methods would simplify the process. These methods are currently not implemented due to time constraints, as described earlier. Deposit and Withdraw money was not a high priority and was therefore not implemented. 6.3.3 AreaHandler The AreaHandler is responsible for managing the areas in the festival. As mentioned before, this class also has the Add, Delete and Modify methods. But these methods differ from the other handlers in the way that a lot of logic is actually implemented in them. While the class does have the same methods for adding, deleting and modifying gateways, adding and deleting are only used by the handler itself while adding, deleting and managing areas. This simplifies area creation and deletion since the handler is responsible for creating and deleting all relevant gateways. There are two other methods in this handler: the GetAreas and the GetAreaDescription. The GetAreaDescription method returns a string with the description of the requested area. GetAreas simply returns a list of all the areas in the database. 6.4 Interfaces The interfaces are all responsible for drawing the information gathered from the database in a nice and organized fashion. Whatever is shown on screen is a result of a call to one of the different interface components. These include: MainWindow, AreaOverviewInterface, GatewayControlInterface, SearchInterface, CustomerControlInterface, AreaControlInterface and the CustomerManagerInterface. They are each responsible for a certain area of the interface. 6.4.1 Main Window This is the main window that loads up when the program starts. The main window was designed based on the user interface analysis in section 5.4. All user controls are placed on this window. Each of the remaining interface components simply gets a shared panel to fill and that panel is located to the right of the buttons in the main window. The main window is in charge of loading up the relevant interfaces depending on which button is clicked, thereby calling the interface that is responsible for managing that specific 56 aspect of the program. The main window is a menu for all different aspects of the program. It is here the user chooses what to do with the program. 6.4.2 Area Overview Interface Figure 6.4: The Area Overview Interface The AreaOverviewInterface Figure 6.4 is responsible for drawing the panel with all the information about a zone, including area name, people count, max number of people and number of employees. It also shows a progress bar depending on how how many people are in the given area. It has a panel for each of the areas in the database. This panel is not interactive. This is only here to simplify surveillance. A problem here was that the information generated on the screen only represented a certain moment. It would be more benificial if this information was constantly updated. This problem was solved by adding a timer into the constructor of the panel that updates itself every 30 seconds, so that the information is as new as possible without abusing the server. 57 6.4.3 Gateway Control Interface Figure 6.5: The Gateway Control Interface The GatewayControlInterface Figure 6.5 is responsible for managing all the gateways in the database. This displays a panel for every area in the database and shows each and every gateway in each area. From this interface you can then decide which gateways are opened or closed. Note that each panel displays what gates lead away from it. That means it is possible to configure a couple of gateways in such a way that you are allowed to leave the area but not enter it again. This gives a huge amount of flexibility for the user. This is accomplished by calling the GetAreas method from the AreaHandler. It then iterates through all the areas in the list while iterating through all the gateways that lead out of each area. A problem here was that there was no simple way to relate each button to its respective gateway. There were two solutions: one was to create a class that derives from the radio button that implements an Attribute called Gateway. Then, everytime a button was added, its respective gateway would 58 then be added to the control and that class would be added to a list of controls. Once the saved button was clicked that list would iterate saving the value of the open radio button to each respective gateway and calling the ModifyGateway method from the AreaHandler. The other solution was to simply create another class called GatesAndRadio with two properties, a Gateway and a RadioButton. All radio buttons are added to a list and then the same thought process as before is applied. That was the solution that was implemented because of its simplicity. 6.4.4 Search Interface Figure 6.6: The Search Interface The SearchInterface Figure 6.6 is responsible for displaying search results on screen. It is possible to choose between the different types of surveillance objects to search for, as well as searching for a multitude of different attributes such as RFID ID, CPR number and someone’s first or last name. Once it receives the list of elements from the RfidElementHandler, it creates the columns depending on what type of object the person searched 59 for. The program then iterates through the list, adding all elements found to the table. It is then possible to edit each element of the table and then submit for change. Every time one of the rows is edited, it is added to a list of changed rows, which is the list that iterates and submits for changes through the RfidElementHandler. It is also possible to right click on any of the elements and then choose to manage them, which opens up the CustomerManagerInterface with that specific persons information displayed. Later on in the development process it was noticed that the strategy pattern could have been used when implementing how the Data Grid Table behaved depending on what kind of results it needed to display. Here, the different classes should have overloaded a few methods called GetColumns, CreateRow and ManageElement. This way the program would just have to call searchResult.GetColumns to create the right columns to represent the necessary data. This could be followed by a searchResult.GetRow in a foreach loop that runs through all of the elements found and uses them as a result of the search. Also, overloading the ManageElement method would make that method responsible for loading the relevant Customer/Equipment Manager Interface. Unfortunately this was discovered too late in the development process and there was no time to have that implemented. 6.4.5 Customer Manager Interface Once someone is found through the search interface, it is possible to right click them and open up this interface and manage them, as seen in subsection 6.4.5. It is also possible to access this control by clicking the ”Manage” button on the left of the screen and then scanning an RFID tag. This will automatically find the associated user and show him on the screen. All of the participants’ information is shown at the top in an organized fashion. Through this interface it is possible to withdraw and deposit money from someones account. It is also possible to hand out warnings and add comments to that specific participant. The bank functionality was not fully implemented because of time constraints and as mentioned in section 4.10 this was not a as high priority as the other functions. Every time an input is given to either one of the two textboxes, there is a check to ensure that a digit is typed in. Each time a new digit is entered, the resulting balance label is updated with the respective value. The interface will not allow a negative balance. There is also a rich text box containing comments about the participant. This is not fully implemented as well since this was not something 60 Figure 6.7: The Customer Manager Interface that was required by either informants - this was just a nice feature that could be useful at some point. 6.4.6 Setup Interface The setup interface is where everything is setup according to how the festival works. This is the place where the user adds, deletes or edits the different areas in the festival. This is also the place where customers and equipment get added. The panel differs from the others since it has a tab control on the top of it which the user can use in order to change what he wants to edit. The first panel is the Area Control, the second is Customer Control and the third is Equipment Control. This interface has no real appearance besides the tabs in the top of the page. 61 Figure 6.8: The Area Control Interface 6.4.7 Area Control Interface As mentioned before, this is where all areas are managed. subsection 6.4.7 shows this interface. It is possible to add, delete or modify each area according to your need. It is possible to choose the maximum amount of people that each area should be able to manage and also which gateways are connected to it. If the user decides to add or edit an area, the AreaHandler is called with the information along with a list of gateways. It then handles gateway creation so that the user doesn’t have to worry about it. 6.4.8 Customer Control Interface As can be seen in subsection 6.4.8, this is the place where all customers get added. Every time the user presses add, the new customer gets added to the list. Once the user is satisfied and wants to save the list to the database, he just needs to press ”Save All”. This was done so that the user can have a 62 Figure 6.9: The Customer Control Interface good overview when creating groups of customers. E.g. if a group of people buys tickets to the festival, the user can then check if everything is okay before pressing save all. Also, if the user needs to hire a group of workers, he adds all of them to the list and is easily able to check if everything regarding that group is okay. This interface works with the RFID reader so that if you scan an RFID tag, the RFID ID field gets automatically filled with the information in the RFID tag. Also, if the RFID ID cell is selected for any participant and you scan an RFID tag, that field is updated with the RFID tag’s information. 6.4.9 Equipment Control Interface This interface works exactly like the Customer Control Interface. As shown in subsection 6.4.9, it also looks alot like the Customer Control Interface. It has the same RFID functionality as well as the same list 63 Figure 6.10: The Equipment Control Interface functionality. It only has a few minor differences in regards to which kind of information it needs. 6.4.10 Area Statistics One of the the main requests from Aalborg Carnival was the possibility to get an overview of the participants movement patterns. A statistics function was created to achieve this. Because of how this function is built, it can be used in a variety of situations, meaning that both Aalborg Carnival and Nibe Festival might find good use for this function. The statistics window can be seen on subsection 6.4.10, displaying a set of randomized data of 10,000 participants for 3 areas over a 24-hour period. Figure 6.11: A graph example of randomly generated participant data 64 The graph is a point-based 2-dimensional graph with a time interval of one hour. This time interval represents the x-axis of the graph while the y-axis is the amount of people. Each area is then represented by a graph element/curve. The idea behind this is to give the user an easy overview of unique participant activity in each area. By using a point-based graph, it makes it possible to easily spot a progress or downfall in area activity. An external graph library called ZedGraph was used in order to create this graph. [5] Making this graph work with the rest of our system required a special algorithm to analyse each participant. This algorithm was built using randomly generated participant information to make sure that every aspect of the algorithm worked as intended. Several tests were performed later with actual use-case data to ensure the algorithm’s functionality. It should be noted that the algorithm and the statistics function is currently based on static information such as static time intervals. This is being used as a proof of concept due to time limitations. The final implementation of this would be to make the user able to select the time intervals of the graph, as well as which areas to display. Detailed algorithm description The algorithm used to extract graphical data from participants is called GetPoints. This algorithm is called for each area. In this case the algorithm would have to be called three times with each unique area ID. GetPoints takes 4 parameters: an area ID, a list of participants to examine, an interval for the x-axis and a period of the entire graph. For an easier understanding of the algorithm take a look at the pseudocode below. 1 GetPoints ( int areaID , L i s t <P a r t i c i p a n t > p a r t i c i p a n t s , int i n t e r v a l , int p e r i o d ) { 2 3 L i s t <Point> l i s t O f P o i n t s = new L i s t <Point >() ; 4 L i s t <int> a r e a s V i s i t e d = new L i s t <int >() ; 5 TimeSpan c u r r e n t S p a n = 0 ; 6 TimeSpan nextSpan = i n t e r v a l ; 7 int x ; // p a r t i c i p a n t s i n i n t e r v a l 8 9 while ( nextSpan <= p e r i o d ) { 10 x = 0; 11 12 foreach ( P a r t i c i p a n t s in p a r t i c i p a n t s ) { 13 a r e a s V i s i t e d . Clear () ; 14 int t s = s . t s ; // t s − s h o r t f o r timeStamp , i s t h e i n d e x 65 o f timeStamps 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 } 34 } i f ( s . V i s i t e d [ t s ] . Time < nextSpan ) { f o r ( t s = s . t s ; s . V i s i t e d [ t s ] . Time < nextSpan ; t s ++) { i f ( ! a r e a s V i s i t e d . C o n t a i n s ( s . V i s i t e d [ t s ] . AreaTo ) && s . V i s i t e d [ t s ] . AreaTo == areaID ) { x++; a r e a s V i s i t e d . Add( s . V i s i t e d [ t s ] . AreaTo ) ; } s . ts = ts + 1; } } e l s e i f ( s . V i s i t e d [ t s ] . AreaFrom == areaID ) { x++; } } l i s t O f P o i n t s . Add( currentSpan , x ) ; c u r r e n t S p a n += i n t e r v a l ; nextSpan += i n t e r v a l ; The algorithm consists of two loops: the first loop running through every interval within the specified period, and the second running through every participant in the current interval. The first loop waits for x to be computed by the second loop. When x is computed, a new point is added to the list of points for the current area. The loop then increases the current searching time span with the interval specified. Since every interval is now being correctly run through by the first loop, the second loop with the responsibility of computing x will be explained. It starts by running through all participants in the specified list which is necessary for each interval. The variable ts is set to s.ts to use the last examined time stamp of the participant. It would also be possible to reset ts every time, but this would make the algorithm run through already examined time stamps which would increase the running time and would clearly be unnecessary. It is then necessary to check whether the time of the current time stamp of the current participant is lower than the current interval. If this statement is not true it must check if the current time stamp still came from the specified area ID, in which case the participant is still located in the same area as the last time stamp. However, when this statement is true the algorithm must run through every time stamp which is registered before the 66 current interval. If the entered area of this time stamp is not already visited in the current interval and it matches the specified area ID, x is increased and the area ID is added to the list of visited areas. Having this list ensures that there are no duplicates of participants in each interval for each area. 6.5 Server side implementation In order to implement the system model and the functionality, two different decisions needs to be made. They consist of which database to use, and which methods are necessary to use in order to handle the communications efficiency and correctness between clients and servers. 6.5.1 Database During the project, a couple of databases where considered and analyzed based on a few requirements. The ability to implement an object-oriented model structure, effectiveness and easy to implement. The following databases where considered because they are free, open-source and easy to obtain as well as they all have extensive communities to provide support: • MySQL • PostgreSQL MySQL and PostgreSQL are some of the more common databases when it comes to open-source databases. They are both relational databases which makes it possible to implement an object-oriented database structure. Because they are both able to solve the main problem of an object-oriented structure, they are compared with each other based on their performance and efficiency. Based on the results from the page [8], it is safe to conclude PostgreSQL is the fastest in many cases. This leaves PostgreSQL as the obvious candidate. The last requirement is being easy to implement. MySQL have for many years been a part of the php library and therefore is, in many cases, the preferred database system when it comes to web development. This leads to easier available support since this database is more widely used and therefore have a higher amount of support. Because of this, MySQL is chosen as the database for this system. 6.5.2 Communication When communicating between a server and a client, it is necessary to be able to transfer information and retain datatypes between server and client. In 67 order to do this, the SOAP protocol was chosen because it is by default a part of both C#, which is the client side language, and php which is the server side language. SOAP has the advantage that it has strong datatyping and therefore guarantees the given return datatype is correct. Most other API protocols, e.g. REST is not as strict as SOAP when it comes to datatypes and therefore requires both the client and server to typecast the data received which leaves the possibility for error. 6.5.3 SOAP API The implementation of the SOAP API is structured in a Service.php file which handles the inclusion of the relevant classes. This contains the functions of the server as well as handles session persistence, which enables the program to have active persistent connections. The purpose of this is, speeding up execution as well as enabling a single-login-system if needed, instead of sending the login information every time a connection is made. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <?php i n c l u d e ( ” i n i t i a l i z e . php” ) ; function autoload ( $class name ) { r e q u i r e o n c e ( ” ” . $ c l a s s n a m e . ” . php” ) ; } // S e t INI i n i s e t ( ” soap . w s d l c a c h e e n a b l e d ” , ” 0 ” ) ; i n i s e t ( ” s e s s i o n . a u t o s t a r t ” , 0) ; // For p e r s i s t e n t S e s s i o n session start () ; // S e r v i c e $ s e r v e r = new S o a p S e r v e r ( ” S e r v i c e . wsdl ” ) ; $ s e r v e r −>s e t C l a s s ( ” F e s t i v a l S o a p ” ) ; $ s e r v e r −>s e t P e r s i s t e n c e (SOAP PERSISTENCE SESSION) ; $ s e r v e r −>h a n d l e ( ) ; ?> \ c a p t i o n { S e r v i c e . php f i l e − Handling i n c l u s i o n o f c l a s s e s } One of the important functions in the class FestivalSoap which contains all the functions implemented on the server side is GetTimestamps which is shown below: 1 class FestivalSoap 2 { 3 f u n c t i o n GetTimestamps ( $ i n p u t ) 68 { 4 5 6 7 g l o b a l $mysql ; $timestamps = $mysql−>GetTimestamps ( $input −> user id ) ; 8 9 10 11 12 13 14 15 16 $return array = array ( GetTimestamps=>a r r a y ( ) ); foreach ( $timestamps as $ t s k e y => $ t s ) { $tmp arr = a r r a y ( ’ timestamp ’=>” ” . $ t s [ ’ timestamp ’ ] . ” ” , ’ gw id ’=>” ” . $ t s [ ’ gw id ’ ] . ” ” , ’ AreaIn ID ’=>” ” . $ t s [ ’ a r e a i d i n ’ ] . ”” , ’ AreaIn Description ’=>”N/A” , ’ AreaOut ID ’=>” ” . $ t s [ ’ a r e a i d o u t ’ ] . ”” , ’ A r e a O u t D e s c r i p t i o n ’=>”N/A” ) ; $ r e t u r n a r r a y [ ’ GetTimestamps ’ ] [ ] = $tmp arr ; } 17 18 19 20 21 22 23 } return $ r e t u r n a r r a y ; } The purpose of this function is to receive the input from the client, which in this case consists of an object with a user id, which sends this as a parameter to a function inside a mysql class. The purpose of the mysql class is to handle the communication between php and the mysql server, as well as handling the queries that are implemented inside the class. The next function which is called GetTimestamps as well, under the Mysql class. The interesting part about this function is that it executes a query to the mysql server which demonstrates the object-oriented way the database is implemented and used. The function is shown below: 1 c l a s s f e s t i v a l m y s q l e x t e n d s mysql 2 { 3 f u n c t i o n GetTimestamps ( $ u s e r i d ) 4 { 5 return $ t h i s −>q u e r y a s a r r a y ( ”SELECT 6 user id , 7 timestamps . gw id , 8 timestamp , 9 area id in , 69 10 11 12 13 14 15 16 17 18 19 20 21 22 } area id out FROM timestamps LEFT JOIN gateways ON ( timestamps . gw id=gateways . gw id ) WHERE u s e r i d =’” . $ u s e r i d . ” ’ ORDER BY timestamp ASC” ) ; } The way it demonstrates the object-oriented way is through the LEFT JOIN command which joins two tables together based on two id numbers. The two affected tables are timestamps and gateways where gateways are the main class and timestamps are the subclass. 6.6 Checkpoint The checkpoint is implemented using the programming language C. The implementation is based on a prebuilt example code available from the manufacturers webpage with a simple webclient implemented as part of this report. The webclient is demonstrated below: 1 int c l i e n t ( char ∗ host , int port , char ∗ f i l e n a m e , char ∗ parameters ) 2 { 3 int r , s ; 4 struct s o c k a d d r i n s i n ; 5 char buf [ 1 0 2 4 ] ; 6 7 /∗ Setup t h e s o c k e t ∗/ 8 s = s o c k e t (AF INET , SOCK STREAM, 0 ) ; 9 10 /∗ Make t h e c o n n e c t i o n ∗/ 11 b z e r o (& s i n , s i z e o f ( s i n ) ) ; 12 s i n . s i n f a m i l y = AF INET ; 13 s i n . s i n p o r t = h t o n s ( p o r t ) ; 14 i n e t a t o n ( host , &s i n . s i n a d d r ) ; 15 16 i f ( c o n n e c t ( s , ( struct s o c k a d d r ∗ ) &s i n , s i z e o f ( s i n ) ) < 0 ) 17 { 18 e r r o r ( ” Unable t o c o n n e c t ” ) ; 19 } 20 70 /∗ C o n s t r u c t t h e GET r e q u e s t ∗/ char r e q u e s t b u f f e r [ 1 0 2 4 ] ; int s i z e ; s i z e = s p r i n t f ( r e q u e s t b u f f e r , ”GET %s?%s HTTP/ 1 . 1 \ r \ nHost : %s \ r \n\ r \n” , f i l e n a m e , parameters , h o s t ) ; 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 write ( s , request buffer , s i z e ) ; w r i t e ( s , ”\n” , 1 ) ; /∗ Send t h e b y t e s t h a t come back t o s t d o u t ∗/ r = r e a d ( s , buf , s i z e o f ( buf ) ) ; w r i t e ( 1 , buf , r ) ; w r i t e ( 1 , ” \n” , 1 ) ; /∗ F i n i s h out ∗/ close ( s ) ; return 0 ; } void e r r o r ( const char ∗msg ) { p e r r o r ( msg ) ; exit (0) ; } The web clients work by creating a socket connection to a given host and port, given as parameters. After the socket connection is established it sends a HTTP header which is constructed on line 24 and sent on line 26. The header requests a given path and filename on the web directory with a few given parameters which is readable by the server. The function client is executed every time the RFID reader loses connection to an RFID tag. In order to receive the data on the server side the following php script is implemented called GatewayAPI: 1 2 3 4 5 6 7 8 9 <?php i n c l u d e ( ” i n i t i a l i z e . php” ) ; $ g a t e w a y i d = $ REQUEST [ ’ g a t e w a y i d ’ ] ; $ r f i d = $ REQUEST [ ’ r f i d ’ ] ; $ f i l e = ” log check . txt ” ; $ f h = f o p e n ( $ f i l e , ’ a + ’) o r d i e ( ” can ’ t open f i l e ” ) ; f w r i t e ( $fh , ” Gatewayid : ” . $ g a t e w a y i d . ” checked i n ” . $ r f i d . ”\n” ) ; 10 f c l o s e ( $ f h ) ; 11 12 // echo $ r f i d ; 13 echo $mysql−>CheckIn ( $ g a t e w a y i d , $ r f i d ) ; 71 14 ?> At line 4 and 5 the information sent from the gateway is received and loaded into two variables, namely gateway id and rfid. At line 7 to 10 there is a simple log implementation which creates a log file on the file system in case the database is unavailable and is unable to insert the information regarding check-in of a given participant. At line 13 the sql query is executed which is shown below: 1 c l a s s f e s t i v a l m y s q l e x t e n d s mysql 2 { 3 f u n c t i o n CheckIn ( $ g a t e w a y i d , $ r f i d ) 4 { 5 $ u s e r d a t a = $ t h i s −>q u e r y a s s i n g l e a r r a y ( ” SELECT u s e r i d FROM u s e r s WHERE r f i d =’” . $ r f i d . ” ’”) ; 6 $ e q u i p m e n t d a t a = $ t h i s −>q u e r y a s s i n g l e a r r a y ( ” SELECT e q u i p m e n t i d FROM equipment WHERE r f i d =’” . $ r f i d . ” ’ ” ) ; 7 8 i f ( $user data ) 9 { 10 $ t h i s −>query ( ”INSERT INTO timestamps ( gw id , timestamp ) VALUES ( ’ ” . $ g a t e w a y i d . ” ’ , UNIX TIMESTAMP( ) ) ” ) ; 11 $ t s i d = $ t h i s −>i n s e r t i d ; 12 $ t h i s −>query ( ”INSERT INTO rel user timestamp ( ts id , user id ) VALUES ( ’ ” . $ t s i d . ” ’ , ’ ” . $ u s e r d a t a [ ’ user id ’ ] . ” ’) ”) ; 13 return ” 0 ” ; 14 } e l s e i f ( $equipment data ) { 15 $ t h i s −>query ( ”INSERT INTO timestamps ( gw id , timestamp ) VALUES ( ’ ” . $ g a t e w a y i d . ” ’ , UNIX TIMESTAMP( ) ) ” ) ; 16 $ t s i d = $ t h i s −>i n s e r t i d ; 17 $ t h i s −>query ( ”INSERT INTO rel equipment timestamp ( ts id , e q u i p m e n t i d ) VALUES ( ’ ” . $ t s i d . ” ’ , ’ ” . $equipment data [ ’ equipment id ’ ] . ” ’ ) ”) ; 18 return ” 1 ” ; 19 } else { 20 return ” 2 ” ; 21 } 22 } 23 } 72 This function handles the insertion of data into the database. First it checks whether the given RFID is a participant or a piece of equipment. In both cases it inserts the information at their respective locations in the database with a UNIX TIMESTAMP attached in order to make a timestamp of the event. The function ends by returning either 0, in case of participant check-in, 1, in case of equipment checkin or 2 in case of error. 6.7 Testing The program needs to work as intended. There needs to be an insurance that the program actually does what it says it does. It was decided that it was necessary to create a few use cases and thoroughly test them to ensure that whatever input was given to the program was valid and that all output was relevant and correct. This program is entirely based on the information it sends and receives from the database, so what was done was that every time the program communicated with the SOAP Client there were artificial breaks added at those spots. This ensured that the data was sent correctly and that the data was received and managed correctly once the program received it. It was also checked whether or not the program displayed correct information on the screen. 6.7.1 Use Case Tests There were 7 different use cases that were created which needed to be able to function as intended in order for the program to be seen as a success. The server had been filled with data so that it was possible to conduct searches and get relevant data back from it. It was also a priority that all functionality was quick and easy to use as well as intuitive. The use cases can be described as follows: • Check the location of a user/an equipment • Manage a user • Check the status of an area • Add/Delete/Modify an area • Add/Delete/Modify a user/an equipment • Control the different areas by opening and closing gates. 73 The first use case was to check the location of a user/an equipment. The search interface was accessed and then a few names were searched. The RFID Reader was also used in conjunction with an RFID tag which also worked perfectly and displayed correct and relevant information on the screen. The next step was to manage a user. That meant being able to edit his information, add or remove money and to be able to add comments to the user and give him warnings. While comments and warnings were not something that was implemented, there was still a desire to make sure everything worked as intended so that it would be impossible to break the program by entering wrong input. That way it would be quite simple to finally add those features in once needed. This interface was accessed in two ways: by the normal search function as well as scanning the RFID tag after clicking on the ”Manage” Button. Regardless of which way was used to access this function, no errors were found. This was also tested extensively because scanning an RFID tag and having relevant information pop up on the screen is awesome. The manage interface was thoroughly tested as well by attempting to enter as much invalid information as possible. Nothing broke the program though. If other information needed to be edited such as name, CPR number, etc the search interface was used. No problems were found here either. Another important function was the ability to monitor different areas. This was easily tested by simply accessing the Area Overview Interface. This was tested together with the Add/Delete/Modify area functionality so that it was possible to see whether or not information was delivered correctly and received correctly as well. Everything was a success, all information was sent correctly to the server and all information was received and handled properly as well. Multiple areas were created, deleted and modified in the process as well as checking the area overview tab to see if everything was working as intended. Right after Area Control was tested, the user and equipment control was tested as well. Again, everything worked as it should. All information sent to the server was sent correctly. The only place where it was possible to add invalid information was the RFID ID. This was circumvented by encouraging the use of the RFID scanner to input the correct RFID tag. Otherwise everything else worked as it should. The next functionality that needed to be tested was the ability to control the different gateways. This worked exactly as it should as well. Information was 74 sent correctly to the server and was also managed and displayed correctly on the screen. 6.8 Summary After all testing was complete, the program functioned exactly as intended. There were no flaws in the program - it was capable of communicating with the database successfully. All the functionality was easy to access as well as intuitive. The same goes for the design of the program - since all the information is handled by different classes and handlers and not in the user interface itself, it is very easy to apply a new design. The main part of the program, the tracking functionality, was implemented very well and functions perfectly. It is very easy to find any customer in your festival with very few clicks of a button. The architecture of the classes in the program was also built up in an intuitive and easily manageable way. This makes future development easy if the need ever arises. 75 Chapter 7 Conclusion We have succeeded in solving our main problem statement through scoping and solving its subproblems. We gave these subproblems different priorities in section 4.10. Our main focus in this project was to make a system that is able to keep track of where people are located. We have managed to create a software solution that is able to track the location of people and equipment. In this software solution we have also managed to create a user interface in which to access and display the information. We have implemented display functionality that makes it posssible for the users to easily find the information they need by methods of searching, viewing statistics, and models of the problem area. We have also managed to achieve userfriendliness in our solution by using the gestalt laws of perception, a generally effective menu system and a good compromise between size, location and importancy of the content. One aspect that was of a high priority was to have different types of tickets, like 1 days passes, several day passes, etc. This feature was unfortunately not implemented since there was not enough time. Within our time span there were a lot of functionality that needed to be implemented, and unfortunantly this implementation got pushed back since we felt that the other parts of the system were more important to complete first. Another aspect we did not achieve was the automatic distribution of guards, which did not get implemented due to the fact that we did not have time enough to implement this. However, some areas was deemed less important and have not been completed. One of such areas is the money system. We have added the basic 76 functionalities, however we have not implemented functionality regarding real money transfer or other interaction with banks. Reasons for this not having been implemented is because of technical complexity compared to our time restraints and legal complexity. Another less important area was the ability to have intelligent commercials which adapts to the information available about the user, such as location, interests, and your previous purchase. This was not implemented because we saw this as an extra feature and not an essential part of the program, again due to time constraints. Another area is location based events: being able to know what is going on in the area you are located, as well as integration with social media such as facebook or twitter. This also did not get implemented because of time constraints. Having the system restore its current state after a power outage was also something we managed to do. Although we did not find a solution to prevent our system from going down during a power outage, we feel that this is something that could be achieved by having some sort of battery or backup power supply connected to the gateways. This would ensure that the gatways had connection to the network regardless of power outages, as long as the database is located offsite or separate from the rest of the festival’s power system. These are only a few solutions and we would need more time to investigate if it would even work or which other solutions would. Even though we have not achieved all our goals, we feel that we managed to achieve the most important one: To create a system that is capable of monitoring a crowd. We can easily and effectively add, delete and modify areas in the program and create connections in between them. We can just as easily add, delete and modify people in the festival as well as search them by either name, cpr number or rfid tag. Managing crowd movement is a breeze as well, through our gateway control system. However, there are still some things that need to be addressed in order for this program to be implemented in a real life situation. We need to be able to assign different tickets to different people. The need for stability in case of a power outage is also something that needs to be considered. Imagine if all of a sudden, no guests were able to move in between areas because the power was out. This is something that needs to be addressed before we can implement this in a real life situation. Through testing of usecases we have verified the quality of our solution to make sure it is fit its purpose. 77 Chapter 8 Future Works Even though the main requirements were met, there are still things that could be implemented in the program. There were quite a few features that were cut out because of time constraints as well as new features that could be implemented fairly easy with the current solution. There are actually quite a few things that could be added in different ways due to the structure the system uses. It is possible to create a multitude of applications that can connect and communicate with the server. This is possible due to the structure that was used: the server makes a few functions available to outside applications which then decide which functions it wants to use as well as how to interpret the data it receives from the server. A promising possibility would be the schedule application for smartphones. This could for example have been accomplished by adding a schedule of events onto the database and creating a function on the server which returned this list. The smartphone would then take this information and create a visual representation of that list for the user. All the user needs to do is download the application which has a built-in connection to the server. All that is needed is then a smartphone with online capabilities. Another solution would be to provide a huge wireless network at the festival itself. These solutions would of course need to be analyzed in order to find an optimal solution for the given problem. The gateway system is also another area that could be improved. At the moment, all it does is light up an LED light depending on whether or not the user has access to that area. This could be expanded by implementing it into a ticket gate which would also rule out the need for staff at the entrance. An example of such a ticket gate can be seen on Figure 8.1. It would also be necessary to find a proper connection method between the gateways and the 78 database. Figure 8.1: A ticket gate Another thing that could be done was to fully implement the money system. This could be achieved by finishing how money is handled in the program and adding some security around it. Furthermore, it would be possible to have terminals located around the festival which are able to read a user’s RFID wristband and lookup the balance of that user from the database. It would also have the possibility to withdraw or deposit money from your balance. In order to fulfill the requirements of a real life implementation, it is necessary to ensure a certain standard on reliability. This could be achieved by implementing a separate power source to each gateway. This way, should there be a power outage, customers would still be able to move around unaffected by that outage. It would also be nice to further implement even more data representation in form of statistics into the program. Currently, there is only a graph that shows the amount of people in any given area at any given time. That could be expanded to show the influx of people represented as people per minute or maybe a graph that shows the average time spent in each area per user. 79 It would be nice to be able to have these sets of statistics shown visually in the program as well as having the possibility to export them to a file. While at the moment it is possible to save a picture of the graph, another possibility would be to save all information to some kind of data file so that other programs could analyse and interpret that data. Another functionality that could be added would be the possibility to change between languages. This is because there is a big variation in our user base: Everyone from festival administrators to ticket sellers could be using the program, and not all of them have the same level of expertise with the English language. This will also make further development of the program available internationally. 80 Bibliography [1] Vangie Beal. All about rfid. http://www.webopedia.com/DidYouKnow/ Computer_Science/2005/rfid.asp - Visited 20/09/2011. 22, 23 [2] DR. Danske festivaler fordoblet på 10 år. http://www.dr.dk/Nyheder/ Kultur/2010/07/07/07101728.htm6 - Visited 24/10/2011. 6 [3] Roskilde Festival. Hvor mange deltagere har der været på roskilde festival gennem årene? http://roskilde-festival.dk/presse/nice_to_ know/6 - Visited 24/10/2011. 6 [4] http://www.festivalinsights.com. Rfid wristbands starts to take off. http://www.festivalinsights.com/2011/04/ rfid-wristbands-start-to-take-offvince-power-aims-to-create-100m-empire-council - Visited 27/10/2011. 6 [5] rjosulli jchampion, kooseefoo. Zedgraph. http://sourceforge.net/ projects/zedgraph/ - Visited 13/12/2011, 2008. 65 [6] Peter Axel Nielsen Jan Stage Lars Mathiassen, Andreas Munk-Madsen. Objektorienteret Analyse og Design. Marko, 3. edition edition, 2001. 1, 2, 4 [7] Jens Müller. Hvad er teknologi. http://www.tnb.aau.dk/fg_2010/sw_ dat/pv/PV%204/Hvad%20er%20teknologi.pdf - Visited 14/12/2011. 17 [8] Randombugs.com. Mysql vs postgresql benchmarks. http://www. randombugs.com/linux/mysql-postgresql-benchmarks.html - visited 18/12/2011. 67 [9] Aalborg Universitet. 3. semester dat3, s.17-18. http://www.sict.aau.dk/digitalAssets/27/27026_ forel--big-datalogi-bachelor-3-6.pdf - Visited 02/11/2011. 8 81 [10] www.webopedia.com. active tag. http://www.webopedia.com/TERM/ A/active_tag.html - Visited 20/09/2011. 23 [11] www.webopedia.com. half-duplex. http://www.webopedia.com/TERM/ H/half_duplex.html - Visited 20/09/2011. 22 [12] www.webopedia.com. passive tag. http://www.webopedia.com/TERM/ P/passive_tag.html - Visited 20/09/2011. 23 [13] www.webopedia.com. tranceiver. http://www.webopedia.com/TERM/ T/transceiver.html - Visited 20/09/2011. 22 82 Appendix CD Source code of the C# application and SQL database Compliced C# application Audio files of interviews 83 Academic report The report The report is generally structured around the waterfall method phases. We begin by analysing the requirements for a software solution in the desired problem area followed by a software design, an implementation and then testing and evaluation hereby. The requirement of informants was a new aspect for all of the members in the group which evolved into a bigger discussion about its most fitting place in the report. We however chose to place the context of the interviews as the very initial part of the requirements analysis as we chose to look them as the driving force behind the programs required functionality. This project Work model: We initially chose the waterfall model as we believed the construction of the program would fit the project itself better. We however ran into a wall of discussions about the design and implementation of the program. We finally chose to do some changes to the design in response to the implementation phase and thus adapting the evolutionary implementation model to our initial work and report. We believe the waterfall model has shown itself inadequate for our way of working. Methodology To give a better understanding of the methods used in the analysis, this chapter will describe these methods. ”Problem area: The part of the environment, which is being administered, monitored or controlled by using a system.” [6, p. 43] The analysis of the problem area includes development of an event table, a class diagram and related state diagrams. To give an overview of the most important events and their connection to classes, an event table is made. The event table will show events to the left and classes at the top, a connection is shown with an X. A class diagram is constructed in order to give an overview of classes and objects in the problem area and the connection between them. State diagrams show the state an object can be in during its lifecycle. The object can change into different states while events can affect the object and make it change its current state. 1 ”The scope of the problem: An organization, which administers, monitors and controls the problem area.” [6, p. 113] As a part of analyzing the scope of the problem, a table of roles will be developed. This table gives an overview of the actions and their connection to people in the scope of the problem. ”Criterion: A wanted property about an architecture.” [6, p. 173] To show the priority of the criteria, a table is developed to show which priority a given criterion has. The priority can vary from very important to irrelevant. The criteria used are from a checklist [6] with the most classical criteria. ”Component architecture: A structuring of a system in mutually connected components.” [6, p. 185] The component architecture describes the system’s components and also gives a rough overview of the system. A system can be designed based on different patterns. A client-server pattern consists of a server component and a number of clients connected to the server. Another pattern is the layered component architecture. In this pattern, components are layered and more components can be added on a layer. As an example, an interface component can contain a user interface component and a system interface component. In order to gather data for the analysis, two informants have been interviewed using semi-structured interview. A semi-structured interview gives the interviewer the possibility to prepare questions and also reflect on the interviewee’s answers and ask clarifying questions. [6, p. 152] The administrative program needs a graphical user interface. As a part of designing the user interface, there are some principles which can help the process of designing. The Gestalt laws have a psychological impact on the human brain. They are used to create a user interface, which is easy to get an overview of. The Gestalt laws are: • Proximity: elements that are grouped together are viewed as a whole. 2 • Similarity: elements that look alike are viewed as being a group. • Closure: if elements are grouped within a closed space, then these elements are viewed as a whole, even though they are different. • Continuity: elements that are linked or continue visually belong together. • Part-whole: in an area, the smallest element is the element that is noticed. If the element and the background are equally big, it may be difficult to distinguish between foreground and background. Development process The waterfall model is a structured way of developing software. It is divided into five different phases. Phase 1 is the analysis, in which the requirements are described. Phase 2 deals with design and software design specifications. Phase 3 is the implementation of the actual software product and results in a program. In phase 4 this program is tested in order to eliminate errors and a test report is written. Phase 5 is maintenance of the finished program. Some faults may occur after the program is tested or released and these faults often need to be corrected. This model is logical and easy to understand but in reality using this model can result in problems throughout the development and can also be very costly when the software is finalized. The cost of correcting errors and faults in the end rather than throughout the development process can be very high. Other models used in software development are evolutionary. They iterate the above described phases a number of times. Using this evolutionary method can ease the process of developing software, because developers are allowed to go back and correct, for example, the analysis in the early stages of the process. 3 Figure 8.2: The traditional top-down approach [6, p. 16] Figure 8.3: Iterative approach [6, p. 17] 4 Work, planing and structure In this project there has been many faults when it comes to structured and time-effective work as very little energy was spent on planing and overviewing the project. This resulted in a significant gap of time where nothing was neither produced or discussed in the group. A milestone time table was created to support the overview of our given time but the lack of structure and planning caused the group to stall for a longer period of time. The lack of structure is likely a supporting reason to our failed constructive implementation. Future projects To improve the work structure and planning in future projects, the group members should consider some degree of work structure that at least contains structured meetings for planning, work and project overview. As a semester is about 4-5 months, these planning and overview meetings should happen maybe weekly to avoid bigger holes of time where work stalls. Notation of agreements and planning should always be done to help all group members remember exactly where the group is in the project and what tasks is to be done until next meeting. These meetings will lessen the communication problem in a considerable degree, as all members have a more formal and structured way of meeting and thereby communicating. The communication outside the group room could also be optimised and regularly performed through the use of a more adapted communication technology such as Skype, Facebook or other. A higher degree of respect towards formality and objectivity should also be given to future projects. Lack of file and folder management is for instance a detail that will always evolve into a mess that is impossible to handle and use effectively by anyone. Small and maybe initially harmless trends as this should be noticed and commented on to avoid escalation. These things could for instance be a permanent subject for the project overview and/or planing meetings. Technologies used These were the tools we used to be able to create our solution. 5 File sharing Dropbox - a cloud based file sharing software was chosen to distribute all relevant files to all the members in the group. This services was chosen as all members in the group already used it and were familiar with it. Despite some problems with folder and file management from the group, this turned out to be a very nice feature for the collaborate work. Latex editor ScribTex - a web-based editor that has very low complexity in setup and management. The editor contains version control and merge functions for multiple users in one document out of the box which made it a good candidate for this group project. There has however been small issues with the editor in form of some technical problems where compiled documents were different depending on where the compiling was done in the document. Some folders and files could become locked in place and some references in the document itself had problems finding their reference point at times. This did result in some annoyance that could be avoided with another Latex editor. Subversion A few days before the report was handed in, problems with ScribTex occured which resulted in the need to change both editor and file sharing method. A subversion server was setup and the entire report were moved to the subversion server and all members installed a latex editor on each of the machines. 6