Thomas Ruhroth

Learn More
Refactorings are changes made to programs, models or specifications with the intention of improving their structure and thus making them clearer, more readable and re-usable. Refactorings are required to be behaviour-preserving in that the external behaviour of the program/model/specification remains unchanged. In this paper we show how a simple type of(More)
Software metrics measure the quality of code according to criteria like reusability, understandability and well-structuredness. Refactorings change code as to improve the quality while preserving overall behaviour. Measuring and refactoring go hand in hand as particular results of measurements indicate specific design problems which suggest certain(More)
Security is an important quality aspect for modern information systems. Security properties may however be violated if the information system operates in an evolving environment. Environmental changes then trigger reactions which lead to co-evolution of the security design and the corresponding system model. However, updating the security design manually is(More)
" Not bad kid, but you'd vulnerable to attacks here and here. " Motivation • Security is an important quality facet of software systems. • Identifying vulnerabilities in requirements is important to elicit new security requirements as well as to make reasonable design decisions. • Manual assessment approaches (e.g. reviews, inspections) are time-consuming(More)
Refactoring is a method for improving the structure of programs/specifications as to enhance readability, modularity and reusability. Refactorings are required to be behaviour-preserving in that – to an external observer – no difference between the program before and after refactoring is visible. In this paper, we develop refactorings for an object-oriented(More)
Software-intensive systems are subject to continuous change due to modification of the systems themselves and their environment. Methods for supporting evolution are a competitive edge in software engineering as software is operated over decades. Empirical research is useful to validate the effectiveness of these methods. However, empirical studies on(More)
Developing security-critical software correctly and securely is difficult. To address this problem, there has been a significant amount of work over the last 10 years on providing model-based development approaches based on the Unified Modeling Language which aim to raise the trustworthiness of security-critical systems. However, the fact that software(More)
This paper describes an approach to transferring techniques of refactorings to formal methods. We use syntactical rewriting rules to express refactorings on Object-Z specifications. In contrast to programming languages here refactorings can be formally proven to preserve the behaviour of the specification. We give an outline of such a proof of behaviour(More)
Software changes during its lifetime. Likewise, specifications change during their design time, e.g. by removing, adding or changing operations. In a refinement-based approach to software design, we moreover do not deal with a single but with a chain of specifications, related via refinement. Changes thus need to be consistently made to all specifications(More)