Enhancement and Standardization of the Software Development Process in an NLP focused Company
Tutor / Supervisor
Student
Bonnín Soler, Jan
Document type
Bachelor thesis
Date
2022
rights
Open Access
Publisher
Universitat Politècnica de Catalunya
UPCommons
Abstract
This thesis consists of the standardization and improvement of the development process in a software company. In the thesis, we lay the groundwork for the full implementation of the CI/CD pipeline (Continuous Integration, Continuous Deployment and Continuous Delivery) across the entire company. We focus our attention on the realms of version control, cloud infras- tructure architecture and the automation of its management, and the creation of a knowledge base. The company in question specializes in NLP (Natural Language Processing) solutions. They offer end-to-end development of web-apps powered by their proprietary AI-based pro- cessing motor. The demand for such solutions has exploded in the recent months and has sub- stantially outgrown their capacity to serve it. That is why the company needs to improve the speed and efficiency at which they can develop solutions for their clients. Everything, while maintaining quality and profitability. From the company perspective, this requires a re-design of most components of the soft- ware development process. That is where the overhaul of the version control system, cloud infrastructure management and the knowledge base come in. For the version control system (VCS), we design a new workflow that is more robust, re- liable and efficient. Furthermore, it is designed to accommodate future implementations of CI/CD. For the cloud infrastructure, we study the different types of cloud infrastructure and services the company uses. We then define a standard architecture for all projects within the company. And finish by automating the provisioning and destruction of said infrastructure with the use of an IaC (Infrastructure as Code) tool called Terraform (by HashiCorp) and its programming language HCL (HashiCorp Configuration Language). For the knowledge base, we design and develop a wiki to store the company's critical technical knowledge, together with a process for the creation of said knowledge. We finalize the thesis with an economic analysis of our work. Summarizing, the project costed 6325€ to develop, and is expected to generate 8640 € per year, with an expected lifetime of 3 years. The project has an expected ROI of 410%, and a NPV of 21.486€, which consolidates a payback period of 270 days. Income generated is thanks to the time saved through the au- tomation of provisioning of infrastructure, which used to be a manual and lengthy task. We have managed to accelerate the task from 36 hours down to 4 hours. The initial goal is successfully achieved: the development process has been improved in a quantifiable way. At the time of writing, the company has already implemented the work in this thesis. And they consider that the investment in the financing of this project has already started to pay off. While this thesis uses a company that specializes in NLP solutions, any company that does software development can improve their development process using our work as reference.
