Related papers: Specifying Reusable Components
The usual advantages put forward for including nullability declarations in the type systems of programming languages are that they improve program reliability or performance. But there is another, entirely different, reason for doing so. In…
Complex system design often proceeds in an iterative fashion, starting from a high-level model and adding detail as the design matures. This process can be assisted by metamodeling techniques that automate some model manipulations and check…
We introduce contracts for linear dynamical systems with inputs and outputs. Contracts are used to express formal specifications on the dynamic behaviour of such systems through two aspects: assumptions and guarantees. The assumptions are a…
We propose a Capabilities-based approach for building long-lived, complex systems that have lengthy development cycles. User needs and technology evolve during these extended development periods, and thereby, inhibit a fixed…
The study of variability in software development has become increasingly important in recent years. A common mechanism to represent the variability in a product line is by means of feature models. However, the relationship between these…
Producing a good software design involves not only writing a definition that satisfies the syntax of the chosen language or structural constraints of a design paradigm. It also involves upholding a variety of expectations about the behavior…
For engineering software with formal correctness proofs it is crucial that proofs can be efficiently reused in case the software or its specification is changed. Unfortunately, in reality even slight changes in the code or its specification…
As software has become an integral part of scientific workflows, reproducible research practices must take it into account. In what way? Archiving source code is a necessary but insufficient condition. The ability to redeploy software…
Modular deductive verification is a powerful technique capable to show that each function in a program satisfies its contract. However, function contracts do not provide a global view of which high-level (e.g. security-related properties of…
Requirement engineering is a key ingredient for software development to be effective. Apart from the traditional software requirement which is not much appropriate for new emerging software such as smart handheld device based software. In…
Design patterns are well practices to share software development experiences. These patterns allow enhancing reusability, readability and maintainability of architecture and code of software applications. As simulation applies computerized…
A growing number of safety-critical industries agree that building confidence in complex systems can be achieved through evidence and structured argumentation framed in assurance cases. Nevertheless, according to practical industry…
When network engineers design a network, they need to verify the validity of their design in a test environment. Since testing on actual equipment is expensive and burdensome for engineers, we have proposed automatic verification methods…
This paper introduces an automatic debugging framework that relies on model-based reasoning techniques to locate faults in programs. In particular, model-based diagnosis, together with an abstract interpretation based conflict detection…
Model-based process simulation can be used to derive designs and operating conditions of chemical processes that optimally balance multiple objectives, such as quality, costs, or environmental impacts. This work focuses on identifying…
Mathematical models are increasingly used in both academia and the pharmaceutical industry to understand how phenotypes emerge from systems of molecular interactions. However, their current construction as monolithic sets of equations…
Generating software from abstract models is a prime activity in model-drivenengineering. Adaptable and extendable code generators are important to address changing technologies as well as user needs. However, theyare less established, as…
Model checking temporal properties of software is algorithmically hard. To be practically feasible, it usually requires the creation of simpler, abstract models of the software, over which the properties are checked. However, creating…
To derive a program for a given specification R means to find an artifact P that satisfies two conditions: P is executable in some programming language; and P is correct with respect to R. Refinement-based program derivation achieves this…
Building software-driven systems that are easily understood becomes a challenge, with their ever-increasing complexity and autonomy. Accordingly, recent research efforts strive to aid in designing explainable systems. Nevertheless, a common…