179,796 research outputs found
Non-Intrusive Online Timing Analysis of Large Embedded Applications
A thorough understanding of the timing behavior of embedded systems software has become very important. With the advent of ever more complex embedded software e.g. in autonomous driving, the size of this software is growing at a fast pace. Execution time profiles (ETP) have proven to be a useful way to understand the timing behavior of embedded software. Collecting these ETPs was either limited to small applications or required multiple runs of the same software for calibration processes. In this contribution, we present a novel method for collecting ETPs in a single shot of the software at very high quality even for large applications
Evoplex: A platform for agent-based modeling on networks
Agent-based modeling and network science have been used extensively to
advance our understanding of emergent collective behavior in systems that are
composed of a large number of simple interacting individuals or agents. With
the increasing availability of high computational power in affordable personal
computers, dedicated efforts to develop multi-threaded, scalable and
easy-to-use software for agent-based simulations are needed more than ever.
Evoplex meets this need by providing a fast, robust and extensible platform for
developing agent-based models and multi-agent systems on networks. Each agent
is represented as a node and interacts with its neighbors, as defined by the
network structure. Evoplex is ideal for modeling complex systems, for example
in evolutionary game theory and computational social science. In Evoplex, the
models are not coupled to the execution parameters or the visualization tools,
and there is a user-friendly graphical interface which makes it easy for all
users, ranging from newcomers to experienced, to create, analyze, replicate and
reproduce the experiments.Comment: 6 pages, 5 figures; accepted for publication in SoftwareX [software
available at https://evoplex.org
Doctor of Philosophy
dissertationA modern software system is a composition of parts that are themselves highly complex: operating systems, middleware, libraries, servers, and so on. In principle, compositionality of interfaces means that we can understand any given module independently of the internal workings of other parts. In practice, however, abstractions are leaky, and with every generation, modern software systems grow in complexity. Traditional ways of understanding failures, explaining anomalous executions, and analyzing performance are reaching their limits in the face of emergent behavior, unrepeatability, cross-component execution, software aging, and adversarial changes to the system at run time. Deterministic systems analysis has a potential to change the way we analyze and debug software systems. Recorded once, the execution of the system becomes an independent artifact, which can be analyzed offline. The availability of the complete system state, the guaranteed behavior of re-execution, and the absence of limitations on the run-time complexity of analysis collectively enable the deep, iterative, and automatic exploration of the dynamic properties of the system. This work creates a foundation for making deterministic replay a ubiquitous system analysis tool. It defines design and engineering principles for building fast and practical replay machines capable of capturing complete execution of the entire operating system with an overhead of several percents, on a realistic workload, and with minimal installation costs. To enable an intuitive interface of constructing replay analysis tools, this work implements a powerful virtual machine introspection layer that enables an analysis algorithm to be programmed against the state of the recorded system through familiar terms of source-level variable and type names. To support performance analysis, the replay engine provides a faithful performance model of the original execution during replay
An Analysis and New Methodology for Reverse Engineering of UML Behavioral
The emergence of Unified Modeling Language (UML) as a standard for modeling systems has encouraged the use of automated software tools that facilitate the development process from analysis through coding. Reverse Engineering has become a viable method to measure an existing system and reconstruct the necessary model from its original. The Reverse Engineering of behavioral models consists in extracting high-level models that help understand the behavior of existing software systems. In this paper we present an ongoing work on extracting UML diagrams from object-oriented programming languages. we propose an approach for the reverse engineering of UML behavior from the analysis of execution traces produced dynamically by an object-oriented application using formal and semi-formal techniques for modeling the dynamic behavior of a system. Our methods show that this approach can produce UML behavioral diagrams in reasonable time and suggest that these diagrams are helpful in understanding the behavior of the underlying application
A framework for computer-aided validation
This paper presents a framework to incorporate computer-based validation techniques to the independent validation and verification (IV&V) of software systems. The framework allows the IV&V team to capture its own understanding of the problem and the expected behavior of any proposed system for solving the problem via an executable system reference model, which uses formal assertions to specify mission- and safety-critical behaviors. The framework uses execution-based model checking to validate the correctness of the assertions and to verify the correctness and adequacy of the system under test.Approved for public release; distribution is unlimited
Software Runtime Monitoring with Adaptive Sampling Rate to Collect Representative Samples of Execution Traces
Monitoring software systems at runtime is key for understanding workloads,
debugging, and self-adaptation. It typically involves collecting and storing
observable software data, which can be analyzed online or offline. Despite the
usefulness of collecting system data, it may significantly impact the system
execution by delaying response times and competing with system resources. The
typical approach to cope with this is to filter portions of the system to be
monitored and to sample data. Although these approaches are a step towards
achieving a desired trade-off between the amount of collected information and
the impact on the system performance, they focus on collecting data of a
particular type or may capture a sample that does not correspond to the actual
system behavior. In response, we propose an adaptive runtime monitoring process
to dynamically adapt the sampling rate while monitoring software systems. It
includes algorithms with statistical foundations to improve the
representativeness of collected samples without compromising the system
performance. Our evaluation targets five applications of a widely used
benchmark. It shows that the error (RMSE) of the samples collected with our
approach is 9-54% lower than the main alternative strategy (sampling rate
inversely proportional to the throughput), with 1-6% higher performance impact.Comment: in Journal of Systems and Softwar
- …