7.3 Conclusion

In essence, this thesis is a testament to the importance of CBSE, FLOSS, and LCSD to software engineering in the field of CSE and MNDS in particular. Overall, the three developed frameworks utilize a total of 19 LCSD-based libraries (Table 7.1), whereas several libraries are utilized more than once. This fact further underlines the benefit of decoupling implementations in general, as implementations can be reused in different contexts.







ViennaFEMViennaFVMViennaMeshSum





Boost ∙ ∙ ∙ 3





Netgen ∙ 1





Tetgen ∙ 1





Triangle ∙ 1





ViennaCL ∙ ∙ 2





ViennaGrid ∙ ∙ ∙ 3





ViennaMath ∙ ∙ 2





Sum 13





(a) Libraries





ViennaMiniViennaMOSViennaXSum





Boost        ∙                      ∙                                   ∙ 3





deal.II                                   ∘ 1





Qt                      ∙ 1





ViennaCL        ∙                      ∙ 2





ViennaFVM        ∙                      ∙ 2





ViennaGrid        ∙                      ∙ 2





ViennaMaterials        ∙                      ∙ 2





ViennaMath        ∙                      ∙ 2





ViennaMesh        ∙                      ∙ 2





ViennaMini                      ∙ 1





VTK                      ∙ 1





Sum 19





(b) Frameworks

Table 7.1: Alphabetical overview of relevant libraries (a) and frameworks (b) part of the Vienna* collection which utilize synergy effects by using LCSD-based libraries; a bullet (∙ ) denotes a dependence whereas a circle (∘ ) relates to an optional dependence. The Boost libraries and the Vienna* libraries are utilized most. Where ViennaFEM, ViennaFVM, and ViennaMesh utilized in total 13 libraries, the discussed framework approaches altogether make use of 19 libraries.

Furthermore, by utilizing and implementing FLOSS as well as by applying CBSE and LCSD techniques for the introduced frameworks, the initially defined research goals (Section 1.4) are tackled. More concretely, not only has the overall goal of developing flexible simulation tools relevant for the field of MNDS been met via the developed frameworks, but also the five established primary requirements of this work, those being reusability, flexibility, usability, maintainability, and expandability, are inherently supported by utilizing FLOSS-based approaches and by applying LCSD as well as CBSE techniques (Table 7.2).






FLOSS LCSD CBSE




Reusability

∙ ∙ ∙




Flexibility

∙ ∙ ∙




Usability

∙ ∙




Maintainability

∙ ∙




Expandability

∙ ∙ ∙





Table 7.2: The key research goals established for this thesis are supported by applying CBSE, FLOSS, and LCSD approaches. A bullet (∙ ) denotes the inherent support of the particular feature by the respective method.

Reusability is provided by implementing and using FLOSS, as software can be accessed by other developers. By applying an LCSD approach libraries can be reused by other libraries and applications. Components of CBSE-based implementations can be reused in different execution contexts.

Flexibility is supported by FLOSS-based tools, as the access to other tools enables to alter an application by developing and using interfaces. Also, LCSD favors flexibility, as the decoupled nature allows to change parts of an implementation with minimized effort. CBSE inherently enables to change the setup of an application via exchanging components.

Usability is improved by LCSD due to the enforced interfaces introduced by the libraries’ APIs, easing the utilization of the functionality provided by the individual libraries, which is particularly relevant for software developers. On the contrary, usability is supported by the applied CBSE approach as is being utilized, for instance, in ViennaMOS, where each module potentially provides its own GUI, allowing a highly usable access to the simulation kernel.

Maintainability is favored by LCSD and CBSE approaches, as the decoupled nature of the software reduces the overall code base of individual tools (Table 7.3) and thus by extension increases the maintainability of each tool.

Finally, expandability is supported by FLOSS in the sense that already available software can be accessed and functionality can be added without reimplementing the code base allowing to add the new functionality in the first place. Also, LCSD and CBSE approaches inherently favor expandability due to their utilized component interface, enabling the addition of further components in a straightforward manner.

These five primary aspects, being reusability, flexibility, usability, maintainability, and expandability, are of particular importance to simulation software in a fast pacing research environment such as MNDS. As the presented frameworks utilize these aspects, they allow to provide modern and long-term simulation platforms to end users and advanced users. Simultaneously, developers can continuously advance the simulation tools with minimum effort, ultimately enabling to stay at the forefront of research.




Lines of Code


ViennaCL 58 019


ViennaGrid 19 578


ViennaMath 7 562


ViennaMesh 7 280


ViennaFEM 4 672


ViennaFVM 2 880


ViennaData 1 779


ViennaMaterials 399


(a) Libraries


Lines of Code


ViennaMOS 8 717


ViennaX 4 121


ViennaMini 1 760


(b) Frameworks

Table 7.3: The number of source code lines for the Vienna* libraries (a) and frameworks (b) are listed in descending order, as evaluated via the Count Lines of Code [41] tool. The frameworks, allowing to setup the actual applications, offer a small code base, as a significant part of functionality is provided by external libraries.