# Comparison of Multi-Agent Platform Usability for Industrial-Grade Applications
## 5 AOSE in Contrast to Modern SDLC
### Adherence to Modern Code Standards
Although source code details may not always impact the framework's usage, they become problematic whenever the original code does not work as intended (as discussed further in Section 5.5). In such cases, with a low level of readability of the source code and high process complexity, identifying problems and reporting them becomes extremely challenging. In this regard, the ambiguous naming occurring in JADE is yet another factor leading to potential errors. For example, _ParallelBehaviour_ in JADE is not actually \"parallel\" in the sense of multi-threading; it simply selects the underlying behaviours in a round-robin fashion. Lastly, as the platform's authors have mentioned in one of the forums, JADE does not allow access to the agent constructed within the agent container. The reason for this is to minimise developer impact on the agent, which, by nature, is autonomous. While this approach works well for development, it limits the possibilities for testing, as described in detail in Section 5.6. In contrast to JADE, Jadex offers more modern constructs for agent implementation. Although it also faces the problem of conceptual complexity in agent paradigms, through configurable annotations, it provides a facade that simplifies the definition of agents and their reasoning processes. Moreover, compared with JADE, it exhibits a greater level of modularity with significantly more concise classes, reaching up to 1000 lines of Java code. However, the overall architecture of the source project is so complex that code inspection tools are insufficient to capture all the sub-modules simultaneously. Separately, the essential issue of Jadex, which raises the question of whether Jadex-V is production-ready, is the number of commented-out lines in the code. In particular, there are multiple classes where the number of lines of code left commented-out is greater than the number of lines of actual operational code (e.g., class _BDIAgentFeature_ has 264 lines of Java code with 960 lines of comments). Moreover, there is a substantial amount of \"TODO\" comments, with notes indicating potential bugs or parts of functionalities that are yet to be implemented. In the eyes of potential (outside) developers, this seriously decreases the perceived reliability of the framework's application. Additionally, Jadex depends on its own constructs instead of using libraries that are commonly applicable in the industry. For instance, it provides its own implementations of complex collections (e.g., _MultiCollection_, allowing the storage of multiple values under the same key) instead of using libraries such as Apache Commons Collections (e.g., where _MultiValuedMap_ does the same thing as _MultiCollection_). On the one hand, this can be seen as an advantage, as Jadex reduces the size of its artifacts through \begin{table}
\begin{tabular}{l p{284.5 pt}} \hline \hline
**Platform Name** & **Standard of the Platform’s Code** \\ \hline \multirow{4}{*}{_JADE_} & Provides advanced built-in abstracts supporting concepts of FIPA standards but uses strictly agent-related terminology. It does not follow commonly used patterns and has ambiguous naming, contradicting the code implementation. Following the principle of autonomy of the agents restricts accessibility to some functions. \\  & Provides agent concepts through Java annotations and offers constructs for agent reasoning. The source code contains many commented-out functionalities, methods marked for fixing, and indicated workarounds. The platform does not reuse commonly applicable libraries for specific software constructs (e.g., collections) and instead implements its own versions. \\  & Contains a much narrower scope of base functionalities than JADE and Jadex. The source code adheres to coding standards and includes typing of methods and variables. However, there are known issues of optimisation, indicating inefficient implementation of certain mechanisms. \\ \hline \hline \end{tabular}
\end{table} 
Table 3: Adherence to modern code standards in JADE, Jadex, and SPADE.