简述Geant4 的软件开发过程

【发布时间:2021-12-09 09:46:08】

来源:乐鱼体育官网下载 作者:乐鱼体育平台

  自其最早的研发 [1] 以来,Geant4 仿真工具包已经遵循决定项目整体发展的软件过程标准进行开发。所涉及软件的复杂性包括,软件产品的广泛应用领域、庞大的代码量和类别的复杂性、规模和分布式性质合作本身的所有要素都涉及并关联了广泛的各种软件过程。

  虽然在“生产”中并从1998 年 12 月向公众开放,Geant4 软件产品 [2] 包括所应用的类别领域,它们仍在积极开发中。因此,关于改进开发周期、系统测试和用户支持,他们也需要不同的对待。这篇文章是旨在描述一些在 Geant4 中应用的软件过程,涵盖了软件的开发、测试和维护。关键词:Geant4、PSS-05、SPICE、Booch、UML

  由于质量、稳定性要求或特定领域的进化阶段,或者为了使过程适应人们的习惯,有时需要定制流程。 软件过程改进 (SPI,Software Process Improvement ) 是一个必须在有关各方的全力支持下逐步实施,并确定正确的优先事项和目标 [8]的过程。 在本文中我们将提到一组与 Geant4 相关的软件流程; 大多数相关的程序和应用方法是在项目的开发阶段已经有效实施[1]。

  Geant4 中大多数领域采用的生命周期模型是迭代和增量的(也称为螺旋方法)[9]。 需求分析、设计、实施和测试之间的步骤是重复的。根据新要求或性能问题,对设计的改进和扩展。 在目前的生产和维护阶段,生命周期模型对大多数领域都是迭代的。

  在项目的初始阶段,领域问题和用例分析导致了用户需求的引出 [10]。用户需求已系统化地按照 ESA PSS-05 软件工程标准进行审查和更新 [11]。 用户需求文档 (URD) 现在保存在源代码存储仓库中,能进行自动版本控制; 它将在 2001 年进行修订。特定项目领域的 URD 也在存储库中保存和维护,并且对协作组成员可用。

  Booch (Unified) [9] 方法已被用于面向对象的分析 和软件的设计。 Booch/UML 表示法被选为通用的设计文档和内部设计审查的语言。 Rational RoseCASE 工具 [12] 已广泛用于设计文档的初始生成。并在需要时用于逆向工程。 正确的域分解和一组经过深思熟虑的依赖关系(避免循环使用关系),允许工作在每个类别域相关联的组在很大程度上并行工作,同时建立交付的层次结构。 为架构和详细设计提供的标准文件有:类类别图(Category Diagram)、类图(Class Diagrams)、场景图(Scenario Diagrams )和类规格(Class Specifications)。

  从一开始就采用了编程和编码指南 [13]。 感觉是——重要的是不要强加太固定的规则或风格惯例,而只是灵活和足够的指导方针,基本上能处理面向对象范式的粘附(数据隐藏,封装等)、软件的性能和可移植性。软件的打包严格按照领域分解为类别和子类别,这是设计过程的结果。 在适用的情况下,定义接口的类与实现此类的具体类分开打包在子类别接口中。 通过这种方式,属于一个类别的类协作以可重用的方式提供一组服务。

  可以一起测试的系统聚合体根据依赖关系确定类别的结构。 作为例行程序的一部分,定期监测相关测试测试程序[17]。 单元测试在每个类别或子类别独立执行,尽量最大化覆盖范围。

  系统测试活动由专业团队部署,系统测试团队(STT)。 测试 [17] 和发布 [18] 的程序被定义并严格应用。发布程序预见到各种类别的标签提交顺序遵循每个类别领域的类图(Class Diagrams)定义的依赖结构图表。 验收测试也包含在常规系统测试中并在发布阶段由发布经理单独运行。 公开发布每年在固定日期安排两次。 收集并定期进行错误修复可作为公共补丁或次要版本使用。

  为了实现软件的可维护性并保证其质量,在可能的情况下,都采用标准。 组件的封装最大化,相互依赖性和单元复杂性被最小化。 我们努力确保软件的可移植性主要是通过不断监控编译器在不同系统架构上的演变来实现,并避免采用依赖于系统的解决方案或不可移植的语言特征。 代码的更新、扩展和错误修复的可追溯性通过以下方式得到保证。维护临时历史文件的方法,定期标记代码并尝试将常规开发与错误修复更新分开 [18]。

  Geant4 中的用户支持条款在备忘录的谅解 (MoU) [3] 文件第 2 条中定义。每个工作组的联系人是提名的,负责管理和解决报告用户通过 使用 Geant4 问题跟踪系统 [24]提交的问题,问题跟踪系统是基于 Bugzilla [26] 的定制版本。 Geant4 WWW 站点 [2] 还提供在线文档、常见问题解答页面和每个工作组域的联系人列表。 最近建立了一个基于 Hypernews [25] 的公共用户论坛。

  作为用户文档 [19],Geant4 提供了六个文档(可从WWW) 解决固有的不同主题和专业知识水平的问题。用户示例随工具包分发的文档以自学教程的形式引用,具有从“新手”到“高级”应用程序的不同详细程度。 训练套件教程、文档、论文、出版物等也可从Geant4 WWW 站点 [2]获得。

  软件配置管理:软件和文档的服务器存储库已就位; 它基于 CVS [20] 作为并发版本管理的基本工具。 存储库中的代码和文档可供通过欧洲核子研究中心的成员通过 AFS [21] 以及“pserver”读/写访问。

  标记和版本控制:类别工作组协调员负责管理其类别内的开发并提供遵循明确规定的规则 [18]的标签,用于测试和发布。然后 STT 将运行系统支持的架构的测试。 Bonsai [26] 工具用作数据库以自动检测引入 CVS 的任何新标签。 全局引用标记是每月提供,包括所有通过系统验证测试的标签。 这标签已公布并提供给开发人员和合作机构继续开发。 用户文档根据公开发行版本进行标记。

  通过专门的监控工具定期执行代码演练,监控违反既定的编码规则。使用了 CodeWizard 工具 [14]; 一个单元类别提交代码过滤的自动机制已被引入,可供 Geant4 开发人员使用。 检查运行时内存管理在每次公开发行前定期进行; Insure++ [15] 和 SUN Workshop 等工具[16] 用于选定的试验台应用程序。定期执行 检查是否违反宏观层面的类别依赖结构,并在与主类 Category Diagram 的 相关性被监控。 性能监控在选定的测试台应用程序上应用在其中性能很关键的单元级别的类别上加以应用。

  在宏观层面,根据主类验证 Categories 的依赖结构分类图作为参考。 验证工具包在 URD [10] 的每个新修订版中的一般功能。 功能和覆盖范围的单元级别验证以及单元测试和验证新的开发或修复由每个类别协调员负责。 一旦所有系统集成测试都成功执行,新开发由 STT 验证,前提是,在与类别协调员合作,系统测试已扩展到涵盖新引入的功能。

  项目的管理在指定的 Geant4 Collaboration 的控制之下并在 Geant4 补充备忘录 [3] 中有所规定。 Geant 4 通过工作组组织起来; 每个工作组负责工具包的一个特定领域,其中明确指定的任务与其相关联。 每个工作组在TSB都由其协调员代表。 每年都会确定目标,并在 TSB 会议内进行讨论并提交给 CB。 在 TSB 会议期间对它们进行一般性审查,联合审查或在每年组织一次的合作研讨会上进行。

  SPI [4] 计划在 TSB 会议上正式提出并被批准为2000-2001 年的里程碑。 确定了优先事项和目标并批准了目前正在申请SPI程序。基于范例的正式评估执行模型 ISO-15504 (SPICE) [6]。 SPI 被认为是生命周期驱动的,因此既定方案的进展不断得到监测。 达到项目中既定流程 [5] 的能力级别是 Geant4 的关键目标。

  文章出处:【微信号:RedHeartRobot,微信公众号:Geant4模拟学习交流】欢迎添加关注!文章转载请注明出处。

  永磁同步电机控制时,如果负载转矩出现周期性脉动,转速一般也会出现周期性的波动。比如单转子空调压缩机,其负载特性是:负载在...

  注:1:此为永磁同步控制系列文章之一,应大家的要求,关于永磁同步矢量控制的系列文章已经在主页置顶,大家可以直接去主页里面查...

  本章主要讲解矢量控制的基础,并结合自己的手稿推导过程;以及仿真搭建与实现,同时涉及多种与矢量控制相关的先进控...

  各位同学们久等啦,这次永磁同步电机矢量控制(两电平)的最后一章了,就讲讲仿真模型一些相关参数的设定和仿真结果,这样两...

  永磁同步电机的仿线.永磁同步电机的矢量控制策略(八)在前面的博客已经讲到电机本体的Simulink模型搭建,其中可以自定义电机的库模型,或者直接通...

  由于前几天比较忙,这期更新有点迟了!!不过没关系,在新的章节会保持每周更新1~2篇博文。0 前言这期我们开始新的章节——永...

  先放下我做的完整异步电机矢量控制系列仿真框图。异步电机的控制相比较于PMSM是更难的,我是从异步电机着手的,由难入简,降...

  【实例简介】有5个电机仿真模型,包括开环V/F,永磁同步电机矢量控制、异步电动机的矢量控制、直接转矩控制等,欢迎下载、交流...

  C_GUI编程入门 第一章:认识GUI编程 在程序设计中,往往我们最后编译的结果都是通过控制台输出所....

  Modelsim使用技巧—波形白底黑线设置 在发表期刊或者论文时,我们需要夹带modelsim的仿真....

  区别 SmartNIC 与 DPU (数据处理器) 的依据是它的功能,而不是形态。对称为 Smart....

  基于扩展卡尔曼滤波SOC估算Simulixnk仿真,内容完整,模型可仿真,代码可实现

  学习编程其实就是学高级语言,即那些为人类设计的计算机语言。 但是,计算机不理解高级语言,必须通过编译....

  在图像预处理中经常会碰到图像分割问题,把感兴趣的目标从背景图像中提取出来,而经常使用的是简单的全局阈....

  大多数情况下,如果你正在做的事情无法在互联网上找到答案,那么这通常意味着这个问题很难或者很重要,或者....

  知乎上刷到一个问题,问性能最强的编程语言是什么?看到高赞回答到是Verilog,然后在评论区就引发了....

  题目 已知二叉树前序为 ABDFGCEH 后序序列为 BFDGACEH ,要求输出后序遍历为 FGD....

  为了更好满足动力域、安全域和底盘舒适域控制器的安全应用,SAE定义SENT协议用于传感器和ECU 之....

  stm32是嵌入式单片机,有着高性能、低成本、低功耗、可裁剪的特点。相信许多萌新小伙伴还不知道stm....

  随着高清采集、高清传输、高清解码和显示设备的不断升级,极大地满足了人们对高清画质的需求。高清设备带来....

  来源:机器视觉算法与应用 大多数HALCON解决方案都必须嵌入到PC端的应用程序中(例如,提供图形用....

  有小伙伴问:如何能快速提升编程能力?这感觉永远没有正确答案,每个人都有自己的套路,今天就来聊聊我对这....

  目前,提供加速AV1编码的硬件平台数量仍然相当有限,但随着越来越多的硬件进入市场,支持这种免版税视频....

  Nasir Ahmed 声影传奇 #003# 前段时间,LiveVideoStack发布了一篇文章《....

  发布人:Yunlu Li 和 Artsiom Ablavatski 简介 剪枝是 TensorFlo....

  不知不觉间,代码也写了二十余载,我已成精了。借着过来人的身份和语气,有一件事情我一直都特别喜欢吐槽:....

  编程时,我们讲究的是高内聚低耦合,在协同开发、代码移植、维护等环节都起到很重要的作用。 一、原理篇而....

  聪明的人类发现把简单的开关组合起来可以表达复杂的bool逻辑,在此基础之上构建了 CPU ,因此 C....

  众所周知,电路系统中普遍存在着浪涌现象。具体而言,浪涌现象是一种瞬间干扰,是指在极短时间内峰值电流/....

  Replit 使编码人员能够快速构建应用程序。除了浏览器,开发人员可以启动服务器,将数据存储在 Re....

  在先前文章中,我们谈到现代GPU发展出SIMT(Single Instruction Multipl....

  说到文字池,首先第一个问题:什么是文字池?文字池又叫literal pool,它的本质就是ARM汇编....

  在最开始人们编写程序时,都将所有的代码都写在同一个源文件中,经过长期的积累,程序可能包含了N多行的代....

  学个Antenna是以天线仿真和调试为主,理论原理为辅的干货天线技术专栏,包括天线入门知识以及各类天....

  基于Simcenter Flotherm BCI-ROM技术,Simcenter Flotherm可....

  在刚度允许的条件下,粗加工取较大的切削深度,以减少走刀次数,提高工件生产率;精加工一般取较小的切削深....

  有读者提出了类似这样的问题:while(1) 和 for(;;) 它们不都是无限循环吗,作用应该一样....

  IAP是什么 有时项目上需要远程升级单片机程序,此时需要接触到IAP编程。 IAP即为In Appl....

  借助 MATLAB 和 Simulink ,工程师能够高效地集成和自动化设计、实现和验证的各个阶段,....

  机器视觉是一项综合技术,包括图像处理、机械工程技术、控制、电光源照明、光学成像、传感器、模拟与数字视....

  上期的强强对话中来自同济大学 DIAN Racing 车队的周晓同学给我们分享了如何绕过车辆电气系统....

  了解了锁相环的算法后,其次就是要懂如何仿真相干解调。载波恢复很难搞!但搞懂了以后呢?受益无穷!通信大....

  现在常用的数字调制方式有二相移相键控(BPSK)、正交移相键控(QPSK)、偏移四项移相键控(OQP....

  近日,由南方周末主办的第十三届中国企业社会责任年会举行,围绕“绿色发展”、乡村教育等热点领域展开,并....

上一篇:浅析软件安全检测工作为何影响开发人员的研发效率
下一篇:软件开发业务营收增长 中科软半年度归母净利同比增299%至171亿元