Friday, 13 May 2016

1.6 Second Iteration

For iteration two:

  • Identify a new core functionality of my system.
  • Present a live demonstration of this functionality.

Risks:

There are no real impeding risks in this iteration. The main "risk" would be time. As I am under a deadline for this iteration, I need to make sure that I do not make the same mistake in iteration one in regard to the back-end. This new back-end needs to by maintainable and more importable, compatible.

My core functionality, like initial iteration was to establish a back end. I decided that I would also set up my basic architecture of my project and have all suitable components communicate between one another.

After the first iteration, I learned that my initial resource for storing data in the system was not universally compatible with the majority of the technologies that I had intended to use in my project. This was a risk that I had noted in my first iteration. Therefore, I went back to the drawing board, and my drawing board I mean Google. I began to research other technologies that would suit my needs. The two technologies that I seemed to encounter over and over again were Asp.net and AMP (Apache server, MySQL, PHP). In section 1.5, I discussed the pros and cons of both technologies. However, I decided to adopt Asp.net to manage and set up my new back-end.

 Using a "Code First" approach, I set up my Db-context class. This class is used to model and generate real database tables in my back-end. Using Entity Framework along with asp.net, the two technologies are able to generate actual SQL tables in my SQL database which is hosted on Azure. For this iteration, I created a single "Employee" table. The table contained basic attributes of an employee.

Furthermore, I also configured a basic REST service using Asp.net. The purpose of this service is to allow the Android application to make GET calls to the service and retrieve data that it use in the application. Using a REST GET call, the service would return a list of employees in the database formatted in JSON. The service was then hosted with Azure, allowing the service to be accessed over the internet and not longer running on a localhost.

The next step was figuring out how my basic android application could make one of these API calls to my service. After some extensive research, I discovered that Google had developed a framework that allowed android applications to make API calls easier to implement. This framework is called Volley. Using this framework, I was able to make a basic GET request to my service, store that response in a String value, and then set it into a textview in android.



Pretty cool huh?

After meeting up with my supervisor, I presented a small demonstration. It was all very successful but more importantly, it helped identify what needed to take place in iteration three.

References:

http://developer.android.com/training/volley/simple.html


Thursday, 14 April 2016

1.5 New Technology Justification (AMP vs Asp.net, Azure, Sql Server)

So in my panic after the first iteration, I jumped into Google and began researching which back-end approach would be best for my project.

For AMP, the fact that it is all open source seemed very appealing. There is also a large community that use this approach when creating a back-end, so it was very easy to find a forum or video of some description that would describe in detail how to set up such an architecture. However, what it came down to was a battle between PHP or Asp.net.

After researching, I decided to adopt Asp.net for the reason that it comes with an extensive library of tools to use along side a web application such as LINQ, Visual Studio along side a wide library of Frameworks such as Entity. Furthermore, Asp.net utilizes C#, a powerful OOP language that is compiled and not interpreted such as PHP.

References:

http://www.bayt.com/en/specialties/q/1427/what-are-the-advantages-of-using-asp-net-over-php/


1.4 First Iteration

For the first iteration I had to:

  • Decide what the core functionality is of the project.
  • Identify risks.
  • Why I am using the technologies I am using.
  • Design core fucntionality.
My core functionality for my project was is swapping a shift. Therefore, the first iteration towards developing my core functionality was establishing a back-end.

What I initially started to use was an online cloud service that provides back-end functionality for an application. This service is called Firebase. I successful connected to Firebase (after setting up and account), and designed a very basic app that could push and pull data from my android app. 

The only risks associated with Firebase was that it is a relatively new service provided by Google. Therefore the Firebase community is quite small and therefore there is a lack of online content for support and referencing. Furthermore, as it is relatively a new service, it may not be compatible with every technology out on the market or possible a core technology that I require in my project.

Iteration one Issues:

 As I began to dig a little deeper into Firebase, it became apparent that Firebase at its current development state, is not very established for other technologies other then android. This is where I began to run into issues. For my project, I need a website that acts as an entry point for my admin users to add "Roster" data to a database. However, with Firebase this is not possible as I am not able to connect my website (asp.net) to the Firebase database. As this project is under time constraints I did not think it was wise to invest more time trying to find an API that could incorporate my website with Firebase. Therefore, at the end of iteration one, I have decided to redesign my back-end. So AMP vs asp.net running on Azure using SQL Server?

Thursday, 3 March 2016

1.3 Technologies for App (Justification)

For my project, I plan to create my app in Java. The reason for this is that I will be using Android Studio to build my application which requires Java. Java is the industry standard for creating android apps.

For my project, I envision the HR client, updating the app through a web application. For the web application I intend to use ASP.NET technologies. After researching which languages are best to use for creating web applications, I was left with two possible candidates, PHP or ASP.NET framework. I stumbled upon an article written by a developer who describes the pros and cons for both technologies. For me, the selling factor for using ASP.NET was the fact that C# (the language used in .NET framework), supports multi-threading while PHP does not. A lot of performance gains can be made using multiple threads. Furthermore, Microsoft has already produced massive amounts of content about .NET framework and how to utilize it efficiently through tutorials and MSDN. For these reasons I feel that the ASP.NET framework will be more approperiate to use. However, for quick and fast prototypes, I will not exclude PHP completely as it is very good and producing quick web applications.


I also intend on creating a database that will contain fake data to represent the Penneys database. Until I physically connect to the Penneys database, I will create my own database. I intend to use the Firebase software. Firebase is a Google technology that always developers to use real time databases, servers and host websites for free. They also have SDKs specially built for Android Studios. Therefore, Firebase will be a very key and important tool that will help me create a mobile app and web app that is of industry standard.




Firebase:


1.2 Iteration 1 Identifying Functionality

As discussed in 1.1, I will be implementing a Agile Scrum methodology. As part of my first iteration I have to identify functionality and implement them using UML. I identified what I thought were the core functions of my app. Using a use case diagram, I was able to visually see what actors interacted with each use case (functionality) of the system. For visual representation clicks with me a alot more then representing functionality through documentation. Below is a image of the Use Case Diagram that I quickly through together to depict the functionality of my system and its relationship with the appropriate actors.
 The next of the sprint is to create quick draft use case narratives, activity diagrams and sequence diagrams for the functions of the system. I am currently in process of creating the sequence element of the UML. Once that is complete, the design phase of the sprint will be implemented!

Monday, 22 February 2016

1.1 Introduction

This blog is a record of all everything I do in relation to my final year project as part of my Higher Diploma in Computing in DIT. 

For my final year project I am creating an app. The apps motivation was inspired by my part time job. Currently, I work for Primark as a sales associate on the weekend (we all have to make a bit of cash). The weekly roster is placed on a wall every Thursday at 6pm in the form of an excel broadsheet. The Primark I work for is the head office Primark which is located in Mary st, Dublin (for those who did'nt know).

 If I had to guess I would say there are approximately 250 floor staff in total. Assuming you can put 25 names on a broadsheet, that's 10 excel sheets of names! Before we rant on about the paper it wastes, the system is difficult just trying to find your name. The amount of people for come in for the wrong shift every week is crazy! And it happens so often that both HR or the floor managers are unable to do anything about the problem. Another issue that is a direct result of the current rostering system is shift swapping. In the confusion that already exists with the current system, adding an extra variable of swapping shifts contributes to even more problems for HR. Therefore my app intends to solves these issues.

After having my first meeting with my supervisor for my project, I have come back with even more functionality for my app. For sure I need to find out the data output of the Primark roster as once I have the data type, the rest should fall into place (I hope). I will adopt an agile work methodology for the project om order to mirror how industry conduct projects in the workplace. For my phase, I need to:


  1. Identify the core functionality of the system.
  2. Identify requirements for CF.
  3. Illustrate through UML.
  4. Implement
For this Friday I have to have stages 1-3 complete. I will update progress asap!