Better Architecture, Better Software, Better Research

Research software requires flexible and modular architectures to accommodate rapid evolution and interdisciplinary collaboration [1]. Software architectures are fundamental to the development of technically sustainable software systems as they are the primary carrier of architecturally significant requirements, such as extensibility and maintainability, and influence how developers are able to understand, analyse and test a software system. Hence, research software engineering should focus on architectural metrics to evaluate and improve their code [2]. Architectural metrics in research software ensure the software's scalability, performance, maintainability, and overall quality, facilitating reproducible and reliable research outcomes [3]. We already have many metrics and tools to measure and improve the quality of software architecture. However, we hypothesize that research software is often built using limited resources and without a long-term vision for maintainability, which leads to a range of rotten symptoms, including software rigidity, fragility, immobility, and viscosity, which results in high-maintenance and evolution costs, which are the foundation for software decay and death in all software investment. In a recent Dagstuhl seminar, we, the authors (consisting of software engineers, software engineering researchers, and research software engineers), discussed key software metrics such as code smells, duplication, test coverage, cyclomatic complexity, etc., and how these can be used to improve research software. We explored our hypothesis by applying existing static analysis tools to a few open-source research software repositories. We discovered high cyclomatic complexity, large God classes, cyclic dependencies, improper inheritance, modularity violations, propagation error-prone and change-prone issues, and low test coverage, which confirmed non-trivial maintenance and evolution costs. We concluded that we should explore this idea further and that there may be an opportunity to build better tools and techniques to help research software engineers improve the architecture of their software, which in turn can improve its quality. In this poster presentation, we will demonstrate the critical role of software architecture in ensuring software quality. We will explore its importance for research software and how it can significantly enhance the quality of these systems. Research software can become more maintainable, scalable, and reliable by adopting software architecture principles. We will illustrate the tangible benefits and practical applications of adopting robust software architecture principles through detailed example analyses of real research software projects. Attendees will gain insights into best practices and strategies for integrating architectural frameworks into their research software development processes. Our goal is to spread appropriate software architecture knowledge among research software engineers, highlighting its transformative impact on research outcomes and the sustainability of software projects. By adopting these principles, research teams can ensure their software is better equipped to handle future challenges, fostering innovation and collaboration in the research software community.

Institutions

Publication Details

Journal
Zenodo (CERN European Organization for Nuclear Research)
Published
2024-10-21
DOI
https://doi.org/10.5281/zenodo.13958882
Primary Topic
Scientific Computing and Data Management
Type
article
Field-Weighted Citation Impact
0.00
Controls
|||
ALL TIME
JAN
FEB
MAR
APR
MAY
JUN
JUL
AUG
SEP
OCT
article

Better Architecture, Better Software, Better Research

Zenodo (CERN European Organization for Nuclear Research)
Scientific Computing and Data Management
article

Better Architecture, Better Software, Better Research

article en

Abstract

Research software requires flexible and modular architectures to accommodate rapid evolution and interdisciplinary collaboration [1]. Software architectures are fundamental to the development of technically sustainable software systems as they are the primary carrier of architecturally significant requirements, such as extensibility and maintainability, and influence how developers are able to understand, analyse and test a software system. Hence, research software engineering should focus on architectural metrics to evaluate and improve their code [2]. Architectural metrics in research software ensure the software's scalability, performance, maintainability, and overall quality, facilitating reproducible and reliable research outcomes [3]. We already have many metrics and tools to measure and improve the quality of software architecture. However, we hypothesize that research software is often built using limited resources and without a long-term vision for maintainability, which leads to a range of rotten symptoms, including software rigidity, fragility, immobility, and viscosity, which results in high-maintenance and evolution costs, which are the foundation for software decay and death in all software investment. In a recent Dagstuhl seminar, we, the authors (consisting of software engineers, software engineering researchers, and research software engineers), discussed key software metrics such as code smells, duplication, test coverage, cyclomatic complexity, etc., and how these can be used to improve research software. We explored our hypothesis by applying existing static analysis tools to a few open-source research software repositories. We discovered high cyclomatic complexity, large God classes, cyclic dependencies, improper inheritance, modularity violations, propagation error-prone and change-prone issues, and low test coverage, which confirmed non-trivial maintenance and evolution costs. We concluded that we should explore this idea further and that there may be an opportunity to build better tools and techniques to help research software engineers improve the architecture of their software, which in turn can improve its quality. In this poster presentation, we will demonstrate the critical role of software architecture in ensuring software quality. We will explore its importance for research software and how it can significantly enhance the quality of these systems. Research software can become more maintainable, scalable, and reliable by adopting software architecture principles. We will illustrate the tangible benefits and practical applications of adopting robust software architecture principles through detailed example analyses of real research software projects. Attendees will gain insights into best practices and strategies for integrating architectural frameworks into their research software development processes. Our goal is to spread appropriate software architecture knowledge among research software engineers, highlighting its transformative impact on research outcomes and the sustainability of software projects. By adopting these principles, research teams can ensure their software is better equipped to handle future challenges, fostering innovation and collaboration in the research software community.

Zenodo (CERN European Organization for Nuclear Research)
Boise State University (US), University of Illinois Urbana-Champaign (US), Iowa State University (US), University of Limerick (IE), Deutsches Zentrum für Luft- und Raumfahrt e. V. (DLR) (DE), Humboldt-Universität zu Berlin (DE), Universitäts Hautklinik Kiel (DE), University of Sheffield (GB), Technische Universität Braunschweig (DE), University of Edinburgh (GB)
Industry, innovation and infrastructure
Openalex Percentile: Top 34%
Scientific Computing and Data Management
AI Navigator

Ask Laika to Summarize, Analyze, and Connect papers live on the map.

Summarize Papers & Methodologies

Extract key findings, datasets, and comparative methods across publications.

Benchmark Rankings & Visual Analytics

Rank top research institutions, authors, funders, topics, and journals by Field-Weighted Citation Impact (FWCI) and paper volume with instant charts.

Connect Distant Disciplines

Bridge topological clusters on the map to find hidden collaborative intersections.