CN106909500B - 机载软件开发过程中引入错误的检测方法和系统 - Google Patents

机载软件开发过程中引入错误的检测方法和系统 Download PDF

Info

Publication number
CN106909500B
CN106909500B CN201610250202.0A CN201610250202A CN106909500B CN 106909500 B CN106909500 B CN 106909500B CN 201610250202 A CN201610250202 A CN 201610250202A CN 106909500 B CN106909500 B CN 106909500B
Authority
CN
China
Prior art keywords
information
file
generating
segment
loading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610250202.0A
Other languages
English (en)
Other versions
CN106909500A (zh
Inventor
黄正兰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Publication of CN106909500A publication Critical patent/CN106909500A/zh
Application granted granted Critical
Publication of CN106909500B publication Critical patent/CN106909500B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种机载软件开发过程中引入错误的检测方法,包括:解析源代码文件信息以生成源文件列表;录入编译的软件版本信息,所述编译的软件版本信息包括编译判定结果;根据工程文件和所述源文件列表生成部件遗漏报告;根据链接器命令文件生成内存重叠报告;根据加载结果生成加载报告。本发明提供的机载软件开发过程中引入错误的检测方法,为评审机载软件开发过程提供依据,保证机载软件集成过程的输出是正确和完整的。本发明还提供了一种机载软件开发过程中引入错误的检测系统。

Description

机载软件开发过程中引入错误的检测方法和系统
技术领域
本发明涉及机载软件开发技术领域,特别涉及一种机载软件开发过程中引入错误的检测方法和系统。
背景技术
非机载软件研制过程中,软件开发环境大多采用集成开发环境(IDE,IntegratedDevelopment Environment)。集成开发环境是用于提供程序开发环境的应用程序,一般包括编辑器、编译器、链接器和加载器,是集成了代码编写功能、编译功能、链接功能以及加载功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套都可以叫集成开发环境,如微软的Visual Studio系列,Borland的C++Builder、Delphi系列等。
由于集成开发环境提供的默认配置、编译参数以及链接参数足以支持编译过程和链接过程,非机载软件的编译过程和链接过程极少被关注。但机载软件作为高安全性和高可靠性软件,其在开发过程中应确保源代码被正确编译和链接且没有引入错误,这要求集成开发环境在进行编译工作和链接工作时应分析编译器和链接器的输出。图1是软件集成开发环境的结构示意图,集成开发环境包括编辑器10、编译器11、链接器12以及加载器13。其中,编辑器10向编译器11提供源代码和编译指南,编译器11向链接器12提供目标代码,链接器12向加载器13提供可执行代码,加载器13在加载指南的指导下将可执行代码加载到目标机上。如图1所示,机载软件集成过程中引入错误包括编译器错误、链接器错误以及加载器错误三种。
DO-178C标准要求机载软件集成过程的输出是正确和完整的,通过评审机载软件开发过程中引入错误来保证机载软件集成过程中引入错误已经被检测并被消除,但DO-178C标准中却未说明如何检测机载软件开发过程中的引入错误。
发明内容
本发明所要解决的问题是提供一种机载软件开发过程中引入错误的检测方法,为评审机载软件开发过程提供依据,保证机载软件集成过程的输出是正确和完整的。
为解决上述问题,本发明提供一种机载软件开发过程中引入错误的检测方法,包括:解析源代码文件信息以生成源文件列表;录入编译的软件版本信息,所述编译的软件版本信息包括编译判定结果;根据工程文件和所述源文件列表生成部件遗漏报告;根据链接器命令文件生成内存重叠报告;根据加载结果生成加载报告。本发明提供的机载软件开发过程中引入错误的检测方法,能够检测出机载软件开发过程中引入的编译错误、链接错误以及加载错误,并对各类引入错误生成相应的报告作为评审机载软件开发过程的依据,从而保证机载软件集成过程的输出是正确和完整的。
可选的,所述编译的软件版本信息还包括集成开发环境信息、编译所使用的硬件环境信息、源代码信息、集成开发环境配置文件信息、集成开发环境操作手册信息、集成开发环境安装手册信息以及编译日志信息。
可选的,所述根据工程文件和所述源文件列表生成部件遗漏报告包括:录入工程文件;检查所述工程文件中的目标文件名和所述源文件列表中的源文件名是否一致;若一致,则判定不存在部件遗漏,否则判定存在部件遗漏;根据判定结果生成部件遗漏报告。
可选的,所述根据工程文件和所述源文件列表生成部件遗漏报告还包括:在判定存在部件遗漏时,在所述源文件列表中检索未生成目标文件的源文件信息。
可选的,所述根据链接器命令文件生成内存重叠报告包括:录入定义了段信息的链接器命令文件;记录反汇编命令;录入段地址信息;生成段地址表;检查各个段之间的地址是否重叠;检查段内符号是否重叠;若各个段之间的地址不重叠且段内符号也不重叠,则判定不存在内存重叠,否则判定存在内存重叠;根据判定结果生成内存重叠报告。
可选的,所述段信息包括段的起始地址、段的长度以及段的结束地址。
可选的,所述根据加载结果生成加载报告包括:录入加载的软件版本信息;录入加载结果;检查所述加载结果中显示的软件版本信息与所述加载的软件版本信息是否一致;若一致,则判定加载成功,否则判定加载失败;根据判定结果生成加载报告。
可选的,所述加载的软件版本信息包括可执行目标代码版本、参数数据文件、加载手册以及目标硬件信息。
本发明的另一个方面还提供了一种机载软件开发过程中引入错误的检测系统,其特征在于,包括:解析源代码文件信息以生成源文件列表的装置;录入编译的软件版本信息的装置,所述编译的软件版本信息包括编译判定结果;根据工程文件和所述源文件列表生成部件遗漏报告的装置;根据链接器命令文件生成内存重叠报告的装置;根据加载结果生成加载报告的装置。
根据本发明一个实施例的一种机载软件开发过程中引入错误的检测系统,其中,所述编译的软件版本信息还包括集成开发环境信息、编译所使用的硬件环境信息、源代码信息、集成开发环境配置文件信息、集成开发环境操作手册信息、集成开发环境安装手册信息以及编译日志信息。
根据本发明一个实施例的一种机载软件开发过程中引入错误的检测系统,其中,所述根据工程文件和所述源文件列表生成部件遗漏报告包括:录入工程文件;检查所述工程文件中的目标文件名和所述源文件列表中的源文件名是否一致;若一致,则判定不存在部件遗漏,否则判定存在部件遗漏;根据判定结果生成部件遗漏报告。
根据本发明一个实施例的一种机载软件开发过程中引入错误的检测系统,其中,所述根据工程文件和所述源文件列表生成部件遗漏报告还包括:在判定存在部件遗漏时,在所述源文件列表中检索未生成目标文件的源文件信息。
根据本发明一个实施例的一种机载软件开发过程中引入错误的检测系统,其中,所述根据链接器命令文件生成内存重叠报告包括:录入定义了段信息的链接器命令文件;记录反汇编命令;录入段地址信息;生成段地址表;检查各个段之间的地址是否重叠;检查段内符号是否重叠;若各个段之间的地址不重叠且段内符号也不重叠,则判定不存在内存重叠,否则判定存在内存重叠;根据判定结果生成内存重叠报告。
根据本发明一个实施例的一种机载软件开发过程中引入错误的检测系统,其中,所述段信息包括段的起始地址、段的长度以及段的结束地址。
根据本发明一个实施例的一种机载软件开发过程中引入错误的检测系统,其中,所述根据加载结果生成加载报告包括:录入加载的软件版本信息;录入加载结果;检查所述加载结果中显示的软件版本信息与所述加载的软件版本信息是否一致;若一致,则判定加载成功,否则判定加载失败;根据判定结果生成加载报告。
根据本发明一个实施例的一种机载软件开发过程中引入错误的检测系统,其中,所述加载的软件版本信息包括可执行目标代码版本、参数数据文件、加载手册以及目标硬件信息。
与现有技术相比,本发明具有以下优点:
本发明提供的机载软件开发过程中引入错误的检测方法,能够检测出机载软件开发过程中引入的编译错误、链接错误以及加载错误,并对各类引入错误生成相应的报告作为评审机载软件开发过程的依据,从而保证机载软件集成过程的输出是正确和完整的。
附图说明
图1是软件集成开发环境的结构示意图;
图2是本发明实施例的机载软件开发过程中引入错误的检测方法的流程示意图;
图3是本发明实施例的生成部件遗漏报告的流程示意图;
图4是本发明实施例的生成内存重叠报告的流程示意图;
图5是本发明实施例的生成加载报告的流程示意图。
具体实施方式
下面结合实施例及附图,对本发明作进一步地的详细说明,但本发明的实施方式不限于此。
图2是本发明实施例的机载软件开发过程中引入错误的检测方法的流程示意图,所述机载软件开发过程中引入错误的检测方法包括:
步骤S1,解析源代码文件信息以生成源文件列表。具体地,源代码编辑完成后,在用户设置好的源代码存放路径下检索所有符合要求格式的文件(例如以.c和.cpp结尾的文件),并将所有符合要求格式的文件生成源文件列表。
步骤S2,录入编译的软件版本信息,所述编译的软件版本信息包括编译判定结果。具体地,对源代码编译完成后,录入编译的软件版本信息进行保存。所述编译的软件版本信息中的编译判定结果是根据编译器的输出进行判定获得,包括编译通过和编译失败。所述编译的软件版本信息还包括集成开发环境信息、编译所使用的硬件环境信息、源代码信息、集成开发环境配置文件信息、集成开发环境操作手册信息、集成开发环境安装手册信息以及编译日志信息,上述信息可以确保所有的编译过程数据可以复现。录入上述编译的软件版本信息之后,可以生成编译报告,所述编译报告包括编译判定结果。
步骤S3,根据工程文件和所述源文件列表生成部件遗漏报告。图3是本发明实施例的生成部件遗漏报告的流程示意图,所述根据工程文件和所述源文件列表生成部件遗漏报告包括:
步骤S31,录入工程文件。集成开发环境生成相关的工程文件后,录入工程文件进行保存。
步骤S32,检查所述工程文件中的目标文件名和所述源文件列表中的源文件名是否一致。具体地,根据录入的工程文件检索工程文件中的目标文件名(例如以.o结尾的文件),并将检索到的目标文件名与步骤S1中的源文件名进行比对,检查每个目标文件名是否都有一个源文件名与其一致,以确保所有的源文件都生成了目标文件。
若每个目标文件名都有一个源文件名与其一致,则表明所有的源文件都生成了目标文件,执行步骤S33,判定不存在部件遗漏;否则表明有源文件未生成目标文件,执行步骤S34,判定存在部件遗漏。
步骤S35,根据判定结果生成部件遗漏报告。
在本实施例中,在判定存在部件遗漏时,还执行步骤S36,在所述源文件列表中检索未生成目标文件的源文件信息。所述部件遗漏报告包括未生成目标文件的源文件信息,以供用户参考。
步骤S4,根据链接器命令文件生成内存重叠报告。图4是本发明实施例的生成内存重叠报告的流程示意图,所述根据链接器命令文件生成内存重叠报告包括:
步骤S41,录入定义了段信息的链接器命令文件。软件链接完成后,录入链接器命令文件进行保存。链接器命令文件定义了段(Segment)信息,所述段信息包括段的起始地址、段的长度以及段的结束地址。
步骤S42,记录反汇编命令。可执行代码通过反汇编的方式显示各个段内的符号地址,段大小满足预先分配的要求。例如,workbench开发环境提供了反汇编命令“nmppc”,该命令以及使用的参数均被录入进行保存。
步骤S43,录入段地址信息。具体地,录入反汇编命令的显示信息进行保存。
步骤S44,生成段地址表。由于反汇编的符号包含了段类型(d、t、b等),自动根据段地址信息进行分类,包括.bss段、.data段、.common段以及.text段等,并且每一个类中将按照地址由小到大顺序进行排列。
步骤S45,检查各个段之间的地址是否重叠。根据段地址表生成各个段的地址区间,以此检查各个段之间的地址是否重叠。
步骤S46,检查段内符号是否重叠。对每个段内的符号进行地址检查,以检查段内符号是否重叠。
若各个段之间的地址不重叠且段内符号也不重叠,则执行步骤S47,判定不存在内存重叠;否则执行步骤S48,判定存在内存重叠。
步骤S49,根据判定结果生成内存重叠报告。
步骤S5,根据加载结果生成加载报告。图5是本发明实施例的生成加载报告的流程示意图,所述根据加载结果生成加载报告包括:
步骤S51,录入加载的软件版本信息。在对可执行代码进行加载前,录入加载的软件版本信息进行保存,所述加载的软件版本信息包括可执行目标代码版本、参数数据文件、加载手册以及目标硬件信息,所述目标硬件信息包括目标硬件的配置和属性。
步骤S52,录入加载结果。录入加载结果进行保存,所述加载结果可包含生成的加载日志和界面等。
步骤S53,检查所述加载结果中显示的软件版本信息与所述加载的软件版本信息是否一致。
若一致,则执行步骤S54,判定加载成功;否则执行步骤S55,判定加载失败。
步骤S56,根据判定结果生成加载报告。
根据步骤S2获得的编译报告、步骤S3获得的部件遗漏报告、步骤S4获得的内存重叠报告以及步骤S5获得的加载报告,针对软件集成过程召开软件集成过程评审会,从而确保集成过程的输出是正确的和完整的。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。

Claims (2)

1.一种机载软件开发过程中引入错误的检测方法,其特征在于,包括:
解析源代码文件信息以生成源文件列表;
录入编译的软件版本信息,所述编译的软件版本信息包括编译判定结果;
根据工程文件和所述源文件列表生成部件遗漏报告;
根据链接器命令文件生成内存重叠报告;
根据加载结果生成加载报告;
更具体的:
步骤S1,解析源代码文件信息以生成源文件列表;具体地,源代码编辑完成后,在用户设置好的源代码存放路径下检索所有符合要求格式的文件,并将所有符合要求格式的文件生成源文件列表;
步骤S2,录入编译的软件版本信息,所述编译的软件版本信息包括编译判定结果;具体地,对源代码编译完成后,录入编译的软件版本信息进行保存;所述编译的软件版本信息中的编译判定结果是根据编译器的输出进行判定获得,包括编译通过和编译失败;所述编译的软件版本信息还包括集成开发环境信息、编译所使用的硬件环境信息、源代码信息、集成开发环境配置文件信息、集成开发环境操作手册信息、集成开发环境安装手册信息以及编译日志信息,上述信息确保所有的编译过程数据复现;录入上述编译的软件版本信息之后,生成编译报告,所述编译报告包括编译判定结果;
步骤S3,根据工程文件和所述源文件列表生成部件遗漏报告;所述根据工程文件和所述源文件列表生成部件遗漏报告包括:
步骤S31,录入工程文件;集成开发环境生成相关的工程文件后,录入工程文件进行保存;
步骤S32,检查所述工程文件中的目标文件名和所述源文件列表中的源文件名是否一致;具体地,根据录入的工程文件检索工程文件中的目标文件名,并将检索到的目标文件名与步骤S1中的源文件名进行比对,检查每个目标文件名是否都有一个源文件名与其一致,以确保所有的源文件都生成了目标文件;
若每个目标文件名都有一个源文件名与其一致,则表明所有的源文件都生成了目标文件,执行步骤S33,判定不存在部件遗漏;否则表明有源文件未生成目标文件,执行步骤S34,判定存在部件遗漏;
步骤S35,根据判定结果生成部件遗漏报告;
在判定存在部件遗漏时,还执行步骤S36,在所述源文件列表中检索未生成目标文件的源文件信息;所述部件遗漏报告包括未生成目标文件的源文件信息,以供用户参考;
步骤S4,根据链接器命令文件生成内存重叠报告;所述根据链接器命令文件生成内存重叠报告包括:
步骤S41,录入定义了段信息的链接器命令文件;软件链接完成后,录入链接器命令文件进行保存;链接器命令文件定义了段信息,所述段信息包括段的起始地址、段的长度以及段的结束地址;
步骤S42,记录反汇编命令;可执行代码通过反汇编的方式显示各个段内的符号地址,段大小满足预先分配的要求;workbench开发环境提供了反汇编命令“nmppc”,该命令以及使用的参数均被录入进行保存;
步骤S43,录入段地址信息;具体地,录入反汇编命令的显示信息进行保存;
步骤S44,生成段地址表;由于反汇编的符号包含了段类型d、t、b,自动根据段地址信息进行分类,包括.bss段、.data段、.common段以及.text段,并且每一个类中将按照地址由小到大顺序进行排列;
步骤S45,检查各个段之间的地址是否重叠;根据段地址表生成各个段的地址区间,以此检查各个段之间的地址是否重叠;
步骤S46,检查段内符号是否重叠;对每个段内的符号进行地址检查,以检查段内符号是否重叠;
若各个段之间的地址不重叠且段内符号也不重叠,则执行步骤S47,判定不存在内存重叠;否则执行步骤S48,判定存在内存重叠;
步骤S49,根据判定结果生成内存重叠报告;
步骤S5,根据加载结果生成加载报告;所述根据加载结果生成加载报告包括:
步骤S51,录入加载的软件版本信息;在对可执行代码进行加载前,录入加载的软件版本信息进行保存,所述加载的软件版本信息包括可执行目标代码版本、参数数据文件、加载手册以及目标硬件信息,所述目标硬件信息包括目标硬件的配置和属性;
步骤S52,录入加载结果;录入加载结果进行保存,所述加载结果包含生成的加载日志和界面;
步骤S53,检查所述加载结果中显示的软件版本信息与所述加载的软件版本信息是否一致;
若一致,则执行步骤S54,判定加载成功;否则执行步骤S55,判定加载失败;
步骤S56,根据判定结果生成加载报告;
根据步骤S2获得的编译报告、步骤S3获得的部件遗漏报告、步骤S4获得的内存重叠报告以及步骤S5获得的加载报告,针对软件集成过程召开软件集成过程评审会,从而确保集成过程的输出是正确的和完整的。
2.根据权利要求1所述的机载软件开发过程中引入错误的检测方法,其特征在于,所述编译的软件版本信息还包括集成开发环境信息、编译所使用的硬件环境信息、源代码信息、集成开发环境配置文件信息、集成开发环境操作手册信息、集成开发环境安装手册信息以及编译日志信息。
CN201610250202.0A 2015-12-23 2016-04-21 机载软件开发过程中引入错误的检测方法和系统 Active CN106909500B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201511009710 2015-12-23
CN2015110097101 2015-12-23

Publications (2)

Publication Number Publication Date
CN106909500A CN106909500A (zh) 2017-06-30
CN106909500B true CN106909500B (zh) 2021-02-02

Family

ID=59206171

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610250202.0A Active CN106909500B (zh) 2015-12-23 2016-04-21 机载软件开发过程中引入错误的检测方法和系统

Country Status (1)

Country Link
CN (1) CN106909500B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111158694A (zh) * 2019-12-19 2020-05-15 杭州迪普科技股份有限公司 编译告警处理方法及装置
CN111736841B (zh) * 2020-05-25 2023-07-04 广东职业技术学院 一种基于移动互联网的应用集成开发方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1912848A (zh) * 2005-08-12 2007-02-14 中国科学院计算技术研究所 一种对编译器中的错误进行自动定位的方法
CN103559449A (zh) * 2013-11-15 2014-02-05 华为技术有限公司 一种代码改动的检测方法及装置
CN103902456A (zh) * 2014-04-09 2014-07-02 中国工商银行股份有限公司 测试脚本处理装置、系统及方法
CN104424088A (zh) * 2013-08-21 2015-03-18 腾讯科技(深圳)有限公司 软件的测试方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8935686B2 (en) * 2012-08-28 2015-01-13 Microsoft Corporation Error-code and exception-based function dispatch tables

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1912848A (zh) * 2005-08-12 2007-02-14 中国科学院计算技术研究所 一种对编译器中的错误进行自动定位的方法
CN104424088A (zh) * 2013-08-21 2015-03-18 腾讯科技(深圳)有限公司 软件的测试方法及装置
CN103559449A (zh) * 2013-11-15 2014-02-05 华为技术有限公司 一种代码改动的检测方法及装置
CN103902456A (zh) * 2014-04-09 2014-07-02 中国工商银行股份有限公司 测试脚本处理装置、系统及方法

Also Published As

Publication number Publication date
CN106909500A (zh) 2017-06-30

Similar Documents

Publication Publication Date Title
US8799868B2 (en) Method and apparatus for the performing unit testing of software modules in software systems
US8010946B2 (en) Apparatus for analysing and organizing artifacts in a software application
US7882495B2 (en) Bounded program failure analysis and correction
US20170039039A1 (en) System and method for model based technology and process for safety-critical software development
US9632754B2 (en) Auto generation and linkage of source code to test cases
US20130275946A1 (en) Systems and methods for test development process automation for a test harness
US7895575B2 (en) Apparatus and method for generating test driver
US20190243750A1 (en) Test reuse exchange and automation system and method
JP2015011372A (ja) デバッグ支援システム、方法、プログラム及び記録媒体
US20170315905A1 (en) Method for automatically validating data against a predefined data specification
CN106909500B (zh) 机载软件开发过程中引入错误的检测方法和系统
US20090217259A1 (en) Building Operating System Images Based on Applications
CN110096442B (zh) 代码调试方法、用户设备、存储介质及装置
CN114924737A (zh) 一种电池管理系统源代码集成测试方法、测试装置及电子设备
Ferreira et al. Making software product line evolution safer
US9176846B1 (en) Validating correctness of expression evaluation within a debugger
US8930765B2 (en) Systems and methods for feedback driven regression testing
US20110202906A1 (en) Compiling method and compiling program
CN116541308A (zh) 一种回归测试方法及系统
KR20120111618A (ko) Plc 명령어 테스트 장치 및 방법
KR102176133B1 (ko) 소프트웨어 테스트 케이스 자동 생성 방법 및 장치
CN114356783A (zh) 单元测试代码自动生成方法、装置、存储介质及设备
JP6369177B2 (ja) 開発支援プログラム,開発支援方法及び開発支援装置
CN111782220A (zh) 一种文件的检测方法和装置
JPWO2012049816A1 (ja) モデル検査装置、方法及びプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant