Fateh Muhammad Bilal Baloch (fbh10001@student.mdh.se) Josip Petrić (Josip.Petric@fer.hr) Igor Bučec (Igor.Bucec@fer.hr) Sandi Winter (Sandi.Winter@fer.hr) Sureshkumar Yadav (syv10001@student.mdh.se) Xiaoyan Wan (xwn10001@student.mdh.se) SCORE Project MOb – Mass Observation January, 2011 Mälardalen University, School of Innovation, Design and Engineering (MDH) & University of Zagreb, Faculty of Electrical Engineering and Computing (FER) (This project was performed as a part of Distributed Software Development, DSD course led by Prof. Ivica Crnković, ivica.crnkovic@mdh.se and Prof. Mario Žagar, mario.zagar@fer.hr, under supervision of Thomas Leveque, thomas.leveque@mdh.se) 1 Executive Summary Mass Observation as the name suggests is about observing some things by a mass number of people. The aim of this project is to study and analyze a question based on on-field observations made by a group of people. There are three actors in this project viz. initiator, observer and consumer. The initiator is the one who proposes a study question; the observers put forth their observations for the study question and the consumers use the information created by the observers. The project is developed as a part of Distributed Software Development (DSD) course at MDH and FER universities. It was undertaken by a group of seven team-members (four from MDH and three from FER). These were then constrained to six team members as one of the team members from MDH left the course midway. Based on the initial analysis of the requirements and brainstorming, we found that the functionalities could be broken down into parts and implemented in a cycle. Hence, an iterative approach was selected as it best suited the project. MOb is broadly divided into two parts. One part consists of the web logic and services whereas the other part consists of mobile application development. These were internally divided into many other small tasks and implemented and integrated as the project progressed. Finally, we have a working application with all the functional requirements covered. A group of volunteers were invited to test the application in the real environment to confirm the effectiveness of the project and get inputs for improvement. Owing to the distributed nature of the development environment, special emphasis was given to communication within the team. The project team had regular meetings with all the team members attending it. Regular communication was held with the supervisor giving him details about the project progress and other issues. As a team, we are proud of the whole project and the sincere effort we have put in to make it fully functional. There were many challenges faced during the project. The largest challenge was to overcome the cultural differences and varying habits of team members and still work like a cohesive unit. There were other challenges also, like: one of the team member left midway, too many courses, exams, holidays, etc. But these were overcome just by sheer determination of the team members and better time management. The guidance from our project supervisor and course instructors was very valuable in making this project a success. 2 1 Introduction Mass observation aims to present in-situ observations for a study question on a mass level and finally view and analyze the results. The report begins with a problem statement and in section 2 followed by the scope of the project and major challenges faced in due course in section 3. The next section describes the development methodology employed for this project. Sections 5 and 6 describe the project plan and management plan for this project. This is followed by requirement descriptions in section 7 where different aspects of the requirements are discussed. Sections 8 and 9 present the design and implementation detail of the project. Further in section 10, we discuss about the verification and validation issues and how they were accomplished. The next section describes the outcomes of this project and important lessons learnt while working in distributed environment. Finally, we conclude the report in section 12. 2 Requirements: Problem Statement Information plays a very important role in today’s world. There are many sources of information available on the Internet. However, it is very difficult to get a proper source if you have a question or issue that needs a collection of somehow connected people to solve. Mass Observation presents an ideal way of dealing with such situations. Here, the information is directly picked from on field observations and presented to the user. Also owing to the mass nature of the information gathered, it is very descriptive and can effectively be used to put in use or reach a decision. There are three components or actors in this project. They are an initiator, an observer and a consumer. The initiator proposes a study question; the observer makes observation for the study question and the consumer finally views the results of the observations. The tasks that our application must provide are divided among the actors and can be represented as below: The initiator must have a web interface and must be able to do following tasks: Propose a study question by starting an observation event; Choose a group of observers for the observation event; Define the interfaces for observation event like notes, images, audio etc. Receive results of the observation for the observation event; and Make the result public to be viewed by the consumers or uses privately. Observer must have a mobile application interface and must be able to do following tasks: Receive observation events on his mobile application; Make observation in form of notes, images, audio etc. by using the mobile application; and Send the observation back to server. Consumer must have a web interface and must be able to do following tasks: View the observation events made public by the initiator; and View and analyze data collected by the observers. 3 3 Scope of the Project and Main Challenges The Mass Observation project is developed as a part of DSD course taught in collaboration by MDH University in Västerås, Sweden and FER University in Zagreb, Croatia. Also, this is a part of SCORE competition. Hence, the scope of the project includes all the guidelines defined by the course supervisors as well as SCORE project proponent. These included timely submission of all necessary documents like weekly reports, summary reports, requirement definitions, project plan, design documentation, acceptance test plan etc. and project releases namely alpha, beta and release candidate. The project started in early September and ran till mid January. The workload during this period was well distributed among the team members. This is a short duration for developing a full-fledged project since there are other courses too. There were plenty of obstacles which needed to be overcome. We had new technologies to work on like Android where we had little or no experience. The other obstacles were and not limited to getting clarity on requirements early, finalizing designs early, getting stakeholder’s inputs every now and then and getting agreements on important decisions quickly etc. In spite of these, the difficulties were triumphed over and the team made it possible and the effort shows in the finished product. 4 Development Process A combination of various development processes are applied in this project. Basically, they are waterfall model, iterative process, evolutionary prototyping and agile methods. The system is divided into three main modules, mobile Android standalone application, mobile web application and web application. They are implemented in parallel. To control the project schedule in DSD course, several milestones are clearly defined and followed as specified in section 5. This is kind of waterfall model, from requirement to design, from design to implementation, and from implementation to verification & validation. In each phase, documents are delivered before deadlines proposed by course supervisors, project description, project plan, requirement definition, design description and test plan. After initial architecture design is reached, iterative process is followed with rotation of analyze, requirement refinement, design, implementation and testing. Please refer to figure 4.1. Besides that, agile method is also used between developers within the same module. User stories are generated and prioritized in Google documents. Versions with new user stories are delivered frequently, about every two weeks. Through several evolutionary iterations, new functionalities are implemented and integrated into the system 4 Requirement Further Design Design Implementation Initial Implementation Iterative Development Requirement Refinement Testing Analysis Deliverable Product Figure 4.1 MOb Development Process 5 Project Plan The Gantt diagram shown on Table 5.1 shows our project schedule. In the diagram, 37 to 52 represents week 37 to 52 of the year 2010, and 1 and 2 are first two weeks in 2011. Activity (week) 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 Project Preparation Requirements definition Project Design Implementation Testing & Debugging Integration and Testing Documentation Final Delivery Final Project Presentation Learning Table 5.1 Project Schedule Table 5.3 lists the milestones. The responsible initials are team members initials. 5 Plan Buffer 1 2 Finished week Milestone Description Id Responsible Dept./Initials Forecast Plan Deliverables Actual Week +/M001 Project Vision XW W38 W38 0 W38 - M002 Project Plan SY, XW W39 W39 0 W39 Project plan document Requirements definition document M003 Requirements Definition All W39 W39 0 W39 Design description document M004 Alpha Prototype All W43 W43 0 W43 M005 Beta Prototype All W46 W46 0 W46 Alpha prototype Beta prototype Acceptance test plan M006 Release Candidate All W50 W50 M007 Final Project Presentation All W2 W2 0 W50 RC prototype Test report document Final product Table 5.1 Milestones Table 5.4 lists the estimated risks and our experience with them, whether they appear and how did we proceed with the consequences. Possibility Risk Preventive action Medium Architecture Drift Brainstorming the pros and cons of a design and technology selected before implementing. Medium Lack of Required Skills Distribution of work based on skills of a team member. Continuous research. Medium Unavailability of a member Thorough and good documentation. Meetings to ensure that each member is having an idea of what other is doing. Medium Crashes and Outages Regular Backups. Table 5.4 Risks 6 6.1 Management Plan Team Composition and Organization Out team consists of six students. Three students are from Mälardalen University, Västerås, Sweden and three are from University of Zagreb, Croatia. The project supervisor is positioned in Västerås. The team members are from four different countries namely Croatia, China, Pakistan and India. The culture and background of the team members are different which satisfies the aim of the course of developing the project in a distributed environment and overcoming the challenges. 6 The team is divided in two groups one in FER and one in MDH. The project leader is from MDH and leading the whole team as well as representing the MDH side. A team leader from FER represents FER side. 6.2 Responsibilities On the very beginning of the project team introduction meeting took place. At that meeting team members expertise and interests were discussed. We have found out that three of our team members already had advanced knowledge in web development, one team member had theoretical knowledge of mobile development and two had experience in other areas like database modeling and testing. Taking in consideration previous experiences of team members, roles were defined. The project leader was responsible for coordinating the team, keeping a track of the work each team member is doing, keeping track of project status, and communicating with project supervisor and SCORE customer. A summary report was prepared by him every week and uploaded to project site. The FER team leader was responsible for coordinating the FER team and a point of contact for FER team for decisions. Team leader was also responsible for maintaining communication with MDH side and also, helping the project leader in any project management activity. Every team member was responsible to complete the tasks assigned to him: send a weekly status report to the project leader, to attend weekly meetings and to complete given tasks in time. 6.3 Internal Team Division To work more efficient in geographically distributed environment, we had divided team to work on different aspects of the project. We had: a database team, documentation team, mobile application team, web services team, web application team, designer team and verification team. 6.4 Communication The key to success for every distributed project is communication between team members. All team members were encouraged to use informal communication between each other. That way a stronger bond between team members was created. The team had two formal meetings every week one being on Monday and one on Friday. In general, tasks were assigned to the members in Monday meeting and the progress stock was taken in Friday meeting. When tasks were assigned to team members, a lot of informal meetings occurred between team members working on same assignments. Main communication channel for formal and informal meetings was Skype. Besides Skype, e-mail messaging was extensively used. Google group was also created for discussion about project topics and problems. Google web site was created to store all created files. It was also an information repository where various information and news about MOb were published. Google site can be seen at https://sites.google.com/site/projectdsd/. Google documents were used to create weekly to-do lists which were published on the Google web site. Doodle polls were initially used to get an agreement for timings to schedule meetings. However, we realized early that this was taking most of the time and hence the idea was abolished and a dedicated time was slotted for the meeting. 6.5 Code Management A dedicated Sub-Version (SVN) repository was provided by FER University for managing the code. Rules were decided among the team members very early and policy document was created regarding the usage of the SVN repository to avoid any clashes later. 7 7 Requirements Specification Because Mass Observation is a SCORE competition project, basic requirements have been provided by the project proponent, Stephen Fickas through the Project proposal document. Since the requirements are foundation of the project, they had to be analyzed in more detailed way, specified and prioritized. Before any architecture or implementation plans, requirements were discussed in details among the team members. Requirements were gathered and specified in several iterations. First, the most important iteration took place at the very beginning of the project. Every team member read the Project proposal document and gathered requirements from it. Another approach was that team members put them selves in the user role and propose the ideas that would enhance MOb project. Also, a few informal interviews with potential users were held. Main discussion between team members about gathered requirements took place on weekly meeting. On the meeting requirements were specified and prioritized. Requirements definition document was created. Document was revised by the project supervisor. When implementation had started, few questions about requirements had appeared. Those questions were sent to the customer (SCORE Project proponent). Requirements were revised regarding the answers from the customer as in every next iteration. Figure 7.1 MOb Use case Figure 7.1 shows MOb use case. Use case details can be found in Requirement definition document [5]. Requirements are divided in functional and non-functional requirements. List of all requirements with their priorities is shown in the table below. Identification ADM INI OBS CSM Requirement Group Administrator Initiator Observer Consumer 8 Rem. NFR OTH Non-Functional Requirements Others Table 7.1 Requirement Group Definitions Source Description Mob customer (Stephen Fickas) defined requirement Required as a consequence of system design (contractor’s requirement) Suggestions from developers CTM SYS DEV Rem. Table 7.2 Requirement Sources Sta tus Prio rity ADM-1 I 1 ADM-2 I 2 ADM-3 I 2 ADM-4 I 1 INI-1 I 1 INI-2 I 1 INI-3 I 1 INI-4 I 2 INI-5 I 1 INI-6 I 2 INI-7 I 1 INI-8 I 1 Identity Description System Administration Ability to create a user. Administrator is able to create the user and assign a role to him. The role can be of initiator or observer or consumer or a combination of the above roles. Ability to edit a user. Administrator is able to edit properties of a user including his role. Ability to view a user. Administrator is able to view the properties of a user. Ability to delete a user. Administrator is able to delete a user. Case 1: Initiator can be deleted only after the OE created by him is deleted. Case 2: Observer is deleted. Case 3: Consumer is deleted. Case 4: Guest User (Inactive User) is deleted. Initiator Ability to create an observation event. The initiator will be able to create observation events based on certain predetermined parameters. The observation event will be identified by its own unique id, type, etc. Ability to start an observation event. The initiator will be able to start a created OE by him. To start an OE, it should have at least one observer tagged to it and medium of observation identified. Ability to terminate an observation event. The initiator will be able to terminate an OE created by him. When the OE is terminated by the initiator, the observers tagged to the particular OE are notified. When the observer logs in, the OE list is refreshed. Ability to edit an observation event. The initiator will be able to edit the observation event. The editable parameters are limited. Once the OE is edited, the tagged observers will be notified about the changes if the changes are related to the recording of the OE event such as change in deadline. Ability to view an observation event. The initiator will be able to view his created OEs. He can view his OE at any time after creation. The view should be able to show him tagged observers, their observations till now which have been relayed back and any data if it has been presented to the consumer. Ability to delete an observation event. The initiator has an ability to delete an OE. Before deleting an OE, the OE needs to be terminated. Ability to select observers for an observation event. The initiator will have the option of selecting observers for a particular OE. The observers can be selected anytime before or after starting the OE. The notification of OE is sent only after start of the OE. Ability to select the medium for the observation data. The initiator has the option to select the medium for an OE. The medium can be text, picture, video or audio or a combination of the above. 9 Source SYS SYS SYS SYS CTM CTM CTM CTM/SYS CTM/SYS CTM/SYS CTM CTM OBS-6 D 1 CSM-1 I 1 CSM-2 I 1 OTH-1 I 1 NFR-1 H 2 NFR-2 I 2 Observer Ability to view observation events assigned. Once an OE is started, the tagged observer gets a notification of it. He has the option to view all the OEs assigned to him. Ability to accept/reject observation event. If the observer accepts the OE, it is added to its OE list. If the observer rejects the OE, it is not added to its OE list. Ability to make observations using Mobile Application Device. The observer has the option to make/record observations using his Mobile Application device for a particular OE. The OE data can be stored in memory in case the observation is distributed in time. Ability to send an observation data using Mobile Application Device to a web-server. The observer has the option to send a final saved data for a particular OE to a web-server. The data can be sent before deadline of that particular OE. Ability to access the information via Mobile Application Device even though there is no internet access. The observer has the option to access his OE information without internet access. Ability to view observation events assigned through a web-interface. Consumer Ability to view observed data. The consumer is able to view information related to a particular OE for which he is selected by the initiator or which is made public to all the consumers. Ability to analyze the observed data. The consumer has the option to analyze OE information and represent it in form which is accessible to him. Others Ability to register a user on website. A new user (called as guest user) has to register in the MOb application before becoming a part of it. He will be presented a form for registration where he will put in his desired role for approval. NFR The identity of the observer if desired should be kept secret. If the observer while sending back the OE information wants to hide his identity, he should be able to do it. Observer authentication should be possible if desired. NFR-3 I 2 Encryption techniques should be used for security for mobile applications CTM NFR-4 I 2 Web-Application must be compatible with latest web browsers. The Web-Application should be supported across IE, Firefox, Safari, Chrome and all other standard browsers. The web interface should be user-friendly. The system response should be quick. The system should be stable. DEV OBS-1 I 1 OBS-2 I 1 OBS-3 I 1 I OBS-4 I OBS-5 NFR-5 NFR-6 NFR-7 I I I 1 2 2 1 1 Table 7.3 Requirements definitions Requirement status: I = initial (this requirement has been identified at the beginning of the project), D = dropped (this requirement has been deleted from the requirement definitions), H = on hold (decision to be implemented or dropped will be made later), A = additional (this requirement was introduced during the project course). 10 SYS CTM CTM CTM DEV CTM CTM SYS CTM CTM DEV DEV DEV 8 Architectural Design In figure 8.1, design overview is shown to get an idea about the structure of the project. Web application Consumer Initiator Mobile application Observer Figure 8.1 MOb Conceptual design There are three main roles in the application: initiator, observer and consumer. Initiator and consumer are using web application while observer uses mobile application. Main architecture is divided into three main parts: web application, mobile application and database. Architecture of web and mobile application as well as communication mechanisms between them will be shown in the following sections. 8.1 Web application architecture Because web application is developed by three web developers, and because we wanted to avoid unnecessary work management and SVN problems we divided web application to logically separated modules. These modules are: administrator module, initiator module, observer module, consumer module and authentication module. This way each web developer was assigned to one or more modules. Administrator module takes care about user management. Initiator module includes all functions for the initiator. Consumer module enables consumer to analyze observed data. Observer module is mobile web application created for observers with non-Android mobile devices to make observations. It is adapted for Opera Mini[6] mobile web browser, but it can also work with other browsers. Authentication module takes care about authentication and user roles. 11 Web services modul Webservice «uses» CodeIgniter Framework +login() +get_interface() +make_ob() +list_ob() SecurityLibrary +encrypt() +decrypt() CodeIgniter Libraries Web services modul UserAuthLibrary Authentication «uses» Controller CI_Base -instance +CI_Base() +get_instance() +index() +login() +logout() +registration() -_ci_scaffolding -_ci_scaff_table +Controller() +_ci_initialize() +_ci_scaffolding() +set_table() +set_identity() +set_credential() +authenticate() +is_valid() +has_identity() Admin modul ACLLibrary «uses» Accounts_model MOB_Controller Admin «uses» +init() +add_role() +add_resource() +allow() +is_allowed() +index() +add_user() +edit_user() +delete_user() +list() Initiator modul Observation modul ObservationEvents_model «uses» Initiator Observations_model +create_ob() +ignore_ob() +read_ob() «uses» Observer +index() +create_oe() +edit_oe() +start_oe() +stop_oe() +list() +index() +make_ob() +list() +create_account() +get_accounts() +get_by_username() +get_type() +update_account() +update_password() +delete_account() «uses» +create_oe() +get_oe() +update_oe() +start_oe() +stop_oe() InterfaceComponents_model +add_checkbox() +add_image_capture() +add_voice_recording() +add_writen_node() +get_oe_components() +get_component_types() Figure 8.2 Web application architecture When we were planning the architecture of web application our aim was to have web application that is easy to maintain, reusable, modular, scalable and extensible. Choosing MVC [7] architectural pattern seemed a perfect fit to fulfill our needs for web application. 8.2 Mobile application architecture Like with web application, when we were planning the architecture of mobile application our main goal was to create application that is easy to maintain, modular and extensible. Because of that we have decided to exploit MVC architectural pattern but because of complex nature of mobile application we have added a few more modules to the MVC pattern. Figure 8.3 shows architecture of mobile application. 12 Figure 8.3 Mobile application architecture Using model showed in figure 8.3 we have mobile application that is cleaner, easier to maintain and more modular. Each module will be described in more details in the next chapter. 8.3 Communication between web and mobile application Establishing a good communication between web application and mobile application was necessary for MOb to work properly. To achieve that goal REST based web services[8] were used. To make it easier and less time consuming to implement we decided to use JSON data format[9] instead of XML data format[10]. Integrated JSON support in Android SDK and PHP[11] also helped in making a decision to use JSON data format. Figure 8.4 Communication between web and mobile application 13 In the time of writing this report, security feature is being implemented. 9 Implementation The final application was realized as two separate applications, web application and mobile application. Those two applications are communicating using web services thus forming logically closed system. 9.1 Web application implementation We have decided to use object oriented approach and PHP to implement web application. To make web application cleaner and easier to maintain we decided to use open source Codeigniter PHP framework[12]. Web application is divided into separate modules: administrator module, initiator module, observer module, consumer module and authentication module. This way each team member was assigned one or two modules and because of that implementation process was faster and more efficient. To make web application modular, easier to maintain, reusable and scalable, MVC (ModelView-Controller) architectural pattern is adopted. Model represents data structures and provides functions for database data manipulation. View is presentation logic. It holds all the information that is shown to the users. Controller represents application logic. Controller joins model and view together and makes everything works exactly how we wanted. It is important for GUI to be user-friendly, simple and intuitive thus our goal was to make MOb web application GUI that way. Using XHTML[13] and CSS[14] we were able to make simple and intuitive and good looking user interface. Using JavaScript[15] and JQuerry[16] we enriched user interface and made it more user-friendly. 9.1.1 Technologies used for web application We have chosen open source PHP language for web application because all three web developers has experience in using PHP. This way we have minimized learning time for web development as much as possible. To make web development easier and application’s code cleaner and some of team members had experience in it, we have decided to use Codeigniter framework [4]. Those team members who didn’t have experience in Codeigniter framework didn’t have much trouble in learning it because it is very simple and efficient. For data representation in user web browser we have used XHTML and CSS. To enrich user interface we have used JavaScript. AJAX[17] is used for communication with web-server. 9.2 Mobile application implementation Because none of project team members had experience in mobile application development we approached very carefully to the process of choosing mobile application platform. In the process of choosing a mobile application platform we took in account: popularity of platform, ease of development, availability of the learning materials and development tools, testing capabilities and publishing possibilities. Two main choices were Android OS and iPhone OS. Due to better testing and publishing possibilities we have chosen Android OS to be our mobile application platform. Because mobile application developers had to invest additional hours in learning, mobile application development was a bit slower in the beginning but as time passed development speed and efficiency increased. As Android[18] is Java based, Java[19] is the main language of mobile application. XML is used to create GUI for mobile application because using XML for GUI is less time consuming and GUI implementation is separated from application logic. Mobile application is developed using Eclipse[20] development tool with Android SDK. 14 Because Android OS is forward compatible but in some cases is not backward compatible, we decided to develop mobile application for Android OS version 1.5. This way every user with versions 1.5 or higher won’t have any troubles running application on its mobile device. If we decided to develop mobile application for version 2.2 some users with lower versions of OS could have troubles in running application. 10 Verification and Validation The delivered MOb product is verified and validated to meet all the requirements outlined in the requirement definition document. Unit test cases are designed separately for the mobile android standalone application, mobile web application and web application. Integration test cases are designed to test the end-to-end scenarios. And performance test are also included to verify some of the non-functional requirements. Verification and Validation are executed based on the acceptance test plan. And after all test cases are executed, a test report is summarized to show the quality of our MOb product. Following test approaches are used in test execution: • Unit test. Developers are responsible for unit test as white-box testing. The implementation of each module and individual component are verified separately. Unit tests have been used in mobile application to test correctness of user interface. There were eleven unit tests, one unit test for each mobile application screen. • Integration test. After the unit test is passed above the defined quality threshold, testers execute the integration test cases. After all the modules are integrated, it’s crucial to test the product as a black-box. End-to-end scenarios are executed to ensure the communication functionality. 100 integration tests were made. Table 10.1 shows integration testing statistics. Object Case Number Pass Fail Web Application 62 55 7 Mobile Android Application 20 20 0 Mobile Web Application 18 18 0 Total 100 93 7 Table 10.1 Integration testing statistics • Regression test. After developers fix the bug in one feature, regression test are executed by testers to ensure that the other functions are not affected. There were eleven regression tests. • Field test. Firstly, untrained end users recreate one or more existing (but narrow) mass observation events in the MOb system. A number of observers are invited to help with evaluation. After that, post event questionnaires are created by MOb application itself to collect quantitative usage data as well as qualitative data. Based on these comments, further improvement is taken into consideration, such as user friendly, reaction speed and so on. • Positive and negative testing design technique. This approach is combined with unit test and integration test. Test cases are designed in sunny day scenarios, which ensure that all 15 functional requirements are satisfied. What’s more, rainy day test cases are also covered to show how the system reacts with invalid operations. A case matrix is created on Google docs for communication between developers and testers. All the requirements are covered by one or more cases with the marks. Failure cases are documented and followed up by TR as Trouble Report. 11 Outcomes and Lessons learned 11.1 Outcomes MOb requirements were to make system that will support the study of a question or issue through insitu observations by a collection of people. MOb required three different user types. First, there is the initiator that will provide a question or an issue in the way of the observation event. Then there are: the observers that will gather information and the consumers that will analyze gathered data and make some conclusions about the question. MOb also required that system must consist of web and mobile application. After more then 15000 lines of code has been written in over 300 commits and over 3500 file changes on the SVN server, the MOb system has been created. MOb is divided into two main applications: web application and mobile application. As the mobile application is developed only for Android operating system, potential observers are limited only to the Android operating system mobile phones users. To overcome that limitation we have created a separate module for web application – mobile web application for observers. This module ensures that there are no limitations to the potential observers, because any user with mobile phone which can access the Internet can become an observer. But Android users have advantage of stand-alone mobile application which doesn’t need constant internet access. We wanted to create the unique user interface for our web application, one that would be simple and intuitive. That is why we have designed our own unique design not using any available templates. Web design is shown on the figure 11.1. Figure 11.1 MOb web application 16 Figure 11.2 MOb mobile web application Figure 11.3 MOb Android mobile application Web application and link for mobile application, as well as the tutorial on how to download and install mobile application can be found at http://161.53.67.212. As this isn’t only a SCORE project but also a part of a university course “Distributed Software Development”, we had to submit complex and detailed documentation. Project documents created in the process are: Project plan document, Requirements Definition document, Acceptance test plan, Test report document, Week reports and Summary week reports every week, various project policies. 11.2 Implemented functionalities Using the web application, the initiator creates a new observation event. Every observation event can have multiple observation interfaces, but also multiple interfaces of the same type. Initiator can choose between: written notes, radio poll, checkbox poll, image capture, video capture and voice capture interface. Interface selection process is shown in figure 11.4. After the selection of the observation interfaces, the initiator selects groups of observers and consumers that will participate in the observation event. The initiator can also create new groups in which observers and consumers can join. 11.4 Web application - selection of observation interfaces 17 Observer is using mobile application to gather observations. The observer can download Observation event with all its observation interfaces is shown on mobile application. After the observations have been captured, the observer can upload those observations to the web application where they are instantly shown and ready to analyze in the consumer module. The consumers can view and analyze all the collected data using consumer module in web application. Figure 11.5 Mobile application image interface Figure 11.6 Mobile application checkbox poll interface Figure 11.7 Mobile application video interface 11.3 Users respond to MOb In first few days after we introduced MOb to the public we made over 20 new users. We made two initial observation events. The first one is for users to tell their opinion of MOb and to submit bugs. The second one is to make observations about traffic in their cities by taking images, videos or audio recordings about traffic and also to tell us their opinion about it. Users have made over 60 observations for these two events. Figures 11.8 and 11.9 shows some images and poll answers that users have sent for “Traffic in your city” observation event. We are very proud that we could see our project at work with real users and we are sure that in days to come we will have even more users and also some new interesting observation events and observations made by them. Figure 11.8 "Traffic in your city" image interface Figure 11.9 "Traffic in your city" poll interface 18 11.4 Lessons learned One of the most important outcomes of this project is the great experience we have gathered. At the beginning of the project the whole idea about working with unknown people, on unknown and difficult project, using new technologies was a little bit frightening for us. After the first impressions faded we have realized that this project carries great possibilities and opportunities. At the beginning of the project the biggest challenge was the communication barrier, but that challenge was overridden by creating friendly environment between team members. We all consider ourselves a good friends as well as team members. Sometimes communication misunderstandings even lead to funny situations. After the communication barrier was overridden we faced another problem. To work efficiently in distributed environment we needed to have some mechanism that will help us track the work of all team members. Without that we couldn’t plan our activities and tasks. We solved this problem by having two fixed weekly meetings, one being on Monday and second on Friday. We have learned that working in distributed environment is very difficult and carries a lot of potential problems. But we have also learned that many of the problems can be avoided if a good project plan is made at the beginning and of course and if there is mutual respect among team members. Experience which we have gathered in project management is very important for us, soon-to-be professional software engineers. Besides experience in distributed work and project management we have also learned to work with new technologies. Some of the things we have learned: Mobile application development for Android operating system Connecting web and mobile application CSS and HTML for creating unique web page designs Using Google maps 12 Summary Six students from four different countries were involved in MOb project and despite the short time at hand (14 weeks, a little less than one university semester), various challenges because of distributed environment and little experience in project management we managed to create working system with lots of functionalities and unique design. This project wouldn’t be successful if we haven’t created friendly but also hard working environment in which we have worked. The final project result, MOb, provides a way to make in-field observations about some issue or problem by a large collection of people. MOb can find uses in various areas ranging from scientific researches to private questions and issues. Because of that we are sure that MOb will be used worldwide by various groups of people. We have worked hard to achieve this final product. We have faced a lot of challenges and problems, but good moments also. This whole project was great experience for us. We have learned new technologies, how to work in distributed environment and gained great experience in project management. Despite all the problems and challenges we have faced during this project we can say that, if we could, we would gladly repeat this experience. 19 13 References [1] MOb Project Description - http://score-contest.org/2011/projects/Fickas.MOb.pdf (20.09.2010) [2] SCORE Instructions - http://score-contest.org/2011/docs/report_guidelines.pdf (10.12.2010) [3] Android Developers - http://developer.android.com/ (20.09.2010) [4] Codeigniter home page - http://codeigniter.com/ (20.09.2010) [5] Requirement definition document, created: 8.10.2010 http://www.fer.hr/rasip/dsd/projects/mass_observation/documents [6] Opera mini homepage - http://www.opera.com/mobile/ (9.1.2011) [7] MVC pattern - http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller (9.1.2011) [8] REST web services - http://en.wikipedia.org/wiki/Representational_State_Transfer (9.1.2011) [9] JSON - http://www.json.org/ (9.1.2011) [10] XML - http://en.wikipedia.org/wiki/XML (9.1.2011) [11] PHP - http://www.php.net/ (9.1.2011) [12] PHP CodeIgniter framework - http://codeigniter.com/ (9.1.2011) [13] XHTML – http://en.wikipedia.org/wiki/XHTML (9.1.2011) [14] CSS - http://en.wikipedia.org/wiki/Cascading_Style_Sheets (9.1.2011) [15] JavaScript – http://javascript.internet.com/ (9.1.2011) [16] JQuerry - http://jquery.com/ (9.1.2011) [17] AJAX - http://en.wikipedia.org/wiki/Ajax_(programming) (9.1.2011) [18] Android - http://www.android.com/ (9.1.2011) [19] Java programming language - http://en.wikipedia.org/wiki/Java_(programming_language) (9.1.2011) [20] Eclipse development tool - http://www.eclipse.org/eclipse/development/ (9.1.2011) 20