首页 > 最新文献

Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences最新文献

英文 中文
Deep Fusion for Efficient Nested Recursive Computations 高效嵌套递归计算的深度融合
A. Shaikhha
One of the performance bottlenecks of nested recursive computations is the intermediate collections created at different levels of recursion. The existing techniques such as vertical and horizontal loop fusion do not remove such intermediate allocations. This paper proposes deep fusion, a technique for the efficient compilation of nested recursive computation over collections. The input to our compilation framework is a high-level functional program that can represent computations on flat and nested collections such as lists, sets, bags, and maps. The intermediate collections are removed in three levels. First, the immutable collections are translated into mutable ones by leveraging in-place updates using the destination-passing style technique. Second, deep fusion enables the inner level of recursion to reuse the destinations of the outer levels for in-place updates. Third, deep fusion removes the need to allocate tiny intermediate collections at different depths of recursion. Our experiments show that deep fusion can improve the performance of nested recursion over nested lists and maps.
嵌套递归计算的性能瓶颈之一是在不同递归级别上创建的中间集合。现有的技术,如垂直和水平环路融合,并没有消除这种中间分配。本文提出了一种深度融合技术,用于有效地编译嵌套的递归计算。编译框架的输入是一个高级函数程序,它可以表示平面和嵌套集合(如列表、集合、包和地图)上的计算。中间集合分三个级别删除。首先,通过使用目标传递风格技术利用就地更新,将不可变集合转换为可变集合。其次,深度融合使内部递归层能够重用外部递归层的目标以进行就地更新。第三,深度融合消除了在不同递归深度分配微小中间集合的需要。实验表明,深度融合可以提高嵌套列表和嵌套映射的嵌套递归性能。
{"title":"Deep Fusion for Efficient Nested Recursive Computations","authors":"A. Shaikhha","doi":"10.1145/3564719.3568698","DOIUrl":"https://doi.org/10.1145/3564719.3568698","url":null,"abstract":"One of the performance bottlenecks of nested recursive computations is the intermediate collections created at different levels of recursion. The existing techniques such as vertical and horizontal loop fusion do not remove such intermediate allocations. This paper proposes deep fusion, a technique for the efficient compilation of nested recursive computation over collections. The input to our compilation framework is a high-level functional program that can represent computations on flat and nested collections such as lists, sets, bags, and maps. The intermediate collections are removed in three levels. First, the immutable collections are translated into mutable ones by leveraging in-place updates using the destination-passing style technique. Second, deep fusion enables the inner level of recursion to reuse the destinations of the outer levels for in-place updates. Third, deep fusion removes the need to allocate tiny intermediate collections at different depths of recursion. Our experiments show that deep fusion can improve the performance of nested recursion over nested lists and maps.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"39 2","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132694547","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}
引用次数: 2
Composable Sequence Macros for Fast Iteration 用于快速迭代的可组合序列宏
Anna Bolotina, Ryan Culpepper
Racket provides for loops with macro-extensible sequence expressions. Sequence macros offer better performance than dynamic sequence implementations, but they are complicated to define and Racket offers little support for creating new sequence macros by combining existing ones. In this paper, we develop such support in the form of sequence combinator macros and a general comprehension form. These utilities are implemented by manipulating compile-time records that contain binders and expressions; the binding relationships between the components are not trivial. We discuss how to diagnose and solve type and scoping problems in our implementation.
Racket用宏可扩展序列表达式提供for循环。序列宏提供了比动态序列实现更好的性能,但是它们的定义比较复杂,并且Racket很少支持通过组合现有的序列宏来创建新的序列宏。在本文中,我们以序列组合子宏和一般理解形式开发了这种支持。这些实用程序是通过操纵包含绑定器和表达式的编译时记录来实现的;组件之间的绑定关系并不简单。我们将讨论如何诊断和解决实现中的类型和范围问题。
{"title":"Composable Sequence Macros for Fast Iteration","authors":"Anna Bolotina, Ryan Culpepper","doi":"10.1145/3564719.3568696","DOIUrl":"https://doi.org/10.1145/3564719.3568696","url":null,"abstract":"Racket provides for loops with macro-extensible sequence expressions. Sequence macros offer better performance than dynamic sequence implementations, but they are complicated to define and Racket offers little support for creating new sequence macros by combining existing ones. In this paper, we develop such support in the form of sequence combinator macros and a general comprehension form. These utilities are implemented by manipulating compile-time records that contain binders and expressions; the binding relationships between the components are not trivial. We discuss how to diagnose and solve type and scoping problems in our implementation.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"15 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125975282","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
Generic Solution-Space Sampling for Multi-domain Product Lines 多域产品线的通用解空间抽样
Marc Hentze, T. Pett, Chico Sundermann, S. Krieter, Thomas Thüm, Ina Schaefer
Validating a configurable software system is challenging, as there are potentially millions of configurations, which makes testing each configuration individually infeasible. Thus, existing sampling algorithms allow to compute a representative subset of configurations, called sample, that can be tested instead. However, sampling on the set of configurations may miss potential error sources on implementation level. In this paper, we present solution-space sampling, a concept that mitigates this problem by allowing to sample directly on the implementation level. We apply solution-space sampling to six real-word, automotive product lines and show that it produces up to 56 % smaller samples, while also covering all potential error sources missed by problem-space sampling.
验证可配置软件系统是具有挑战性的,因为可能存在数百万个配置,这使得单独测试每个配置变得不可行。因此,现有的抽样算法允许计算一个具有代表性的配置子集,称为样本,可以进行测试。但是,对配置集进行采样可能会错过实现级别上的潜在错误源。在本文中,我们提出了解空间采样,这个概念通过允许在实现级别上直接采样来缓解这个问题。我们将解决方案空间采样应用于六个现实世界的汽车产品线,并表明它产生了多达56%的小样本,同时还覆盖了问题空间采样遗漏的所有潜在误差源。
{"title":"Generic Solution-Space Sampling for Multi-domain Product Lines","authors":"Marc Hentze, T. Pett, Chico Sundermann, S. Krieter, Thomas Thüm, Ina Schaefer","doi":"10.1145/3564719.3568695","DOIUrl":"https://doi.org/10.1145/3564719.3568695","url":null,"abstract":"Validating a configurable software system is challenging, as there are potentially millions of configurations, which makes testing each configuration individually infeasible. Thus, existing sampling algorithms allow to compute a representative subset of configurations, called sample, that can be tested instead. However, sampling on the set of configurations may miss potential error sources on implementation level. In this paper, we present solution-space sampling, a concept that mitigates this problem by allowing to sample directly on the implementation level. We apply solution-space sampling to six real-word, automotive product lines and show that it produces up to 56 % smaller samples, while also covering all potential error sources missed by problem-space sampling.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"22 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116739863","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
SQL to Stream with S2S: An Automatic Benchmark Generator for the Java Stream API SQL to Stream with S2S: Java Stream API的自动基准测试生成器
F. Schiavio, Andrea Rosà, Walter Binder
The Java Stream API was introduced in Java 8, allowing developers to express computations in a functional style by defining a pipeline of data-processing operations. Despite the growing importance of this API, there is a lack of benchmarks specifically targeting stream-based applications. Instead of designing and implementing new ad-hoc workloads for the Java Stream API, we propose to automatically translate existing data-processing workloads. To this end, we present S2S, an automatic benchmark generator for the Java Stream API. S2S is a SQL query compiler that converts existing workloads designed for relational databases to stream-based code. We use S2S to generate BSS, the first benchmark suite for the Java Stream API.
Java流API是在Java 8中引入的,它允许开发人员通过定义数据处理操作的管道来以函数式的方式表达计算。尽管这个API越来越重要,但还缺乏专门针对基于流的应用程序的基准测试。我们建议自动转换现有的数据处理工作负载,而不是为Java流API设计和实现新的临时工作负载。为此,我们提出了S2S,一个Java流API的自动基准测试生成器。S2S是一个SQL查询编译器,它将为关系数据库设计的现有工作负载转换为基于流的代码。我们使用S2S来生成BSS,这是Java流API的第一个基准套件。
{"title":"SQL to Stream with S2S: An Automatic Benchmark Generator for the Java Stream API","authors":"F. Schiavio, Andrea Rosà, Walter Binder","doi":"10.1145/3564719.3568699","DOIUrl":"https://doi.org/10.1145/3564719.3568699","url":null,"abstract":"The Java Stream API was introduced in Java 8, allowing developers to express computations in a functional style by defining a pipeline of data-processing operations. Despite the growing importance of this API, there is a lack of benchmarks specifically targeting stream-based applications. Instead of designing and implementing new ad-hoc workloads for the Java Stream API, we propose to automatically translate existing data-processing workloads. To this end, we present S2S, an automatic benchmark generator for the Java Stream API. S2S is a SQL query compiler that converts existing workloads designed for relational databases to stream-based code. We use S2S to generate BSS, the first benchmark suite for the Java Stream API.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"76 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124847916","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}
引用次数: 2
Preserving Consistency of Interrelated Models during View-Based Evolution of Variable Systems 基于视图的变量系统演化中相互关联模型的一致性保持
Sofia Ananieva, Thomas Kühn, R. Reussner
Coping with different and changing requirements leads to concurrent products (variability in space) and subsequent revisions (variability in time). Moreover, products consist of interrelated models that represent different kinds of artifacts. Dependencies and redundancies between interrelated models within a product and across products can quickly lead to inconsistencies during evolution. Thus, dealing with both variability dimensions uniformly while preserving consistency of interrelated models is a major challenge when developing large and long-living variable systems. Recent research addresses uniform management of variability in space and time by unifying concepts and operations from software product line engineering and software configuration management. However, consistency preservation for interrelated models, which is a major research topic in model-driven software development, has hardly been considered in variability management. We propose an approach that builds on recent efforts for unifying variability in space and time and leverages view-based consistency preservation for systems comprised of different kinds of interrelated models. We evaluate our approach by applying it to two real-world case studies: the well-known ArgoUML-SPL, that is based on the UML modeling tool ArgoUML, and MobileMedia, a mobile application for media management. Our results show that, by manually evolving only the Java models of products, other interrelated models (i.e.,~UML class diagrams) and the remaining affected products can be kept consistent fully automatically.
应对不同的和不断变化的需求会导致并发产品(空间上的可变性)和随后的修订(时间上的可变性)。此外,产品由相互关联的模型组成,这些模型表示不同种类的工件。产品内和跨产品的相关模型之间的依赖关系和冗余可能会在演进过程中迅速导致不一致。因此,在开发大型和长期存在的变量系统时,在保持相关模型的一致性的同时统一地处理两个可变性维度是一个主要的挑战。最近的研究通过统一软件产品线工程和软件配置管理的概念和操作来解决空间和时间上可变性的统一管理。然而,在模型驱动软件开发中,相互关联的模型的一致性保持是一个重要的研究课题,在可变性管理中很少被考虑。我们提出了一种方法,该方法建立在最近统一空间和时间变异性的努力之上,并利用基于视图的一致性保存来保护由不同类型的相互关联模型组成的系统。我们通过将其应用于两个现实世界的案例研究来评估我们的方法:一个是基于UML建模工具ArgoUML的著名的ArgoUML- spl,另一个是用于媒体管理的移动应用程序MobileMedia。我们的结果表明,通过手工发展产品的Java模型,其他相关的模型(例如,UML类图)和剩余的受影响的产品可以完全自动地保持一致。
{"title":"Preserving Consistency of Interrelated Models during View-Based Evolution of Variable Systems","authors":"Sofia Ananieva, Thomas Kühn, R. Reussner","doi":"10.1145/3564719.3568685","DOIUrl":"https://doi.org/10.1145/3564719.3568685","url":null,"abstract":"Coping with different and changing requirements leads to concurrent products (variability in space) and subsequent revisions (variability in time). Moreover, products consist of interrelated models that represent different kinds of artifacts. Dependencies and redundancies between interrelated models within a product and across products can quickly lead to inconsistencies during evolution. Thus, dealing with both variability dimensions uniformly while preserving consistency of interrelated models is a major challenge when developing large and long-living variable systems. Recent research addresses uniform management of variability in space and time by unifying concepts and operations from software product line engineering and software configuration management. However, consistency preservation for interrelated models, which is a major research topic in model-driven software development, has hardly been considered in variability management. We propose an approach that builds on recent efforts for unifying variability in space and time and leverages view-based consistency preservation for systems comprised of different kinds of interrelated models. We evaluate our approach by applying it to two real-world case studies: the well-known ArgoUML-SPL, that is based on the UML modeling tool ArgoUML, and MobileMedia, a mobile application for media management. Our results show that, by manually evolving only the Java models of products, other interrelated models (i.e.,~UML class diagrams) and the remaining affected products can be kept consistent fully automatically.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"90 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132190618","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
A Modern C++ Point of View of Programming in Image Processing 现代c++在图像处理编程中的应用
Michaël Roynard, Edwin Carlinet, T. Géraud
C++ is a multi-paradigm language that enables the programmer to set up efficient image processing algorithms easily. This language strength comes from many aspects. C++ is high-level, so this enables developing powerful abstractions and mixing different programming styles to ease the development. At the same time, C++ is low-level and can fully take advantage of the hardware to deliver the best performance. It is also very portable and highly compatible which allows algorithms to be called from high-level, fast-prototyping languages such as Python or Matlab. One fundamental aspects where C++ shines is generic programming. Generic programming makes it possible to develop and reuse bricks of software on objects (images) of different natures (types) without performance loss. Nevertheless, conciliating genericity, efficiency, and simplicity at the same time is not trivial. Modern C++ (post-2011) has brought new features that made it simpler and more powerful. In this paper, we focus on some C++20 aspects of generic programming: ranges, views, and concepts, and see how they extend to images to ease the development of generic image algorithms while lowering the computation time.
c++是一种多范式语言,它使程序员能够轻松地建立高效的图像处理算法。这种语言的力量来自很多方面。c++是高级的,因此可以开发强大的抽象和混合不同的编程风格来简化开发。同时,c++是底层的,可以充分利用硬件来提供最佳性能。它也非常便携和高度兼容,允许从高级,快速原型语言(如Python或Matlab)调用算法。c++的一个基本亮点是泛型编程。泛型编程使得在不损失性能的情况下在不同性质(类型)的对象(图像)上开发和重用软件块成为可能。然而,同时兼顾通用性、效率和简单性并非易事。现代c++(2011年后)带来了一些新特性,使其更简单、更强大。在本文中,我们关注c++ 20中泛型编程的一些方面:范围、视图和概念,并了解它们如何扩展到图像,以简化泛型图像算法的开发,同时降低计算时间。
{"title":"A Modern C++ Point of View of Programming in Image Processing","authors":"Michaël Roynard, Edwin Carlinet, T. Géraud","doi":"10.1145/3564719.3568692","DOIUrl":"https://doi.org/10.1145/3564719.3568692","url":null,"abstract":"C++ is a multi-paradigm language that enables the programmer to set up efficient image processing algorithms easily. This language strength comes from many aspects. C++ is high-level, so this enables developing powerful abstractions and mixing different programming styles to ease the development. At the same time, C++ is low-level and can fully take advantage of the hardware to deliver the best performance. It is also very portable and highly compatible which allows algorithms to be called from high-level, fast-prototyping languages such as Python or Matlab. One fundamental aspects where C++ shines is generic programming. Generic programming makes it possible to develop and reuse bricks of software on objects (images) of different natures (types) without performance loss. Nevertheless, conciliating genericity, efficiency, and simplicity at the same time is not trivial. Modern C++ (post-2011) has brought new features that made it simpler and more powerful. In this paper, we focus on some C++20 aspects of generic programming: ranges, views, and concepts, and see how they extend to images to ease the development of generic image algorithms while lowering the computation time.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"88 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114504869","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
Language Support for Refactorability Decay Prevention 对可重构性衰减预防的语言支持
D. Fraivert, D. Lorenz
Even code that is free of smells may be at high risk of forming them. In such cases, developers can either perform preventive refactoring in order to reduce this risk, or leave the code as is and perform corrective refactoring as smells emerge. In practice, however, developers usually avoid preventive refactoring during the development phase, and when code smells eventually form, other developers who are less acquainted with the code avoid the more complex corrective refactoring. As a result, a refactoring opportunity is missed, and the quality and maintainability of the code is compromised. In this work, we treat refactoring not as a single atomic action, but rather as a sequence of subactions. We divide the responsibility for these subactions between the original developer of the code, who just prepares the code for refactoring, and a future developer, who may need to carry out the actual refactoring action. To manage this division of responsibility, we introduce a set of annotations along with an annotation processor that prevents software erosion from compromising the ability to perform the refactoring action.
即使没有气味的代码也可能有很高的形成气味的风险。在这种情况下,开发人员可以执行预防性重构以降低这种风险,或者保持代码不变,并在出现问题时执行纠正性重构。然而,在实践中,开发人员通常会在开发阶段避免预防性重构,当代码最终形成异味时,其他不太熟悉代码的开发人员会避免更复杂的纠正性重构。因此,错失了重构的机会,并且降低了代码的质量和可维护性。在这项工作中,我们不是将重构视为单个原子操作,而是将其视为一系列子操作。我们将这些子操作的责任划分给代码的原始开发人员(他们只是为重构准备代码)和未来的开发人员(他们可能需要执行实际的重构操作)。为了管理这种职责划分,我们引入了一组注释和一个注释处理器,以防止软件侵蚀影响执行重构操作的能力。
{"title":"Language Support for Refactorability Decay Prevention","authors":"D. Fraivert, D. Lorenz","doi":"10.1145/3564719.3568688","DOIUrl":"https://doi.org/10.1145/3564719.3568688","url":null,"abstract":"Even code that is free of smells may be at high risk of forming them. In such cases, developers can either perform preventive refactoring in order to reduce this risk, or leave the code as is and perform corrective refactoring as smells emerge. In practice, however, developers usually avoid preventive refactoring during the development phase, and when code smells eventually form, other developers who are less acquainted with the code avoid the more complex corrective refactoring. As a result, a refactoring opportunity is missed, and the quality and maintainability of the code is compromised. In this work, we treat refactoring not as a single atomic action, but rather as a sequence of subactions. We divide the responsibility for these subactions between the original developer of the code, who just prepares the code for refactoring, and a future developer, who may need to carry out the actual refactoring action. To manage this division of responsibility, we introduce a set of annotations along with an annotation processor that prevents software erosion from compromising the ability to perform the refactoring action.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"21 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114739645","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
Dynamic Replanning of Multi-drone Missions using Dynamic Forward Slicing 基于动态前向切片的多无人机任务动态重规划
Miguel Campusano, Ulrik Pagh Schultz Lundquist
Unmanned Aerial Systems (UAS, typically known as drones) are useful in many application domains, such as logistics and precision farming, especially when they fly Beyond Visual Line of Sight (BVLOS). To effectively use multiple UAS for BVLOS missions, it is required to precisely plan the flight of each UAS involved in the missions, allocating the required airspace ahead of time. The dots Domain-Specific Language (DSL) can be used to plan and execute such missions but does not support the adaptation of missions when unexpected changes occur during the execution of these missions. Such dynamic replanning of missions to changing conditions is a crucial feature for the safe integration of UAS into the airspace since it allows the UAS to adapt to these changes, such as yielding to emergency response aircraft. In this work, we propose a program transformation technique inspired by program slicing to dynamically replan ongoing dots-specified multi-UAS missions using the same planner built for the dots language. Whenever dynamic replanning is needed, we compute a forward slice of the dots program based on the current runtime state of the mission. This generates a new program that obeys the original mission specification but only specifies the mission from the point in time where the replanning is needed. We validate our proposed technique by integrating it into ros-dots, a service-oriented architecture for autonomous UAS operations.
无人机系统(UAS,通常被称为无人机)在许多应用领域都很有用,例如物流和精准农业,特别是当它们飞出视线(BVLOS)时。为了有效地使用多个无人机执行BVLOS任务,需要对每个无人机的飞行进行精确规划,提前分配所需空域。领域特定语言(DSL)可用于计划和执行此类任务,但不支持在执行这些任务期间发生意外变化时对任务进行调整。根据不断变化的条件对任务进行动态重新规划是将无人机系统安全集成到空域的一个关键特征,因为它允许无人机系统适应这些变化,例如向应急飞机屈服。在这项工作中,我们提出了一种受程序切片启发的程序转换技术,使用为dots语言构建的相同规划器动态地重新规划正在进行的点指定多无人机任务。当需要动态重新规划时,我们根据任务的当前运行状态计算点程序的前向切片。这将生成一个遵守原始任务规范的新程序,但仅从需要重新规划的时间点指定任务。我们通过将其集成到ros-dots中来验证我们提出的技术,ros-dots是用于自主无人机操作的面向服务的体系结构。
{"title":"Dynamic Replanning of Multi-drone Missions using Dynamic Forward Slicing","authors":"Miguel Campusano, Ulrik Pagh Schultz Lundquist","doi":"10.1145/3564719.3568694","DOIUrl":"https://doi.org/10.1145/3564719.3568694","url":null,"abstract":"Unmanned Aerial Systems (UAS, typically known as drones) are useful in many application domains, such as logistics and precision farming, especially when they fly Beyond Visual Line of Sight (BVLOS). To effectively use multiple UAS for BVLOS missions, it is required to precisely plan the flight of each UAS involved in the missions, allocating the required airspace ahead of time. The dots Domain-Specific Language (DSL) can be used to plan and execute such missions but does not support the adaptation of missions when unexpected changes occur during the execution of these missions. Such dynamic replanning of missions to changing conditions is a crucial feature for the safe integration of UAS into the airspace since it allows the UAS to adapt to these changes, such as yielding to emergency response aircraft. In this work, we propose a program transformation technique inspired by program slicing to dynamically replan ongoing dots-specified multi-UAS missions using the same planner built for the dots language. Whenever dynamic replanning is needed, we compute a forward slice of the dots program based on the current runtime state of the mission. This generates a new program that obeys the original mission specification but only specifies the mission from the point in time where the replanning is needed. We validate our proposed technique by integrating it into ros-dots, a service-oriented architecture for autonomous UAS operations.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"33 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121374674","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
Language Design Meets Verifying Compilers (Keynote) 语言设计与验证编译器(主题演讲)
David J. Pearce
The dream of developing compilers that automatically verify whether or not programs meet their specifications remains an ongoing challenge. Such "verifying compilers" are (finally) on the verge of entering mainstream software development. This is partly due to advancements made over the last few decades, but also to the increasingly significant and complex role software plays in the modern world. As computer scientists, we should encourage this transition and help relegate many forms of software error to the history books. One way of increasing adoption is to design languages around these tools which look, on the surface, like regular programming languages. That is, to seamlessly integrate specification and verification and offer something that, for the everyday programmer, appears as nothing more than glorified type checking. This requires, amongst other things, careful consideration as to which language features mesh well with verification, and which do not. The design space here is interesting and subtle, but has been largely overlooked. In this talk, I will attempt to shed light on this murky area by contrasting the choices made in two existing languages: Dafny and Whiley.
开发自动验证程序是否符合其规范的编译器的梦想仍然是一个持续的挑战。这样的“验证编译器”(最终)即将进入主流软件开发。这部分是由于过去几十年取得的进步,但也是由于软件在现代世界中扮演的日益重要和复杂的角色。作为计算机科学家,我们应该鼓励这种转变,并帮助将许多形式的软件错误载入史册。增加采用的一种方法是围绕这些工具设计语言,这些语言表面上看起来像常规的编程语言。也就是说,无缝地集成规范和验证,并提供一些东西,对于日常程序员来说,看起来只不过是美化的类型检查。除其他事项外,这需要仔细考虑哪些语言特性适合验证,哪些不适合。这里的设计空间有趣而微妙,但在很大程度上被忽视了。在这次演讲中,我将通过对比两种现有语言(Dafny和Whiley)所做的选择来阐明这个模糊的领域。
{"title":"Language Design Meets Verifying Compilers (Keynote)","authors":"David J. Pearce","doi":"10.1145/3564719.3570917","DOIUrl":"https://doi.org/10.1145/3564719.3570917","url":null,"abstract":"The dream of developing compilers that automatically verify whether or not programs meet their specifications remains an ongoing challenge. Such \"verifying compilers\" are (finally) on the verge of entering mainstream software development. This is partly due to advancements made over the last few decades, but also to the increasingly significant and complex role software plays in the modern world. As computer scientists, we should encourage this transition and help relegate many forms of software error to the history books. One way of increasing adoption is to design languages around these tools which look, on the surface, like regular programming languages. That is, to seamlessly integrate specification and verification and offer something that, for the everyday programmer, appears as nothing more than glorified type checking. This requires, amongst other things, careful consideration as to which language features mesh well with verification, and which do not. The design space here is interesting and subtle, but has been largely overlooked. In this talk, I will attempt to shed light on this murky area by contrasting the choices made in two existing languages: Dafny and Whiley.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"10 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128522232","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
Model-Driven IoT App Stores: Deploying Customizable Software Products to Heterogeneous Devices 模型驱动的物联网应用商店:将可定制的软件产品部署到异构设备
J. C. Kirchhof, A. Kleiss, Judith Michael, R. Orlov, B. Rumpe
Internet of Things (IoT) devices and the software they execute are often strongly coupled with vendors preinstalling their software at the factory. Future IoT applications are expected to be distributed via app stores. A strong coupling between hard- and software hinders the rise of such app stores. Existing model-driven approaches for developing IoT applications focus largely on the behavior specification and message exchange but generate code that targets a specific set of devices. By raising the level of abstraction, models can be utilized to decouple hard- and software and adapt to various infrastructures. We present a concept for a model-driven app store that decouples hardware and software development of product lines of IoT applications.
物联网(IoT)设备及其执行的软件通常与供应商在工厂预安装的软件紧密相关。未来的物联网应用预计将通过应用商店进行分发。硬软件之间的强烈耦合阻碍了这类应用商店的崛起。开发物联网应用程序的现有模型驱动方法主要侧重于行为规范和消息交换,但生成针对特定设备集的代码。通过提高抽象级别,可以利用模型来解耦硬件和软件,并适应各种基础结构。我们提出了一个模型驱动的应用程序商店的概念,它将物联网应用产品线的硬件和软件开发分离开来。
{"title":"Model-Driven IoT App Stores: Deploying Customizable Software Products to Heterogeneous Devices","authors":"J. C. Kirchhof, A. Kleiss, Judith Michael, R. Orlov, B. Rumpe","doi":"10.1145/3564719.3568689","DOIUrl":"https://doi.org/10.1145/3564719.3568689","url":null,"abstract":"Internet of Things (IoT) devices and the software they execute are often strongly coupled with vendors preinstalling their software at the factory. Future IoT applications are expected to be distributed via app stores. A strong coupling between hard- and software hinders the rise of such app stores. Existing model-driven approaches for developing IoT applications focus largely on the behavior specification and message exchange but generate code that targets a specific set of devices. By raising the level of abstraction, models can be utilized to decouple hard- and software and adapt to various infrastructures. We present a concept for a model-driven app store that decouples hardware and software development of product lines of IoT applications.","PeriodicalId":423660,"journal":{"name":"Proceedings of the 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"293 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-11-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115282035","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 21st ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences
全部 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