Outlining the necessary research processes taken to gain a better understanding of how the system is to be implemented as well as beginning to gather basic information on how the overall system will work together.
Our project was to develop a virtual assistant service for elderly users as part of IBM FISE v2 Concierge. This service will be available in the form of an app which utilises speech as its primary mode of interaction and should help users in their daily lives. The app should support a range of features, implemented using RESTFUL APIs.
Alongside the app, we would also need an Admin website which will be used by the elderly user's loved ones. The website is used to set up an elderly user’s app, enable access to specific features of the app and view logs containing details about the elderly user’s interactions with the app.
Finally, we would also need a backend to support both the app and the website. This backend would be responsible for data storage.
To summarise, we spent time researching the following areas:
Part of our research involved finding products similar to ours to see if we could learn anything from them that may aid us in development. We found two similar products, Dalia and Alfred.
Dalia is a virtual assistant specifically for the elderly serving a remarkably similar purpose as our intended solution. However, it seems development has ceased (no updates to their app or website since 2016) and it appears to focus on the (tracking of) physical health of its users. We aim to provide a more general solution.
Like Dalia, Alfred is another virtual assistant for the elderly. However, it again seems to be focused on the physical health of the user, mainly trying to get them to be more active through games and exercises. Additionally, it also seems that development has stopped, and the project is inactive at the time of writing.
Unfortunately, we were not able to learn much from these products due to both of them currently being inactive and incomplete.
Before we could begin production on the app, we would have to evaluate what platforms we would like to develop the app for and what framework and language we would utilise. There are two leading mobile operating systems we had to consider, iOS (Apple) and Android (Google). As such, we researched and considered three possible frameworks.
NativeScript is a relatively new framework, released in 2014, for the development of apps for iOS and Android. NativeScript apps are developed using JavaScript or any other programming language that translates to JavaScript (e.g. Vue and Angular).
NativeScript would provide the following advantages if we were to develop with it:
However, there were also fundamental disadvantages with NativeScript:
Java is an object-oriented programming language. It can be used to develop apps for Googles Android OS. Android Studio is the official IDE created by Google for developing apps for Android and released in 2014 as a replacement to the previous Android Development tool. It is designed specifically for the creation of Android apps and provides many useful tools to aid in development.
Android Studio would provide the following advantages if we were to develop with it:
However, there were also disadvantages with Java & Android Studio:
Swift is a general-purpose compiled programming language developed by Apple and released in 2014. It was designed to replace Objective C, previously been used by Apple for all its products. It is included in Xcode - Apple's official IDE for developing apps for all their platforms but in this case, we are interested in its uses for iOS development.
Swift would provide the following advantages if we were to develop with it:
However, there were also fundamental disadvantages with Swift:
For this project, we selected to utilise Java as our development language and therefore develop only for Android. While we initially considered NativeScript, its dependency on Xcode for its development environment eliminated it as not all of us utilise MacBooks for development those without would be unable to run their code. We also asked the client on their opinions about this decision who did not object to it.
As mentioned above the Admin website will be used by elderly users loved ones to register users, provide selective access to the apps features and view activity logs.
To create this website, we considered two possible frameworks: Vue.js and React. The reason we focused on these two frameworks was that they both utilise the concept of the Virtual DOM (Document Object Model). The Virtual DOM is an abstraction of the HTML DOM which is a tree structure of nodes which are HTML elements. When creating interactive websites with the standard HTML DOM, this would result in having to re-render the entire page when an HTML element changes. The advantage of utilising a Virtual DOM is that only the objects that change would need to be re-rendered; this saves time and (processing) resources and is especially useful on more interactive websites (such as ours) which need to update frequently.
Vue.js is a JavaScript framework designed for building user interfaces. It was created in 2014 and aimed to extract parts of AngularJS to make a more lightweight framework. It is available to use and develop with under an open-source license.
Were we to develop the admin website using Vue.js it would provide the following benefits:
However, there were also disadvantages with Vue:
React is a JavaScript framework also designed for building user interfaces. Created by Facebook to serve their specific needs, it is also available to everyone under an open-source license.
Were we to develop the admin website using React it would provide the following benefits:
However, there were also disadvantages with React:
For this component of the project, we elected to utilise Vue.js. The main reasoning behind this was that it was easy to learn and develop with while still being able to produce high-quality results. We valued this highly as our project has many components that need to be built and given our strict time constraints, a faster development period would ensure our ability to implement all system components.
We also require a backend to support the app and admin website. This backend will be responsible for storing and manipulating data generated by the users and relaying back where appropriate.
The backend will also be responsible for placing appropriate API calls from the application and then relaying the relevant information. For our backend, we considered two potential languages to code with Python and Java.
These are the languages we considered as they are the most popular backend development languages, and, we all had prior experience with them.
Python is an interpreted general-purpose programming language. Released in 1991 and continuously developed since Python is supported by a wide range of devices. Python has a very straight forward and easy to understand syntax that can be very flexible and used for a variety of purposes.
If we were to use Python to develop our backend, it would offer the following advantages:
However, there were also fundamental disadvantages with Python:
Java is a compiled object-oriented programming language. Released in 1995 and, like Python, has been continuously developed since. Java can run on most machines due to its use of the JVM, giving it superior platform independence. Java syntax is not as simple as Python's - this is a non-issue as we all have prior experience with Java.
If we were to use Java to develop our backend, it would provide the following advantages:
However, there were also disadvantages with Java :
For the backend of our project, we decided to utilise Java. This is because of the two options we believe that the advantages Java offered outweighed those offered by Python. For starters, speed is important as long load times can have a large negative affect on the usability of both our app and our admin website. Secondly, we are all familiar with Java and as such our rate production of code is unlikely to be greatly affected even though Python is the syntactically easier language to use. Finally, in this context we value the decreased memory consumption of Java as the backend is intended to be run locally and as such it should be resource light so that it can be more accessible.
One of the highlights of our system will be the voice assistant within the Concierge App. This voice assistant will utilise natural language processing to decode a user’s command such that users will have an increased amount of freedom of expression.
When it comes to natural language processing, Python is the go-to language due to its expensive array of libraries, especially with regards to machine learning. For our NLP library of choice, we considered two options: Spacy and RASA.
Spacy is an advanced natural language processing library focused on creating NLP algorithms which are for production usage. Spacy utilises convolutional neural network models that allow it to perform speech tagging, tokenizing and named entity recognition
If we were to use Spacy to develop our voice assistant, it would offer the following advantages:
However, there were also certain disadvantages with using Spacy:
Rasa is a natural language processing framework designed specifically for building contextual voice assistants. Rasa builds upon Spacy and abstracts some of the complexities of machine learning. It provides many of the same features as Spacy such as name entity recognition or tokenizing.
If we were to use Rasa to develop our backend, it would provide the following advantages:
However, there are also disadvantages with Rasa:
For our app's voice assistant, we elected to utilise Spacy. The main factor behind this decision was speed. As mentioned above speed plays an important part in the system as it can drastically impact usability and lower the standard of a users experience. While speed was the main factor considered in this decision, Spacy's increased flexibility was also considered as it would give us greater customisation over the voice assistant and its capabilities.
Below is the full index of services we plan to include in the app, supported with natural language processing.
AAL Programme. 2021. DALIA - AAL Programme. [online] Available at:
Alfred.eu. 2021. ALFRED | Interactive Assistant for Independent Living and Active Ageing. [online] Available at:
NativeScript.org. 2021. Native mobile apps with Angular, Vue.js, TypeScript, JavaScript - NativeScript. [online] Available at:
Android Studio Docs. 2021. [online] Available at:
Developer.apple.com. 2021. Swift - Apple Developer. [online] Available at:
Vuejs.org. 2021. Vue.js. [online] Available at:
Reactjs.org. 2021. React – A JavaScript library for building user interfaces. [online] Available at:
Spacy. 2021. [online] Available at:
Rasa. 2021. Open source conversational AI. [online] Available at: