# Comparison of Multi-Agent Platform Usability for Industrial-Grade Applications
## 4 Standards of Modern Software Development
As mentioned earlier, following TDD, some tests (e.g., unit tests or integration tests) can be written by developers alongside the implementation of features. On the other hand, acceptance and automated tests are often conducted by dedicated Quality Assurance (QA) testers. These tests are performed using dedicated technologies, such as Selenium for browser-based tests, JUnit ([[https://junit.org/](https://junit.org/)]([https://junit.org/](https://junit.org/)), Accessed on 29 September 2024) in Java, or unittest ([[https://docs.python.org/3/library/unittest.html](https://docs.python.org/3/library/unittest.html)]([https://docs.python.org/3/library/unittest.html](https://docs.python.org/3/library/unittest.html)), Accessed on 29 September 2024) in Python. It is important to note that several libraries, including those mentioned above, form part of the standard technological stack used by multiple companies. This means that the frameworks selected for software development must be compatible with these tools. Additionally, testing involves test coverage assessment, where companies specify a baseline that must be reached. Coverage is measured by frameworks like JaCoCo ([[https://www.jacoco.org/jacoco/](https://www.jacoco.org/jacoco/)]([https://www.jacoco.org/jacoco/](https://www.jacoco.org/jacoco/)), Accessed on 29 September 2024), which are often integrated with automation tools (e.g., Jenkins). After testing, the SDLC proceeds to the **Deployment** stage. It is important to note that major organisations often operate in multiple environments, dedicated separately to development (_Dev_), testing (_QA_), and production (_Prod_) use. This is yet another significant difference from the typical implementation of scientific software. During development, the latest versions of components are available in _Dev_. Pre-release testing is often conducted in the _QA_ environment, while products released to end-users are deployed to _Prod_. The purpose of this hierarchy is to prevent disruption of live products and to facilitate collaboration among multiple teams. Therefore, the deployment process may vary depending on the selected technologies (e.g., ArgoCD ([[https://argo-cd.readthedocs.io/en/stable/](https://argo-cd.readthedocs.io/en/stable/)]([https://argo-cd.readthedocs.io/en/stable/](https://argo-cd.readthedocs.io/en/stable/)), Accessed on 29 September 2024), Puppet ([[https://www.puppet.com](https://www.puppet.com)]([https://www.puppet.com](https://www.puppet.com)), Accessed on 29 September 2024)), and the targeted environment. Automation plays an essential role in this process, particularly in distributed systems, where pre-deployment configurations need to be distributed across multiple components. The final stage, but not the least important, is **Maintenance**. To maintain product continuity and align it with changing market demands, developers are responsible for continuously monitoring the software (e.g., using tools such as lcinga ([[https://icinga.com](https://icinga.com)]([https://icinga.com](https://icinga.com)), Accessed on 29 September 2024), Grafana ([[https://grafana.com](https://grafana.com)]([https://grafana.com](https://grafana.com)), Accessed on 29 September 2024), or Prometheus ([[https://prometheus.io/docs/introduction/overview/](https://prometheus.io/docs/introduction/overview/)]([https://prometheus.io/docs/introduction/overview/](https://prometheus.io/docs/introduction/overview/)), Accessed on 29 September 2024)) and providing necessary regular updates. This marks another contrast between research and industrial SDLC. In most research projects, after final software delivery, little attention is given to long-term maintenance (e.g., over a 10+ year perspective). In industrial-grade applications, such a short-term perspective is not feasible since end products deliver business value to the organisation. By analysing the standards of the modern software development life cycle, one can easily observe the differences between approaches used in research communities and enterprises.