Görel Hedin

dblp:95/987 · DBLP profile ↗
← Back
38ranked-venue papers
9as first author
8since 2021 · last 2025
0000-0002-3003-2623ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 34 · 9 first-author · 7 since 2021Human-computer interaction and ubiquitous computing · 2Systems, architecture and hardware · 1Applied, interdisciplinary, general and emerging computing · 1 · 1 since 2021
YearPublicationVenuePosition
2025 A Trust Establishment and Key Management Architecture for Hospital-at-Home
abstract
The landscape of healthcare is experiencing a digitalization shift, transferring many medical activities to the patients’ homes, a phenomenon commonly referred to as Hospital-at-Home. While Internet of Things (IoT) devices facilitate the building of such systems, there is a need for powerful middleware that encapsulates device-to-device communication and enables the construction of user-friendly, secure, and robust Hospital-at-Home systems. A key challenge for such middleware is to build a trustworthy and lightweight key management system allowing different devices in the system to exchange messages securely. In this article, we present a simple, easily manageable and scalable such architecture which, in addition, supports long-term data protection using post-quantum cryptographic primitives. Our proposed solution utilizes a Merkle tree to enable the IoT devices to establish trust between each other automatically, even in the absence of an Internet connection. We have implemented the architecture and present performance figures as well as a security analysis of our approach.
Alfred Åkesson, Christian Gehrmann 0001, Görel Hedin, Björn A. Johnsson, Boris Magnusson, Mattias Nordahl, Sara Ramezanian, Paul Stankovski Wagner
ACM Trans. Comput. Heal.3
2024 Efficient Demand Evaluation of Fixed-Point Attributes using Static Analysis
abstract
Declarative approaches to program analysis promise a number of practical advantages over imperative approaches, from eliminating manual worklist management to increasing modularity. Reference Attribute Grammars (RAGs) are one such approach. One particular advantage of RAGs is the automatic generation of on-demand implementations, suitable for query-based interactive tooling as well as for client analyses that do not require full evaluation of underlying analyses. While historically aimed at compiler frontend construction, the addition of circular (fixed-point) attributes also makes them suitable for dataflow problems. However, prior algorithms for on-demand circular RAG evaluation can be inefficient or even impractical for dataflow analysis of realistic programming languages like Java. We propose a new demand algorithm for attribute evaluation that addresses these weaknesses, and apply it to a number of real-world case studies. Our algorithm exploits the fact that some attributes can never be circular, and we describe a static meta-analysis that identifies such attributes, and obtains a median steady-state performance speedup of ~2.5x and ~22x for dead-assignment and null-pointer dereference analyses, respectively.
Idriss Riouak, Niklas Fors, Jesper Öqvist, Görel Hedin, Christoph Reichenbach
SLE4
2024 Property probes: Live exploration of program analysis results
abstract
We present property probes, a mechanism for helping a developer explore partial program analysis results in terms of the source program interactively while the program is edited. A node locator data structure is introduced that maps between source code spans and program representation nodes, and that helps identify probed nodes in a robust way, after modifications to the source code. We have developed a client–server based tool CodeProber supporting property probes, and argue that it is very helpful in debugging and understanding program analyses. We have evaluated our tool on several languages and analyses, including a full Java compiler and a tool for intraprocedural dataflow analysis. Our performance results show that the probe overhead is negligible even when analyzing large projects.
Anton Risberg Alaküla, Görel Hedin, Niklas Fors, Adrian Pop
J. Syst. Softw.2
2024 IntraJ: an on-demand framework for intraprocedural Java code analysis
abstract
Abstract Static analysis tools play a crucial role in software development by detecting bugs and vulnerabilities. However, running these tools separately from the code editing process often causes developers to switch contexts, which can reduce productivity. Previous work has shown how Reference Attribute Grammars (RAGs) can be used for declarative implementation of competitive tooling for intraprocedural control-flow and dataflow analysis of Java source code, embodied in the tool IntraJ. In this paper, we demonstrate how IntraJ can be leveraged to provide interactive analysis results directly in the editor, similar to compile-time error detection, relying on automatic on-demand evaluation of RAGs. We discuss the architecture of IntraJ, and demonstrate how it can be integrated into the development process in three different ways: in the command line, in an editor integration based on the Language Server Protocol, and in an integration with the debugging tool CodeProber. We showcase the extensibility of IntraJ by illustrating how new client analyzes and language constructs can be added to the framework through RAG specifications. Finally, we evaluate the interactive performance of IntraJ on a set of real-world Java benchmarks, demonstrating that IntraJ can provide interactive feedback to developers, achieving a response time of under 0.1 seconds for most compilation units.
Idriss Riouak, Niklas Fors, Görel Hedin, Christoph Reichenbach
Int. J. Softw. Tools Technol. Transf.3
2024 Mutation testing optimisations using the Clang front-end
abstract
Abstract Mutation testing is the state‐of‐the‐art technique for assessing the fault detection capacity of a test suite. Unfortunately, a full mutation analysis is often prohibitively expensive. The CppCheck project for instance, demands a build time of 5.8 min and a test execution time of 17 s on our desktop computer. An unoptimised mutation analysis, for 55,000 generated mutants took 11.8 days in total, of which 4.3 days is spent on (re)compiling the project. In this paper, we present a feasibility study, investigating how a number of optimisation strategies can be implemented based on the Clang front‐end. These optimisation strategies allow to eliminate the compilation and execution overhead in order to support efficient mutation testing for the C language family. We provide a proof‐of‐concept tool that achieves a speedup of between 2 and 30 . We make a detailed analysis of the speedup induced by the optimisations, elaborate on the lessons learned and point out avenues for further improvements.
Sten Vercammen, Serge Demeyer, Markus Borg, Niklas Pettersson, Görel Hedin
Softw. Test. Verification Reliab.5
2022 JFeature: Know Your Corpus
abstract
Software corpora are crucial for evaluating research artifacts and ensuring repeatability of outcomes. Corpora such as DaCapo and Defects4J provide a collection of real-world open-source projects for evaluating the robustness and performance of software tools like static analysers. However, what do we know about these corpora? What do we know about their composition? Are they really suited for our particular problem? We developed JFEATURE, an extensible static analysis tool that extracts syntactic and semantic features from Java programs, to assist developers in answering these questions. We demonstrate the potential of JFEATURE by applying it to four widely-used corpora in the program analysis area, and we suggest other applications, including longitudinal studies of individual Java projects and the creation of new corpora.
Idriss Riouak, Görel Hedin, Christoph Reichenbach, Niklas Fors
SCAM2
2022 Property Probes: Source Code Based Exploration of Program Analysis Results
abstract
We present property probes, a mechanism for helping a developer interactively explore partial program analysis results in terms of the source program, and as the program is edited. A node locator data structure is introduced that maps between source code spans and program representation nodes, and that helps identify probed nodes in a robust way, after modifications to the source code. We have developed a client-server based tool supporting property probes, and argue that it is very helpful in debugging and understanding program analyses. We have evaluated our tool on several languages and analyses, including a full Java compiler and a tool for intraprocedural dataflow analysis. Our performance results show that the probe overhead is negligible even when analyzing large projects.
Anton Risberg Alaküla, Görel Hedin, Niklas Fors, Adrian Pop
SLE2
2021 A Precise Framework for Source-Level Control-Flow Analysis
abstract
This paper presents INTRACFG, a declarative and language-independent framework for constructing precise intraprocedural control-flow graphs (CFGs) based on the reference attribute grammar system JastAdd. Unlike most other frameworks, which build CFGs on an Intermediate Representation level, e.g., bytecode, our approach superimposes the CFGs on the Abstract Syntax Tree, enabling accurate client analysis. Moreover, INTRACFG overcomes expressivity limitations of an earlier RAG-based framework, allowing the construction of AST-Unrestricted CFGs: CFGs whose shape is not confined to the AST structure. We evaluate the expressivity of INTRACFG with INTRAJ, an application of INTRACFG to Java 7, by comparing two data flow analyses built on top of INTRAJ against tools from academia and from the industry. The results demonstrate that INTRAJ is effective at building precise and efficient CFGs and enables analyses with competitive performance.
Idriss Riouak, Christoph Reichenbach, Görel Hedin, Niklas Fors
SCAM3
2020 Feature-Oriented Control Programming
abstract
Managing variability in control programs often requires code duplication or that all variants are anticipated in advance. In this paper, we present a new approach to obtaining modular functionality reuse across variants. Using the language mechanisms diagram inheritance and connection interception, a feature model and an interactive feature-selection wizard can be automatically derived from the control program.
Niklas Fors, Alfred Theorin, Sven Gestegard Robertz, Görel Hedin
ETFA4
2020 Principles and patterns of JastAdd-style reference attribute grammars
abstract
Reference attribute grammars (RAGs) have reached a level of maturity where they are supported by several tools, and have gained traction in both academic and industrial language tool development. However, despite a lot of accumulated knowledge of how to best develop RAGs in practice, there is limited support to guide practitioners.
Niklas Fors, Emma Söderberg, Görel Hedin
SLE3
2018 Continuous model validation using reference attribute grammars
abstract
Just like current software systems, models are characterised by increasing complexity and rate of change. Yet, these models only become useful if they can be continuously evaluated and validated. To achieve sufficiently low response times for large models, incremental analysis is required. Reference Attribute Grammars (RAGs) offer mechanisms to perform an incremental analysis efficiently using dynamic dependency tracking. However, not all features used in conceptual modelling are directly available in RAGs. In particular, support for non-containment model relations is only available through manual implementation. We present an approach to directly model uni- and bidirectional non-containment relations in RAGs and provide efficient means for navigating and editing them. This approach is evaluated using a scalable benchmark for incremental model editing and the JastAdd RAG system. Our work demonstrates the suitability of RAGs for validating complex and continuously changing models of current software systems.
Johannes Mey, René Schöne, Görel Hedin, Emma Söderberg, Thomas Kühn 0001, Niklas Fors, Jesper Öqvist, Uwe Aßmann
SLE3
2017 Concurrent circular reference attribute grammars
abstract
Reference Attribute Grammars (RAGs) is a declarative executable formalism used for constructing compilers and related tools. Existing implementations support concurrent evaluation only with global evaluation locks. This may lead to long latencies in interactive tools, where interactive and background threads query attributes concurrently.
Jesper Öqvist, Görel Hedin
SLE2
2016 DrAST: an inspection tool for attributed syntax trees (tool demo)
Joel Lindholm, Johan Thorsberg, Görel Hedin
SLE3
2015 Declarative rewriting through circular nonterminal attributes
Emma Söderberg, Görel Hedin
Comput. Lang. Syst. Struct.2
2015 A JastAdd implementation of Oberon-0
Niklas Fors, Görel Hedin
Sci. Comput. Program.2
2014 Intercepting dataflow connections in diagrams with inheritance
abstract
Control systems are often built using visual dataflow-based languages, and supporting different variants may be challenging. We introduce the concept of connection interception based on inheritance. This mechanism allows a diagram to extend another diagram and intercept connections defined in the supertype, that is, to replace it by two other connections, in order to specialize the behavior. This can be used to create extensible libraries that support different variants.
Niklas Fors, Görel Hedin
VL/HCC2
2014 Software language engineering (SLE '12)
Krzysztof Czarnecki 0001, Görel Hedin
Sci. Comput. Program.2
2013 Circular Higher-Order Reference Attribute Grammars
Emma Söderberg, Görel Hedin
SLE2
2013 Extensible intraprocedural flow analysis at the abstract syntax tree level
Emma Söderberg, Torbjörn Ekman 0001, Görel Hedin, Eva Magnusson
Sci. Comput. Program.3
2012 Handling of layout-sensitive semantics in a visual control language
abstract
We have implemented a prototype editor for a visual language where the semantics depends on layout. A high-level abstract syntax is defined, where these semantics can be captured without the need for storing concrete graphical coordinates. The model implementation is done in JastAdd, a metacompilation tool based on reference attribute grammars. This gives a modular architecture where the core compiler model can be reused for both the interactive editor and the batch compiler.
Niklas Fors, Görel Hedin
VL/HCC2
2011 Metacompiling OWL Ontologies
Anders Nilsson 0003, Görel Hedin
SLE2
2010 Automated Selective Caching for Reference Attribute Grammars
Emma Söderberg, Görel Hedin
SLE2
2010 Implementation of a Modelica compiler using JastAdd attribute grammars
Johan Åkesson, Torbjörn Ekman 0001, Görel Hedin
Sci. Comput. Program.3
2009 Demand-driven evaluation of collection attributes
Eva Magnusson, Torbjörn Ekman 0001, Görel Hedin
Autom. Softw. Eng.3
2008 Practical Scope Recovery Using Bridge Parsing
Emma Nilsson-Nyman, Torbjörn Ekman 0001, Görel Hedin
SLE3
2007 The jastadd extensible java compiler
abstract
The JastAdd Extensible Java Compiler is a high quality Java compiler that is easy to extend in order to build static analysis tools for Java, and to extend Java with new language constructs. It is built modularly, with a Java 1.4 compiler that is extended to a Java 5 compiler. Example applications that are built as extensions include an alternative backend that generates Jimple, an extension of Java with AspectJ constructs, and the implementation of a pluggable type system for non-null checking and inferenc.
Torbjörn Ekman 0001, Görel Hedin
OOPSLA2
2007 The JastAdd system - modular extensible compiler construction
Torbjörn Ekman 0001, Görel Hedin
Sci. Comput. Program.2
2007 Preface
Görel Hedin, John Tang Boyland
Sci. Comput. Program.1
2007 Circular reference attributed grammars - their evaluation and applications
Eva Magnusson, Görel Hedin
Sci. Comput. Program.2
2006 Preface
Görel Hedin, Eric Van Wyk
Sci. Comput. Program.1
2005 Teaching extreme programming to large groups of students
Görel Hedin, Lars Bendix, Boris Magnusson
J. Syst. Softw.1
2004 Rewritable Reference Attributed Grammars
Torbjörn Ekman 0001, Görel Hedin
ECOOP2
2003 Introducing Software Engineering by means of Extreme Programming
abstract
This paper reports on experience from teaching basic software engineering concepts by using Extreme Programming in a second year undergraduate course taken by 107 students. We describe how this course fits into a wider programme on software engineering and technology and report our experience from running and improving the course. Particularly important aspects of our setup includes team coaching (by older students) and "team-in-one-room". Our experience so far is very positive and we see that students get a good basic understanding of the important concepts in software engineering, rooted in their own practical experience.
Görel Hedin, Lars Bendix, Boris Magnusson
ICSE1
2003 Coaching Coaches
Görel Hedin, Lars Bendix, Boris Magnusson
XP1
2003 JastAdd--an aspect-oriented compiler construction system
Görel Hedin, Eva Magnusson
Sci. Comput. Program.1
1994 An Overview of Door Attribute Grammars
Görel Hedin
CC1
1989 An Object-Oriented Notation for Attribute Grammars
Görel Hedin
ECOOP1
1988 The Mjølner Environment: Direct Interaction with Abstractions
Görel Hedin, Boris Magnusson
ECOOP1