Version Control and Development Languages

Version Control

We opted to use Git for our version control. This decision was made because Git is by
far the most widely-used and documented option.

We used SourceTree to manage our Git repositories. It has an extremely helpful
graphical user interface, and excellent GitFlow functionality.

Development Languages 

There were various options for programming languages that could be used in the
project such as ASP.NET, PHP and JAVA EE. Even though each framework is
well-developed and has a wide range objects and libraries, PHP was chosen. This is
because PHP easily integrates with HTML and CSS and it is easy to host. (DuBois,2015)
MySQL was chosen over an Oracle relational database management system because
it is open source and has a very good support.

Moreover, it was decided that the JSON format will be used to transmit the structured
data between the server and web application. It was decided that the UML will be used
to visualize and therefore understand better, the relationships between different
components of the system.

References:
DuBois, MB 2015, ‘Learning PHP, MySQL, JavaScript, CSS & HTML5: a step-by-step guide to creating dynamic Websites. 3rd ed’, Choice: Current Reviews For Academic Libraries, 52, 5, p. 845, Supplemental Index, EBSCOhost, viewed 29 April 2015.

Location Determining via SMS

Imagine two still not so unusual situations:

  1. Your friend on Small.World has our mobile app open and wants to contact you but has no Internet access for the time being. You may be in the same position.
  2. Your friend has the app open but no Internet access.  They want to know where you are at the moment. Luckily, you do have web connection and they have offline maps. But again, what about your exact location they need to know right now?

Well, Small.World has a solution for such cases: the good old Short Message Service (SMS) protocol. Sending text messages is built in Small.World (subject to network provider fees) so you don’t have to leave our app, go to your phonebook and find the right person in order to send a text. You just send straight from our app.Below we show how it works from the technical viewpoint:

SMS Scheme

SMS can also be used to share your location with someone who’s offline at the moment. In Small.World you can choose an option to share your location via text. This will send an SMS with geocoordinates to your friend. And those long decimal numbers will be automatically converted by Small.World into a map location.

SMS Map

References

  1. Brown, J., Shipman, B. & Vetter, R., 2007. SMS: The Short Message Service. Computer, 40(12).
  2. Jensen, K., 2011. How to Send Text Messages with PHP. Envato Pty Ltd. Available at: http://code.tutsplus.com/tutorials/how-to-send-text-messages-with-php–net-17693 [Accessed April 27, 2015].

REST API

As Small.World was designed to be relatively simple to integrate into other systems,
a method of communicating with the coordinator was required. A REST API was chosen for this as REST makes use of standard HTTP protocol for sending commands (via the message body)
and requesting information (Masse, 2011), allowing developers to work with a widely used and familiar protocol rather than one tailor made for Small.World. It was decided that commands themselves would be formatted as JavaScript Object Notation (JSON),chosen because it is lightweight and used in many other web services.

Jobs Functionality

The REST API can request a single job (specied by its ID). It can also request a collection of all jobs (or all job IDs) currently in the system (Maximilien  et al, 2007). The REST API can request a timestamp indicating the last time that any job was added or deleted(but not modified). There is also a method that returns a collection of all jobs which have been modified since a specified time.The REST API can also call a method to delete a single job, specified by its ID.

Agents Functionality

The REST API can request a single Agent by specifying its ID. It can also request a collection of all Agents currently in the database (not just the currently connected Agents). There is a method which returns a collection of all jobs currently assigned a specified Agent (on any of its cores). There is also a method which allows the REST API to manually delete an Agent from the system. This will force the Agent to disconnect(if it is currently connected), will unassign all of its currently allocated jobs, and will remove the Agent (and all of its cores) from the database. For a specific Agent, the REST API is able to request the number of jobs which are currently allocated to that Agent’s cores, and is able to request a collection including those jobs. It can also request a boolean indicating whether or not the Agent is currently online.

Languages Functionality

The REST API can request a collection of all languages currently supported by Small.World and its Agents. An assumption is made that all Agents support the same languages, since language support is determined by Small.World.

References:

Masse, M. (2011). REST API design rulebook. ” O’Reilly Media, Inc.”.

Maximilien, E. M., Wilkinson, H., Desai, N., & Tai, S. (2007). A domain-specific language for web apis and services mashups (pp. 13-26). Springer Berlin Heidelberg.