Software Product Lines (SPLs) are an approach to reuse in-the-large that models a set of closely related software systems in terms of commonalities and variabilities. design patterns are best practices for addressing ...
详细信息
Software Product Lines (SPLs) are an approach to reuse in-the-large that models a set of closely related software systems in terms of commonalities and variabilities. design patterns are best practices for addressing recurring design problems in object-oriented source code. In the practice of implementing SPL, instances of certain design patterns are employed to handle variability, which makes these "variability-aware design patterns" a best practice for SPL design. However, currently there is no dedicated method for proactively developing SPLs using design patterns suitable for realizing variable functionality. In this paper, we present a method to perform generative SPL development with design patterns. We use role models to capture design patterns and their relation to a variability model. We further allow mapping of individual design pattern roles to (parts of) implementation elements to be generated (e.g., classes, methods) and check the conformance of the realization with the specification of the pattern. We provide definitions for the variability-aware versions of the design patterns Observer, Strategy, Template Method and Composite. Furthermore, we support generation of realization's in Java, C++ and UML class diagrams utilizing annotative, compositional and transformational variability realization mechanisms. Hence, we support proactive development of SPLs using design patterns to apply best practices for the realization of variability. We realize our concepts within the Eclipse IDE and demonstrate them within a case study. (C) 2016 Elsevier Ltd. All rights reserved.
The proceedings contain 5 papers. The topics discussed include: TS4J: a fluent interface for defining and computing typestate analyses;a software product line for static analyses;dynamic slicing with soot;explicit and...
The proceedings contain 5 papers. The topics discussed include: TS4J: a fluent interface for defining and computing typestate analyses;a software product line for static analyses;dynamic slicing with soot;explicit and symbolic techniques for fast and scalable points-to analysis;and android taint flow analysis for app sets.
The proceedings contain 56 papers. The topics discussed include: test-driven repair of data races in structured parallel programs;atomicity refinement for verified compilation;herding cats: modeling, simulation, testi...
ISBN:
(纸本)9781450327848
The proceedings contain 56 papers. The topics discussed include: test-driven repair of data races in structured parallel programs;atomicity refinement for verified compilation;herding cats: modeling, simulation, testing, and data-mining for weak memory;stochastic optimization of floating-point programs using tunable precision;a framework for enhancing data reuse via associative reordering;first-class runtime generation of high-performance types using exotypes;optimal inference of fields in row-polymorphic records;expressing and verifying probabilistic assertions;compositional solution space quantification for probabilistic software analysis;slicing probabilistic programs;adaptive, efficient parallel execution of parallel programs differentiation;globally precise-restartable execution of parallel programs;and accurate application progress analysis for large-scale parallel debugging.
High school students often struggle to find the motivation to learn to program. Music can be a powerful motivator for these students, but existing tools that combine music production with programming often fail to mea...
详细信息
ISBN:
(纸本)9781450349215
High school students often struggle to find the motivation to learn to program. Music can be a powerful motivator for these students, but existing tools that combine music production with programming often fail to meaningfully engage students with core computer science concepts. Sonification Blocks was created to shift the focus back toward big ideas in programming. Sonification Blocks is a programminglanguage for data sonification, the process of creating audio algorithms and controlling them with streams of data. Its implementation as a block-based language with clear, interactive data visualizers allows high-school-aged learners to develop computational literacy. Furthermore, the act of manipulating sound parameters with data streams that are controlled through body motion may help connect learners with powerful ideas in programming and data science.
Parallel programming platforms are heterogeneous and incompatible;a common approach is needed to free programmers from platforms' technical intricacies, allowing flexible execution in which sequential and parallel...
详细信息
ISBN:
(纸本)9781450348430
Parallel programming platforms are heterogeneous and incompatible;a common approach is needed to free programmers from platforms' technical intricacies, allowing flexible execution in which sequential and parallel executions produce identical results. The execution and programming model of an embedded flexible language (EFL), which implement this common approach, are presented. EFL allows embedding of deterministic parallel code blocks into a sequential program, written in any host language. EFL programming model constructs are presented. An EFL implementation of the Reduce Parallel design Pattern is presented. With EFL we aim to implement safe and efficient parallel execution, in software, hardware, or both. Consequences of Rice's theorem regarding parallel computation are discussed. These consequences severely restrict what can be checked at compile time. An approach is proposed for circumventing these restrictions.
The proceedings contain 17 papers. The topics discussed include: exploiting implicit parallelism in dynamic array programminglanguages;NOVA: a functional language for data parallelism;abstracting vector architectures...
ISBN:
(纸本)9781450329378
The proceedings contain 17 papers. The topics discussed include: exploiting implicit parallelism in dynamic array programminglanguages;NOVA: a functional language for data parallelism;abstracting vector architectures in library generators: case study convolution filters;just-in-time length specialization of dynamic vector code;a local-view array library for partitioned global address space C++ programs;GPGPU composition with OCaml;a composable array function interface for heterogeneous computing in java;just-in-time shape inference for array-based languages;array operators using multiple dispatch;Co-dfns: ancient language, modern compiler;extract and extend parallelism using C/C++ extension for array notation on multicore and many-core platforms - an empirical investigation with quantitative finance examples;on predicting the impact of resource redistributions in streaming applications;***: transformation-based code generation for GPUs and CPUs;and multi-target C code generation from MATLAB.
This paper describes the design, implementation and preliminary evaluation of a computing component for a three-week writing-intensive introductory program at a liberal arts college. Specific curricular recommendation...
详细信息
ISBN:
(纸本)9781450347044
This paper describes the design, implementation and preliminary evaluation of a computing component for a three-week writing-intensive introductory program at a liberal arts college. Specific curricular recommendations are presented that could have a direct, positive impact if adopted in similar courses. A two-pronged approach involving a faculty-led HTML workshop, along with student-led contextualized coding studios, was employed. Computing Unplugged activities were used, including a novel Page Rank Unplugged networking activity. An analysis of attitude surveys shows the program positively changed students attitudes about enjoyment solving CS problems, but potentially reinforced the misconception that CS is just learning programminglanguages.
Software-intensive systems often consist of cooperating reactive components. In mobile and reconfigurable systems, their topology changes at run-time, which influences how the components must cooperate. The Scenario M...
详细信息
ISBN:
(纸本)9781450351058
Software-intensive systems often consist of cooperating reactive components. In mobile and reconfigurable systems, their topology changes at run-time, which influences how the components must cooperate. The Scenario Modeling language (SML) offers a formal approach for specifying the reactive behavior such systems that aligns with how humans conceive and communicate behavioral requirements. Simulation and formal checks can find specification flaws early. We present a framework for the Scenario-based programming (SBP) that reflects the concepts of SML in Java and makes the scenario modeling approach available for programming. SBP code can also be generated from SML and extended with platform-specific code, thus streamlining the transition from design to implementation. As an example serves a car-to-x communication *** video and artifact: http://***/esecfse-2017-tool-demo/
This paper introduces a low-cost AC meter designed to continuously measure voltage and current waveforms at up to 14 kHz. The AC power meter, provided as open hardware, is designed using the same micro controller as t...
详细信息
Product development at companies such as Bosch requires systems engineering for digital hardware and mechatronic components as well as software engineering for resource-constrained real-time applications cooperating w...
ISBN:
(纸本)9781450350938
Product development at companies such as Bosch requires systems engineering for digital hardware and mechatronic components as well as software engineering for resource-constrained real-time applications cooperating with distributed server applications. While many of the involved engineering disciplines greatly benefit from model-based approaches and from advances in software infrastructures, deeply embedded software still is written in C since the seventies and runs on platforms designed in the nineties (e.g. OSEK). Simulation tools like Simulink or Modelica are used to test discrete code against continuous plant models or to generate code for certain aspects, but they do not really provide modern implementation technologies to address software architecture and qualities or to make embedded programming "attractive" for software *** regard synchronous languages as suitable to solve many of the issues in the integration (causality) and synchronisation (clocks) of time-triggered and event-triggered embedded functions that exhibit their behaviour over time steps and are coordinated according to their mode-switching in a structured synchronous control flow. Searching for an imperative synchronous language (with deterministic concurrent composition, and synchronous control flow), equipped with features for encapsulation and composition (objects, packages, separate compilation) and supporting programming parallel tasks deployed to separate cores (clock refinement and deterministic inter-task communication), we ended up in designing our own language, suitable for resource-constrained, real-time applications running on multi-core *** will explain the main requirements and features of this language, how they integrate with the principles of a synchronous language, how they can be applied to typical everyday problems in embedded development, and how such locally synchronous services may integrate in a globally asynchronous service architecture.
暂无评论