412,880 research outputs found
Managing complexity of control software through concurrency
In this thesis, we are concerned with the development of concurrent software for embedded systems. The emphasis is on the development of control software. Embedded systems are concurrent systems whereby hardware and software communicate with the concurrent world. Concurrency is essential, which cannot be ignored. It requires a proper handling to avoid pathological problems (e.g. deadlock and livelock) and performance penalties (e.g. starvation and priority conflicts). Multithreading, as such, leads to sources of complexity in concurrent software. This complexity is considered frightening, because it complicates the software designs and the resulting code. Moreover, this paradigm complicates the understanding of the behaviour of concurrent software. A paradigm with a precise understanding of concurrency is essential. In this thesis, a methodology is proposed that comprises a paradigm of fundamental aspects of concurrency
Jeeg: Temporal Constraints for the Synchronization of Concurrent Objects
We introduce Jeeg, a dialect of Java based on a declarative replacement of the synchronization mechanisms of Java that results in a complete decoupling of the 'business' and the 'synchronization' code of classes. Synchronization constraints in Jeeg are expressed in a linear temporal logic which allows to effectively limit the occurrence of the inheritance anomaly that commonly affects concurrent object oriented languages. Jeeg is inspired by the current trend in aspect oriented languages. In a Jeeg program the sequential and concurrent aspects of object behaviors are decoupled: specified separately by the programmer these are then weaved together by the Jeeg compiler
Multi-level Visualization of Concurrent and Distributed Computation in Erlang
This paper describes a prototype visualization system
for concurrent and distributed applications programmed
using Erlang, providing two levels of granularity of view. Both
visualizations are animated to show the dynamics of aspects of
the computation.
At the low level, we show the concurrent behaviour of the
Erlang schedulers on a single instance of the Erlang virtual
machine, which we call an Erlang node. Typically there will be
one scheduler per core on a multicore system. Each scheduler
maintains a run queue of processes to execute, and we visualize
the migration of Erlang concurrent processes from one run queue
to another as work is redistributed to fully exploit the hardware.
The schedulers are shown as a graph with a circular layout. Next
to each scheduler we draw a variable length bar indicating the
current size of the run queue for the scheduler.
At the high level, we visualize the distributed aspects of the
system, showing interactions between Erlang nodes as a dynamic
graph drawn with a force model. Speci?cally we show message
passing between nodes as edges and lay out nodes according to
their current connections. In addition, we also show the grouping
of nodes into âs_groupsâ using an Euler diagram drawn with
circles
Graphical modelling language for spycifying concurrency based on CSP
Introduced in this (shortened) paper is a graphical modelling language for specifying concurrency in software designs. The language notations are derived from CSP and the resulting designs form CSP diagrams. The notations reflect both data-flow and control-flow aspects of concurrent software architectures. These designs can automatically be described by CSP algebraic expressions that can be used for formal analysis. The designer does not have to be aware of the underlying mathematics. The techniques and rules presented provide guidance to the development of concurrent software architectures. One can detect and reason about compositional conflicts (errors in design), potential deadlocks (errors at run-time), and priority inversion problems (performance burden) at a high level of abstraction. The CSP diagram collaborates with objectoriented modelling languages and structured methods
Safe and Verifiable Design of Concurrent Java Programs
The design of concurrent programs has a reputation for being difficult, and thus potentially dangerous in safetycritical real-time and embedded systems. The recent appearance of Java, whilst cleaning up many insecure aspects of OO programming endemic in C++, suffers from a deceptively simple threads model that is an insecure variant of ideas that are over 25 years old [1]. Consequently, we cannot directly exploit a range of new CASE tools -- based upon modern developments in parallel computing theory -- that can verify and check the design of concurrent systems for a variety of dangers\ud
such as deadlock and livelock that otherwise plague us during testing and maintenance and, more seriously, cause catastrophic failure in service. \ud
Our approach uses recently developed Java class\ud
libraries based on Hoare's Communicating Sequential Processes (CSP); the use of CSP greatly simplifies the design of concurrent systems and, in many cases, a parallel approach often significantly simplifies systems originally approached sequentially. New CSP CASE tools permit designs to be verified against formal specifications\ud
and checked for deadlock and livelock. Below we introduce CSP and its implementation in Java and develop a small concurrent application. The formal CSP description of the application is provided, as well as that of an equivalent sequential version. FDR is used to verify the correctness of both implementations, their\ud
equivalence, and their freedom from deadlock and livelock
The Design of a new NICU Patient Area: Combining Design for Usability and Design for Emotion
In the design of medical products both usability and emotional experience are important to be considered. Usability can enhance the work situation of medical staff and ensure patient safety. Emotion related product aspects, on the other hand, influence the recovery pace of patients as well as the work satisfaction of staff. For an optimal medical design both aspects should receive well-balanced attention during the design process.
Usability and emotional experience are currently related in literature. However, about the relation between these two aspects in practical design projects little information is available. Therefore we will discuss the exploration of the practical relation between Design for Usability and Design for Emotion in a design process. We explored the relation during concurrent application of both design approaches to the design of a patient area for a Neonatal Intensive Care Unit (NICU). Our aim was not to develop a new design method, but to explore in practice how both design approaches could be addressed concurrently. This paper describes the applied design approach, its strength and weaknesses as well as the design results. Overall, the NICU design case has proven that the concurrent application of Design for Emotion and Design for Usability is feasible in practice and results in a satisfactory design.
Keywords:
Usability; Design For Emotion; Medical Appliance; Participatory Design; Case Study</p
Examples of Reusing Synchronization Code in Aspect-Oriented Programming using Composition Filters
Applying the object-oriented paradigm for the development of large and complex software systems offers several advantages, of which increased extensibility and reusability are the most prominent ones. The object-oriented model is also quite suitable for modeling concurrent systems. However, it appears that extensibility and reusability of concurrent applications is far from trivial. The problems that arise, the so-called inheritance anomalies or crosscutting aspects have been extensively studied in the literature. As a solution to the synchronization reuse problems, we present the composition-filters approach. Composition filters can express synchronization constraints and operations on objects as modular extensions. In this paper we briefly explain the composition filters approach, demonstrate its expressive power through a number of examples and show that composition filters do not suffer from the inheritance anomalies
A Generic Model of Contracts for Embedded Systems
We present the mathematical foundations of the contract-based model developed
in the framework of the SPEEDS project. SPEEDS aims at developing methods and
tools to support "speculative design", a design methodology in which
distributed designers develop different aspects of the overall system, in a
concurrent but controlled way. Our generic mathematical model of contract
supports this style of development. This is achieved by focusing on behaviors,
by supporting the notion of "rich component" where diverse (functional and
non-functional) aspects of the system can be considered and combined, by
representing rich components via their set of associated contracts, and by
formalizing the whole process of component composition
Weaving true-concurrent aspects using constraint solvers
Large system models usually consist of several simpler models that can be understood more easily. Making changes to the behaviour of a component will likely affect several models and could introduce accidental errors. Aspects address this by modelling new functionality required in several places as an advice, which can be integrated with the original base models by specifying a pointcut. Before checking that the overall outcome is correct, we need to weave the cross-cutting advice into the base models, and obtain new augmented models. Although considerable research has been done to weave models, many such approaches are not fully automated. This paper looks at aspect weaving of scenario-based models, where aspects are given a true-concurrent semantics based on event structures. Our contribution is a novel formal automated technique for weaving aspects using the Z3-SMT solver. We compare the performance of Alloy and Z3 to justify our choice.Postprin
- âŠ