简述Geant4 的软件开发过程

描述

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

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分