0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简述Geant4 的软件开发过程

红心机器人 来源:Geant4模拟学习交流 作者:强哥同学 2021-08-26 16:22 次阅读

Geant4 的软件开发过程

Gabriele Cosmo(欧洲核子研究中心,瑞士日内瓦)用于 Geant4 协作。

摘要:

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

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

简介(Introduction):

许多软件过程在 Geant4 中得到解决,这些过程来自不同的过程类别:

软件开发的主要生命周期

支持生命周期

管理过程

或组织生命周期

和用户-供应商流程。

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

主生命周期过程(Primary life-cycle processes)

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

需求获取过程(Requirements elicitation process)

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

软件设计(Software Design)

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

软件创建(Software Construction)

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

软件集成和单元测试(Software Integration and Unit Testing)

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

系统测试、验收和发布(System Testing, Acceptance and Releasing)

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

软件维护(Software Maintenance)

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

用户支持,分发(User Support, Distribution)

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

支持生命周期过程(Supporting life-cycle processes)

文档(Documentation)

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

配置和变更管理(Configuration and Change Management)

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

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

质量保证和测量(Quality Assurance and Measurement)

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

双V验证(Verification and Validation)

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

补充双V

双V是系统工程最核心的思想,这种思想也可以用来解释我们日常生活中面对的各种各样的事情。

简单的说:Verification,中文翻译叫“验证”,就是把事情做对(do things right);Validation,中文翻译叫“确认”,就是做对的事情(do right things)

提供一副简图,供大家揣摩其中的奥秘

组织生命周期流程

项目任务管理

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

改进过程

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

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 仿真
    +关注

    关注

    50

    文章

    3872

    浏览量

    132166
  • 编程
    +关注

    关注

    88

    文章

    3441

    浏览量

    92412
  • 编码
    +关注

    关注

    6

    文章

    835

    浏览量

    54458

原文标题:Geant4 的软件开发过程

文章出处:【微信号:RedHeartRobot,微信公众号:红心机器人】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入软件单元测试工具的作用

    嵌入软件单元测试工具是现代软件开发过程中不可或缺的一环。它的作用在于帮助开发人员对软件中的各个单元进行测试,以确保其功能的正确性和稳定性。单元测试是
    的头像 发表于 04-23 15:31 86次阅读
    嵌入<b class='flag-5'>软件</b>单元测试工具的作用

    广告电商+超级云APP结合 # 软件开发# 模式开发# 小程序开发# App开发

    软件开发APP
    jf_01576396
    发布于 :2024年04月09日 17:42:13

    嵌入式软件开发软件开发的区别

    嵌入式软件开发软件开发是两个不同的概念,它们在一些关键方面有着明显的区别。嵌入式软件开发是指开发嵌入在硬件设备中的软件,而
    的头像 发表于 01-22 15:27 601次阅读

    区块链系统软件开发与应用

    。本文将详细介绍区块链系统软件开发过程和应用推广的关键要点。 一、区块链系统软件开发的基本原理和技术 1.1 区块链的基本原理 区块链是一种分布式账本技术,通过多方参与、共识机制、密码学等手段保证了数据的不可篡改
    的头像 发表于 01-10 18:18 981次阅读

    ASIC芯片开发过程

    电子发烧友网站提供《ASIC芯片开发过程.ppt》资料免费下载
    发表于 12-25 10:04 1次下载

    从定义和实施帮你对软件测试进行全解析

    软件测试 是软件开发过程中的一项重要环节,它的目的是确保软件能够满足预期的需求和质量标准,为客户提供高质量的产品或服务。本文将从定义和实施角度对软件测试进行解析,帮助读者更好地了解
    的头像 发表于 12-21 14:25 210次阅读

    功能安全验证之软件故障注入方法

    软件故障注入是一种假设实验,它可能起源于软件开发过程的任何阶段,包括需求分析、设计和编码活动。在给定的工作负载下执行目标,并将故障插入目标系统的特定软件组件中。
    的头像 发表于 11-06 18:22 664次阅读
    功能安全验证之<b class='flag-5'>软件</b>故障注入方法

    Android校园应用开发过程

    电子发烧友网站提供《Android校园应用开发过程.pdf》资料免费下载
    发表于 10-19 11:36 0次下载
    Android校园应用<b class='flag-5'>开发过程</b>

    geant4光源方向设置

    /rot1/gps/pos/rot2应该怎么设置能达到这个目地呢, 在论坛上也有看到类似的对这两个函数的解释,但是tan(90)和tan(180)是不存在,要怎弄呢 改了好久了,geant4手册上也没有详细解释,谢谢帮助,非常感谢
    发表于 08-26 19:50

    软件开发必读!华为云软件开发生产线 CodeArts 深度体验指南

    7 月 7 日-9 日,随着华为开发者大会 2023 的到来,华为云软件开发生产线 CodeArts 也走进了很多开发者的视野。 开发者都比较好奇,什么是华为云 CodeArts?Co
    的头像 发表于 08-25 13:43 786次阅读
    <b class='flag-5'>软件开发</b>必读!华为云<b class='flag-5'>软件开发</b>生产线 CodeArts 深度体验指南

    如何在持续集成开发流程中使用Jenkins和Docker?

    模型的功能。使用持续集成方法有助于最大限度地减少软件开发过程中的问题,例如大型合并冲突、重复工作和不可复制的错误。 Jenkins、Docker容器和Arm-Fast模型的持续集成实践为嵌入式软件开发
    发表于 08-02 10:50

    RTX低功耗软件开发(三)

    软件开发
    橙群微电子
    发布于 :2023年07月11日 15:48:14

    如何读懂FPGA开发过程中的Vivado时序报告?

    FPGA开发过程中,vivado和quartus等开发软件都会提供时序报告,以方便开发者判断自己的工程时序是否满足时序要求。
    发表于 06-26 15:29 574次阅读
    如何读懂FPGA<b class='flag-5'>开发过程</b>中的Vivado时序报告?

    代码中藏几个bug,让自己无法替代?

    我们在进行嵌入式软件开发过程中,产生一些bug是难免的。
    的头像 发表于 06-07 10:34 380次阅读
    代码中藏几个bug,让自己无法替代?

    安全软件开发的最佳实践

    安全的软件开发最佳实践是必要的,因为安全风险无处不在。在网络攻击盛行的时代,它们可以影响每个人,包括个人、公司和政府。因此,确保软件开发的安全性至关重要。 在这里,我们将解释了什么是安全软件,如何确保
    的头像 发表于 05-08 10:51 490次阅读
    安全<b class='flag-5'>软件开发</b>的最佳实践