Job Fair Pervasive Computing System Design Report Project Team: Dec0912 Client: Iowa State University Faculty Adviser: Daji Qiao, PhD Course Coordinator: Jason Boyd Team Members: Adam Lee Kartik Subbu Nicholas Oakman Gabriel Semonis REPORT DISCLAIMER NOTICE DISCLAIMER: This document was developed as a part of the requirements of an electrical and computer engineering course at Iowa State University, Ames, Iowa. This document does not constitute a professional engineering design or a professional land surveying document. Although the information is intended to be accurate, the associated students, faculty, and Iowa State University make no claims, promises, or guarantees about the accuracy, completeness, quality, or adequacy of the information. The user of this document shall ensure that any such use does not violate any laws with regard to professional licensing and certification requirements. This use includes any work resulting from this student-prepared document that is required to be under the responsible charge of a licensed engineer or surveyor. This document is copyrighted by the students who produced this document and the associated faculty advisors. No part may be reproduced without the written permission of the senior design course coordinator. Job Fair Pervasive Computing System Design Report Page 1 Contents List of Tables ................................................................................................................................... 5 List of Figures ................................................................................................................................. 5 Definitions ....................................................................................................................................... 6 Introduction ..................................................................................................................................... 7 Executive Summary .................................................................................................................... 7 Acknowledgement ....................................................................................................................... 7 Problem Statement ...................................................................................................................... 7 Operating Environment ............................................................................................................... 8 Intended User(s) .......................................................................................................................... 8 Students ................................................................................................................................................. 8 Employers .............................................................................................................................................. 8 Administrators ....................................................................................................................................... 8 Intended Use(s)............................................................................................................................ 9 First use ................................................................................................................................................. 9 Second use ............................................................................................................................................. 9 Third use ................................................................................................................................................ 9 Assumptions ................................................................................................................................ 9 Limitations................................................................................................................................... 9 Expected End Product ............................................................................................................... 10 Overall System Design .................................................................................................................. 10 PRE-CAREER FAIR REGISTRATION .................................................................................. 11 STUDENT ............................................................................................................................................ 11 EMPLOYER ......................................................................................................................................... 11 MAIN ENTRANCE CHECK-IN .............................................................................................. 12 EMPLOYER BOOTHS ............................................................................................................ 12 TEXT-MESSAGING SYSTEM ............................................................................................... 13 TERMINALS ............................................................................................................................ 14 CENTRAL SERVER ................................................................................................................ 14 Design Specifications .................................................................................................................... 15 Touch-a-tag ................................................................................................................................... 15 Job Fair Pervasive Computing System Design Report Page 2 Functional Requirements ........................................................................................................... 15 Input specification ..................................................................................................................... 16 Output specification .................................................................................................................. 16 Hardware specifications ............................................................................................................ 16 Architectural Overview ............................................................................................................. 16 Application Correlation Service (ACS)................................................................................................ 17 ACS Data Repository ........................................................................................................................... 17 ACS TagID Dispatcher ........................................................................................................................ 17 ACS Block System ................................................................................................................................ 17 User interface ............................................................................................................................ 18 Touchatag basic fixed reader operation.................................................................................... 19 Project-Specific touch-a-tag utility: .......................................................................................... 20 Student Registration .................................................................................................................. 20 Functional Requirements ..................................................................................................................... 20 Input specification ............................................................................................................................... 21 Output specification ............................................................................................................................. 21 User interface specification ................................................................................................................. 21 Hardware or software specifications ................................................................................................... 22 Test plan .............................................................................................................................................. 22 Prototyping .......................................................................................................................................... 23 Employer Registration ............................................................................................................... 23 Functional Requirements ..................................................................................................................... 23 Input specification ............................................................................................................................... 23 Output specification ............................................................................................................................. 24 User interface specification ................................................................................................................. 24 Hardware or software specifications ................................................................................................... 24 Test plan .............................................................................................................................................. 24 Prototyping .......................................................................................................................................... 25 Entrance Check-In ..................................................................................................................... 25 Functional Requirements ..................................................................................................................... 26 Input specification ............................................................................................................................... 26 Output specification ............................................................................................................................. 26 User interface specification ................................................................................................................. 26 Hardware or software specifications ................................................................................................... 26 Employer Booth ........................................................................................................................ 27 Functional Requirements ..................................................................................................................... 28 Input specification ............................................................................................................................... 28 Output specification ............................................................................................................................. 28 User interface specification ................................................................................................................. 28 Hardware or software specifications ................................................................................................... 28 Job Fair Pervasive Computing System Design Report Page 3 Test plan .............................................................................................................................................. 28 Prototyping .......................................................................................................................................... 28 Terminals ................................................................................................................................... 29 Functional Requirements ..................................................................................................................... 29 Non-functional Requirements .............................................................................................................. 30 Input specification ............................................................................................................................... 30 Output specification ............................................................................................................................. 30 User interface specification ................................................................................................................. 31 Hardware or software specifications ................................................................................................... 31 Test plan .............................................................................................................................................. 31 Prototyping .......................................................................................................................................... 31 Resources....................................................................................................................................... 31 Material ..................................................................................................................................... 31 Revised Resource Requirements .......................................................................................................... 31 Original Resource Requirements ......................................................................................................... 32 Time............................................................................................... Error! Bookmark not defined. Revised Personal Effort Requirements .................................................... Error! Bookmark not defined. Original Personal Effort Requirements ............................................................................................... 32 Conclusion ..................................................................................................................................... 33 References ..................................................................................................................................... 33 Appendix ....................................................................................................................................... 34 Database Table Diagram ........................................................................................................... 34 Student Registration Sequence Diagram ................................................................................... 34 Employer Registration Sequence Diagram................................................................................ 35 PHP Code for Prototype Registration System ........................................................................... 35 index.php: ............................................................................................................................................ 35 confirm.php: ........................................................................................................................................ 36 register.php: ........................................................................................................................................ 38 Pseudo code for Next Visit Algorithm ....................................................................................... 39 Job Fair Pervasive Computing System Design Report Page 4 List of Tables Table 1 - Definitions........................................................................................................................ 6 Table 2 - Touchatag Requirements................................................................................................ 15 Table 3 - Student Registration Requirements ............................................................................... 20 Table 4 - Employer Registration Requirements............................................................................. 23 Table 5 - Entrance Check-In Requirements ................................................................................... 26 Table 6 - Employer Booth Requirements ...................................................................................... 28 Table 7 - Terminal Requirements .................................................................................................. 30 Table 8 - Revised Resource Requirements .................................................................................... 31 Table 9 - Original Resource Requirements .................................................................................... 32 List of Figures Figure 1 Pre-career fair registration for students. Students enter details on a web-site to receive a password that will be utilized at the entrance check-in ................................................................. 11 Figure 2 Touch-a-tag ..................................................................................................................... 12 Figure 3 Touch-a-Tag Reader ....................................................................................................... 13 Figure 4 - Schematic of System Components in an actual layout of the Coliseum where the Career Fair is held ..................................................................................................................................... 14 Figure 5: Touchatag end-to-end architecture [2]............................................................................. 17 Figure 6: Touchatag Dashboard user interface .............................................................................. 19 Figure 7: Touchatag basic fixed reader operation ......................................................................... 19 Figure 8 - Student Registration Web Interface.............................................................................. 22 Figure 9 - Employer Registration Web Submission Interface ........................................................ 24 Figure 10 - Entrance Check-In Process Diagram ............................................................................ 25 Figure 11 - Employer Booth Setup................................................................................................. 27 Figure 12 - Employer Action Sequence Diagram ........................................................................... 27 Figure 13 - Terminal Query Sequence Diagram ............................................................................ 29 Job Fair Pervasive Computing System Design Report Page 5 Definitions Table 1 - Definitions Term Touchatag Definition The name of the company which makes the RFID reader and tags. Algorithm Sequence of finite instructions used for calculations and data processing CprE 489 Communication Networking Class at Iowa State University Filter A method by which unwanted elements are removed from the selection process Greedy algorithm Algorithm that makes the locally optimum choice at each stage GUI Graphical User Interface ISU Card Iowa State University Student Card RFID Radio Frequency Identification Device USB Universal Serial Bus ACS Application Correlation Service API Application Programming Interface NFC Near Field Communication Job Fair Pervasive Computing System Design Report Page 6 Introduction Executive Summary Organizing a career fair is an important task for any university to provide opportunities for students to seek employment opportunities and also for the employers to recruit employees with right skill sets. The Iowa State University (ISU) Engineering Career Fair is the second largest career fair in the entire country. Given the magnitude of the event, ensuring that the event serves its purpose, for both employers and students, is of utmost importance. The career fair process becomes complex especially when the number of students and employers is very large and students should be able to meet with the right set of employers, and vice-versa. A system which co-ordinates the career fair in a more organized, time-efficient manner will enrich the experiences of both the employers and the students involved. Students will be able to meet maximum number of best-suited employers in a limited time based on employer and personal requirements. Such an experience involves not having to waste precious time in waiting in long queues to meet potential employers and matching employers to most suitable students. Using the system being designed by the senior design team, queues will not be as long as before and the number of most suitable employers-potential employees matches based on preferences will increase substantially. Such a system will only lead to increased co-ordination and efficiency of the career fair. Acknowledgement The Dec09-12 senior design team would like to thank Iowa State University for providing a positive learning community. The team also is thankful to the Computer Support Services (CSG) for having provided us the necessary resources for our project. The team would like to thank Dr.Qiao for having advised and guided us with a lot of patience throughout the entire duration of the project. Professor Daji has helped us along the way and inspired us to look at multiple approaches in realizing our end-goal. He was the one who suggested using the Touchatag system for our project, and also gave invaluable tips on how to make our system more pervasive. The team would also like to acknowledge Jason Boyd and Dr. Kamal for their help during this project. Problem Statement The Dec0912 project team will develop a pervasive computing system composed of embedded systems/software and wireless networking components. The proof-of-concept system will be designed to solve complex problems with multiple constraints (e.g., real-time deadline, connectivity). The team will develop a prototype demonstration application for solving the career-fair coordination problem. Organizing the career fair is an important task for the university to provide Job Fair Pervasive Computing System Design Report Page 7 opportunities for students to seek employment opportunities and also for the employers to recruit employees with right skill sets. The career fair process becomes complex, especially when the number of students and employers is very large; if poorly managed, it would result in students being unable to meet with the right set of employers, and employers not able to meet with the right set of students. The goal is to design a pervasive computing system that can improve the efficiency of the career fair process, with the following objectives: (i) maximize the chances of students meeting as many suitable employers as possible; (ii) maximize the chances of employers meeting as many suitable students as possible. Operating Environment The new pervasive computing system will be installed in Hilton Coliseum and Scheman Building, locations where the Engineering Career fairs are held every year at Iowa State University in Ames, IA. The centralized server’s database will be handling information of over 2000 students and over 250 employers. There will be a high-speed wireless internet network all across the coliseum, where each laptop has access to the internet and access to normal AC power sources. The Operating environment can be further defined as indoors at normal room temperature, 65-75 degrees Fahrenheit. All laptops/ computers will have USB capability to connect the touch-a-tag reader. Intended User(s) Three types of users will primarily utilize the system. Students The first type includes students. These users will be provided with adequate information regarding the system components like touch-a-tag among others for them to be able to use the system effectively. Students will utilize the system by submitting their information detailed in the student registration section. Employers The second types of users are the employers who come to ISU to recruit prospective employees. For these types of users, information can be made available if needed. Administrators The third types of users are the administrators of the servers and other people with special access to the data. These users can modify the settings and the functionalities of the system. These users will be individuals with highly-specialized skill sets and a working knowledge of the Linux OS, MySQL, PHP scripting, and TCP/IP and http protocols. There are no other intended foreseeable user(s) as far as this system goes. Job Fair Pervasive Computing System Design Report Page 8 Intended Use(s) Each type of user can use the system in a variety of ways. The varied uses also depend on what the team defines as the scope of the project. Under the current vision, these three users will have the following uses of the system: First use Queue a student into an employer’s booth by either swiping an RFID tag or manually entering their ID. Dequeue a student out of an employer’s booth by either swiping an RFID tag, manually checking out, querying a terminal or checking into another booth. Receive text messages as to which employer to visit next Query a terminal as to which employer to visit next Enter their respective information into the database for storage and decision making. Second use Manually dequeue a student user from the employer’s booth queue. Query the system to find out how many potential employees have visited them. Receive an emailed version of the resume of a student that queues into the company’s booth. Third use Troubleshoot non-performance and system efficiency issues. Oversee functioning of the system during and before the career fair. Resolve issues involving the touch-a-tag interface and provide a smooth platform for student and employer registration at the career fair. Assumptions Mentioned below are some of the assumptions incorporated in designing the system Wireless Internet connectivity will be provided throughout the career fair. Iowa State University will provide adequate laptops for employers and terminals. Laptops provided must have an open, useable USB slot. Laptops must have Windows XP or higher to utilize our system. All students will get their ISU cards/remember their Student ID numbers and password provided during pre-career fair registration. Students and employers have a fair understanding of the system based on the user manual guide of the system provided. Limitations The system has some limitations which must be considered when designing it. The system must implement most, if not all features as mentioned in the problem statement. The user interface (front end) needs to be compact and easy to use. The system must allow for different functionalities for the different types of users. The centralized server must have a back-up if it crashes or malfunctions at all. Job Fair Pervasive Computing System Design Report Page 9 Expected End Product The deliverables for the project will be a functional prototype of the pervasive system which is on a small scale as compared to the magnitude of the final project. So instead of 300 employers, the team will experiment with 2-4 employers and 2 students to simulate the prototype system. The other deliverables include developer-friendly programming code snippets and a highly useful and systematic user manual for all kinds of users of the system. Overall System Design Figure 0 - System Layout and Design Job Fair Pervasive Computing System Design Report Page 10 The pervasive computing system can be broken down into few major modules. It includes the pre-career fair registration module, the main entrance check-in module, employer booth modules, terminal modules and a common centralized system database. All the modules are connected to the centralized database using an Ethernet connection. PRE-CAREER FAIR REGISTRATION STUDENT The pre-career fair registration module involves the student registering his/her details (viz. Name, Year, Major, Area of Interest, Company Preferences (for e.g. Rockwell Collins), Position Desired, subscription to the text messaging system etc.) on a web interface before the career fair; thereby receiving a unique password. The details entered are stored in the centralized system database. The details, thus entered are used as parameters for the algorithm(*see appendix) in the system which matches employers with the most suitable students and vice-versa. The students can now enter the career fair with this password and their student ID card with them. Figure 1 Pre-career fair registration for students. Students enter details on a web-site to receive a password that will be utilized at the entrance check-in EMPLOYER The pre-career fair registration module also includes registering the employer to the system. Association is required for the employers too since the central server needs to identify which employer it is that has a certain number of students in line. The team decided on identifying employers based on the Internet Protocol (IP) address, a unique 32-bit address of the machine on the Ethernet network. Tying the specific IP address to the employer before the career fair will primarily be the registration for the employer. Also, the web interface that the team intends to use also needs to be explained to employers. A user manual will serve the purpose. Job Fair Pervasive Computing System Design Report Page 11 MAIN ENTRANCE CHECK-IN The main entrance check-in module refers to the main entrance of the career fair where students swipe their ISU cards to get their name tags. The student enters the unique password received during pre-career fair registration to receive a unique low-range RFID tag (touch-a-tag) as shown in Figure 2 Figure 2 Touch-a-tag The tag is associated to the student at this stage by using the touch-a-tag server and our system server. This association helps the system understand which person is in which employer queue or at which terminal during the career fair since the tag uniquely identifies the student. The student receives a print-out of a list of next suitable employers to go based on the matching algorithm the team has designed. To better explain the system, in case students have any sort of difficulties, there will be a student user manual available at the main entrance check-in that student can choose to read, and also online. EMPLOYER BOOTHS Once inside the career fair, the students are free to go to any employer of their choice or follow the list given out to them at the main entrance check-in. To queue oneself at any employer booth the students must swipe their tags over a touch-a-tag reader (one reader provided for each employer) as shown in Figure 3 Job Fair Pervasive Computing System Design Report Page 12 Figure 3 Touch-a-Tag Reader Swiping the tag causes the queue length field in the database for that employer to increase by one; thereby maintain real-time status. This not only reflects real-time queue lengths at employer booths but also helps in the implementation of the matching algorithm the system uses to print out the list of next best-suited employers for other students. This swiping action also notifies the database of who is standing in line (based on the main entrance association) and sends the student’s resume to the employer’s laptop for the employer’s convenience. The action the employer takes with these resumes is entirely his/her discretion. This is a service intended primarily for students but by adding these functionalities, the team intends to increase overall utility for all users of the system. After interaction with the employer, the student can swipe the tag again over the reader to log out of the line. Alternatively, the employer can also log the student out from the web interface on his laptop (provided by the university) If none of the above two actions are performed, the system will automatically log out the student after a substantial time of inactivity and perform simultaneous log out (at previous employer) and log in (at new employer) if the student stands in queue for another employer. TEXT-MESSAGING SYSTEM A text-messaging system is also in place to update students real-time about which employers they should go to next based on the algorithm. This algorithm takes into account factors like present queue length at an employer, employer preferences, employers already visited, etc. to come up with an updated list of employers to go to next. To maintain the non-disruptiveness of the system, the text-messaging system sends a text to a student with the list of employers only when they show up on the system as not being in the queue for any employer to ensure no disturbances during employer-student interaction. The text messages are sent as an e-mail by the central server through a Short Messaging Service (SMS) gateway. Students may/may not subscribe for this service since they will have to pay for the incoming texts to their cell phone. Job Fair Pervasive Computing System Design Report Page 13 Figure 4 - Schematic of System Components in an actual layout of the Coliseum where the Career Fair is held TERMINALS An alternative to the text messaging service are the terminals. These terminals will be strategically located and evenly distributed throughout the coliseum to ensure maximum and efficient usage by students. These terminals are desktops/laptops equipped with the touch-a-tag reader. By swiping the card over the reader, the web interface will show the list of employers on the screen. This list can be printed off, since a printer will be attached with the terminal module. There is also another option to obtain information from the terminals. A student can enter their student ID number at the terminals using a numeric keypad to get the list of employers. CENTRAL SERVER The central server is at the heart of the system. It is connected to each component of the system via Ethernet. The central server will host the database (MySQL) and connect the web-interface to the database using PHP scripts. The algorithm will be implemented using PHP scripts as well. The database will hold information about all employers, students and terminals. Some of the information includes resumes of students, employer laptop Internet Protocol (IP) addresses used to uniquely identify them at the server, employer queue tables in the database among many things. Job Fair Pervasive Computing System Design Report Page 14 Design Specifications Touch-a-tag The Touchatag service is the team’s online Near Field Communication (NFC) Radio Frequency Identification (RFID) device. The RFID tag and reader connect to the central server using the Touchatag server. This service makes it possible for the creation of applications that enable the launch of online applications with a simple touch of an RFID enabled device such as a tag. Items tagged with an RFID chip provide users with one touch, fast and easy access to on-line information and registration. In this project’s context, the tag once swiped on the reader connects to a web-page and updates, retrieves and modifies the contents of it which in turn, reflect on the central server. All this is implemented using PHP scripts and the rich Application programming interface (API) provided to a Touchatag user and developer. Functional Requirements Table 2 - Touchatag Requirements Requirement Statement Touchatag Functional Requirement 1 The Touchatag service must be able to uniquely identify each student and employer based on their already registered associations. Touchatag Functional Requirement 2 The Touchatag service must be able to access the database to create entries in the Job Fair Pervasive Computing System Design Report Page 15 database tables to maintain the current system state real-time. Touchatag Functional Requirement 3 The Touchatag service must be able to access the database to update and modify entries in the database tables to maintain the current system state real-time. Touchatag Functional Requirement 4 The Touchatag service must be able to perform all these functions mentioned in the shortest time possible to ensure the real-time nature of the system. Input specification The input for the Touchatag application is the action of swiping the associated tag over a reader. Since this is an NFC RFID, the detection range for these tags is small – about 4 centimeters or 1.6 inches [2]. Hence to make sure the input is detected, the user has to make sure that the tag is closer than the detection range mentioned above for it to work. Output specification The output for this device can be any action, ranging from checking the student into a line to printing out the next list of employers to go to. The output primarily depends on what web-site is associated with that tag and what the PHP script for that web-page instructs the central server to do. Hardware specifications Touchatag hardware consists of a small interrogator or reader (roughly the size of a deck of cards, but half the thickness) that connects to a computer through a USB port, and small adhesive passive tags that comply with the 13.56 MHz and ISO 14443 air-interface standards, as well as the Near Field Communications (NFC) protocol, an RFID platform designed for short-range secure wireless transmissions. A Touchatag can also be read by placing it very close to an NFCenabled cell phone [1]. Apart from the reader and the tag, there is no real hardware components involved in this technology. Architectural Overview Job Fair Pervasive Computing System Design Report Page 16 Figure 5: Touchatag end-to-end architecture [2] Application Correlation Service (ACS) The Touchatag Application Correlation Service (ACS) is a Web service that comprises the core of Touchatag, storing the association between unique tag IDs and actions to execute. The Touchatag ACS listens to Touchatag RFID readers. When a tag event is registered, the ACS performs logic to determine the appropriate action for the tag, and responds accordingly. The ACS has several internal components that enable its overall functionality. ACS Data Repository The ACS maintains a repository of correlation data, which includes actions for associating to tags, as well as tag, reader and user IDs and their associations to actions. ACS TagID Dispatcher When the ACS receives a tag read event, it uses the TagID Dispatcher to lookup the incoming tag ID in the Repository, and then return the correct corresponding action to the client. Currently the dispatcher component handles only tag IDs. Additional functionality will later enable the dispatcher also to handle reader ID, user ID, client type, and various types of metadata for dispatching events. ACS Block System The Block System provides the ACS with modular functionality for different types of Applications. Each of the different Applications available in the Touchatag dashboard uses one or more corresponding blocks on the server. Job Fair Pervasive Computing System Design Report Page 17 The Touchatag engineering team uses the Block System as a modular way to extend Touchatag’s base functionality. One way that third party application developers can create new functionality is by assembling the existing ACS blocks in new configurations using Touchatag Configurator API. [2] User interface Any user can create their own applications using the Touchatag interface also known as the dashboard. By following these steps, one can create one’s own application1. 2. 3. 4. Log on to www.Touchatag.com using your account (register for no charge). Go to the Touchatag dashboard (www.Touchatag.com/dashboard). Click the Configure an Application button. This opens the Touchatag “configurator”. In the configurator, you choose the URL that you want the tag to connect to once it is swiped. 5. You then customize the selected application, giving it a name and, optionally, a description, and specifying any other fields as required. When ready, click the Use this App button to continue. 6. This choice prompts you to put a tag on your Touchatag USB reader. When the tag is detected, the wizard displays the tag ID and asks you to confirm. Click Choose this Tag to confirm the association and continue. 7. In configurator Step 4 you verify the configuration by clicking Make this Tag. This is the final step in associating an action to a tag, so the configurator closes. 8. After the association is created, it appears in your list of associated tags in the dashboard. From then on, using the physical tag on any Touchatag reader will trigger the actions defined in the Touchatag application. Job Fair Pervasive Computing System Design Report Page 18 Figure 6: Touchatag Dashboard user interface Touchatag basic fixed reader operation Figure 7: Touchatag 1. basic fixed reader operation A tagged object is detected by the fixed Touchatag USB reader. Job Fair Pervasive Computing System Design Report Page 19 2. The reader communicates relevant information, such as the tag ID, to the Touchatag software client. 3. The Touchatag software client contacts to the Touchatag Action Correlation Service, relaying the tag ID, the reader ID, the event type, the user’s account name, and other information. 4. The Touchatag Action Correlation Service registers the event information, and uses the correlation data repository to determine what actions to execute. 5. The Touchatag service executes any appropriate server-side actions, and then instructs the Touchatag software client to launch any appropriate actions on its host computer. 6. The Touchatag client executes actions as instructed by the service. Project-Specific touch-a-tag utility: Given the brief architectural framework and the operation information, the team intends to use the Touchatag service in the following way: A tag that a student possesses has a built-in ID number. When swiped, the ID number gets relayed to the Touchatag server, which in turn directs the communication flow to the web-site that was associated with the tag. Once the site is reached, PHP scripts on the web-site will perform certain functions that will update the database and bring up an output dependent on the kind of query. This output could be a list of employers or might just be an update in the database of the central server. The functionality of the Touchatag service is dependent on the API’s and the PHP code that we program. Hence, the communication back and forth from the central server to the various modules of the system is facilitated through the Touchatag interface. Student Registration Functional Requirements Table 3 - Student Registration Requirements Requirement Statement Student Registration Requirement 1 The registration system shall display a registration form to the user, in which relevant Job Fair Pervasive Computing System Design Report Page 20 information can be entered. Student Registration Requirement 2 The system shall interpret the submitted information via a PHP script. Student Registration Requirement 3 The system shall store the data into the appropriate table on the database. Student Registration Requirement 4 The system shall notify the user if there is a failed submission. Student Registration Requirement 5 The system shall return a unique pass code to the user, which they will need in order to log in at the career fair. Input specification Username Major Year Seeking Internship/Co-op/Full-time Output specification Confirmation and unique pass code if the registration was successful. Error message if there was a problem during submission. User interface specification The interface consists of an HTML form with several input fields, including text fields, check boxes, radio buttons, and combo boxes. A short caption preceding each input will instruct the user which information is to be entered in a particular text field. Job Fair Pervasive Computing System Design Report Page 21 Figure 8 - Student Registration Web Interface Hardware or software specifications Hardware and software requirements are minimal. The registration system can be accessed from any computer connected to the internet and capable of viewing web pages. Test plan Testing the registration system will be simple. Although the information entered will vary from student to student, there are basically only two ways which the information can affect the functionality of this system. Either there were no errors during the processing of the information, in which case the information will be stored into the database, or there was a problem, and no the database remains unchanged. If this is the case, the user must be notified of the problem that occurred. Creating a few fake registration accounts to make sure the information is being properly stored into the database, as well as testing the responses when erroneous data is entered, should be sufficient for testing this part of the system. Some parts will have to be temporarily disabled during testing, such as checking that the ISU username is valid, since test information will not consist of that of real users. Job Fair Pervasive Computing System Design Report Page 22 Prototyping Currently, a small scale version of the registration system has already been implemented, which allows the registration of a random username and password. These two fields are stored into a database table, which can be viewed either by using the Linux Mysql command, or by running a PHP script to pull the information off the MySQL server. See the Appendix section for the code of this prototype. Employer Registration Functional Requirements Table 4 - Employer Registration Requirements Requirement Statement Employer Registration Requirement 1 The registration system shall display a registration form to the user, in which relevant information can be entered. Employer Registration Requirement 2 The system shall interpret the submitted information via a PHP script. Employer Registration Requirement 3 The PHP script shall also obtain the IP address of the computer which submitted the form, in order to make an association between that computer and the company name entered in the form. Employer Registration Requirement 4 The system shall store the data into the appropriate table on the database. Employer Registration Requirement 5 The system shall not store any information in the database if there is a problem or error with any of the information entered by the user. The user will be notified what went wrong during the submission. Input specification Company name Major(s) which qualify for the job position(s) Minimum year of student Offering Internship/Co-op/Full-time employment Job Fair Pervasive Computing System Design Report Page 23 Obtaining the IP address will be handled by the PHP script, the employer does not need to enter it. Output specification Confirmation message if the registration was successful. Appropriate error message if there was a problem with the submission. User interface specification The interface will be an HTML form very similar to the student registration form, with the same type of input fields. Figure 9 - Employer Registration Web Submission Interface Hardware or software specifications Hardware and software requirements are minimal. If the employer’s laptop is connected to the internet, they will be able to access the registration form. Test plan Testing will follow the same procedure as testing the student registration. It will be necessary to ensure information is being properly entered into the database, and that errors in the data entered are caught by the PHP script. Job Fair Pervasive Computing System Design Report Page 24 Prototyping Since the basic functionality of the two registration systems are the same, the student registration prototype should be adequate as far as prototyping of the registration system. For testing purposes, the current registration prototype stores the IP address of the computer which registered with the system, even though an IP is not needed for the student registration, but it ensures that this will be possible when it comes to the final implementation. Entrance Check-In Get Tag Swipe Tag Entrance Check-In Process Link username with tag ID Valid Determine Tag is unassociated Enter Username and Password Check Username Password Against Database Not Valid Figure 10 - Entrance Check-In Process Diagram The entrance check-in stage is after the student registration phase. It is when the student first arrives at the career fair and wishes to obtain a tag for use in the system. The pre-registered student will pick up a random tag, swipe it over the entrance check-in station’s RFID reader, and then enter his or her username and password. Job Fair Pervasive Computing System Design Report Page 25 Functional Requirements Table 5 - Entrance Check-In Requirements Requirement Description Entrance Check-In Functional Requirement 1 The entrance check-in system shall give each student a random Touchatag RFID tag. Entrance Check-In Functional Requirement 2 The entrance check-in system shall perform the association between student and tag based on student registration username, password, and tag id. Entrance Check-In Functional Requirement 3 The entrance shall inform user of the success or failure of his/her association. Input specification Touchatag RFID tags Pre-Registered Student with username and password Touchatag RFID reader Desktop Computer with Desk Wireless Internet Server-side script Server Database Output specification A Touchatag tag that has been associated with a corresponding student and his/her information. User database has made the association between user and his/her tag. User interface specification The student will be given a random Touchatag tag. The tag, when swiped or placed on the Touchatag scanner, will connect to the database and realize that the tag has not yet been associated. This will trigger an action to send the browser to a “sign-in” screen where the student will enter his/her username. After entering user information, the ID will be associated with that particular user. Hardware or software specifications Laptops must be able to connect to power source. Laptops must be connected to the wireless internet. Laptops must be running Windows XP or Vista. Laptops must have a working browser. Job Fair Pervasive Computing System Design Report Page 26 Employer Booth Employer Wireless Internet Touchatag Reader Tag Student Figure 11 - Employer Booth Setup Figure 12 - Employer Action Sequence Diagram Job Fair Pervasive Computing System Design Report Page 27 Functional Requirements Table 6 - Employer Booth Requirements Requirement Statement Employer Booth Functional Requirement 1 The employer booth shall check in a student to the booth he/she has just swiped at if he/she is not already checked in to this particular booth. Employer Booth Functional Requirement 2 The employer booth will update the database with the student’s username, the employer that the student visited, and time of check-in. Employer Booth Functional Requirement 3 The employer station shall check out a student if he/she is already checked in. Input specification Touchatag RFID tag Employer entity Student entity Time Output specification An updated database. In the case of checkout, a text message to the student if student has previously entered SMS gateway information in the student pre-fair registration. User interface specification No user interface besides the reader and tag. Hardware or software specifications Laptops must be able to connect to power source. Laptops must be connected to the wireless internet. Laptops must be running Windows XP or Vista. Laptops must have a working browser. Test plan Unit Testing of PHP scripts Boundary testing of PHP script inputs Stress testing the server to simulate multiple accesses to the database. Prototyping Set up two employer laptops to simulate employer booths. Testing a tag that has already been associated and swipe it at prototype employer booth and test to make sure that that Job Fair Pervasive Computing System Design Report Page 28 user has been entered into the system with appropriate values. Check that check-out procedures work. Terminals Terminal Query Terminal Computer Touchatag Server Server Script Server Database User logs in Touchatag card id sent Parameter returned Connect to server with parameters from Touchatag server Connect to Server Return connection Status Connect to Database Return DB Connection status Query Database for info. Return Status Info List Appears on Screen User initiates printing Initiate time out counter User requests text Request sent to server script Connect to Server SMPT Server Return connection Status Connect to Database Return DB Connection status Query Database for info. Return Status Info Request to send text message via email Text sent to uer Close connection after time out or user logs out Figure 13 - Terminal Query Sequence Diagram Functional Requirements Job Fair Pervasive Computing System Design Report Page 29 Table 7 - Terminal Requirements Terminal Functional Requirement 1 Once a user authenticates, a terminal shall initiate a connection to the server/database. Terminal Functional Requirement 2 A terminal shall display on its monitor a list of employers sorted by queue length, shortest queue first. Terminal Functional Requirement 3 A terminal shall allow for printing the list on a printer Terminal Functional Requirement 4 A terminal shall allow for instructing the server to send a text message to the user’s cell phone as to which employer to visit next. Non-functional Requirements Terminal Non-functional Requirement 1 Terminal Non-functional Requirement 2 A terminal shall not allow another user to authenticate while a user is already using and authenticated on the machine. A terminal shall not accept input from a touchatag reader if a user is already authenticated on a machine until that user is done. Input specification The input to a terminal shall be in one of two forms, swiping a Touchatag card over an attached Touchatag reader, or entering user id via the terminals’ keyboard. Authentication can be made by either input method; however, choosing the options of printing a list of employers and receiving a text message must be made via the keyboard. Output specification The main output of a terminal shall be the list of employers, sorted by queue length and applicable to the user, via the terminals monitor. The terminal shall also, upon user request, print the list on a printer and/or instruct the server to send the user’s cell phone a text message as to which employer to visit next. Job Fair Pervasive Computing System Design Report Page 30 User interface specification By default the terminals monitor shall display a user sign in screen with one text entry box. Once a user authenticates, by either manually entering his user id into the box, or swiping his Touchatag card, the terminal shall display a form with the list of employers, a check box for whether to send a text message to the user, a check box for printing the list and a done button. When pressed, the done button returns the terminal to the login screen and optionally initiates sending the text and printing the list. Hardware or software specifications Terminals shall be connected to a Touchatag reader, a printer, and a monitor. The terminal itself shall be a PC running a version of Windows that is capable of interacting with the Touchatag reader. The terminal shall also have a wireless networking card. Test plan Once a prototype has been built, all requirements of the terminal shall be tested. Testers shall test the terminals functional requirements by attempting to authenticate themselves with a random mix of valid and invalid user IDs by both the Touchatag reader, and the keyboard, both while a user is already authenticated, and when the terminal is free. Testers shall also randomly request printouts and texts. Testers shall ascertain while testing that a connection is established with the server/database, the list displays on the Terminals monitor, that a printed copy of the list displayed on the monitor is printed if requested to do so, and that a text message is sent if requested. Testers shall ascertain that a terminal does not let a user log in while another user is logged in. Testers shall ascertain that a terminal does not accept any input from the Touchatag reader that is not initiated by the current user’s Touchatag card. Prototyping The prototype for the terminals shall be a fully functional terminal, capable of interacting with the server/ database and printing the list of employers. Resources Material Revised Resource Requirements Table 8 - Revised Resource Requirements Item Number of Items Cost Poster 1 $40 Touchatag Readers (incl. tags) 3 $120 Job Fair Pervasive Computing System Design Report Page 31 Terminal Computers 4 borrowing Server Computer 1 free Employer Laptops 2 borrowing Totals 11 $160 Number of Items Cost Original Resource Requirements Table 9 - Original Resource Requirements Item RFID Scanners $80 ea. Magnetic Card Readers $70 ea. $0.50 ea. RFID Tags Server Computer 1 $500 Terminal Computers 4 $500 ea. Totals 5 $2650++ Labor Original Personal Effort Requirements Name Total Hours Costs (10$/hr) Lee, Adam 200 $2000 Oakman, Nick 200 $2000 Subbu, Kartik 200 $2000 Semonis, Gabriel 200 $2000 800 $8000 Totals Job Fair Pervasive Computing System Design Report Page 32 Conclusion By bringing together a large group of employers and students in one place, the job fair provides valuable assistance to students looking for jobs and employers looking for employees; however, these same large numbers can lead to inefficiency in students visiting employers. Students may end up waiting in a long line to visit one employer while there is another employer with no wait at all, or students could bypass an employer altogether because he didn’t know the employer was recruiting for his major. By sending students to eligible employers with the shortest line, the system will maximize the number of prospective employers the students visit, thereby maximizing their chances of getting a job, and maximizing the number of eligible students that employers meet. References [1] "RFID Journal" Tikitag Becomes Touchatag, Adds Business Apps. 23 April 2009 <http://www.rfidjournal.com/article/articleview/4632/1/1/>. [2] "touchatag" touchatag: Technical Overview. 23 April 2009 <http://www.touchatag.com/technical-whitepaper>. Job Fair Pervasive Computing System Design Report Page 33 Appendix Database Table Diagram Student Registration Sequence Diagram Job Fair Pervasive Computing System Design Report Page 34 Employer Registration Sequence Diagram PHP Code for Prototype Registration System Below is the PHP code for a prototype registration system which we have already developed. Currently, it is just a simple username and password registration to demonstrate how to store data into a MySQL database, and read the data back later. Obviously, the actual registration system will incorporate more input fields. This also contains the tag identification and username association, which will probably not change much in the final design. index.php: <html><body><h1> <?php $con = mysql_connect("localhost","sd",[password removed]); if(!$con) { die('Error: Could not connect to database.'); } mysql_select_db("seniord", $con); $tagid = $_GET["id"]; $result = mysql_query("SELECT * FROM Associations WHERE TagID=$tagid"); if ($_GET["id"] < 1000 || $_GET["id"] >= 2000) { echo "Tag ID " . $_GET["id"] . " is not between 1000 and 1999."; echo "</h1>"; Job Fair Pervasive Computing System Design Report Page 35 } else { if($row = mysql_fetch_array($result)) { echo $row['TagID'] . " is already registered to " . $row['Username']; } else { echo "</body><body OnLoad=\"document.f.name.focus();\">"; echo "Tag ID " . $_GET["id"] . " is currently unregistered."; echo "<form name=\"f\" action=\"confirm.php?id=" . $_GET["id"] . "\" method=\"post\">"; echo "</h1><br>Enter username: "; echo "<input type=\"text\" name=\"name\" />"; echo "<br>Enter password: "; echo "<input type=\"text\" name=\"pass\" />"; echo "<input type=\"submit\" value=\"Submit\" />"; echo "</form>"; } } mysql_close($con); ?> </body></html> confirm.php: <html><body><h1> <?php $tagid = $_GET["id"]; $username = $_POST["name"]; $password = $_POST["pass"]; if($tagid < 1000 || $tagid >= 2000) { die('Error: ID must be between 1000 and 1999.'); } if(!$username) { die('An error has occurred'); } if(!$password) { die('An error has occurred'); } $con = mysql_connect("localhost","sd",[password removed]); if(!$con) { die('Error: Could not connect to database.'); } mysql_select_db("seniord", $con); Job Fair Pervasive Computing System Design Report Page 36 $result = mysql_query("SELECT * FROM Register ORDER BY Username ASC"); $result1 = mysql_query("SELECT * FROM Associations ORDER BY TagID ASC"); $exists = 0; $exists1 = 0; while($row = mysql_fetch_array($result)) { if($row['Username'] == $username) { $exists = 1; $userpass = $row['Password']; } } if($exists == 0) { echo "Username " . $username . " does not exist. Did you register?"; } else { while($row1 = mysql_fetch_array($result1)) { if($row1['Username'] == $username) { $exists1 = 1; $tagid1 = $row1['TagID']; } } if($userpass == $password) { if($exists1 == 1) { echo "Username " . $username . " is already "; echo "associated with tag " . $tagid1 . "."; } else { mysql_query("INSERT INTO Associations (TagID, Username) VALUES ('$tagid', '$username')"); mysql_close($con); echo "Associated "; echo $_GET["id"]; echo " with "; echo $_POST["name"] . "."; } } else { Job Fair Pervasive Computing System Design Report Page 37 echo "Incorrect password for " . $username . "."; } } ?> </h1></body></html> register.php: <html><h1> <?php $username = $_POST["username"]; $password = $_POST["password"]; $ip = $_SERVER['REMOTE_ADDR']; if(!$username || !$password) { echo "<body OnLoad=\"document.f.username.focus();\">"; echo "Registration<br><br>"; echo "</h1>"; if($username) { echo "<font color=\"red\">"; echo "* Error: You did not enter a password.<br><br><br>"; echo "</font>"; } else if($password) { echo "<font color=\"red\">"; echo "* Error: You did not enter a username.<br><br><br>"; echo "</font>"; } echo "<form name=\"f\" action=\"register.php\" method=\"post\">"; echo "Enter desired username: "; echo "<input type=\"text\" name=\"username\">"; echo "<br>Enter desired password: "; echo "<input type=\"text\" name=\"password\">"; echo "<input type=\"submit\" value=\"Submit\">"; echo "</form>"; } else { $con = mysql_connect("localhost","sd",[password removed]); if(!$con) { die('Error: Could not connect to database.'); } mysql_select_db("seniord", $con); $result = mysql_query("SELECT * FROM Register ORDER BY Username ASC"); $taken = 0; while($row = mysql_fetch_array($result)) { if($row['Username'] == $username) Job Fair Pervasive Computing System Design Report Page 38 { $taken = 1; } } echo "<body>"; if($taken == 1) { echo "Username " . $username . " is already taken."; echo "</h1>"; } else { mysql_query("INSERT INTO Register VALUES ('$username', '$password', '$ip')"); echo "Registration completed normally."; echo "</h1>"; echo "Username: " . $username; echo "<br>Password: " . $password; } } ?> </body></html> Pseudo code for Next Visit Algorithm student = current student employers = array of employers from database (already ordered by queue length) function getNextEmployer for all employers if student.major is in employer.eligibleMajors and student.classification is in employer.eligibleClassifications and student.jobTypeSeeking is in employer.jobTypesOffering and student.visited(employer) == false return employer else repeat for next employer Job Fair Pervasive Computing System Design Report Page 39