My reflection towards this module

It is a huge step to understand all the object-oriented programming theory. It is another to get some practical experience and to know how to apply it. I found it relatively challenging to know how to implement an object-oriented programming approach as it required a lot of practice. However, I really enjoyed the online store implementation system project. It demands patience, devotion and dedication. I have gained a tremendous amount of confidence by practising, testing, failing and trying over the code using Python and SQL together. I bypass my programming comfort zone by using a new way to program.

One of the observations I have made while studying is the object-oriented programming focus more on the data itself compared to procedural programming which is focusing more on the function design.

The UML design I have made for this project was not perfectly designed at the beginning. I had to make few logical modifications in order to implement it in a better way. Designing a project with no previous implementation experience made the experience even harder. I have used so many times online store to buy items on the internet. It did not look that complicated at first glance but there are so many things happening under the hood that the customer does not notice. I need to think about how to design an online store from scratch using the unified modelling language.

This activity for this unit involves me putting my object-oriented design skills into practice. My first attempt was to design a supermarket model. The purpose of this activity was to demonstrate my understanding of new concepts such as classes, inheritance, composition and how they are linked together.

Before designing the system using UML, it is important to establish all the requirements. There are 2 different kinds of requirements: functional and non-functional. Non-functional requirements define how the system should work and the functional ones represent what the system should do.

There is a checklist called FURPS that helps to determine if all of the requirements have been respected and validated. FURPS stands for Functionality, Usability, Reliability, Performance and Supportability. The functionality is the core of all the requests made by the customer. The usability represents all the requirements for the person who will use the system. Reliability is important to make an unfailing system. The performance will determine if the speed of the system, its scalability and resource consumption. Supportability is for the maintenance part.

After, I had to think about all the actors who contribute to the system and all their interactions. All the actors become a class with their own attributes and own methods. The easiest step was to find all the actors.

The next step was to elaborate on all the rational interactions between the actors. This is a critical step as the logic you will adopt will define how your system will work later. There are so many different UML diagrams. The ones I had to design were a class diagram, an Activity diagram and a state diagram.

After the design comes to the system implementation. This part of the assignment was quite hard as I have never done that before. Hopefully, I had some previous experience with python and SQL. I learnt SQL language before starting this master. However, in this module, I needed to elevate my basic SQL knowledge in order to use SQL with python.

After so many attempts’ failures and success, I have finally implemented the online store system. The system works perfectly. It is a really good feeling when you finally succeed. Throughout the object-oriented programming module, I have learnt many new concepts such as SQL and No-SQL databases, Normalisation, RDBMS (relational database management system) and Information System.

NoSQL means “not only SQL”. NoSQL databases use a different way to store, process and retrieve large unstructured data. They have a dynamic schema for document types. We do not have to explicitly define the form of our data before storing it. This kind of database uses hierarchical data storage. It is easily scalable horizontally in opposition to SQL databases that are only scalable vertically.

The amount of unstructured data generated daily by all connected devices is increasing constantly. This massive quantity of data is challenging the current RDMS. Big Data and its related products came to help in this matter, and the NoSQL databases arise with the purpose to offer better solutions and features to handle massive amounts of data with higher performance, sometimes near real-time. (Diogo, 2017)

“Data is the new oil. It’s valuable, but if unrefined it cannot really be used. It has to be changed into gas, plastic, chemicals, etc to create a valuable entity that drives profitable activity; so must data be broken down, analyzed for it to have value.” (Clive Humbly, 2006)

It is a fact that the Internet transformed profoundly the world around us, from revolutionizing the way industries work to human interactions and behaviours. Since then, an enormous amount of data was created and left with no use.

Every sector generates a huge amount of data, to use, analyse, store, … People working in those industries need to manage that quantity of information.

The role of an information system is to collect, store, organise and distribute data throughout the entire organisation. It takes the data and turn it into information, and then transform that into organisation knowledge. This role evolved into the backbone of the company. That is why it is imperative to train all the employees of a company using an information system. The information system does the same task repetitively and gets a constant result

The data is intangible. By themselves, pieces of data are not useful. However, aggregated, indexed and organised together in a database, data can become a powerful tool for businesses. Throughout time, many information system failures occurred. It happened essentially because we focus more on the technology part, forgetting the people involved in the implementation of the system and the users. People are an essential part of the system that must not be overlooked. By people, I mean all the employee from a company (bottom to the CEO), who needs to be prepared to use the system appropriately.

Here is the link to an example demonstrating an implementation system failure.