On our blog, we regularly lift the veil on how we organize our work and our interaction with customers in order to implement our “happy-happy” strategy which is our own understanding of the well-known “win-win” concept. In this article, we’d like to tell you more about how we deal with legacy system modernization projects and what is so special about our approach to them.
This article was prepared by Sergey Khatskevich, Senior developer at Softacom, who knows everything about our values and principles of work. Sergey has been successfully working in the software development industry for more than 11 years and has contributed to the realization of 21 projects which helped him to gain exclusive expertise in various business domains.
Model-Driven Engineering process
Though at Softacom, we work with different types of projects, software modernization is one of the aspects that we focus on and we have really impressive experience in it. What do we rely on for such projects? Over the years of work, our team managed to successfully integrate the power of traditional software development approaches, model-driven engineering, and the best DevOps practices. We have our own Internal Development Platform powered by codebots that help us to speed up all the processes and better adjust them to the needs and expectations of stakeholders.
The main peculiarity is the possibility for all stakeholders to get access to a concurrent model. They can observe what is happening with the solution in real-time. We strongly believe that this model can not only boost collaboration on the project but also help to enhance quality control and achieve significantly better results.
Here is how the Model-Driven Engineering process is organized.
Step 1. Creation of models
First of all, technical experts have the task of designing initial app models and introducing meta-models. It is very important to highlight that all stakeholders will be able to collaborate on these models.
Then, codebots will process the models and as a result of their work, the target app artefacts will be generated. Meanwhile, during the processing, compiling app data will be updated.
Step 2. CI/CD
The contribution of codebots is introduced to Git just like in the case of traditional development. At the same time, automated tests are run to check the performance, security, and reliability of the previously created models. For us, it is crucial to make sure that the apps that we work on function seamlessly and can meet the highest industry and organization standards.
While codebots are performing their tasks, the technical team is also continuing its work following the principles of traditional software development, using their local dev environments and existing tools.
Step 3. Work on the target app
The bot used on the platform for streamlining the development process is always set up in accordance with the client’s preferences regarding the tech stack that should be applied for building client-side and server-side logic.
Step 4. Q&A and acceptance
Now the solution should be released in a beta environment which is done automatically. We usually work with cloud environments but if a customer prefers to use an on-premises platform, we also can do it.
The Product owners need to perform user acceptance testing. If the model doesn’t satisfy the set requirements, it is possible to introduce updates till the moment, it is accepted.
Step 5. Production release
At this step, our work doesn’t have any specificity. As soon as all stakeholders agree that the solution meets their requirements, it can be released.
Step 6. Operation and monitoring
After the solution has been implemented, there is still a lot of work to be done. Technical experts need to track the performance of the app, monitor how it is used, and check whether it is protected well enough.
As for the project stakeholders, they have the possibility to offer ideas for product improvements that will help them optimize their business processes and increase the efficiency of the software.
In our work, we always follow the principles of transparency, visibility, and collaboration. For us, it is important to become not just a contractor but a reliable partner for our customers that’s why we do our best to build an open dialogue with them. It helps us to understand their needs more deeply and to be able to offer them really valuable solutions that will demonstrate the highest efficiency in addressing their business needs.