Realization of a SaaS Web application for the engineering and automation of management control phases of a company

In this work a Software as a Service (SaaS) web application has been studied, designed and implemented. The application has been commissioned by a costumer company and concerns the engineering and the automation of some management control phases of the company. The final aim of the application is to have a centralized system which allows the administrators to evaluate the financial health of the company and the collaborators, namely employees, to have a clear working plan. The required functionalities such as the management of orders, revenues, tasks and behavioral reports are common to any company. According to the role and its assigned privileges, the user can access to all or some of these functionalities. The application is therefore very general and can be shared by the means of subscriptions to more customers, exploiting in this way the multi-tenancy feature. Regarding the adopted technology, the application has been realized by using ASP.NET Zero, with Angular framework in frontend and ASP.NET Core framework in backend. Among the available technologies for the development of the application, ASP.NET Zero has been chosen because it simplifies the management of some features, such as the multi-tenancy, which is fundamental for a SaaS application. The application uses the relational database of Microsoft SQL Server in collaboration with the Entity Framework Core ORM, which provides entity-table mapping and database versioning through migrations. Finally, the application has been deployed on the Microsoft Azure cloud. The application has been developed adopting a Scrum implementation of the Agile software development methodology. Therefore, all the stages of the application development process, from the definition of the requirements, to the design of the application and its final implementation have been performed within small iterations in order to deliver a high-quality product. In particular the design of the application’s “data model” as well as the business requirements definition have been conducted understanding and following the customer's needs by arranging several and frequent meetings. Testing activities have been carried out following the Agile principles such as continuous testing. Features’ implementation and testing have been performed inside the same Scrum iteration. At the end of each iteration the application has been deployed in a pre-production environment in Microsoft Azure, where the customers and end-users could test it in detail. This helped to have a continuous feedback from the customers who could accept the features, allowing to deploy the application in a production environment. In this project, DevOps practices have been used as well, in order to improve communications between all the members of the development team, and to better organize the application development process, using Git as the source version control and GitLab as the instrument to create a clear working plan. In conclusion, a possible implementation of continuous integration and continuous delivery (CI/CD) DevOps using Gitlab CI/CD is presented.