Project Specific Research

Platform


There are a number of different platforms that we could host our application on, for example we could create a mobile application or a website. The client decided that this decision would be down to us and so we researched into both in order to help make a decision.

The development of a mobile app would require knowledge of development for specific operating systems such as iOS, Android and Windows 10 Mobile. We would then have to decide whether to create a cross-platform application or one for a single operating system. For the problem we are required to solve, a cross-platform app would be most useful and therefore we would have to look into technologies for this. Furthermore, a mobile app would require our end users to install the app directly onto their device which could reduce the number of people using the app.

The development of a web app would require knowledge of web development frameworks such as bootstrap, and languages such as HTML, CSS and JavaScript. Creating a web app would mean we wouldn’t need to worry about different operating systems and would greatly increase the number of people our application would be available to. It also meant that whilst the app could be used on a desktop, if created to be mobile friendly, it could also be used on mobile.

We summarised our findings in order to come to a decision:

Platform Prior Experience Reachability Decision
Mobile App Minimal Specific mobile operating systems Will not use
Web App Good All operating systems Will use

We had decided that our application would be a website. We thought that this would be a better solution to something like a mobile app as we were more confident with building web apps and integrating databases with them. It would also be more accessible to the client as we can easily host a website and make sure it is compatible on a number of different platforms.

Frameworks & Tools


Now that we had decided to build a web app, we had to decide on any Frameworks and Tools that we would use. There are a number of options we could use for tools and frameworks to assist us in development of the application.

For example, if we chose PHP - a language we are familiar with, and which is already used for the core OpenEyes system - we could use the PHPStorm Integrated Development Environment (IDE) by JetBrains. This would be a familiar working environment as some members of the team have already used it, and it is similar in functionality and use to the IntelliJ Java IDE. However, PHP is a language which may have many undesirable complications such as security vulnerabilities caused both by the language itself and by how easy it is to write bad code using it.

Another option is known as Ruby, or more specifically Ruby on Rails - a language with a clear interface and plenty of resources with which to learn about, and which has widespread use, but which we do not have any pre-existing knowledge or understanding of. This, too, has a JetBrains-produced IDE named RubyMine, which gets around the issue of having to learn a new development environment interface.

An additional choice would be Grails - built on a foundation of Groovy (which itself was born out of Java), it follows similar design principles to Ruby, placing emphasis on sensible defaults that only need to be modified for unconventional sections of the application, taking the work out of web developers' hands. This can be written and tested in IntelliJ directly, reducing the amount of software we need to download to develop this project.

During research, we spoke with our client who suggested that we not use PHP because of his historical experience with the language being negative. This was initially a concern because PHP has the advantage of being fairly simple to write, but as research went on it became clear that it was difficult to write PHP code without bugs or exploits, justifying his point of view.

We therefore summarised our findings in order to make our decision:

Platform Prior Experience Comments Decision
Ruby on Rails None Clear interface, plenty of resources available Will use
PHP Good All operating systems Will not use
Grails None Similar to rails, takes work out of web developers' hands Will not use

Once we had decided on using Ruby, we had to choose any other frameworks we would be using for the development of our application. For example, we could use Bootstrap in order to easily add styling to our web app, making it look professional and easy to use. We could also use things such as Sass and Materialize and so we researched each of the different frameworks and summarised them in the table below before making our final decision.

Framework Prior Experience Comments Decision
Bootstrap Very Good Good documentation available, easy to integrate with Rails Will use
Sass None Good documentation, not as much as bootstrap Will not use
Materialize None Similar to Bootstrap, but relatively new so not as much documentation Will not use

We had therefore decided to use Bootstrap to add styling to our rails application and were therefore ready to start the development stage, starting with some experimentation.