首页 > 最新文献

Proceedings of the 14th ACM SIGPLAN Workshop on Erlang最新文献

英文 中文
Linking unit tests and properties 链接单元测试和属性
Pub Date : 2015-08-30 DOI: 10.1145/2804295.2804298
Alex Gerdes, John Hughes, Nicholas Smallbone, Meng Wang
QuickCheck allows us to verify software against particular properties. A property can be regarded as an abstraction over many unit tests. QuickCheck uses generated random input data to test such properties. If a counterexample is found, it becomes immediately clear what we have tested. This is not the case when all tests pass, since we do not (and shall not) see the actual generated test cases. How can we be sure about what is tested? QuickCheck has the ability to gather statistics about the test cases, which is insightful. But still it does not tell us whether the particular unit test scenarios we have in mind are included. For this reason, we have developed a tool that can answer this question. It checks if a given unit test can be generated by a property, making it easier to judge the property's quality. We have applied our tool to an industrial use case of testing the AUTOSAR basic software modules and shows that it can handle complex models and large unit tests.
QuickCheck允许我们根据特定属性验证软件。一个属性可以被看作是对许多单元测试的抽象。QuickCheck使用生成的随机输入数据来测试这些属性。如果找到一个反例,我们测试的内容就会立即变得清晰。当所有测试都通过时,情况并非如此,因为我们没有(也不会)看到实际生成的测试用例。我们如何确定测试的是什么?QuickCheck有能力收集关于测试用例的统计信息,这是有洞察力的。但是它仍然没有告诉我们是否包含了我们所考虑的特定单元测试场景。出于这个原因,我们开发了一个工具来回答这个问题。它检查给定的单元测试是否可以由属性生成,从而更容易判断属性的质量。我们已经将我们的工具应用于测试AUTOSAR基本软件模块的工业用例,并表明它可以处理复杂的模型和大型单元测试。
{"title":"Linking unit tests and properties","authors":"Alex Gerdes, John Hughes, Nicholas Smallbone, Meng Wang","doi":"10.1145/2804295.2804298","DOIUrl":"https://doi.org/10.1145/2804295.2804298","url":null,"abstract":"QuickCheck allows us to verify software against particular properties. A property can be regarded as an abstraction over many unit tests. QuickCheck uses generated random input data to test such properties. If a counterexample is found, it becomes immediately clear what we have tested. This is not the case when all tests pass, since we do not (and shall not) see the actual generated test cases. How can we be sure about what is tested? QuickCheck has the ability to gather statistics about the test cases, which is insightful. But still it does not tell us whether the particular unit test scenarios we have in mind are included. For this reason, we have developed a tool that can answer this question. It checks if a given unit test can be generated by a property, making it easier to judge the property's quality. We have applied our tool to an industrial use case of testing the AUTOSAR basic software modules and shows that it can handle complex models and large unit tests.","PeriodicalId":266108,"journal":{"name":"Proceedings of the 14th ACM SIGPLAN Workshop on Erlang","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-08-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124635694","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 7
The implementation and use of a generic dataflow behaviour in Erlang 在Erlang中实现和使用通用数据流行为
Pub Date : 2015-08-30 DOI: 10.1145/2804295.2804300
Christopher S. Meiklejohn, P. V. Roy
We propose a new "generic" abstraction for Erlang/OTP that aids in the implementation of dataflow programming languages and models on the Erlang VM. This abstraction simplifies the implementation of "processing elements" in dataflow languages by providing a simple callback interface in the style of the gen_server and gen_fsm abstractions. We motivate the use of this new abstraction by examining the implementation of a distributed dataflow programming variant called Lasp.
我们为Erlang/OTP提出了一个新的“通用”抽象,它有助于在Erlang VM上实现数据流编程语言和模型。这个抽象通过提供gen_server和gen_fsm抽象风格的简单回调接口,简化了数据流语言中“处理元素”的实现。我们通过检查称为Lasp的分布式数据流编程变体的实现来激励这种新抽象的使用。
{"title":"The implementation and use of a generic dataflow behaviour in Erlang","authors":"Christopher S. Meiklejohn, P. V. Roy","doi":"10.1145/2804295.2804300","DOIUrl":"https://doi.org/10.1145/2804295.2804300","url":null,"abstract":"We propose a new \"generic\" abstraction for Erlang/OTP that aids in the implementation of dataflow programming languages and models on the Erlang VM. This abstraction simplifies the implementation of \"processing elements\" in dataflow languages by providing a simple callback interface in the style of the gen_server and gen_fsm abstractions. We motivate the use of this new abstraction by examining the implementation of a distributed dataflow programming variant called Lasp.","PeriodicalId":266108,"journal":{"name":"Proceedings of the 14th ACM SIGPLAN Workshop on Erlang","volume":"36 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-08-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133546428","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
Attribute grammars in Erlang Erlang中的属性语法
Pub Date : 2015-08-30 DOI: 10.1145/2804295.2804296
U. Norell, Alex Gerdes
Many functions take a value of a particular (recursive) data structure as input and compute an output value by traversing the structure and collect, combine, or update values in that data structure. Some examples are: collecting all hyperlink tags in a HTML tree, calculating the depth of a binary tree, or adding a prefix to every free variable name in an abstract syntax tree. When defining such functions we need to write code that takes care of traversing a data structure. This code is often repeated for functions that operate on the same data structure, and is often not essential for the operation we want to perform. This type of repetitive code is often referred to as boilerplate code. Abstraction is a way to remove this boilerplate code, for example by defining higher-order functions. Higher-order functions can be used to separate the boilerplate code from the essential parts. Common examples of higher order functions are map and fold.
许多函数接受特定(递归)数据结构的值作为输入,并通过遍历该结构并收集、组合或更新该数据结构中的值来计算输出值。例如:收集HTML树中的所有超链接标记,计算二叉树的深度,或者为抽象语法树中的每个自由变量名添加前缀。在定义这样的函数时,我们需要编写负责遍历数据结构的代码。对于操作同一数据结构的函数,这段代码经常重复,并且对于我们想要执行的操作通常不是必需的。这种类型的重复代码通常被称为样板代码。抽象是一种删除样板代码的方法,例如通过定义高阶函数。可以使用高阶函数将样板代码与基本部分分开。高阶函数的常见例子是map和fold。
{"title":"Attribute grammars in Erlang","authors":"U. Norell, Alex Gerdes","doi":"10.1145/2804295.2804296","DOIUrl":"https://doi.org/10.1145/2804295.2804296","url":null,"abstract":"Many functions take a value of a particular (recursive) data structure as input and compute an output value by traversing the structure and collect, combine, or update values in that data structure. Some examples are: collecting all hyperlink tags in a HTML tree, calculating the depth of a binary tree, or adding a prefix to every free variable name in an abstract syntax tree. When defining such functions we need to write code that takes care of traversing a data structure. This code is often repeated for functions that operate on the same data structure, and is often not essential for the operation we want to perform. This type of repetitive code is often referred to as boilerplate code. Abstraction is a way to remove this boilerplate code, for example by defining higher-order functions. Higher-order functions can be used to separate the boilerplate code from the essential parts. Common examples of higher order functions are map and fold.","PeriodicalId":266108,"journal":{"name":"Proceedings of the 14th ACM SIGPLAN Workshop on Erlang","volume":"66 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-08-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114656955","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
Performance portability through semi-explicit placement in distributed Erlang 通过在分布式Erlang中半显式放置实现性能可移植性
Pub Date : 2015-08-30 DOI: 10.1145/2804295.2804299
K. Mackenzie, Natalia Chechina, P. Trinder
We consider the problem of adapting distributed Erlang applications to large or heterogeneous architectures to achieve good performance in a portable way. In many architectures, and especially large architectures, the communication latency between pairs of virtual machines (nodes) is no longer uniform. We propose two language-level methods that enable programs to automatically adapt to heterogeneity and non-uniform communication latencies, and both provide information enabling a program to identify an appropriate node when spawning a process. We provide a means of recording node attributes describing the hardware and software capabilities of nodes, and mechanisms that allow an application to examine the attributes of remote nodes. We provide an abstraction of communication distances that enables an application to select nodes to facilitate efficient communication. We have developed open source libraries that implement these ideas. We show that the use of attributes for node selection can lead to significant performance improvements if different components of the application have different processing requirements. We report a detailed empirical investigation of non-uniform communication times in several representative architectures, and show that our abstract model provides a good description of the hierarchy of communication times.
我们考虑了使分布式Erlang应用程序适应大型或异构架构的问题,以可移植的方式实现良好的性能。在许多体系结构中,特别是大型体系结构中,虚拟机(节点)对之间的通信延迟不再是统一的。我们提出了两种语言级方法,使程序能够自动适应异构性和非统一通信延迟,并且都提供了使程序能够在生成进程时识别适当节点的信息。我们提供了一种记录节点属性的方法,这些属性描述了节点的硬件和软件功能,以及允许应用程序检查远程节点属性的机制。我们提供了通信距离的抽象,使应用程序能够选择节点以促进有效的通信。我们已经开发了实现这些想法的开源库。我们表明,如果应用程序的不同组件具有不同的处理需求,那么使用属性进行节点选择可以显著提高性能。我们报告了对几种代表性体系结构中非均匀通信时间的详细实证调查,并表明我们的抽象模型提供了对通信时间层次结构的良好描述。
{"title":"Performance portability through semi-explicit placement in distributed Erlang","authors":"K. Mackenzie, Natalia Chechina, P. Trinder","doi":"10.1145/2804295.2804299","DOIUrl":"https://doi.org/10.1145/2804295.2804299","url":null,"abstract":"We consider the problem of adapting distributed Erlang applications to large or heterogeneous architectures to achieve good performance in a portable way. In many architectures, and especially large architectures, the communication latency between pairs of virtual machines (nodes) is no longer uniform. We propose two language-level methods that enable programs to automatically adapt to heterogeneity and non-uniform communication latencies, and both provide information enabling a program to identify an appropriate node when spawning a process. We provide a means of recording node attributes describing the hardware and software capabilities of nodes, and mechanisms that allow an application to examine the attributes of remote nodes. We provide an abstraction of communication distances that enables an application to select nodes to facilitate efficient communication. We have developed open source libraries that implement these ideas. We show that the use of attributes for node selection can lead to significant performance improvements if different components of the application have different processing requirements. We report a detailed empirical investigation of non-uniform communication times in several representative architectures, and show that our abstract model provides a good description of the hierarchy of communication times.","PeriodicalId":266108,"journal":{"name":"Proceedings of the 14th ACM SIGPLAN Workshop on Erlang","volume":"43 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-08-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125576575","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 6
Smother: an MC/DC analysis tool for Erlang smmother:一个用于Erlang的MC/DC分析工具
Pub Date : 2015-08-30 DOI: 10.1145/2804295.2804297
Ramsay G. Taylor, J. Derrick
This paper discusses an MC/DC analysis tool built for the Erlang programming language. Code coverage metrics are one way to measure the adequacy of a test suite, however, despite widespread industrial use in business-critical software, the only coverage metric readily available for Erlang is statement coverage, provided by the Cover tool that is distributed by the OTP standard libraries. An alternative to statement cover is Multiple Condition/Decision Coverage (MC/DC) -- one of the most extensive coverage metrics, which is mandated by many software safety standards. Here we describe the application of MC/DC analysis to Erlang programs, and include an extension to traditional MC/DC analysis that applies the underlying philosophy to the pattern matching decision structures of functional languages. We have implemented the approach in the Smother tool that we also describe here as well as its use by our industrial project partners.
本文讨论了为Erlang编程语言构建的MC/DC分析工具。代码覆盖度量是度量测试套件的充分性的一种方法,然而,尽管在业务关键型软件中广泛使用,Erlang唯一可用的覆盖度量是语句覆盖,由OTP标准库分发的Cover工具提供。声明覆盖的另一种选择是多重条件/决策覆盖(Multiple Condition/Decision Coverage, MC/DC)——最广泛的覆盖量度之一,由许多软件安全标准强制要求。在这里,我们描述了MC/DC分析在Erlang程序中的应用,并包括对传统MC/DC分析的扩展,该分析将底层哲学应用于函数式语言的模式匹配决策结构。我们已经在这里描述的Smother工具中实现了该方法,以及我们的工业项目合作伙伴对它的使用。
{"title":"Smother: an MC/DC analysis tool for Erlang","authors":"Ramsay G. Taylor, J. Derrick","doi":"10.1145/2804295.2804297","DOIUrl":"https://doi.org/10.1145/2804295.2804297","url":null,"abstract":"This paper discusses an MC/DC analysis tool built for the Erlang programming language. Code coverage metrics are one way to measure the adequacy of a test suite, however, despite widespread industrial use in business-critical software, the only coverage metric readily available for Erlang is statement coverage, provided by the Cover tool that is distributed by the OTP standard libraries. An alternative to statement cover is Multiple Condition/Decision Coverage (MC/DC) -- one of the most extensive coverage metrics, which is mandated by many software safety standards. Here we describe the application of MC/DC analysis to Erlang programs, and include an extension to traditional MC/DC analysis that applies the underlying philosophy to the pattern matching decision structures of functional languages. We have implemented the approach in the Smother tool that we also describe here as well as its use by our industrial project partners.","PeriodicalId":266108,"journal":{"name":"Proceedings of the 14th ACM SIGPLAN Workshop on Erlang","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-08-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132272522","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Proceedings of the 14th ACM SIGPLAN Workshop on Erlang 第14届ACM SIGPLAN Erlang研讨会论文集
Pub Date : 2015-08-30 DOI: 10.1145/2804295
Hans Svensson, M. Tóth
{"title":"Proceedings of the 14th ACM SIGPLAN Workshop on Erlang","authors":"Hans Svensson, M. Tóth","doi":"10.1145/2804295","DOIUrl":"https://doi.org/10.1145/2804295","url":null,"abstract":"","PeriodicalId":266108,"journal":{"name":"Proceedings of the 14th ACM SIGPLAN Workshop on Erlang","volume":"58 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-08-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130792603","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
期刊
Proceedings of the 14th ACM SIGPLAN Workshop on Erlang
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1