当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]谈GJB5000A二级在中小型嵌入式软件研发中的应用

摘要:结合软件项目在GJB5000A二级的实践过程,针对过程中发现的问题和失误,分析了中小型嵌入式软件项目研发的特点,总结出一些实用的软件工程化的实践方法,适用于软件工程化的普及和推广。文章着重在软件项目管理、软件可靠性两方面进行阐述,并讨论了项目信息化管理和软件测试在这两方面的应用。
关键词:GJB5000A;软件项目管理;软件可靠性

    随着GJB5000A-2008《军用软件研制能力成熟度模型》在我国科研单位的逐步应用推广,软件产品研制过程的工程化要求越来越科学和严格。因此我们在某些重点项目上进行了GJB5000A二级的首批实践。这次实践有效地提高了软件研制的工程化水平,但是同时也发现了许多问题和和失误。通过管理人员和技术人员的分析和总结,得出结论:GJB5000A二级的应用需要关注的两方面工作重点,一是建立适应于中小型嵌入式软件的高效的项目管理体系,二是利用软件测试技术提高软件的可靠性,保证软件的质量。

1 中小型嵌入式软件的高效管理
1.1 软件研制的现状
    在电子信息系统及相关产品中,主要包含三类软件:
    (1)人机交互类软件,采集目标状态信息和各分系统状态信息显示于终端图形界面上,同时由操纵员进行人工操作;
    (2)数据处理类软件,包括数据处理、信号处理、数据融合、数据交换等;
    (3)控制类软件,包括波束控制,机械装置控制,时序控制,系统校准,系统自检等。这三类软件的功能模块基本相同,包括系统初始化、任务调度、数据解算、时序控制、I/O通信定时管理、中断管理、任务问的通信/同步/互斥管理及内存管理等。它们的研制特点如表1所示:


    表1反映出三类软件均存高实时性的嵌入式芯片或平台上开发和运行,三类软件规模较小,研制周期短,不同项目的软件之间具有重复性。在实际工作当中,每个软件项目组的人员配置上,全部软件研发人员人数一般不多于10人,项目组成员同时分担大量的硬件研制、系统组成、系统联调、试验的工作。因此我们面对的主要是中小型软件项目的嵌入式软件。
    在软件工程化的首次实践中,软件研制过程反映出4类共性的问题:
    (1)项目软件研发时间紧,人员少,人员投入度不足,人员职责不明晰,造成部分执行要求被人为简化,甚至随意取消;
    (2)项目软件的计划性不强,经常出现需求、人员、资源的变动,造成了进度拖延,计划无法得到保证;
    (3)项目软件研发过程中会议和文档较多,但利益相关方的界定不明晰,造成不必要的“文山会海”现象,降低管理效率,影响软件设计工作;
    (4)管理人员和技术人员的工作过程缺乏足够的监管和测量分析,造成了项目管理进程缺乏统一性和技术可重复性。
    为了解决通过上述问题,我们在实践过程中逐渐摸索和总结出一些适合中小型嵌入式软件研制方法。下面将从软件项目管理体系和软件项目研制过程两方面进行阐述。
1.2 软件项目管理体系
    成功的软件取决于科学的管理体系。GJB5000A二级的七个过程域中,项目策划(PP)、配置管理(CM)、过程和产品质量保证(PPQA)这三个过程域是十分重要的管理过程域。
    项目策划的目的是制定和维护定义项目活动的计划,具体分为四项工作:
    (1)制定项目软件研制计划;
    (2)适当地与利益相关方交换意见;
    (3)获得对计划的承诺;
    (4)维护该计划。[!--empirenews.page--]
    项目策划可以理解为整个软件研制过程的剧本,其规定了“WWWHI0”——(When、Who、Where、How、Input、Output)六个要素,即规定时间内安排项目人员及相关管理人员在一定环境下按照软件工程化的方法,以项目的早期需求或软件研制任务书为输入,依靠项目软件经理与所级主管领导、项目总师、科研开发部、质量管理部、设计师、同行专家经过多方协调,在需求管理、软件生命周期、代码规模估计、文档规模估计、工作量估计、进度、风险管理、培训管理、数据测量、数据管理等达成一致.输出整个项目的软件开发计划。
    初期的计划往往无法做到尽善尽美,需求和承诺的更改,不准确的前期估计都会影响计划的实施,导致项目计划需要在过程中调整甚至重新制定,因此对于研制周期较长、软件模块之间存在复杂依赖关系的项目,需要分每一阶段进行更细化的项目策划。
    配置管理紧紧依赖于软件开发计划,目的是利用配置标识、配置控制、配置状态纪文和配置审核建立和维护工作产品的完整性。整个软件生命周期中,配置管理起到“数据库”和“录像机”的作用。首先组织级配置管理员规定三类基线:功能基线、分配基线、产品基线;规定三类文件存储库:开发库、受控库、产品库 然后项目级配置管理员规定基线下的工作产品,如技术文档、软件源代码及可执行程序、评审报告等,根据软件研制阶段不同分别放置于对应基线下的库中。组织级和项目级配置管理员进行合理计划,输出配置管理计划。
    配置管理工作不能误认为仅仅是档案工作,作为组织级项目配置管理员,其职责为:
    (1)定制标准化的开发流程;
    (2)定制访问控制、变更控制的条例;
    (3)监督配置管理事件并驱动相应的对策;
    (4)软件配置管理工具的日常管理与维护。
    作为项目级配置管理员,其职责为:
    (1)提交配置管理汁划;
    (2)各配置项的管理与维护:
    (3)执行版本控制和变更控制方案;
    (4)完成配置管理阶段工作报告。
    过程与产品质量保证是从制度和规范上严格保证了软件工程化的实施。质量管理人员应该具备软件研制开发的经验,熟悉各种软件的研制流程。首先建立对研制过程、工作产品的评价标准;其次通过检查标识并文档化不符合项,追踪不符合项的闭环;然后定期将软件研制过程的质量情况通报整个项目组和高层,并做出阶段总结报告。
    项目软件经理、组织级/项目级配置管理员、质量保证人员三者应该及时沟通,从不同的角度管理软件研制项目组成员,包括相互之间的监督,促使软件研制过程严格按照GJB5000A二级标准执行。他们也需要按阶段或定期向项目总师、部门领导以及所领导汇报软件工程化的实施情况以获得上级对项目的支持。
1.3 软件项目研制过程
    项目策划和配置管理虽然已经定义了流程化或模板式的操作方法,但大部分项目软件人员会犯“先做事,后补义档”的错误。因为对于总师、分系统负责人、设计师等项目组技术人员来说,他们更关注如何能够促进软件研制过程又好又快的进行。为了这个目的,必须重视需求管理(REQM)、项曰监控(PMC)、测量与分析(MA)这三个工程过程域。
    下面以一个瀑布模型的软件研制过程为例说明如何进行过程中的监控。
    项目监控从图1中的软件需求分析阶段开始直至项目结束。项目监控过程中,设计师和管理人员需要提供个人工作周报,记录自己实际的工作完成情况;在双周或整月时,项目软件经理组织项目组成员交流项目情况并记录;阶段结束后,组织针对阶段工作产品的评审会,然后输出里程碑报告。管理人员对照《软件开发计划》中的进度计划、风险管理计划、数据管理计划、利益相关方参与计划等文档监控进度偏差、工作量偏差、规模偏差、风险变化、培训情况、评审状况、问题数量和回归状况。一旦出现偏差加大的趋势,就需要及时开会交流,查明原因,迅速纠偏。


    测量与分析更加详细地规定了对于能够证明过程的文档的采集和存储方法,而且需要对采集数据汇总后进行统计分析,将分析结果,如偏差、趋势、错误数目等展示给项目组成员和高层领导,由他们进行项目开发的决策。
    项目监控是手段,测量与分析为辅助,需求管理则是最终目的。结合图1,需求在整个软件研制周期内不可能是一成不变的,是逐步细化的。用户需求是第一步,随后软件研制任务书将用户需求工程化,需求规格说明对任务书的需求细化,设计说明对需求规格说明的需求细化,软件源代码将设计说明对应到代码。单元测试、集成测试、系统测试是对细化后的需求进行回归。根据GJB438B-2009中的《软件需求规格说明》模板,需求包括10类技术需求和4类非技术需求。非技术类需求一般可以得到客观保证,因此不会出现大的变动,可以暂不纳入需求跟踪矩阵。技术需求由于项目研制情况会出现变化,需要纳入需求跟踪矩阵进行管理,确保软件工作产品巾需求能够进行双向追溯。一旦需求变更状况时,及时记录并且上报整个项目组,获得项目组的一致认可。[!--empirenews.page--]
1.4 项目管理信息化手段的应用
    工欲善其事,必先利其器。软件工程化管理主要通过文档来反映过程。如果通过传统的人工撰写文档和凡事开会沟通的方式进行软件项目管理的话,将会大大增加管理人员和设计师人员的工作量,况且这种方式的效率是十分低下的。因此有必要应用先进的项目管理信息化工具。
    目前,关键科技公司推出专门针对GJB5000A二级软件工程化产品的解决方案,包括KPFLOW、KRFLOW、KCFLOW和KTFLOW四类工具:
    (1)KPFLOW:对软件项目的进度、成本、质量、资源等情况进行集成管理的平台。其主要功能包括:任务分配与跟踪、项目估计、项目周报和个人周报记录、问题与风险管理、项目度量分析。该平台支持系统建模,即意味着可以针对不同项目设计对应的模板和模块。该平台主要体现PP、PMC、MA和PPOA四个过程域的信息化管理;
    (2)KRFLOW:需求管理工具,其主要功能包括:需求的获取和编辑、需求跟踪和分析、变更建议系统、基线管理。该软件主要实现REQM过程域的信息化管理工作;
    (3)KCFLOW:确保软件项目生存周期内产品的完整性、一致性和可追溯性。其主要功能包括:配置计划管理、变更控制、版本管理、产品依赖关系和一致性管理、软件问题跟踪管理、软件配置状态审计。该软件实现了CM过程域的信息化管理,同时也可以管理REQM和PPQA两个过程域;
    (4)KTFLOW:测试过程的管理软件,其主要功能包括:梳理测试需求、制定测试计划、设计测试用例、执行测试过程、输出测试报告。该软件帮助测试人员在短时间内、大批量的完成多个项目的软件测试。
    这四类工具有两个特色:一是它们相互之间可以进行数据互联,帮助管理人员从不同角度监督研制过程;二是工具支持文档自动生成,项目组人员只需要按照GJB438B模板,填写部分软件研制过程的信息,即可输出标准化的文档。
    尽管具有功能强大的工具,但是在初期实践阶段,由于丁具普及的程度参差不一,我们先使用KCFLOW配置管理工具,先由组织级配置管理员负责使用,然后逐步对项目级配置管理员以及项目相关成员进行推广。在这个过程中,项目组成员需要不断的实践,逐步提高劳动效率。

2 嵌入式软件可靠性的提高
2.1 嵌入式软件可靠性
    软件工程化的核心是为了实现好的软件,而评价软件好坏的关键标准是软件可靠性。软件可靠性(Software Reliability)指的是在给定时间和特定环境要求下,软件完成规定功能的能力。针对在雷达系统中使用的嵌入式软件中,可靠性指标一般隶属于分系统或整机的指标,即在初始系统正常的条件下,在规定时间内,软件不引起系统故障的能力。
    由于嵌入式软件与硬件结合相当紧密,其可靠性指标具有很大的随机性,如外界环境变化、系统输入出错、使用不当以及软硬件设计的固有缺陷等原因都会导致软件可靠性指标降低,但是不能因为这些困难,使得嵌入式软件可靠性的保证成为空谈。软件可靠性是可以通过软件工程化的实践来提高。
2.2 软件可靠性的提高
    严格进行软件工程化管理是提高软件可靠性的必经之路。按照软件工程化要求,需要做好如下五方面工作:
    (1)前期项目组针对软件进行充分的论证和分析,争取将软件需求明确体现在软件研制任务书中;
    (2)设计过程中,尽量提高软件模块或单元的高内聚性、低耦合性。单元之间的接口尽量明晰,整个系统软件的复杂度不易过高,该拆分的就需要合理拆分为多个组成部分;
    (3)加强软件文档的健全性和准确性,按照GJB438B-2009《武器系统软件开发文档》的要求,软件研制过程中的文档不能有缺失、描述不清、前后矛盾等情况出现。这些文档必须经过专业人士的评审认可,并且问题回归后才能进行归档;
    (4)逐步建立软件标准化工作,包括文档标准化和代码模块标准化,这样可以有利的缩短研制周期,降低研制风险,提高软件产品的重用率;
    (5)切实加强嵌入式软件的测试工作。

3 软件测试
3.1 软件测试的重要性
    尽管软件工程化管理工作对软件质量的保证起到至关重要的作用,但是技术人员依然心存质疑,是否好的管理就能够确保高可靠性的软件。答案就在于软件测试。软件测试是将软件可靠性指标具体化的手段。从广义上讲,软件测试是为了尽快尽早地、不断地发现各种软件缺陷而开展的对软件及过程产品的验证和确认活动。从狭义上讲,软件测试包括4类测试:
    (1)针对软件源代码的静态测试和代码审查,确保软件源码符合GJB5369《航天型号C语言安全子集》或其他开发语言标准的要求;
    (2)针对《软件设计说明》对应的软件模块的单元测试和动态测试,确保软件模块的代码覆盖率达到100%;
    (3)针对《需求规格说明》对应的软件功能性能的集成测试,确保软件功能、性能、外部和内部接口等符合要求;
    (4)针对《软件研制任务书》对应的软件需求的系统测试或验收测试,确保软硬件各项指标符合用户的验收要求。
    在这个测试过程中,测试问题及问题数目、测试问题的归零情况、测试问题中文档问题和软件问题的比例、阶段测试的缺陷率、软件故障等级、软件失效概率等度量数据可以直观地反映出软件的可靠性状况。因此软件测试工作对于软件研制起到关键的保障作用。
3.2 软件测试工具的应用
    软件测试是一项有难度的专业技术工作,除了人工代码走查、问题记录分析工作之外,大部分工作需要专业的软件测试工具完成。
    英国LDRA公司的LDRA Testbed测试软件是目前针对嵌入式软件测试最有效的丁具之一。该软件主要可以实现代码评审、质量评审、设计评审、单元测试、测试确认以及整个过程的测试管理功能。代码评审考察了软件源代码对编程规则的适应以及代码结构的合理性;质量评审分析了代码的圈复杂度、循环嵌套和不可达性,反映出代码的清晰性、可维护性和可测试性;设计评审包含接口分析、数据流分析、数据对象分析,确保了代码与《需求规格说明》的一致性;单元测试包含动态测试,主要测试代码的语句覆盖和分支覆盖程度;测试确认采用自动化的方法对于测试产生的问题进行回归和记录,自动输出测试用例集和软件测试报告。
    对于该丁具的具体使用上,需要注意两点,一是该软件还不能有针对性的自动生成测试用例,也就意味着我们需要针对前文提到的三类软件进行人工设计和输入测试用例,并将这些测试用例标准化后存入测试库中作为范例;二是该软件主要面对的是软件源码,因此如果遇到需要软硬件结合测试的情况,还需要使用实时在线测试工具,如RTInsight软件或半实物仿真测试平台等。
    软件测试工具可以极大的解放开发和编码人员,我们必须建立专业化的测试标准、测试平台、测试队伍,这样才可有效的保证软件产品的质量。

4 结束语
    软件工程化二级的实践在整个软件研制过程中是一个逐步深化,不断提升的过程。因此不能抱有“一劳永逸”的麻痹思想,而是应该加强实践,建立愈加完善的软件项目管理体系,同时切实做好软件测试工作,确保软件的高可靠性。相信只要通过科研工作者和管理者的努力,一定会使我们的软件工程化水平得到很大的提高!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭