fast, user-‐friendly feedbacksystem for themobile
DESCRIPTION
Bachelorthesis of Mihail MilevTRANSCRIPT
Fast, user-‐friendly Feedback System for the Mobile
Bachelor-‐Arbeit vorgelegt im Sommersemester 2010 Bachelor thesis submitted during summer semester 2010
an der Technischen Universität Graz at the Technical University Graz
Institut für Informationssysteme und Computer Medien Institute for Information Systems and Computer Media
Studiengang Telematik Study course Telematics Verfasser: Author:
Mihail Milev Gutachter Evaluators:
Erstgutachter: Dipl.-‐Ing. Dr.techn. Martin Ebner 1st evaluator: Dipl.-‐Ing. Dr.techn. Martin Ebner Graz, den 01.10.2010 Graz, 01.10.2010
Abstract One of the most important control methods for different systems nowadays is feedback. Feedback is the answer of the system to an action, defined influence and even to an earlier result. In the field of traditional learning such response can be the behaviour of the learners at lectures, questions placed by them and even the results from their exams. Such feedback is very important especially in the learning field, because professors can build a full image for the future development of the materials according to it. Our goal is to develop through the modern computer and mobile technologies an extension to these methods in the e-‐Learning and m-‐Learning fields. With such an extension users can easily measure in real-‐time the feeback and perform changes faster than in the traditional learning fields.
Motivation A typical situation, from the traditional learning at universities, is a professor standing in front of many students in a hall room, explaining the latest trends from his field of expertise. Such a scenario represents a one-‐way communication between the participants at the lecture. In order to turn this conversation in a two-‐way communication, the lecturer could ask the public a question. Asking 300 people at once could be a very hard and chaotic task, which often looses its target, when 20-‐30 people want to speak at once. If the professor has a feedback system, he could post a new question fast and give the question identifier to the learners. Then they can use their mobile devices to answer the question in the next 5 minutes for example. From the results, which get displayed simultaneously, the lecturer can build an image for himself about the students’ understanding for the question posted.
Almost every learner nowadays has an internet device by him-‐/herself on lectures, in university hall rooms and at home during daily work. These devices can be used for feedback communication. For this to happen, a simple, but still fully-‐functional environment for creation, management and observation of feedback must be developed. Such commercial systems are already available in the IT-‐world, but are not capable for work in the m-‐Learning field. Their complexity, big variety of functionalities and their design, which is not adjusted to small mobile screens, makes them useless for work on mobile phones, mobile internet devices and netbooks. Researches show, that is better to have a correct running software, than a system overfilled with unneeded and „buggy“ software [36]. Observers using such systems need a simple graphical representation of the current feelings, ideas, motivations and thoughts of the audience.
Through the software, which should be developed, we want to address these problems. Our target is to develop the most simple solution for feedback obtaining. The systems for such environment are already present. Today’s touch mobile devices, MIDs and smartphones can provide the user with a computer like, fully-‐functional interaction. That is why, we will use web-‐based technologies– PHP, MySQL or SQLite, to develop this response environment. As a future development, independant applications for Android and iPhone systems can be developed. These should allow an even faster and easier work with the
system and should provide a refined experience with it. For other mobile devices and during the first stage of the software, third-‐party web browser can be used – like for example Opera Mobile and Opera Mini. Because we will base the system on web technologies, users will also be able to use their computer browser for work.
The user group, which will create, edit and remove the questions, will later only be called „Creators“. They could be anonymous users, or also registered user, which should login with their own username and password. After connecting and logging to the system, they will be able to create questions and define time periods for them – users who should answer the questions will be able to vote only in this time period. Moreover creators will be able to watch the development of the votes in real-‐time. The responders will not need login data – the system will be completely anonymous for them. They will be presented with one simple, styled and mobile-‐oriented webpage. To give their feedback to the defined question, they will have to choose one of the possible answers and submit the form.
The possible disposition of such system is not only limited to the learning field. It could be used in the market, pre-‐voting and client research areas. For example companies will also be able to use the system to check the satisfaction of their employees.
Existing systems A new system development is not reasonable, when another system already exists, which can fullfill all tasks and requirements. Therefore is important, before starting a development, to take a look at existing systems as well as literature.
Characteristics of web-‐based software
Because of the hype on Web 2.0 technologies in the last years, almost all developers of such platforms have oriented themselves to web development. There are almost no non-‐web hosted systems and usually such are only supported and not developed anymore. The biggest advantage of such systems is their independance from operating system [1]. Normally they work in their own sandbox – usually this is the web server, far away from the user and the communication is established only via the web browser. Every operating system nowadays contains integrated web browser. Even mobile devices, such as iPhone and Android possess fully functional browsers. Although in theory the work with web-‐based feedback systems is directly possible through the mobile browser, this is not always the case. The design of these systems usually supports screens bigger than 800x600 pixels, therefore is the use on mobile phones nearly impossible. Nevertheless the size is not the only problem. Complicated environments usually implement various JavaScript and CSS codes, which are either not integrated into the mobile browsers, or are forbidden to use [2]. Typical web-‐based feedback software products are: Survey Monkey, QuestionPRO, Survey Gizmo, 2ask, etc.
Web-‐development languages and their limitations
The web-‐based environments are developed in many different programming languages – PHP, ASP, CGI, etc. This way, developer companies obtain a large number of functions, which they can offer to their clients. Some of these languages are based on proprietary, commercial and restricted technologies. As an example can be pointed out the freeware environment for ASP.NET programming, developed by Microsoft. Products written in ASP.NET can run only on the Windows Server 2000 and newer operating systems [3], which cost not less than $699 [4]. This way the variety of hardware and software is narrowed significantly. Missing development standards is another source for problems, if a software is developed in one language and must be transferred to another platform. As long as these languages do not use the same functions, architecture and methods of programming, transfer can take different amounts of time and companies must carefully consider doing a migration.
E-‐mail feedback systems
One interesting approach in the feedback systems, it can be evaluated by clients and users. E-‐mail is not a new concept, but its use for feedback communication is worth to consider [5]. Every user of the global network posseses at least on e-‐mail address, which makes each potential user reachable. Modern mobile phones have integrated mail clients, supporting various e-‐mail protocols – Push, Pull, POP3, IMAP, LDAP, etc. They guarantee a fast way for exchanging feedback information between the users. The biggest drawback of this method are SPAM filters. Often are e-‐mails, which get sent from one and the same server in short periods of time and to a big mass of recipients, marked as SPAM. Such messages get hidden from the user or else directly deleted. This way, the communication is easily broken. In this field, famous systems are: Survey ME, Results Mail, eSurveys PRO, etc.
Telephone-‐based feedback systems
According to existing literature it can be pointed out only one result for telephone feedback system – Survey Crafter [6]. As expected, this was not a mobile feedback system, like our target development, but rather the so called „direct approach“ method – the clients of the system rent international phone lines and call directly by the potential target groups. Like the name states, this brings fast results. Because of the direct communication between the company, which started the feedback process, its consumers can directly tell their opinion on the stated questions and can even place questions on their own. This method has two big drawbacks. Because of the rented international phone lines, such method costs a lot of money, which cannot be covered by smaller companies. The second drawback is the need of trained professionals in this sphere, who can carry out the feedback on the line. The direct approach to the target group demands a measured approach, big confidence and calmness during the talk and instantaneous evaluation of the results [6].
Logic standards in existing feedback systems
As already stated above, the lack of development standards can cause serious problems. On the other side, a lot of different standards have been developed for the logic of feedback systems. Each of the offered feedback systems is based on at
least one of the standards – „performance evaluation“, „360 degree review“, „customer satisfaction“, „employee feedback“, etc. Although all these standards where theoretically proved and got many times tested in real-‐time situations, are many of them in possesion from private institutions or were developed by closed partnerships. Their use is limited by defined laws and their free usage can cause different legal problems.
Feedback analysis methods
The target of each feedback process is to build a scenario of the current situation based on a defined, empiric value. According to this scenario further measurements for the future development can be taken. For better results a careful and detailed evaluation of the values should be done. This leads to the conclusion, that the analysis is the core of each feedback system [7]. The offered solutions possess different possibilities – automatic analysis, simple analysis and even analysis by specialists. The automatic method consists of computer evaluation of the obtained resuls, after a pre-‐defined mathematical model and a graphical representation of the analysis. This is the fastest and the easiest method from users’ point of view. The society and the target groups change very fast and therefore an adaptation of the mathematical model is often needed. These methods need trained persons are needed to achieve better results. There are also different methods. The most known of them is the poll – a graphic representation of the results in form of columns. The inrepretation and further analysis of the data is done by humans.
Importance of user interface
„Flexibility“ is a characteristic of almost every product in the IT-‐world nowadays [8]. Most of developing companies denote the big variety of software features by this term. Through a simple wizard interface, the user chooses step-‐by-‐step in which way he wants to state questions. Although this attracts a lot of potential clients, the research shows, that too many features often means errors, problems, misconception and loss of orientation in the system. The user satisfaction rises, when the system has less features, but they work as expected by the user [36]. This is explained with the self-‐understanding, intuitive and clear working way of the environment. The flexibility can also determine, in which price class a software falls. Many of the developers offer prices, which are dependant of the usage.
As we stated above, such systems must be developed target oriented. Of course, this system must have some attraction power. An elementary looking system means either too elementary approach to the problem, or underestimation of the task. Too colourful and tacky interfaces on the other hand can be a symbol for lack of concentration and not full solution for the problem. [37] Most of the companies find a middle-‐solution to these tasks, by providing different versions for the different users, or offer different personalisation methods – from only the colors, through changing the positions of elements on the page, until different forms for feedback screens.
Interactivity is also a typical feature of feedback environments [10]. The powerful computers nowadays allow the development of almost real-‐world-‐like
environments – look and feel like on a real paper, mouse cursor in form of pencil or pen, etc. Users do not expect only black text on white background, they are looking for images, animations, sound and video. The question is – do we need such user interface? Since our target groups will use their mobile devices, the interface between system and user is limited to specific device and cannot be changed. That is why, such features can be omitted.
Templates approach for the user interface
The user should not have to personalize and configure everything from scratch. That is why many developers offer pre-‐defined templates. The templates configure the most important settings of the system or define the user interface for the different target groups. Such templates are very often many times tested in real-‐world situations and have proven to be intuitive and easy to work with for the feedback types provided in the system. A big advantage of the template system is the possibility to save user defined configurations as new templates. These possibilities for editing and managing templates are important, but statistics show, that users buy software only for one or two target actions. This means, that most of this functionalities are either not used, or are configurated only after the initial installation. This makes them obsolete and unneeded. Also, a lot of the mobile browsers do not support such graphical functionalities as for example computer browsers – most of the configurations cannot be executed or they need more device power.
Real-‐time vs. non-‐real-‐time systems
How fast a system can obtain and interpret data is of critical importance for its usage in real-‐life conditions. Real time systems must bring a correct result for finite count of inputs to the user in predefined time window. In case of the feedback systems the developers concentrate themselves on the graphical representation of the data in real time. By the simplest analysis of the input values this means, that the answer, which the user chooses, gets shown to the creator immediately in graphical form – either by incrementing a value or resizing a chart bar. For more complex interpretations of data, results may be refreshed at larger intervals – 3, 5 or even more seconds.
Software localization
The internet and the networked computer work exist already since two decades. The market gets overfilled with software products every day and companies try to cover larger territories of clients. It is important, that feedback environments are able to work in different localizations, on different languages. Since the beginning of so called Web 2.0 developers often offer an automatic location and personalisation of the region data [9]. These configurations set localization, language and keyboard. Even if these functionalities are unneeded, users must pay for them, because they are integrated in the core.
System security
One of the drawbacks of the networked computer work is the low security conditions [11]. Although companies in the branche of computer security exist
since 20 years, there are still ways to gain access to important user and company information from remote servers – from brute force attacks, through denial of service attack, or through the simple, so called „spoofing“ of the connection between server and user. Few feedback systems use own security mechanisms or relay on the SSL security of the web server. Almost 90% of them relay still on the hardware server itself – firewalls, application firewalls and security services and appliances [38].
Conclusions
Till now only technical aspects of today’s systems have been discussed. Their logical layer must also be observed. All of these platforms have their own target groups – workers, clients, users of specific software types. It is true, that these target groups can be synchronized with the needs of the companies, but none of the researched systems offered a big variety of potential groups.
As a conclusion we can state, that none of the systems we researched fullfill our criterias for feedback sytstem. The costs are the main reason for this. The commercial environments want to attract their clients vie the most, the best and the most high-‐qualitative functionalities – extended mathematical models for user input interpretation, personal connection between developer and user, personalized configurations, etc. Often are all these options unneeded and too overwhealming, that the system looses its target. There were no options to remove such functionalities and buy a more plain system. Only one of the proposed systems allowed to pay so much, as the user uses it. It was also possible to pay per usage day.
The simplicity is the other problem, why we want to develop a new system. Most of the offered products were overfilled with functionalities, which our target group – mobile users, do not need. Our target is to develop the system as cheap as possible for development and support, and to integrate only these functionalities a normal mobile user would like to see and use. Still our system must fullfill its main objective – display the feedback from the users in the most simple and easy to understand form, without the need of additional plugins and/or hardware and software solutions.
Test case: Creative Research Systems
Typing „complete survey software package“ in Google brings „The Survey System“ by „Creative Research Systems“. This company has been working in the field of survey and feedback systems since 1982. As stated on their page: „The Survey System is the most complete survey software package available for all types of questionnaires and research projects from web, phone, PDA, or paper questionnaires.“ [39]. They offer a complete solution for feedback, which can be used not only on personal computers, but also on mobile devices. It supports different types of surveys: web-‐based, reports, advanced statistics, voice recording, benchmarking, etc. Users can give their answers via mobile devices. Results can be exported to different file formats in different types of representation. This system fullfills exactly the tasks described in this document, but the price is too high to pay, especially for learning institutions like universities, or non-‐profit organisations. Different versions vary from $49 till
$1999 for the base software. If the users want more functionalities, they should pay more for the different modules [40].
Target groups The objective of this project is to develop an online, mobile feedback system, which can be distinguished by its simplicity, portability and ease of use. Therefore the first obstacle to tackle are the requirements of the mobile device. Target of the system are all possible mobile devices – from extended portable data assistants (PDAs), through smart phones, tablets until simple mobile phones – devices, which are not based on traditional operating system. Mobile devices using such traditional operating systems, can rely on common web-‐development practices – JavaScript 1.5, CSS 2 even HTML 5 and CSS version 3. This prerequisite allows the developer to create interactive, rich-‐multimedia screens, which attract the user and allow better software experience. But such conditions do not apply to simple mobile phones. These devices do not possess advanced multimedia hardware and are incapable of interpreting such modern tasks. Listing 1 shows the types of devices we would like to distinguish:
• Mobile phones – mobile devices in possession of small screens – up to 320x240px, keypad only, based on embedded operating system, real time operating systems or low-‐level systems. Typical devices of this type are: Nokia phones (not N or E Series, because they are based on the Symbian OS v3, v4), SonyEricsson UIQ based telephones (exception here is the SE P1i), older Siemens, Samsung, LG phones, etc.
• Smart phones – mobile devices with bigger screens – 3.2” and up, allowing the use of a full-‐featured virtual keyboard, able to play rich multimedia content such as videos, music in common formats. The browsers on such phones are fully capable HTML4.1 (and some even HTML5) and CSS2 browsers. Typical devices are: iPhone, iPod, all Android based devices, Windows Mobile based devices, Nokia N and E Series.
• High-‐end devices – tablets, small-‐screen notebooks. These devices are of less interest, because they fall in category, which overlaps with some modern laptops and computers. They posses big screens and are controlled with hand movements and touches. Since such systems can present the user with normal web pages, our system will skip this target group. There are already many systems developed, which support computers. Typical devices are: iPad, WeTab, all other Windows 7 and Android based devices.
The conclusion of this listing, states that our system must be optimized for viewing on small screens, must offer an user interface, which needs as few as possible writing and user interaction should be minimized to “point and select” or “tap to select”. Visual styles should be minimized to none and no automation scripts should be used – JavaScript and other scripting methods must be avoided. Such conditions will limit the possibilities of the smart phones, but will allow fluent work on older and/or smaller mobile devices. As a further development of this system, one can develop a detection module – such part of the system could identify the device type via presented screen size, speed of loading, small
JavaScript conditional checks, etc., and redirect the user to the appropriate part of the website. The following table displays an up-‐to-‐date comparison between the differences in the mobile web and the desktop web.
Table 1: Comparison between mobile and desktop web [12]
As we can see from table 1, the mobile Internet is a chaotic system of many standards, which allows a lot of freedom in the mobile browser development. Such a freedom may be good for the browser development competition, but is disastrous for web developers. Web-‐based systems must be tested on each platform and on each browser to assure stability and correct work. With more than 3 billion devices produced every 5 years, the lack of common and stable standards makes development challenging. Therefore a very important point must be set before the development of the feedback system starts – the system will be developed after the W3C XHTML standard and every browser, which supports it will be able to run this software. No support will be offered for browsers, which do not support XHTML. Legacy standards, such as WAP, will not be kept in mind during development. No JavaScript, AJAX or proprietary APIs will be used, so that the system will not become browser dependant.
The above conditions and observations are valid for the users, who use our system to give a feedback to a stated problem. Other target groups of this project are users who put questions or problems into the system. Since they do not need
to be mobile in such matter, they could use their desktop computers or laptops to update the database. Therefore there are no special requirements for the system in this part. It is enough to assume, that most modern browsers support JavaScript 1.5, AJAX and CSS 2. Such browsers are:
• Microsoft Internet Explorer 6+
• Mozilla Firefox 2+
• Google Chrome 1+
• Safari 3+
• Opera 8+
• Every other browser based on the above stated ones.
This covers 99.99% of all computer browsers in use today. What these users expect to receive in this feedback environment is a simple path to place questions. These questions must be available in a specified time span and the feedback-‐giving user must be able to give only one answer to the specified problem. A nice and interactive feature will be the real-‐time display of the results. The results must be presented in a simple and easy-‐to-‐read way, so that data interpretation and observation can be made easy.
Such an ecosystem of fast mechanism for problem stating and a simple and mobile path for answering it can result in a powerful environment for opinion observation. It may allow users to react faster on growing problems in the target groups.
Environment There are many ways to develop, deploy and port a web system. Software can be deployed in various operating systems like Windows, Unix, Mac OS and Linux. Development language range is even bigger – from open-‐source languages like PHP or Java, to proprietary like ASP.NET. For data storage one can use also several mechanisms – complex database engines like MySQL, Oracle, single file databases like SqLite or Firebird or self developed, file-‐based information database. For the purpose of this project a free, easy to port, stable and reliable solution must be found, which also is fast in its deployment process – e.g. does not need any kind of compilation.
ASP.NET
Originally started as ASP (Active Server Pages) and developed by Microsoft, the language evolved into the current environment ASP.NET [13]. Active server pages had its own syntax, language specifics, keywords and was uncommon to other development languages, which was a big drawback in terms of porting, understandability and future developments. With ASP.NET Microsoft decided to bring web development to well-‐known and well-‐structured, object oriented languages like C# and Visual Basic – both developed again by Microsoft [14]. These were bundled together with a debugging and testing environment in the Microsoft Visual Studio, resulting in an fast to start and easy to understand
development environment. Moreover, the use of languages, which were already developed for the Microsoft Windows OS, allows the use of all components, which the user already knows – list boxes, calender toggles, combo boxes, tree views and so on. The biggest drawback of ASP.NET is still its possession by Microsoft [15]. To run ASP.NET code on a machine, the users must buy Windows Server operating system, which costs $699 and up. Although there are tries to port such code to unix-‐like operating systems, the results are very unstable.
JSP / Java
Java was the leading solution in terms of web development for long time. Starting with its version 1, Sun presented the so called Applets [16]. This was a system for integrating the java virtual machine as a plugin not only into the operating system, but also in the browser of the user. This way software written as a stand-‐alone application and bundled with minor changes in structure is able to run in the browser as embedded element. Java contains also a lot of pre-‐defined components, allowing rapid development of user friendly applications. Although very powerful, applets were not the best solution for easy web development due to the following reasons:
• Completely different language, which has nothing in common with HTML. This means, that the developer should once learn Java to develop the application, then HTML to integrate it.
• Deployment process – each applet has to be compiled. This means, making even minor changes, causes recompilation and transfering binary file to the web server.
• No styling – java applet is independant of the running environment – HTML, CSS and javascript and has no access to these elements. In order to have the same styling for the application and environment, a hard-‐coded solution must be developed in the application.
• Plugin – in order to run the applet, the user must install a plugin into the browser. This takes time and could be user-‐unfriendly.
Sun noted the above stated problems and came with a better solution – Java Server Pages and also Servlets [17]. These two elements showed a way to directly integrate Java code into HTML, which on its side interprets the passed data (via HTML requests or from a database engine) and returns again HTML code, which is then sent to the user’s browser. There is no need for plugins, code is easy to edit, because it does not need compilation and it shares common HTML, CSS and JavaScript techniques. Java is also an object-‐oriented language, which allows easy development of reusable elements. It can also run on various operating systems like Windows, Linux and other unix-‐like systems. All these characteristics make JSP a very powerful platform for web applications. JSP and Servlets inherited a very important feature of the Java language – compilation and multi-‐platform portability. When a JSP code is run for the first time, it gets compiled to a binary file and then cached. This procedure happens only the first time, which means the code will run much faster on the next executions. A recompilation will be triggered only if the JSP code gets updated [18]. Because of
its popularity, a lot of frameworks were developed, which allow even faster development of the desired software solution [19]. Despite of these advantages it is uncommon to use JSP for smaller projects, due to the complicated installation and deployment of the running environment. In order to run JSP on a server, it needs a JSP container. One of the most famous is Jakarta Tomcat (or also Apache Tomcat). It is Java, so to run it, a java virtual machine is needed. If the JSP code has to be integrated in an existing Apache or Microsoft Internet Information Services environment, then another plugin is needed [20].
PHP
PHP – Portable Hypertext Preprocessor, is probably the most used language in web-‐development nowadays. This is achieved through its big community, thousands of information and documentation sources and also very important – its simplicity. It is again a language common to the HTML-‐branch, which allows its easy-‐integration into the web page [21]. As the name states -‐ „preprocessor“, the code is executed each time the user calls a web page. The data to be parsed is processed and formed again as HTML code, which is then sent to the user. In comparison to JSP this process is slower, because the system is stateless – nothing gets cached between different callbacks. Despite of this, benchmarks show, that PHP is faster. Due to the fact, that there is a native preprocessor code for every operating system. This preprocessor translates the code to native OS commands, which are then processed faster. This makes the parsing of information faster than using a separate virtual machine – like Java. Because of its big community [22], starting with PHP is easy and a few additional steps are needed. Packages like WAMP or XAMPP, which are available for each operating system, install a full-‐featured, ready to work environment to the developer’s computer [23]. Due to its rapid development in the last years, a lot of frameworks were externally developed. This allows integration of desktop look-‐a-‐like objects to the webpages, what makes web systems more user friendly, easy and intuitive to work. PHP also possesses plugins for the most used databases nowadays – MySQL, SqLite, Oracle, MsSQL, etc.
It is more important how the information, the system is working with, is stored than how it is processed. Therefore it is also important to make a good decision about the database engine. As stated above, there are two main types of such systems – multi-‐file, multi-‐user systems and single-‐file databases. The third option – to develop a file-‐based database is too difficult and often results in bad security policies, which can cause serious problems.
MySQL
MySQL is a typical representative of the multi-‐user database systems. The mostly used database in the world [24]. It is based on the structured query language – queries for obtaining, managing and deletion of information are placed in form of pre-‐defined sentences. Such an approach allows easy error correction, easy expandability and less security problems. MySQL can be run either as dedicated
server, or it can contain more than one database, so more than one web systems can run on the same platform [25]. It also has versions for most common operating systems and is even integrated in the unix-‐like platforms. This database engine contains its own user and access policies and is well secured against hack-‐attacks [25]. Standard queries can be extended via user-‐written scripts, so the work of the system can be made even faster [26]. Benchmarks show MySQL as one of the fastest in the world wide web. A very important feature of each database engine should be the backup mechanisms. In MySQL there are several of them – CRC checking, repications and also plain archiving of files. Access to the information can be obtained either via a socket file, or through the Internet on a pre-‐defined port [25].
SqLite
SqLite – an acronym for „light SQL“, is also language based on structured query language. The difference with MySQL is that it is a single-‐filed database – all the information is stored in a single file and access to it is done only via this file. This yields a very simplified system, which allows easy backuping, maintenance and support. Porting a single file from machine to another platform is much easier, than sending a couple of files. But such an approach can also be very dangerous – a corrupted file will cause the whole information to be corrupted and irrepairable. Everyone who has read and write access to the file may view and/or edit the information. There is no seperate user access control, so the security of the data depends only on the physical and logical security of the running platform. Using a single file as a database yields another problem – when many people try accesing a file at the same time, they will receive one and the same data. When everybody tries updating the same information a collision situation will happen. Normally only one of the updates will be stored and information will be lost [27].
Final decision
According to our requirements, we need a stable and fast platform, which can perform in multi-‐user situation seamlessly. The platform must be cheap, or if free and should be able to run on as many platforms as possible. Information must be secure and visible only by authorized persons. Feature developments and deployment procedures must ensure good backup, object oriented development and easy integration with other services.
In order to answer on these requirements, we will develop the project in PHP:
• Famous – big community, easy to develop, a lot of documentation, help and supprt
• Free – it is an open-‐source language, so it is free to re-‐develop, port, etc.
• Multi-‐user – through Apache and its prefork and threaded mechanisms, it can support as much users, as the machine it works on
• Security – although there are problems, bugs and security flows found, the big community and the development team correct these problems as soon as possible
• Multi-‐platform – works on every operating system
For the database we will use MySQL egine:
• Free – it is not open-‐source, but it is free
• Availability – can be installed on every modern platform
• Multi-‐user – it can also support as much persons, as the machine has ressources
• Security – its own user and access control lists make it one of the most secure platforms available
It is also very important to state, that MySQL and PHP are one of the most famous integrations in the development world. This makes their usage together easier.
Frameworks
Web developers have another choice to meet, when starting the development of new system – build everything from scratch or base the system on a third-‐party platform. The first option offers full independance of the developed system. Building the system from null position assures, that it is independant from other people’s source code and their development habits and mistakes. Such systems tend to be easier to maintain in shorter plans and more easy to re-‐develop and extend in time of development. For a longer-‐term maintenance and extension, a good documentation must be written – design documents, usability scenarios, source code comments, flow and structure diagrams. This documentation should also be maintaned at future development stages.
The other option is to base the new system on an existing platform or environment. Such platforms offer an easy-‐start and more rapid speed of development. They usually consist of pre-‐developed, functional code-‐blocks, which the developer can import and use [28]. Such blocks include database communication, login screens, forms for adding, deleting and editing objects, etc. Using such elements of the system, the only step left to the developer is to create the application specific parts. A big drawback in such approach is the dependance on third-‐party developers. Usually such platforms, although open-‐source, obligate the developer to state on which platform the applciation is based, what libraries were used, who are their developers and so on. Such obligations can be unacceptable in corporate environments. Bugs and problems, caused by the framework will also be translated to the newly developed application and their correction can be hard. Moreover, because such systems are available to the public for download and propably a lot of people use them, security flaws are well-‐known to hackers and the new application can be exposed to internet attacks [29]. Big development communities, which stay behind frameworks can correct found problems very fast and new releases of the framework can be released soon after that. In such situations, the framework must posses a good mechanism for update. Currently existing functions and
functionalities must not be removed in updates, so that existing system become incompatible with the new releases.
Depending on the needs of the future web application, it can be based either on a stand-‐alone library or a bigger platform. Standalone libraries are only pre-‐defined code, offered for download as separate files. These files must be then copied to the application directory and imported at run-‐time. Platforms, or also environments, are stand-‐alone applications, which allow the development of external plug-‐ins, components and/or modules, which can then be integrated in them. Such components use the framework of the environment. This approach is very useful, when the web application should be extended in future development, or when more than one application will be developed and they should run in one and the same environment. Table 2 offers a brief comparison of famous PHP frameworks:
As the table states, there are three PHP frameworks of interest – Akelos, PRADO and Yii. They all offer very important features – PHP5, Model-‐View-‐Controller development approach, multiple database types, templates, AJAX. PRADO and Yii also offer a new field in the web development – the so called Event Driven Programming. This is a modern programming approach to threading. It is available in the object-‐oriented languages such as C# and Java. Basically said – the developer assigns a method or function to an event of an object. Events can be clicking on a button, moving a mouse or in a more complicated approach – finishing of long text parsing process or firing off a timer. When this „event“ happens the assigned methods are called. We can say that it is a threading, because the PHP preprocess starts the task, which should fire the event, in a seperate thread, allowing the main code to continue its work on the main thread, independantly of the second event [31].
Because of its big community, detailed documentation and a lot of tutorials available not only on its site, but also in the internet, it was decided to develop our feedback system on the Yii platform. Such a decision is a matter of stable, proved, easy to understand and extend system, not only for the start developers, but also for the future developers, who may want to add extended functionalities to the system. We need to state that Yii is not an environment, but a complex library. „Complex“ means the way it works – a script is integrated into the source code. Executing this script, creates a stand-‐alone skeleton, which needs almost no configuration to start working. In this skeleton all libraries needed for the application are already imported.
Table 2: Comparison of PHP frameworks, source [30]
Development In the previous sections we defined the specifications and requirements we need for our feedback system. Explanation of the algorithm and the seperate parts of the software will follow together with the explanation of the development.
Figure 1 shows the initial screen of the system. The environment is template based. This means, that these are predefined templates with placeholders. These placeholders define the position of basic elements like: menu, content, path, right menu, etc. On the top of the screen, the user sees the title of the system. It is called „Feedback ME“, where „ME“ means „Mobile Edition“. We chose this name because of its simplicity, easy way to remember and because of the target group of the system – the mobile devices. As we already stated the system must provide a fast and easy way to create a poll. That is why the first thing the user sees, when opening the page, is an html form for creating a question. , which we will encounter later. There is no need for login or even a valid account for creating a question. Questions created directly from the homepage are added to no topic, their owner user is set to „Anonymous“ and they cannot be edited or deleted
Figure 1: Main page of the Feedback ME system
later. For editing or deleting a question the user must have a valid account and login to the system. This will be shown later in this chapter. The fields in this form have predefined values. Theoretically the user can create a question directly by clicking the „Create“ button. Since an „untitled“ question won’t have any sense, the user is strongly adviced to change the default value under „Title“. The second option is the end time. Questions in the system are active only in a defined time interval. In this form we assume, that the start time is now. Possible options for end time are: 10, 20, 30, 40, 50 or 60 minutes from the start time. The default option is an interval of 10 minutes from now. The last option an anonymous user can set are the possible answers. „Yes“, „No“ and „Maybe“ are the default answers. In our system we would like to know the opinion of people on a specific problem. This type of questionnaires fall in a category called „Screening questions“ [32]. They reveal how common is something to people in one or more social groups. Obtaining data about people’s opinion through such questions is easy, since the raw count of given answers can be interpreted as a steady data: e.g. „33% of ... will ... that“ – interpretation of the data is greatly simplified. A big drawback of yes-‐no questions is that the user is forced to choose one of them. In „Feedback ME“ we added by default the third option „Maybe“, which allows freedom in the answers. „Likelihood questions“ [32] are a more accurate way for obtaining user opinion. They are in the following form: „How likely is to ...“. Answers are in form of numbers. For more accurate data and possibly more options, the user may add answers by clicking on „Add answer“. „Remove last“ will remove the last answer. Note, that less than 2 answers are not allowed and trying to delete the second answer will result in an error message.
In the last table we see the database structure for storing a questions. The first field is the id of the question. This field is auto incrementing, which means that each new questions receives automatically an id by incrementing the last question’s id with one. Also this field is primary key, so it is unique for each question in the database. The mobile users, who should answer this question, will use this number to enter the system. Topic id and user id are the identifiers for the topic, this question should be added to, and the owner of the question. Topic of -‐1 means the main topic category and user of -‐1 means an anonymous user. Questions created by anonymous users cannot be edited or deleted. Title is actually the stated question itself, this is what the creator wrote in the „Title“ field. Maximum length of the question is 255 characters and the default value as stated before is „untitled“. Start and end times define the time interval, in which
Table 3: Table structure for tbl_questions
this question is active. These use the default MySQL date/time format of: „YYYY-‐MM-‐DD HH:mm:SS“. Since the user writes the dates in human-‐friendly manner of: „HH:mm:SS DD.MM.YYYY“, we need to transform the dates between these formats in PHP using the date command. The last field in the database is a JSON structure of the answers. JSON comes from „JavaScript Object Notation“ and is the default way of defining objects in JavaScript. This format was chosen, because of its simplicity and its easy way for parsing in HTML and PHP over other structures like for example XML. The three default answers „Yes“, „No“ and „Maybe“ are stored the following way in JSON: [{"text":"Yes"},{"text":"No"},{"text":"Maybe"}]. „text“ specifies the type of answer we have.
Table 4: Table structure for tbl_clicks
For storing the answer count – how many times an answer was clicked, we use a seperate table, shown in the table above. Quesion id and answer id are the unique identifier for each click. The third field is the actual count of clicks for the answer. Question id is the same identifier as the Id in the previous table and answer id corresponds to the number of the answer in the JSON structure. Using a second table for storing the clicks has a performance sense in our situation. If we expect a question with interval of 10 minutes and around 300 users to answer it – a normal hall room in an university has 300 sit places, then we should expect one click per two seconds. The second tables has a much more simplified structure and access times will be much faster than the first table. This way we assure concurrency of the database system with the answering speed. This and other precautions, discussed later, allow “Feedback ME” to work in heavy conditions.
Once the question has been created, the user sees the following screen:
Figure 2: Question screen -‐ displays information about selected question
It displays all important information about the question. On the top is its title. After this we see the identifier, the topic, start and end time and answers. The identifier is important for the mobile answers, since they should apply it to the address they visit. This way the system knows, which question they want to answer. Because the question is created by an anonymous user, it is automatically added to the “Main” topic. Starting time is the current date and time and we chose the availability of the question to end after ten minutes. Next to the answers the user sees procent bars. These bars show graphically and textually, how many of the total opinions given are for the specific answer. Using a self-‐refreshing AJAX technology, these results are refreshed each five seconds. This way the user can obtain data in real time and if needed can start a new poll for more detailed results. Additional options from the right menu are: “List Questions” and “Create Question”. The second option will bring the user back to the home page to create a new question.
Figure 3: Questions tree structure
Clicking on “Questions” from the top menu or “List Questions” from the right, will show a tree view as shown on figure 3, which represents the topic-‐question structure in the system. Because we are working as an anonymous user, we can only see the questions created by anonymous users. Questions created by not logged users are stored only in the main topic. Therefore the topics shown in the tree view are empty.
Until now we described what possibilities has an anonymous user. Anonymous users are allowed to use the system, because this is the fastest way to create a question. Writing a question and clicking on the “Create” button takes less time and the question is immediately active after that. Drawback of such method are the less possibilities to configure the questions the user has. If the user does not need a fast method for creating questions, but wants to specify more settings, he must log in.
Figure 4: Create Question screen
On the above screenshot we are logged in as administrator. This super user has some more advanced options in the menu, than a normal user gets. These advanced features of the system will be described later in this section. As the screenshot shows, there are more settings possible to set to a question for valid users. First one is the topic. A drop-‐down list displays all created topics and allows to assign the newly created question to one of them. Topics are created by administrator user. Normal users cannot create new topics. The start and end time can also be specified in detail. Start time can be specified by date and time. This way the availability of the question can be specified to be later that day, tomorrow, next month, even next year. The default values for these fields are again now and one hour later. Again these default values allow the user to create new questions fast. To the right the user can again click on „List Questions“, which will show the tree view. Instead of showing all questions created by anonymous users, only questions created by the logged in user will be shown.
Figure 5: Update Question screen
Figure 5 shows the same screen, but this time, as it can be seen from the path on top of the screen: „Home >> Questions >> 8 >> Update“, editing an already created question. This feature is only available to registered users. They can also remove questions, of which they are owners. The question displayed above is in German – because of the MySQL database engine, which supports UTF-‐8 collation and character encoding, the system supports every language, which can be saved in this encoding. This includes all European, South and North-‐American, most of the Asian languages. Problems will occure with Chinese and Japanaese, which need UTF-‐16. For this purposes, the server must be reconfigured and the configuration of the database changed. It is also important to note, that adding an answer to a question will not reset the answer count for the older ones, but removing an answer will erase this number.
The administrator user has additional functionalities and privileges. As already stated in this section, questions are divided in topics. Topics are just simple sections, which can be used for sorting questions. Each topic can have an unlimited count of child-‐, or sub-‐topics. This forms a simple tree structure, which allows an easy overview of the questions. As mentioned before, anonymous users do not have the option to choose a topic, therefore their questions are stored under the tree root – the „Main“ topic. Question topics can be created, edited and removed only by administrator users. This is done by clicking the „Topics“ menu from the top.
Figure 6: View Topics screen
Each topic has its own identificator. This identificator is unique and gets automatically incremented for each new topic. The topics screen also shows the parent topic for each one. Clicking on the topic identifier will enter the topic editing screen, which allows to change the topic title or the parent. A new feature on the shown screen is „Manage Topics“. This operation allows topics to be searched either by part of the identifier, part of the parent topic or by title. Through the „Manage Topics“ screen, topics can also be edited or removed. Removing a topic will remove all its subtopics and questions associated with them.
The administrator is also able to create, edit and remove users. The user management screen is almost the same as the one by the topics.
Figure 7: Manage Users screen
As it can be seen from figure 7, users are defined by their identifier, username, password and e-‐mail. An optional feature development could be e-‐mail validation and probably identification via e-‐mail only. The three icons to the right are: (from left to right) „View user“, „Edit user“ and „Remove user“.
The most important objective of this new development is to create a mobile system – an environment, which can be used by mobile users, without the need of special software or plugins. Existing system do not provide such kind of simplicity – designs are not compatible with smaller screens, there are functionalities, which the user does not need, but make the loading of the environment slow and non-‐responsive.
What we have developed is a pure HTML4 and CSS1 web page, which can display one question at a time. The question and its answers is specified via its unique identifier in the address bar of the browser. The user works on a small sized device, so typing is hard to do. That is why, the parameters, which are supplied in the web browser’s address bar, should be as few as possible. The path to the system is server and configuration dependant. If the server is installed under the domain „http://fme.cc/“ then the mobile user must supply the following path to answer a question: „http://fme.cc/?r={id}“ where {id} specifies the identification number of the question.
Figure 8: Viewing a question on the mobile device's screen
Figure 8 shows, what the user will see when typing the path above. Note, that we use the iPhone Simulator only for demonstration purposes. The software can run on every mobile device, which has an HTML browser. Every modern device, produced after 2004 has one integrated. Different versions of Opera browsers can be installed on older phones, which support package installations. The address on the screenshot uses a localhost address of the development server. This will be changed together with the installation of the software on a production server. The page itself is relative simple. On top of the screen is placed the title of the question in bold font. Beneath it are the possible answers in form of a radio buttons, because the user must choose only one answer. The first answer is always pre-‐selected in time of loading. This assures, that there will be no „empty“ votes in the question. Below the options is the submit button. Clicking on it will save the vote in the database by incrementing the value for the corresponding answer in the „clicks“ table, which was presented earlier in this section. The page is scaled at 150px width. Modern mobile devices have bigger screens [33], but since we aim to support older models, we must place this limitation. Probably an idea for future development is a check about the device size via JavaScript. The page consists of div and form tags, which are in the HTML standards since version 3 [34]. Every HTML browser compilant to these standards must support them. The dimensions are set via CSS1 (Cascaded Style Sheets). Modern mobile devices use special HTML tags to specify their viewport [35]. This tag defines how the page must be scaled. These browser try to wide-‐
scale the viewed page, so it looks like on a computer web browser. If the user opens the above given web address from a computer browser, then the page will be positioned in the top left corner. The mobile browser tries to do the same. Therefore without proper viewport configuration, the page will zoomed out and placed in the top left corner. The user will have to zoom int and reposition the page on his device. Therefore he will loose time. To avoid such situation we must specify the viewport tag:
<meta name="viewport" content="width=150, initial-‐scale=1.0, maximum-‐scale=2.0, user-‐scalable=1" />
The keywords are self-‐explainable. First we specify the optimal viewport at 150px. This is derived from our HTML design, where we strictly placed the box at 150px width. Initial scale and maximum scale specify how the page must be scaled at first load. We suspect, that the mobile browser has a screen bigger than 150px so we set the initial scale at one. A maximum scale of 2.0 allows the user to make the viewport even bigger. This is needed, if the mobile screen has a big resolution and the submit and radio buttons are to small to click. User scalable is a boolean value, which specifies if the user is able to rescale the page. Value of 1 is true and 0 is false. Note, that since the content width is smaller than the screen dimensions, scaling beneath 1.0 is actually not possible. The modern browsers will prevent this from stating. If this is not the case, then the option minimum-‐scale can be supplied to limit the downscaling. The questions are only available in pre-‐defined by the creator time intervals. If the user tries to access a question before or after this time period, then the following message will be shown to him: „This test is currently closed.“.
We expect the system to work in heavy conditions – since questions are available only for short time periods, then it should take the answers of all users in short times and store them to the database. Here we have three bottlenecks – the internet connection, the processing power of the PHP server and the processing power of the MySQL database engine. For the internet connection, less actions can be taken. It is important, that the service provider offers good upload and download speeds. The table below describes the most important configuration parameters for PHP scalability:
Table 5: PHP configuration options for scalability
MaxClients and MaxRequestsPerChild must be properly configured, so that the server can respond on many requests simultaneously and still not overload the hardware. PHP is also resource dependant from the Apache server, which by itself has proven to be good in memory management. Apache starts a „prefork“ process for each user connection. This way, each client comes to his own sandbox managed by Apache. This allows proper CPU and memory management. The last problem could be the connection between PHP and MySQL. In PHP one can create normal connections and persistant connections to the database engine. The persistant connection is shared between all processes from one and the same client machine. The advantage of this mechanism is that each user has his own connection, which is shared through processes. We come to a problem if
we have many different users. Then for each of them a new connection is created and if this connection is not properly closed by the last process, a buffer overflow and system overload can happen. The Yii platform uses non-‐persistant connections, which get automatically terminated after the end of each process. This can cause problems if these process stay longer active and many users access the database simultaneously. Since we have a special MySQL table architecture, which allows fast change of the database data, our processes stay active for only couple of milliseconds. Values cannot be given, since the process period is dependant from hardware, configuration, working environment, etc. That is why we do not expect overload in the MySQL – PHP connections. MySQL table change should be carefully considered. Suppose we have a worst case scenario, where 20 users try to vote at one and the same time. Opening a new connection to the MySQL server and fetching the previous data will happen again at one and the same time. So all 20 users will receive the actual state of the votes. Every one of them will increment this vote by one and will store the new value in the database. So at the end we will not have the last value plus 20 stored, but the last value plus one. MySQL works similiary as PHP – every connection works in its own sandbox. This is the so called transaction isolation. There are different methods for this isolation. The default one is „REPEATABLE READ“. In order to support concurrency situations as stated above, we should set the following parameter in the MySQL configuration file: „transaction-‐isolation = READ-‐COMMITTED“. This way, updates of the database can happen simultaneously and they are queued. This will result in a correct calculation of the clicks.
Future steps Knowing what the public, the masses, the others think, means not only knowledge – it means power. Through the Feedback ME System, users can obtain information about the feelings, thoughts, ideas, future plans of the target groups. Therefore the power of this system is practically unlimited. It can be used for political, commercial, research, educational objectives – the results will be obtained as fast and as accurate as possible. The idea of not analysing the results directly by the system, but presenting them in real-‐time and in raw format allows future interpretations by third-‐party software or third-‐persons, who are specialists in the field of interest. The system is mobile device oriented, meaning that the clients are able to access placed questions anytime, anywhere. There is no need for additional plugins or third-‐party software. This has proven to be a first-‐level security – data cannot be indirectly stolen or edited. If the server uses additional security mechanisms – the security level will be much higher. Further researches will test Feedback ME in production situations – during university lectures, the sosciety, etc. If needed, the system will be continuosly developed, in order to achive maximum reliability, stability and user satisfaction.
Literature [1] Fielding, R.T. (2000). Architectural Styles and the Design of Network-‐based Software Architectures
[2] Frederick, G., Lal, R. (2009). Beginning Smartphone Web Development, pp. 6
[3] http://msdn.microsoft.com/en-‐us/library/t6dbcb8d(VS.71).aspx (2010)
[4] http://www.microsoft.com/ (2010)
[5] Keil, M., Johnson, R.D. (2002). Feedback Channels: Using Social Presence Theory to Compare Voice Mail to E-‐mail
[6] Dillman, D.A. (1978). Mail and telephone surveys – the total design method
[7] Selvin, H.C., Hirschi, T. (1973). Principles of survey analysis
[8] Ullmer, B., Ishii, H. (2000). Emerging Frameworks for Tangible User Interfaces
[9] Kofahl, M., Wilde, E. (2009). Location Concepts for the Web. In Weaving services and people on the world wide web, Part 1, pp.147-‐168
[10] Greenhow, C., Robelia, B., Hughes, J.E. (2009). Web 2.0 and Classroom Research: What Path Should We Take Now?, In Educational Researcher, vol. 38, no. 4, pp.246-‐259
[11] Joshi, J.B.D., Aref, W.G., Ghafoor, A., Spafford, E.H. (2001). Security models for web-‐based applications, In Communications of the ACM archive, Volume 44, Issue 2, pp.38-‐44, ISSN:0001-‐0782
[12] Frederick, G., Lal, R. (2009). Beginning Smartphone Web Development, pp.5-‐7
[13] Bidgoli, H. (2004). The Internet encyclopedia, Volume 1, pp. 1-‐2
[14] Kalata, K. (2002). Introduction to ASP.NET
[15] Woo, J. (2005). The Comparison of J2EE and .NET for e-‐Business
[16] Harold, R. (2000). Java Network Programming, Second Edition, 2nd edition, pp.267-‐269
[17] Singh, I., Steams, B., Johnson, M. (2004) Designing enterprise applications with the J2EE platform, 2nd edition, pp.27-‐32
[18] Hunter, J., Crawford, W. (2001). Java servlet programming, pp. 62-‐70
[19] Johnscon, R. (2005). J2EE development frameworks, Computer Magazine
[20] Hunter, J., Crawford, W. (2001). Java servlet programming, pp. 7-‐10
[21] Bakken, S.S., Aulbach, A., et.al. (2010). PHP Manual, p.72
[22] Nixon, R. (2009). Learning PHP, MySQL, and JavaScript: A Step-‐By-‐Step Guide, pp.453-‐456
[23] Nixon, R. (2009). Learning PHP, MySQL, and JavaScript: A Step-‐By-‐Step Guide, pp.13-‐14
[24] Statistics on http://www.mysql.com (2010)
[25] Pachev, S. (2007). Understanding MySQL Internals
[26] Widenius, M., Axmark, D. (2002). MySQL reference manual: documentation from the source, pp. 334-‐356
[27] Hai-‐yan, L., Jian-‐kang, Y., Hong-‐liu, C., Dong-‐yang, W. (2009). Analysis and Design of the Security Mechanisms of Embedded Database SQLite
[28] Cai, X., Lyu, M.R., Wong, K., Ko, R. (2008). Component-‐based software engineering: technologies, development frameworks, and quality assurance schemes, ISBN: 0-‐7695-‐0915-‐0
[29] Mattsson, M., Bosch, J. (1997). Framework composition: problems, causes and solutions, Technology of Object-‐Oriented Languages and Systems, TOOLS 23. Proceedings, ISBN: 0-‐8186-‐8383-‐X
[30] First page at: http://www.phpframeworks.com/ (2010)
[31] Dabek, F., Zeldovich., N., et.al. (2002). Event-‐driven programming for robust software. In Proceedings of the 10th workshop on ACM SIGOPS European workshop 2002, Saint-‐Emilion, France, pp. 186 -‐ 189
[32] Bradburn, N., M.m Sudman, S., Wansink, B. (2004). Asking questions: the definitive guide to questionnaire design, pp.130-‐133
[33] Chittaro, L. (2006). Visualizing information on mobile devices, Computer Magazine, pp. 40-‐45
[34] Musciano, C., Kennedy, B. (2006). HTML & XHTML: The Definitive Guide, pp. 311-‐313, pp.58-‐60
[35] Frederick, G., Lal, R. (2009). Beginning Smartphone Web Development, pp. 188-‐189
[36] Richard G.P. (1990). Lisp: Good News, Bad News, How to Win Big
[37] Heli, R., Roto, V., Väänänen-‐Vainio-‐Mattila, K. (2009). Evaluating User Experience of Early Product Concepts. International Conference on Designing Pleasurable Products and Interfaces, DPPI09
[38] Erlingsson, Ú., Livshits, B., Xie, Y. (2007). End-‐to-‐end web application security. Proceedings of the 11th USENIX workshop on Hot topics in operating systems
[39] „The survey system“ page at http://www.surveysystem.com/
[40] „4 steps to a survey“ page at http://www.surveysystem.com/price-‐ordering.htm