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

    文章

    4041

    浏览量

    133413
  • 编程
    +关注

    关注

    88

    文章

    3592

    浏览量

    93594
  • 编码
    +关注

    关注

    6

    文章

    935

    浏览量

    54761

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

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

收藏 人收藏

    评论

    相关推荐

    自己做的TAS5825板子软件开发过程中怎么接到PPC3上去调试呢?

    我们打算做一个TAS5825的板子,PPC3软件已经申请下来了,有个问题是我们自己做的TAS5825板子软件开发过程中怎么接到PPC3上去调试呢?
    发表于 10-15 08:15

    ECU电控软件开发及测试介绍

    本文重点介绍符合AutoSar架构的应用软件开发、MBD开发模式下的软件质量评估与优化方案、复杂场景下的ECU性能压力测试方案。
    的头像 发表于 09-26 14:25 3224次阅读
    ECU电控<b class='flag-5'>软件开发</b>及测试介绍

    Vector DaVinci Team解决方案实现AUTOSAR Classic ECU软件开发

    随着软件技术的发展,车辆的开发过程从硬件主导转变为软件定义汽车(SDV),软件开发在汽车的开发过程中扮演着举足轻重的角色。车辆E/E架构由原
    的头像 发表于 09-13 11:23 801次阅读
    Vector DaVinci Team解决方案实现AUTOSAR Classic ECU<b class='flag-5'>软件开发</b>

    rup是一种什么模型

    RUP(Rational Unified Process,统一建模语言)是一种软件开发过程模型,它是一种迭代和增量的软件开发方法。RUP是由Rational Software公司(现为IBM的一部分
    的头像 发表于 07-09 10:13 1151次阅读

    软件开发珠玑》+60条戒律

    包含需求、设计、项目管理、文化和团队合作、质量、过程改进6个方面的内容,提供了丰富、实用的工具和方法。当开发人员更好的理解了需求时,便能够从用户的角度触发思考更优秀的解决方案。从这点来看,每个软件开发人员或团队应人手一份这本书,
    发表于 06-24 19:27

    【《软件开发珠玑》阅读体验】+ 心得

    的财富。 人类是单线程工作的,同时只能完成一项任务。感慨颇深。只能根据优先级选择重要的任务了(或事情)。需要养成单日单任务的习惯。 此外,《软件开发珠玑》还强调了团队协作和沟通的重要性。在软件开发过程
    发表于 06-23 17:56

    上位机软件开发用什么语言

    上位机软件开发是指开发用于与下位机(如PLC、单片机等)进行通信、控制和数据处理的计算机软件。上位机软件在工业自动化、物联网、智能家居等领域有着广泛的应用。选择合适的编程语言对于
    的头像 发表于 06-06 10:44 1455次阅读

    共读《软件开发珠玑》

    作为项目经理,要处理好五大过程组和十大领域; 作为软件配置管理,对软件工程、算法和应用开发还不够了解,本书介绍的软件开发和管理60条经验教训
    发表于 05-21 11:28

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

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

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

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

    keil arm软件开发指南

    电子发烧友网站提供《keil arm软件开发指南.pdf》资料免费下载
    发表于 01-26 15:51 7次下载

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

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

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

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

    ASIC芯片开发过程

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

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

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