×

建立飞行软件可靠性:测试、模型检查、约束求解、监控和学习。 (英语) Zbl 1298.68063号

小结:在本文中,我们讨论了一系列技术在NASA喷气推进实验室关键任务飞行软件验证中的应用。对于这种类型的应用程序,我们希望获得比标准软件测试更高的置信度。不幸的是,考虑到当前的技术状态,特别是当努力受到飞行项目的紧迫截止日期和资源限制的限制时,即使是指定良好的独立模块(如文件系统)(耦合更紧密或更难指定的模块更少),也不可能对其正确性进行严格的形式化证明。这意味着我们必须在传统测试和证明之间寻找一种切实可行的替代方案,以优化严格性和覆盖率。我们在这里描述的方法基于测试、模型检查、约束求解、监控和有限状态机学习,以及静态代码分析。我们在文件系统领域获得的结果令人鼓舞,并表明对于具有复杂数据结构的程序的更复杂属性,使用约束求解器来指导和分析执行可能更为有益(例如,在测试中,即使是通过模型检查工具执行)而不是将程序和属性转换为一组约束,如在基于抽象和有界模型检查器中。我们在非文件系统飞行软件模块方面的经验表明,即使关键问题从测试生成和选择转移到测试评估,从传统静态形式化方法中进一步移除的方法也可以得到形式化方法的帮助,但测试工程师和软件开发人员很容易采用。

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
76-04 流体力学相关问题的软件、源代码等
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] 关于静态驱动程序验证程序:http://www.microsoft.com/whdc/DevTools/tools/SDV.mspx ·Zbl 1032.68868号
[2] ACL2版本6.3:http://www.cs.utexas.edu/moore/acl2 ·Zbl 1203.68093号
[3] AdaCore:SPARK专业版。http://www.adacore.com/sparkpro/
[4] CodeSonar:GrammaTech静态分析。http://www.grammatech.com/products/codesonar
[5] Hyper-V-Microsoft:http://www.microsoft.com/servers/hyper-v-server/default.mspx
[6] JPL可靠软件实验室(LaRS):http://lars-lab.jpl.nasa.gov ·Zbl 0329.68018号
[7] 火星科学实验室:http://mars.jpl.nasa.gov/msl
[8] Open Group基本规范第6版:http://www.opengroup.org/onlinepubs/009695399/
[9] 软件开发测试和静态分析工具:Coverity。http://www.coverity.com网站
[10] 用于软件安全性和可靠性的源代码分析工具:Klockwork。http://klocwork.com
[11] VCC:A C验证器-微软研究:http://research.microsoft.com/en-us/projects/vcc/
[12] Ammann,P.,Offutt,J.:软件测试简介。剑桥大学出版社,剑桥(2008)·Zbl 1154.68042号 ·doi:10.1017/CBO9780511809163
[13] Andrews,J.,Li,F.,Menzies,T.:夜鹰:两级遗传-随机单元测试数据生成器。自动。柔和。工程144-153(2007)·Zbl 0243.94039号
[14] Andrews,J.H.,Groce,A.,Weston,M.,Xu,R.-G.:随机测试运行长度和有效性。摘自:自动化软件工程,第19-28页(2008年)
[15] Andrews,J.H.,Haldar,S.,Lei,Y.,Li,C.H.F.:随机单元测试的工具支持。摘自:《第一届随机测试国际研讨会论文集》,第36-45页。波特兰(2006)
[16] Angluin,D.:从查询和反例中学习正则集。信息。计算。75(2), 87106 (1987) ·Zbl 0636.68112号
[17] Ball,T.、Rajamani,S.:自动验证接口的时间安全属性。摘自:SPIN软件模型检查研讨会,第103-122页(2001)·Zbl 0985.68641号
[18] Barringer,H.、Groce,A.、Havelund,K.、Smith,M.:日志文件的形式化分析。J.航空公司。计算。信息。Commun公司。7(11), 365-390 (2010) ·数字对象标识代码:10.2514/1.49356
[19] Barringer,H.、Havelund,K.、Rydeheard,D.、Groce,A.:运行时验证的规则系统:简短教程。参见:第九届运行时验证国际研讨会论文集(RV'09),LNCS,第5779卷,第1-24页。施普林格(2009)
[20] Barringer,H.、Rydeheard,D.、Havelund,K.:运行时监控的规则系统:从Eagle到RuleR。载:《第七届运行时验证国际研讨会论文集》(RV'07),LNCS,第4839卷,第111-125页。温哥华施普林格(2007)·Zbl 1203.68093号
[21] Barringer,H.、Rydeheard,D.E.、Havelund,K.:运行时监控的规则系统:从Eagle到RuleR。J.日志。计算。20(3), 675-706 (2010) ·Zbl 1203.68093号 ·doi:10.1093/log.com/exn076
[22] Beck,K.:测试驱动开发:示例。艾迪森·卫斯理,雷丁(2002)
[23] Beizer,B.:软件测试技术。国际汤姆森计算机出版社,波士顿(1990)·兹比尔1012.68569
[24] Beyer,D.,Chlipala,A.J.,Henzinger,T.A.,Jhala,R.,Majumdar,R.:从反例中生成测试。摘自:软件工程国际会议,第326-335页(2004年)
[25] Biere,A.:从Limmat到Nanosat的演变。ETH Zŭrich计算机科学系技术报告444(2004)
[26] Biere,A.,Cimatti,A.,Clarke,E.M.,Zhu,Y.:没有BDD的符号模型检查。摘自:《系统构建和分析的工具和算法》,第193-207页(1999)
[27] Biermann,A.W.,Feldman,J.A.:从有限状态机的行为样本合成有限状态机。IEEE传输。计算。21, 592-597 (1972) ·Zbl 0243.94039号 ·doi:10.1109/TC.1972.5009015
[28] Boonstoppel,P.,Cadar,C.,Engler,D.:Rwset:基于约束的测试生成中的攻击路径爆炸。In:《系统构建和分析的工具和算法》,第351-366页(2008)
[29] 布鲁克斯:《神话人月:软件工程论文》,20周年纪念版。Addison-Wesley Professional(1995年)
[30] Cadar,C.、Dunbar,D.、Engler,D.:Klee:为复杂系统程序自动生成高覆盖率测试。摘自:《操作系统设计与实现》,第209-224页(2008年)
[31] Cadar,C.,Ganesh,V.,Pawlowski,P.,Dill,D.,Engler,D.:EXE:自动生成死亡输入。摘自:计算机和通信安全会议,第322-335页(2006年)
[32] Chaki,S.、Clarke,E.M.、Groce,A.、Jha,S.和Veith,H.:C.中软件组件的模块化验证。in:软件工程国际会议,第385-395页(2003)
[33] Chen,F.,Rošu,G.:MOP:一种高效通用的运行时验证框架。In:面向对象编程、系统、语言和应用(OOPSLA’07)(2007)
[34] Chen,Y.,Groce,A.,Zhang,C.,Wong,W.-K.,Fern,X.,Eide,E.,Regehr,J.:驯服编译器模糊器。摘自:ACM SIGPLAN编程语言设计与实现会议,第197-208页(2013)
[35] Ciupa,I.,Leitner,A.,Oriol,M.,Meyer,B.:面向对象软件随机测试的实验评估。摘自:Rosenblum,D.S.,Elbaum,S.G.(编辑)软件测试与分析国际研讨会,第84-94页。ACM(2007)
[36] Claessen,K.,Hughes,J.:QuickCheck:用于随机测试haskell程序的轻量级工具。载:ICFP,第268-279页(2000年)
[37] Clarke,E.,Grumberg,O.,Peled,D.:模型检查。麻省理工学院出版社,剑桥(2000)·Zbl 0847.68063号
[38] Clarke,E.M.,Emerson,E.:使用时序逻辑设计和合成同步骨架。摘自:程序逻辑研讨会,第52-71页(1981年)·Zbl 0546.68014号
[39] Clarke,L.A.,Rosenblum,D.S.:软件开发中运行时断言检查的历史观点。ACM SIGSOFT软件。工程注释31(3),25-37(2006)·doi:10.145/1127878.1127900
[40] Corbett,J.、Dwyer,M.、Hatcliff,J.,Laubach,S.、Pasareanu,C.S.、Zheng,H.:Bandera:从Java源代码中提取有限状态模型。载:国际软件工程会议,第439-448页(2000年)
[41] Csallner,C.,Smaragdakis,Y.:JCrasher:Java自动健壮性测试仪。柔和。实际。实验34(11),1025-1050(2004)·doi:10.1002/spe.602
[42] de Moura,L.,Bjorner,N.:Z3:高效SMT求解器。摘自:系统构建和分析工具和算法会议,第337-340页(2008年)
[43] DeMillo,R.A.、Lipton,R.J.、Sayward,F.G.:测试数据选择提示:对实践程序员的帮助。计算机4(11),34-41(1978)
[44] Doong,R.-K.,Frankl,P.G.:测试面向对象程序的ASTOOT方法。ACM事务处理。柔和。工程方法。3(2), 101-130 (1994) ·数字对象标识代码:10.1145/192218.192221
[45] Duran,J.W.,Ntafos,S.C.:随机测试的评估。IEEE传输。柔和。工程10(4),438-444(1984)·Zbl 0552.60046号 ·doi:10.1109/TSE.1984.5010257
[46] Dwyer,M.B.,Elbaum,S.G.,Person,S.,Purandare,R.:平行随机状态空间搜索。摘自:软件工程国际会议,第3-12页(2007年)
[47] Een,N.、Sorensson,N.:可扩展SAT解决方案。摘自:《可满足性测试(SAT)理论与应用研讨会》,第502-518页(2003年)·Zbl 1204.68191号
[48] Erickson,J.,Joshi,R.:证明ACL2中Flash文件系统的正确性。未出版手稿(2006年)
[49] Gligoric,M.,Groce,A.,Zhang,C.,Sharma,R.,Alipour,A.,Marinov,D.:使用覆盖标准比较非充分测试套件。摘自:软件测试与分析国际研讨会,第302-313页(2013)
[50] Godefroid,P.:Verisoft:并发软件自动分析工具。摘自:《计算机辅助验证》,第172-186页(1997年)
[51] Godefroid,P.:合成动态测试生成。摘自:《程序设计语言原理》,第47-54页(2007年)
[52] Godefroid,P.,Klarlund,N.,Sen,K.:DART:直接自动化随机测试。《编程语言设计与实现》,第213-223页(2005年)
[53] Groce,A.:(快速)通过路径覆盖测试测试仪。In:动态分析研讨会(2009年)
[54] Groce,A.、Fern,A.、Pinto,J.、Bauer,T.、Alipour,A.、Erwig,M.、Lopez,C.:基于自适应编程的轻量级自动测试。摘自:IEEE软件可靠性工程国际研讨会,第161-170页(2012)
[55] Groce,A.,Havelund,K.,Smith,M.H.:从脚本到规范:飞行软件测试工作的演变。摘自:第32届国际软件工程会议(ICSE’10),第129-138页。ACM SIG,开普敦(2010)
[56] Groce,A.、Holzmann,G.、Joshi,R.:随机差异测试是正式验证的前奏。摘自:软件工程国际会议,第621-631页(2007年)
[57] Groce,A.、Holzmann,G.、Joshi,R.、Xu,R.-G:通过测试、模型检查和约束求解,让飞行软件完成任务。载:《形式核查中的制约因素国际研讨会》,第1-15页(2008年)
[58] Groce,A.,Joshi,R.:利用程序分析中的痕迹。In:《系统构建和分析的工具和算法》,第379-393页(2006)
[59] Groce,A.,Joshi,R.:用动态分析扩展模型检查。摘自:国际验证、模型检查和摘要解释会议,第142-156页(2008年)·Zbl 1138.68450号
[60] Groce,A.,Joshi,R.:随机测试和模型检查:构建非确定性探索的通用框架。摘自:动力分析研讨会,第22-28页(2008年)
[61] Groce,A.,Zhang,C.,Alipour,A.,Eide,E.,Chen,Y.,Regehr,J.:救命,救命,我被镇压了!抑制器在软件测试中的重要性。摘自:IEEE软件可靠性工程国际研讨会,第390-399页(2013年)
[62] Groce,A.,Zhang,C.,Eide,E.,Chen,Y.,Regehr,J.:群体测试。摘自:软件测试与分析国际研讨会,第78-88页(2012年)
[63] 哈姆雷特:在编译器的帮助下测试程序。IEEE传输。柔和。工程3(4),279-290(1977)·Zbl 0359.68009号
[64] Hamlet,R.,Taylor,R.:分区测试不会激发信心。IEEE传输。柔和。工程16(12),1402-1411(1990)·数字对象标识代码:10.1109/32.62448
[65] 哈姆雷特,R.:随机测试。摘自:《软件工程百科全书》,第970-978页。威利(1994)
[66] 哈姆雷特,R.:当只有随机测试才能做到的时候。摘自:《随机测试国际研讨会》,第1-9页(2006年)
[67] Havelund,K.:C程序的运行时验证。参见:《第一届TestCom/FATES会议记录》,LNCS,第5047卷。施普林格,东京(2008)
[68] Havelund,K.,Rošu,G.:安全性能的有效监测。柔和。技术工具。交易。6(2), 158-173 (2004) ·doi:10.1007/s10009-003-0117-6
[69] Heimdahl,M.P.E.,Rayadurgam,S.,Visser,W.,George,D.,Gao,J.:使用模型检查器自动生成测试序列:案例研究。参加:软件测试正式方法国际研讨会(FATES)(2003年)
[70] Henzinger,T.A.、Jhala,R.、Majumdar,R.和Sutre,G.:懒惰抽象。摘自:《程序设计语言原理》,第58-70页(2002年)·Zbl 1323.68374号
[71] Hoare,T.:验证编译器:对计算研究的巨大挑战。《美国医学会期刊》50(1),63-69(2003)·Zbl 1032.68868号 ·doi:10.1145/602382.602403
[72] Holzmann,G.:用户定义属性的静态源代码检查。参加:集成设计和工艺技术会议(2002年)
[73] Holzmann,G.:SPIN模型检查器:入门和参考手册。Addison-Wesley Professional(2003年)·Zbl 1032.68868号
[74] 霍尔兹曼:十的幂:开发安全关键代码的规则。IEEE计算。39(6), 95-97 (2006) ·doi:10.1109/MC.2006.212
[75] Holzmann,G.,Joshi,R.:模型驱动的软件验证。摘自:SPIN软件模型检查研讨会,第76-91页(2004年)·Zbl 1125.68366号
[76] Holzmann,G.,Joshi,R.,Groce,A.:Swarm验证。摘自:自动化软件工程,第1-6页(2008年)
[77] Holzmann,G.,Joshi,R.,Groce,A.:使用群工具解决大型验证问题。摘自:SPIN软件模型检查研讨会,第134-143页(2008)
[78] Holzmann,G.J.、Joshi,R.、Groce,A.:群体验证技术。IEEE传输。柔和。工程37(6),845-857(2011)·doi:10.1109/TSE.2010.110
[79] Joshi,R.,Holzmann,G.:一个微型文件系统:构建一个可验证的文件系统。参加:验证软件会议:理论、工具、实验(2005年)·Zbl 1123.68336号
[80] Kaufmann,M.、Manolios,P.、Moore,J.S.:计算机辅助推理:一种方法。诺威尔·克鲁沃(2000)
[81] Kim,M.、Choi,Y.、Kim,Y.和Kim,H.:闪存设备驱动程序的正式验证-经验报告。摘自:SPIN软件模型检查研讨会,第144-159页(2008)
[82] Kim,M.、Choi,Y.、Kim,Y.和Kim,H.:通过模型检查技术预测试闪存设备驱动程序。摘自:软件测试、验证和确认国际会议,第475-484页(2008年)
[83] Kim,M.,Kannan,S.,Lee,I.,Sokolsky,O.:Java-MaC:Java的运行时保证工具。参见:ENTCS第一届运行时验证国际研讨会(RV'01)会议记录,第55卷,第2期。Elsevier(2001)·Zbl 1073.68552号
[84] Kim,M.、Kim,Y.和Kim,H.:通过基于SAT的模型检查器对闪存设备驱动程序进行单元测试。摘自:自动化软件工程,第198-207页(2008)
[85] King,J.C.:符号执行和程序测试。Commun公司。ACM 19(7),385-394(1976)·Zbl 0329.68018号 ·doi:10.1145/360248.360252
[86] Klein,G.、Elphinstone,K.、Heiser,G.,Andronick,J.、Cock,D.、Derrin,P.、Elkaduwe,D.、Engelhardt,K.,Kolanski,R.、Norrish,M.、Sewell,T.、Tuch,H.、Winwood,S.:sel4:操作系统内核的形式验证。In:ACM操作系统原理研讨会(2009年)
[87] Kroening,D.,Clarke,E.M.,Lerda,F.:检查ANSI-C程序的工具。In:《系统构建和分析的工具和算法》,第168-176页(2004)·Zbl 1126.68470号
[88] Lei,Y.,Andrews,J.H.:随机单元测试用例的最小化。摘自:软件可靠性工程国际研讨会,第267-276页(2005)
[89] Majumdar,R.,Sen,K.:混合调和试验。摘自:软件工程国际会议,第416-426页(2007年)
[90] McKeeman,W.:软件的差异测试。数字。技术J.数字。设备公司10(1),100-107(1998)
[91] Mercer,E.,Jones,M.:使用GNU调试器检查机器代码的模型。参加:SPIN模型检查软件研讨会(2005年)
[92] Miller,B.P.,Fredriksen,L.,So,B.:UNIX实用程序可靠性的实证研究。Commun公司。ACM 105(33(12)),32-44(1990)
[93] Moskewicz,M.W.,Madigan,C.F.,Zhao,Y.,Zhang,L.,Malik,S.:Chaff:设计一个高效的SAT求解器。摘自:设计自动化会议,第530-535页(2001年)
[94] Musuvathi,M.,Park,D.,Chou,A.,Engler,D.,Dill,D.:CMC:模型检查真实代码的实用方法。参加:操作系统设计与实现研讨会(2002年)
[95] Necula,G.、McPeak,S.、Rahul,S.和Weimer,W.:CIL:用于分析和转换C程序的中间语言和工具。收录于:国际编译器构造大会,第213-228页(2002年)·Zbl 1051.68756号
[96] Nipkow,T.,Paulson,L.C.,Wenzel,M.:Isabelle/HOL-高阶逻辑的证明助手,LNCS,第2283卷。斯普林格(2002)·Zbl 0994.68131号
[97] Offutt,J.,Abdurazik,A.:突变2000:二十世纪和二十一世纪的突变测试(2000)
[98] Pacheco,C.,Lahiri,S.K.,Ernst,M.D.,Ball,T.:反馈定向随机测试生成。摘自:软件工程国际会议,第75-84页(2007年)
[99] Pettichord,B.:可测试性设计。In:太平洋西北软件质量会议(2002)
[100] Qadeer,S.,Rehof,J.:并发软件的上下文模型检查。In:《系统构建和分析的工具和算法》,第93-107页(2005)·Zbl 1087.68598号
[101] Reeves,G.,Neilson,T.:火星漫游者精神闪光异常。In:IEEE航空航天会议(2005)
[102] Dwyer,R.M.,Hatcliff,J.:茂物:一个可扩展的高模块模型检查框架。摘自:欧洲软件工程会议/软件工程基础研讨会,第267-276页(2003)
[103] Sen,K.,Marinov,D.,Agha,G.:CUTE:C的一个协调单元测试引擎。In:软件工程基础,第262-272页(2005)
[104] Smith,M.,Havelund,K.:RCAT的需求捕获。参见:第16届IEEE国际需求工程会议(RE’08)。IEEE计算机协会,巴塞罗那(2008)
[105] Tuch,H.、Klein,G.、Norrish,M.:类型、字节和分离逻辑。摘自:《程序设计语言原理》,第97-108页(2007年)·Zbl 1295.68094号
[106] 各种:NAND Flash应用笔记、白皮书和文章集。可在http://www.data-io.com/NAND/NANDApplicationNotes.asp
[107] 运行时验证:http://www.runtime-verification.org
[108] Visser,W.、Havelund,K.、Brat,G.、Park,S.J.、Lerda,F.:模型检查程序。自动。柔和。工程10(2),203-232(2003)·doi:10.1023/A:1022920129859
[109] Visser,W.,Păsăreanu,C.,Pelanek,R.:使用状态匹配为Java容器测试输入生成。摘自:软件测试与分析国际研讨会,第37-48页(2006)
[110] Xu,R.-G,Majumdar,R.,Godefroid,P.:使用长度抽象测试缓冲区溢出。摘自:软件测试与分析国际研讨会,第19-28页(2008年)
[111] Yang,J.,Sar,C.,Engler,D.:EXPLODE:用于查找严重存储系统错误的轻量级通用系统。摘自:《操作系统设计与实现》,第131-146页(2006年)
[112] Yang,J.、Sar,C.、Twohey,P.、Cadar,C.和Engler,D.:使用符号执行自动生成恶意磁盘。摘自:IEEE安全与隐私研讨会,第243-257页(2006)
[113] Yang,J.,Twohey,P.,Engler,D.,Musuvathi,M.:使用模型检查查找严重的文件系统错误。摘自:《操作系统设计与实现》,第273-288页(2004年)
[114] Yang,X.,Chen,Y.,Eide,E.,Regehr,J.:发现和理解C编译器中的错误。在:ACM SIGPLAN编程语言设计与实现会议,pp.283-294(2011)
[115] Zeller,A.、Hildebrandt,R.:简化和隔离故障诱导输入。IEEE传输。柔和。工程28(2),183-200(2002)·数字对象标识代码:10.1109/32.988498
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。