About
234
Publications
56,945
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
4,229
Citations
Publications
Publications (234)
Digital twins (DTs) are often defined as a pairing of a physical entity and a corresponding virtual entity (VE), mimicking certain aspects of the former depending on the use-case. In recent years, this concept has facilitated numerous use-cases ranging from design to validation and predictive maintenance of large and small high-tech systems. Variou...
The development of systems following model-driven engineering can include models from different domains. For example, to develop a mechatronic component one might need to combine expertise about mechanics, electronics, and software. Although these models belong to different domains, the changes in one model can affect other models causing inconsist...
Plagiarism is one of the most serious academic offenses. However, people have adopted different approaches to avoid plagiarism, such as transcribing excerpts from one language. Thus, it is challenging to realize this plagiarism form unless someone fully understands another language. Researchers have developed approaches for detecting plagiarism in...
Objective The goal of this study is to identify gaps and challenges related to cross-domain model management focusing on consistency checking. Method We conducted a systematic literature review. We used the keyword-based search on Google Scholar, and we identified 618 potentially relevant studies; after applying inclusion and exclusion criteria, 96...
The development of systems following model-driven engineering can include models from different domains. For example, to develop a mechatronic component one might need to combine expertise about mechanics, electronics, and software. Although these models belong to different domains, the changes in one model can affect other models causing inconsist...
Stack Overflow (SO) is the reference for asking and answering programming-related questions. In early 2014 Stack Overflow em Português (SO-PT) was announced with the goal to reach developers that are not sufficiently proficient in the English language to fully participate in SO. Almost four years later we study how the simultaneous availability of...
Process mining techniques use event data from operational and software processes to discover process models, to check the conformance of predefined process models, and to extend such models with information about bottlenecks, decisions, and resource usage. In recent years, the process mining field made huge advances in terms of scalability. In addi...
To satisfy demand for customized software solutions, companies commonly use so-called clone-and-own approaches to reuse functionality by copying existing realization artifacts and modifying them to create new product variants. Lacking clear documentation about the variability relations (i.e., the common and varying parts), the resulting variants ha...
Over the past years, there has been an increase in the application of model driven engineering in industry. Similar to traditional software engineering, understanding how technologies are actually used in practice is essential for developing good tooling, and decision making processes. Unfortunately, obtaining and analyzing empirical data in a mode...
This extended paper presents 1) a novel hierarchy and recursion extension to the process tree model; and 2) the first, recursion aware process model discovery technique that leverages hierarchical information in event logs, typically available for software systems. This technique allows us to analyze the operational processes of software systems un...
A challenging aspect of model-to-code transformations is to ensure that the semantic behavior of the input model is preserved in the output code. When constructing concurrent systems, this is mainly difficult due to the non-deterministic potential interaction between threads. In this paper, we consider this issue for a framework that implements a t...
Language-oriented programming (LOP) advocates a way of creating software systems that starts from the development of a domain-specific language (DSL). The DSL is geared towards solving computational problems in a particular domain. Developers then use the DSL to express configurations, rules, algorithms or knowledge for this particular domain at hi...
Context. In safety-critical domains, safety cases are widely used to demonstrate the safety of systems. A safety case is an argumentation for showing confidence in the claimed safety assurance of a system, which should be comprehensible and well-structured. Typically, safety cases can be represented in plain text or graphic way, such as Goal Struct...
The dawn of the fourth industrial revolution, Industry 4.0 has created great enthusiasm among companies and researchers by giving them an opportunity to pave the path towards the vision of a connected smart factory ecosystem. However, in context of automotive industry there is an evident gap between the requirements supported by the current automot...
Welcome to the sixth special issue on Experimental Software and Toolkits (EST) of Elsevier’s Science of Computer Programming journal. The EST series aims at allowing academic software developers to publish the software systems they developed with similar rigour as academic papers. Peer reviewers evaluated not only a scientific paper about the devel...
This book constitutes the refereed proceedings of the 10th International Conference on Model Transformation, ICMT 2017, held as part of STAF 2017, in Marburg, Germany, in July 2017.
The 9 full papers and 2 short papers were carefully reviewed and selected from 31 submissions. The papers are organized in the following topical sections: transformati...
This book constitutes the refereed proceedings of the 43rd International Conference on Current Trends in Theory and Practice of Computer Science, SOFSEM 2017, held in Limerick, Ireland, in January 2017.
The 34 papers presented in this volume were carefully reviewed and selected from 41 submissions. They were organized in topical sections named: fou...
With increased adoption of Model-Driven Engineering, the number of related artefacts in use, such as models, greatly increase. To be able to tackle this dimension of scalability in MDE, we propose to treat the artefacts as data, and apply
various techniques ranging from information retrieval to machine learning to analyse and manage them in a scala...
The size and complexity of Simulink models is constantly increasing, just as the systems which they represent. Therefore, it is beneficial to control them already at the design phase. In this paper we establish a set of complexity metrics for Simulink models to capture diverse aspects of complexity by proposing new and redefining existing metrics....
Domain specific languages (DSLs) allow modeling systems in terms of domain concepts. We discuss the shortcomings of existing DSL evolution approaches when applied in industry and propose extensions addressing these shortcomings.
The increased use of domain-specific languages (DSLs) and the absence of adequate tooling to take advantage of commonalities among DSLs has led to a situation where the same structure is duplicated in multiple DSLs. This observation has lead to the work described in this paper: an investigation of methods and tools for pattern specification and app...
Exception mechanisms help to ensure that a program satisfies the important robustness criterion of dependency safety: if an operation fails, no code that depends on the operation's successful completion is executed anymore nor will wait for the completion. However, the exception handling mechanisms available in languages like Java do not provide a...
Many applications in Model-Driven Engineering involve processing multiple models or metamodels. A good example is the comparison and merging of metamodel variants into a common metamodel in domain model recovery. Although there are many sophisticated techniques to process the input dataset, little attention has been given to the initial data analys...
The increase of software driven functionalities in products leads to more complex software. Helping with the construction of this complex software, models in model-driven engineering have become larger and more complex. As a consequence, the models are harder to understand and the need to reuse models is augmented. Given these two goals: increasing...
Model-driven engineering (MDE) is a software development methodology that promises to alleviate the complex task of writing software. To achieve its goals, MDE makes use of models. Although models are concise representations of the knowledge in a domain, they can become large and complex. In dealing with complexity, modularity has proven to be a go...
An important problem in Model Driven Engineering is maintaining the correctness of a specification under model transformations. We consider this issue for a framework that implements the transformation chain from the modeling language SLCO to Java. In particular, we verify the generic part of the last transformation step to Java code, involving cha...
Context :In the safety domain, safety assessment is used to show that safety-critical systems meet the required safety objectives. This process is also referred to as safety assurance and certification. During this procedure, safety standards are used as development guidelines to keep the risk at an acceptable level. Safety-critical systems can be...
Recently modeling techniques are introduced to support safety assessment. Goal Structural Notation is one of
these modeling techniques, which can be used to facilitate the development of safety argumentation and create
reusable safety argumentation models. Consequently, GSN-based safety cases are widely used to demonstrate
the safety of systems in...
This paper presents a systematic survey of open source multiphysics frameworks in the en- gineering domains. These domains share many commonalities despite the diverse application areas. A thorough search for the available frameworks with both academic and industrial ori- gins has revealed numerous candidates. Considering key characteristics such a...
Compilers are one of the cornerstones of Computer Science and in particular for Software Development. Compiler research has a long tradition and is very mature. Nevertheless, there is hardly any standardization with respect to formalisms and tools for developing compilers.
Comparison of formalisms and tools to describe compilers for languages is no...
Domain Specific Languages (DSL) have received some prominence recently. Designing a DSL and all their tools is still cumbersome and lots of work. Engineering of DSLs is still at infancy, not even the terms have been coined and agreed on. In particular globalization and all its consequences need to be precisely defined and discussed. This chapter pr...
In order to show that the required safety objectives are met, it is necessary to collect safety evidence in the form of consistent and complete data. However, manual safety evidence collection is usually tedious and time-consuming, due to a large number of artifacts and implicit relations between them. The potential ambiguities in the textual descr...
Safety of automotive systems is becoming more involved, specially for the case of autonomous vehicles. The ISO 26262 standard offers a systematic approach for designing a safe road vehicle (or subsystems of a car) from design phase through its production. However, providing functional safety (according to ISO 26262) for an existing system is a chal...
In the safety domain, safety standards are used as a development guideline to keep the risk at an acceptable level. Safety of the safety-critical systems can be assessed according to those safety standards. This assessment process is called safety assurance. Due to the manual work, the safety assurance process is usually costly, time consuming, and...
Software development is usually a collaborative venture. Open Source Software (OSS) projects are no exception; indeed, by design, the OSS approach can accommodate teams that are more open, geographically distributed, and dynamic than commercial teams. This, we find, leads to OSS teams that are quite diverse. Team diversity, predominantly in offline...
Software engineers are humans and so they make lots of mistakes. Typically 1 out of 10 to 100 tasks go wrong. The only way to avoid these mistakes is to introduce redundancy in the software engineering process. This article is a plea to consciously introduce several levels of redundancy for each programming task. Depending on the required level of...
As safety standards are widely used in safety-critical domains, such as ISO 26262 in the automotive domain, the use of safety cases to demonstrate product safety is stimulated. It is crucial to ensure that a safety case is both correct and clear. To support this, we proposed to make use of modeling techniques to support safety assurance in the auto...
Safety case development is highly recommended by some safety standards to justify the safety of a system. The Goal Structuring Notation (GSN) is a popular approach to construct a safety case. However, the content of the safety case elements, such as safety claims, is in natural language. Therefore, a common understanding of the meaning of a safety...
Safety assurance or certification is one of the most costly and time-consuming tasks in automotive, railway, avionics, and other safety-critical domains. Different transport sectors have developed their own specific sets of safety standards, which creates a big challenge to reuse pre-certified components and share expertise between different transp...
In safety-critical domains, conceptual models are created in the form of metamodels using different concepts from possibly overlapping domains. Comparison between those conceptual models can facilitate the reuse of models from one domain to another. This paper describes the mappings detected when comparing metamodels and models used for safety assu...
In this article we study the health of software engineering conferences by means of a suite of metrics created for this purpose. The metrics measure stability of the community, openness to new authors, introversion, representativeness of the PC with respect to the authorsʼ community, availability of PC candidates, and scientific prestige. Using thi...
We establish a semantics for building grammars from a modularised specification in which modules are able to delete productions from imported nonterminals. Modules have import lists of nonterminals; some or all of an imported nonterminal's productions may be suppressed at import time. There are two basic import mechanisms which (a) reference or (b)...
Architecture views have long been used in software industry to systematically model complex systems by representing them from the perspective of related stakeholder concerns. However, consensus has not been reached for the architecture views between automotive architecture description languages and automotive architecture frameworks. Therefore, thi...
Experimental software and toolkits play a crucial role in computer science. Elsevier’s Science of Computer Programming special issues on Experimental Software and Toolkits (EST) provide a means for academic tool builders to get more visibility and credit for their work, by publishing a paper along with the corresponding system in a peer- reviewed j...
We present work in progress on, verified, transformation of a modeling language based on communicating concurrent state machines, SLCO, to Java. Some concurrency related challenges, related to atomicity and non-standard fairness issues, are pointed out. We discuss solutions based on Java synchronization concepts.
In this paper we present an approach to specifying operator precedence based on declarative disambiguation constructs and an implementation mechanism based on grammar rewriting. We identify a problem with existing generalized context-free parsing and disambiguation technology: generating a correct parser for a language such as OCaml using declarati...
Current standards for vehicle safety consider only accidental failures; they do not consider failures caused by malicious attackers. The standards implicitly assume that the sensors and Electronic Control Units (ECUs) of each vehicle compose a secure in-vehicle network because no external entity communicates with the nodes of the network. These sta...
Preface to the special section on software evolution, adaptability, and maintenance of the Elsevier Science of Computing international journal
As more and more complex software is deployed in safety-critical embedded systems, the challenge of assessing the safety of those systems according to the relevant standards is becoming greater. Due to the extensive manual work required, validating compliance of these systems with safety standards is an expensive and time-consuming activity; furthe...
Eclipse guidelines distinguish between two types of interfaces provided to third-party developers, i.e., APIs and non-APIs. APIs are stable and supported, while non-APIs are unstable, unsupported and discouraged as they are subject to arbitrary change or removal without notice. In our previous work, we found that despite the discouragement of Eclip...
Since the inception of Lehman's software evolution laws in the early 1970s, they have attracted significant attention from the research community. However, to our knowledge, no study of applicability of these laws on the software systems that exhibit constrained evolution process has been carried out so far. In this paper we take a first step in th...
In this paper we describe our experience in applying the Event-B formalism for specifying the dynamic semantics of a real-life industrial DSL. The main objective of this work is to enable the industrial use of the broad spectrum of specification analysis tools that support Event-B. To leverage the usage of Event-B and its analysis techniques we dev...
Today numerous software systems are being de-veloped on top of frameworks. In this study, we analyzed the survival of 467 Eclipse third-party plug-ins altogether having 1,447 versions. We classify these plug-ins into two categories: those that depend on only stable and supported Eclipse APIs and those that depend on at least one of the potentially...
Software plays an important role in designing and operating warehouses. However, traditional software engineering methods
for designing warehouse software are not able to cope with the complexity, size, and increase of automation in modern warehouses.
This chapter describes Model-Driven Software Engineering (MDSE), a discipline aimed at dealing wit...
Understanding an individual's contribution to an ecosystem often necessitates integrating information from mul-tiple repositories corresponding to different projects within the ecosystem or different kinds of repositories (e.g., mail archives and version control systems). However, recognising that different contributions belong to the same contribu...
Incompatibility between applications developed on top of frameworks with new versions of the frameworks is a big nightmare to both developers and users of the applications. Understanding the factors that cause incompatibilities is a step to solving them. One such direction is to analyze and identify parts of the reusable code of the framework that...
Extending a language by embedding within it another language presents significant parsing challenges, especially if the embedding is recursive. The composite grammar is likely to be nondeterministic as a result of tokens that are valid in both the host and the embedded language. In this paper we examine the challenges of embedding the Tom language...
We present an approach to model hardware configurations of complex manufacturing systems such as ASML's lithography machines. These hardware configurations consist of actuator and sensor elements which are controlled by system software that consists of over 35 million lines of code. To minimize the cost of testing and system integration, software s...
Over the last decade, Architecture Description Languages (ADLs) are attracting considerable attention by automotive companies because they consider them as one of the key solutions to improve the quality of automotive electronic and software systems. Automotive ADLs like EAST-ADL, AADL, TADL, and AML are being defined to address not only the archit...
Correctness of model transformations is a prerequisite for generating correct implementations from models. Given refining model transformations that preserve desirable properties, models can be transformed into correct-by-construction implementations. However, proving that model transformations preserve properties is far from trivial. Therefore, we...
Model transformations are commonly used to transform models suited for one purpose (e.g., describing a solution in a particular domain) to models suited for a related but different purpose (e.g., simulation or execution). The disadvantage of a transformational approach, however, is that feedback acquired from analyzing transformed models is not rep...
Code generators are metaprograms translating a regular tree to a sentence of a context-free language. The metalanguage used to implement the code generator should be, on the one side, expressive enough to be of practical value, and, on the other side, restricted enough to enforce the separation between the view and the model, according to the model...
This chapter provides basic notations, definitions and properties needed throughout this book. Whenever possible the notations and definitions are used as they appear in the literature. This chapter can be skipped and referred to when necessary.
Writing templates, and code generators in general, is a complex and error prone task. This complexity mainly results from mixing multiple languages in a template, executed at different stages, and the incompleteness of the object code. Manual verification of incomplete object code is hard to do and computers cannot execute incomplete code.
Three case studies are presented in this chapter to show the use of the unparser-complete metalanguage and the usability of the syntax-safe template evaluator in a practical setting. The syntax-safe template evaluator Repleo is used for implementing these case studies. Two case studies show a reimplementation of an existing code generator. The reim...
A code generator is a program translating an input model into code. In this paper we focus on template-based code generators in the context of the model view controller architecture (MVC).
The language in which the code generator is written is known as a metalanguage in the code generation parlance. The metalanguage should be, on the one side, expr...
Templates are used to generate all kinds of text, including computer code. The last decade, the use of templates gained a lot of popularity due to the increase of dynamic web applications. Templates are a tool for programmers, and implementations of template engines are most times based on practical experience rather than based on a theoretical bac...