我不确定这个问题是否属于这里,但我想尝试一下,并从 scicomp.SE 人员的经验中受益。
根据我的经验,计算科学中的软件质量通常还有一些不足之处。显然,PETSc 或 OpenFOAM 等成熟的软件项目是该声明的例外。但通常有一些 80 年代的旧的自制代码应该作为新研究主题的基础,但没有人真正理解它的作用。我的印象是,虽然有使仿真软件项目更具可持续性的趋势和指导方针,但开发人员通常缺乏实施质量保证措施的技能。不怪任何人,这是一个跨学科领域,在物理学或工程学位中,这些技能不会被教授。
- 是否有一些既定的指导方针可以遵循?
感谢其他渠道的贡献者和我自己的研究,我可以提供这个列表:
还有其他候选人吗?
- 有没有提供干净基础的模板项目?
为了使仿真软件项目的开发人员更容易,我认为有一些样板项目提供一个干净的开始会很有帮助。已经有这样的事情了吗?
到目前为止,我已经收集了样板项目应该包含的几个组件:
- 版本控制系统(git)
- 协作工具(gitlab)
- 用于自动构建测试的持续集成 (gitlab-ci)
- 从源代码中提取文档(doxygen)
- 自动构建系统 (CMake)
- 单元测试框架(
谷歌测试?Catch2) - 代码格式化工具(clang-format)
- ...
但我担心这份清单并不详尽,我会感谢您的经验和/或对文学的指点。
编辑:第二个问题导致了一个项目:查看 bertha,骨架 [1, 2]!目标是将这个项目作为模板安装在 GitLab 中,以便通过单击生成遵循模拟软件项目最佳实践的工作 C++ 项目的实例。当然,也可以手动复制文件。无论如何,骨架项目提供了一个坚实的基础,而不是从头开始。或者,如果已经有一个已建立的软件项目,则可以从中挑选一些东西。
目前,bertha 具有自动化的多平台构建系统、自动文档生成,并支持使用 Catch2 框架进行单元测试。它即将扩展,因此如果您有任何意见,请随时与我联系或在 GitLab 上提出问题。