计算机软件中编程语言的合理选择及应用

2018-09-13 11:22葛昆
电脑知识与技术 2018年17期
关键词:编程语言计算机软件测试

葛昆

摘要:计算机软件在不同行业的设计过程中需要选取不同的编程架构,而软件测试过程中直接关系到计算机软件的各类问题。对国内外相关的软件测试的文献进行分析,对多项研究成果进行研究得出软件测试相关的两类问题:1)由于软件(编程语言的选取)而产生的差异性问题与后期测试方法有直接关系;2)由于行业及文化差异造成的编程规范等问题关系后期代码规范化;并且证明在计算机软件设计过程中,代码的实现与实际算法模型的选取有直接关系。

关键词:计算机软件;编程语言;测试;算法模型;编程规范

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)17-0092-03

1 概述

计算机软件已广泛应用于科学与工程的各个行业,如在核工业、医药及军事等领域的关键决策中起着重要的作用。例如,在核武器模拟中,由于其不能进行现场试验模拟,因此使用代码来确定各关键参数更改对爆炸结果的影响;气候模型的制定对气候进行预测并评估气候变化等有着直接的影响。此外,计算机在科学研究中作为研究结果的论证工具之一,直接关系着科研结果是否准确。在科学研究中所涉及的各类科研软件,由于其复杂性以及需要各类专业领域知识,科学家们通常自己开发这些程序或者与开发密切相关,但非专业化的开发人员在实际软件工程的设计中,由于缺乏专业的编程知识,往往会对科研软件最终质量产生影响。

软件测试作为软件开发质量的有效控制手段,直接关系着科研成果是否准确。软件测试是一个受到影响的活动,由于缺乏对软件的系统测试,微妙的故障仍然未被发现,这些微妙的故障可能导致程序输出更改,而不会导致程序崩溃。诸如一次性错误的软件故障导致了地震数据处理程序的精度损失,软件故障影响了坐标测量机(CMM)的性能;此外,由于软件故障,科学家们已经被迫收回已发表的科研成果。往往是由于在代码实现过程中产生的微笑的故障往往会直接造成研究人员对自己的研究成果产生怀疑。

本文以科学软件开发过程中所涉及的编程语言以及体系架构的选取进行分析研究。这是由于科学软件往往均是专业性较强、业务范围专一的计算机软件实现;为了开发科学软件,科学家首先开发离散模型,然后将这些离散化的模型转换为使用编程语言进行编码的算法。在所有这些阶段都可以引入故障。科学软件的开发者通常进行验证,以确保正确建模感兴趣的物理现象进行科学模型[1]。他们使用数学分析进行验证,以确保计算模型是否能正确运行;但科学软件开发人员很少进行系统测试来识别代码中的故障。Farrell等[2]人显示执行代码验证以识别代码与离散模型之间的差异的重要性。有时这种缺乏系统的测试是由这个软件提出的特殊测试挑战引起的[3]。

系统文献综述(SLR,Systematic Literature Review)是“评估和解释与特定研究问题或主题领域或感兴趣现象相关的所有可用研究的手段”,执行SLR的目标是有条不紊地审查和收集特定研究问题的研究结果,并帮助从业者制定循證指南。软件工程研究人员在各种软件工程领域采用SLR。Walia等人[4]采用SLR来识别和分类软件需求错误。 Engston等人[5]针对回归测试选择技术的实证评估进行了SLR评估,目的是“在联合行业—学术研究项目中寻求进一步研究的依据”。本文采用SLR的目的是确定科学软件测试过程中存在的问题,主要存在两类挑战:第一类是由于软件本身的特征造成的挑战,例如缺少oracle工程师为系统提供服务;第二类与软件工程师发挥主导作用的应用软件开发不同,是由科学家和/或科学家开发的科学软件在科学软件开发项目中发挥主导作用而发生的挑战。

2 SLR过程介绍

本章节按照文献[6]中所提的SLR过程指导为依据,根据实际软件工程经验,SLR相关流程主要包含三个阶段:1)用户规划SLR;2)SLR评审;3)形成评审报告。以下描述每个阶段所执行的任务。

2.1 用户规划SLR

1)问题

SLR主要目标是确定测试科学软件时面临的具体挑战,应对挑战以及未解决的挑战,本文通过以下研究问题,以达到最终研究目标:

RQ1:文献中如何定义的科学软件?

RQ2:科学软件或其开发中是否存在特殊的困难或缺陷测试?

RQ3:可以使用现有的测试方法来有效地测试科学软件吗?

RQ4:现有技术无法满足目标测试?

2)方案制定

审查协议规定了用于执行SLR的方法,在进行SLR之前定义评估协议可以降低研发人员的主观性。此外,审查协议规定了源程序选择、搜索过程、质量评估标准和数据提取策略等。

2.2 SLR评审

1)确定相关研究

软件质量评估问题包括如下内容:

A:该学习目标是否清楚地表达出来?

B:评估是否符合其既定目标和目的?

C:样本设计/案例/文件的目标选择是否已定义?

D:提供足够的证据来支持约束?

E:学习可以复制吗?

定性研究的相关质量评估如表1中所示:

2)数据提取与质量评估

我们使用从各类研究中提取数据,许多初级研究没有回答数据提取形式中的所有问题。我们提取了使用数据提取形式的初级研究提供的重要信息。

2.3 形成评审报告

通过对国内外相关的研究报告进行选取、分类,分别对2.1中所提的四个问题进行回答、统计,按照文献[6]中形成最终审查报告。

3 实验过程

3.1 问题提出

在实际的科学软件研发过程中,需要前期对软件需求分析进行多层次分析,首先需要明确所研发软件对象的具体含义,如科学软件的定义为:科学软件是具有大计算组件的软件,并为决策支持提供数据,通常包含如下两类解释:

1)为实现科学目标而编写的最终用户应用软件(如气候模型);

2)支持编写表达科学模型的代码和执行科学代码的工具(例如,MATLAB [7])。

而在实际科研过程中,科学软件定义根据不同的研究对象又赋予了不同的含义,Carver等人给出了基于正交分类[8]的科学软件定义,即以科研过程为目标撰写的研究软件或者为真实用户编写的业务软件(例如气候软件等)。

本文根据科学软件的实际研制过程中存在的问题进行归纳验证,主要验证以下两个问题:1)由于测试科学软件的特点而产生的软件问题;2)由于业务决策人员和软件工程师之间的文化差异而产生的挑战,具体描述如下:

1)测试由于科学软件的特点而产生的挑战:在科学软件测试过程中所产生的问题,问题具体可按照实际业务流程进行进一步的分类归纳;

2)测试由于科学家业务决策者和软件工程人员之间的文化差异而产生的挑战:在业务化较强的科学软件研发过程中,软件工程人员要以业务决策人员作为主导,各个阶段均需要业务决策人员进行确认,避免后期在功能上出现较大的偏差。

3.2 测试过程

本文通过对以上所提问题进行测试,通过单元测试、集成测试和系统测试对科学软件研制“编程语言”选择进行测试方法选择分析。如图1所示为根据本文所提的应用中所采用的测试方法的占用率统计,统计结果分析可见单元测试是业界使用最多的测试方法。

如图2所示为各个应用所采用的测试方法的数量的统计比率,结果显示在多项实际研究中所使用的测试方法(测试手段)均小于4种,其中统计结果有67%的应用仅仅使用一种测试方法:

3.3 结果分析

文献[9]给出了表1中RQ4的答案,分析了oracle问题作为解决的关键问题和需要进行有效的测试研究。

根据对现有国内外中各类软件所需开发语言的研究分析,总结得出如表2所示的各类应用软件的编程语言统计分析[10-17]。

4 结论

本文对国内外相关的软件编程语言选取的文献进行了分析研究,确定了测试科学软件时面临的具体挑战,如何应对挑战以及未解决的挑战,并通过以下四方面进行了总结。

1)如何在计算机科学中界定科学软件?所谓科学软件被定义为具有大计算组件的软件,此外,科学软件通常由科学家和软件开发人员组成的多学科小组进行开发;

2)科学软件或其开发难题有哪些特殊或缺陷?在科学软件测试中确定了两大类挑战:①测试由于科学软件特征而产生的挑战;②科学家与软件工程界之间文化差异所产生的挑战;

3)使用现有的测试方法来有效测试科学软件吗?研究报告描述了科学软件开发中不同层次的抽象测试,如单元测试,系统测试和集成测试。很少有研究报告使用单元测试框架,许多研究报告说使用伪oracle或实验结果来减轻缺乏一个oracle的问题;

4)是否存在现有技术无法满足的挑战?科学软件对测试构成特殊挑战,通过应用软件工程师通常使用的测试技术可以克服这些挑战中的一些挑战,而科学家&开发人员需要将这些测试技术纳入其软件开发过程,由于科学软件的特点。有些挑战是独一无二的,软件工程师在开发科学软件的测试技术时,需要考虑这些特殊挑战。

参考文献:

[1]Murphy C, Raunak M S, King A, et al.Kaiser, G, Lee I, Sokolsky O, Clarke L., Osterweil, L., On effective testing of health care simulation software. In: Proceedings of the 3rd Workshop on Software Chen S, Imbriano C, Engineering in Health Care. SEHC 11. ACM, New York, NY, USA, 2011:40–47.

[2]Farrell P E, Piggott M D, Gorman G J, et al.C. R., Bond, T. M., Automated continuous verification for numerical simulation[C]. Geoscientific Model Development,2011, 4(2): 435–449.

[3]Easterbrook S M. Climate change: a grand software challenge. In: Proceedings of the FSE/SDP Workshop on Future of Software Engineering Research[C]. FoSER 10. ACM, New York, NY, USA,2010:99–104.

[4]Walia G S, Carver J C.A systematic literature review to identify and classify software requirement errors[J]. Information and Software Technology ,2009,51 (7): 1087-1109.

[5]Engstr¨om E, Runeson P, Skoglund M, A systematic review on regression test selection techniques[J]. Information and Software Technology,2010, 52 (1): 14 – 30.

[6]Kitchenham, B., Procedures for performing systematic reviews. Technical report, Keele University and NICTA,2004.

[7]Eddins S L, Automated software testing for matlab. Computing in Science & Engineering,2009, 11 (6): 48–55.

[8]Carver, Jeffrey R B D H, Hochstein L What scientists and engineers think they know about software engineering: A survey[C]. Tech. Rep. SAND2011-2196, Sandia National Laboratories,2011.

[9]Kelly D, Smith S, Meng N. Sept.-Oct. 2011. Software engineering for scientists[J]. Computing in Science & Engineering,2011, 13 (5): 7 –11.

[10]惲健. 基于计算机应用软件开发的Java编程语言探究[J]. 电脑编程技巧与维护,2016(16):26-27.

[11]宋秀琴,侯殿坤. JAVA编程语言在计算机软件开发中的应用[J]. 数字技术与应用,2016(6):80.

[12] 田萍,窦国强. 计算机软件开发过程中编程语言的合理选择[J]. 计算机光盘软件与应用,2014(23):60-61.

[13]张彤. 计算机应用软件开发中编程语言的选择研究[J]. 电子技术与软件工程,2015(21):57.

[14]孙天斌. 计算机应用软件开发中编程语言的选择[J]. 电子技术与软件工程,2017(3):60-61.

[15]王茂源. 煤巷锚杆支护设计混合智能系统研究[D].北京:中国矿业大学(北京),2016.

[16]李开元. 探究计算机应用软件开发过程中不同编程语言的影响[J]. 信息化建设,2015(6):48.

猜你喜欢
编程语言计算机软件测试
压力-体积转换在CFC编程语言中的实现解析
幽默大测试
Java编程语言的特点与应用
“摄问”测试
“摄问”测试
“摄问”测试
基于C语言的计算机软件编程
浅谈不同编程语言对计算机软件开发的影响
浅谈基于C语言的计算机软件程序设计
面向对象Web开发编程语言的的评估方法