343 research outputs found
Generating a Performance Stochastic Model from UML Specifications
Since its initiation by Connie Smith, the process of Software Performance
Engineering (SPE) is becoming a growing concern. The idea is to bring
performance evaluation into the software design process. This suitable
methodology allows software designers to determine the performance of software
during design. Several approaches have been proposed to provide such
techniques. Some of them propose to derive from a UML (Unified Modeling
Language) model a performance model such as Stochastic Petri Net (SPN) or
Stochastic process Algebra (SPA) models. Our work belongs to the same category.
We propose to derive from a UML model a Stochastic Automata Network (SAN) in
order to obtain performance predictions. Our approach is more flexible due to
the SAN modularity and its high resemblance to UML' state-chart diagram
Automatic Distributed Code Generation from Formal Models of Asynchronous Concurrent Processes
International audienceFormal process languages inheriting the concurrency and communication features of process algebras are convenient formalisms to model distributed applications, especially when they are equipped with formal verification tools (e.g., model-checkers) to help hunting for bugs early in the development process. However, even starting from a fully verified formal model, bugs are likely to be introduced while translating (generally by hand) the concurrent model —which relies on high-level and expressive communication primitives— into the distributed implementation —which often relies on low-level communication primitives. In this paper, we present DLC, a compiler that enables distributed code to be generated from models written in a formal process language called LNT, which is equipped with a rich verification toolbox named CADP. The generated code can be either executed in an autonomous way (i.e., without requiring additional code to be defined by the user), or connected to external software through user-modifiable C functions. We present an experiment where DLC generates a distributed implementation from the LNT model of the Raft consensus algorithm
Compatibility Checking for Asynchronously Communicating Software
International audienceCompatibility is a crucial problem that is encountered while constructing new software by reusing and composing existing components. A set of software components is called compatible if their composition preserves certain properties, such as deadlock freedom. However, checking compatibility for systems communicating asynchronously is an undecidable problem, and asynchronous communication is a common interaction mechanism used in building software systems. A typical approach in analyzing such systems is to bound the state space. In this paper, we take a different approach and do not impose any bounds on the number of participants or the sizes of the message buffers. Instead, we present a sufficient condition for checking compatibility of a set of asynchronously communicating components. Our approach relies on the synchronizability property which identifies systems for which interaction behavior remains the same when asynchronous communication is replaced with synchronous communication. Using the synchronizability property, we can check the compatibility of systems with unbounded message buffers by analyzing only a finite part of their behavior. We have implemented a prototype tool to automate our approach and we have applied it to many examples
Early aspects: aspect-oriented requirements engineering and architecture design
This paper reports on the third Early Aspects: Aspect-Oriented Requirements Engineering and Architecture Design Workshop, which has been held in Lancaster, UK, on March 21, 2004. The workshop included a presentation session and working sessions in which the particular topics on early aspects were discussed. The primary goal of the workshop was to focus on challenges to defining methodical software development processes for aspects from early on in the software life cycle and explore the potential of proposed methods and techniques to scale up to industrial applications
Testing by Dualization
Software engineering requires rigorous testing to guarantee the product's
quality. Semantic testing of functional correctness is challenged by
nondeterminism in behavior, which makes testers difficult to write and reason
about.
This thesis presents a language-based technique for testing interactive
systems. I propose a theory for specifying and validating nondeterministic
behaviors, with guaranteed soundness and correctness. I then apply the theory
to testing practices, and show how to derive specifications into interactive
tester programs. I also introduce a language design for producing test inputs
that can effectively detect and reproduce invalid behaviors.
I evaluate the methodology by specifying and testing real-world systems such
as web servers and file synchronizers, demonstrating the derived testers'
ability to find disagreements between the specification and the implementation
- …