We are developing software for simulating, visualizing and measuring pedestrians' movement following software engineering guidelines.
Software plays an increasingly important role in science today. Several results carried out using computational science would not be possible without it. Especially in the field of pedestrian dynamics, computer simulation plays a crucial role in understanding the behavior of crowds. Nevertheless, the development of research software is often neglected, which often results in prototypical software.
JuPedSim is a well-established pedestrian dynamics simulation software developed by several Ph.D. students and scientists focusing on their research topic - pedestrian dynamics. At some point, software developed like this becomes too complex to be maintained or to be extended. Additionally, it requires too much software engineering knowledge from researchers, mainly focusing on their domain. Hence, we established an internal team with a focus on software engineering. This team introduced several best practices in our process and strengthened the role of software engineering. Additionally, they help domain scientist to transfer their features in production-ready code.
JuPedSim was always published open-source under the LGPL license. It is publicly available on GitHub, and we allow everyone to collaborate on the development using pull requests or the public issue tracker. To increase the code quality, we established a review process on all suggested changes by external collaborators and internal team members. A further step to support the developers is the increasing test suite running on our continuous integration (CI). Thus, before any change in the source code gets into the production software, it needs to be approved by at least one team member, and all tests need to run successfully. CI is essential to ensure the correctness of our software over time. Fortunately, we got a free open-source license from JetBrains for their continuous integration software called TeamCity. With TeamCity highly complex dependencies and build, chains can be modeled and configured in Kotlin. Using TeamCity, we are building and testing JuPedSim on different platforms with different compilers. If all tests are successful, the build binaries can be released automatically.