@techreport{GrahlGreiner15, author = {Grahl, Daniel and Greiner, Simon}, title = {Non-Interference with What-Declassification in Component-Based Systems}, year = 2015, month = nov, institution = {Department of Informatics, Karlsruhe Institute of Technology}, number = {2015,10}, series = {Karlsruhe Reports in Informatics}, url = {https://digbib.bibliothek.kit.edu/volltexte/1000050422}, urn = {urn:nbn:de:swb:90-504229}, issn = {2190-4782}, language = {english}, license = {https://creativecommons.org/licenses/by-nc-nd/3.0/}, abstract = {Component-based design is a method for modular design of systems. The structure of component-based systems follows specific rules and single components make assumptions on the environment that they run in. In this paper, we provide a noninterference property for component-based systems that allows for a precise specification of what-declassification of information and takes assumptions on the environment into consideration in order to allow a modular, precise and re-usable information-flow analysis. For precise analysis, components can be analyzed by separately analysing services provided by a component, and from our compositionality theorem non-interference of components follows.} }
@phdthesis{Grahl15, author = {Daniel Grahl}, title = {Deductive Verification of Concurrent Programs and its Application to Secure Information Flow for {Java}}, school = {Karlsruhe Institute of Technology}, year = 2015, month = {29~} # oct, url = {https://digbib.bibliothek.kit.edu/volltexte/1000050695}, urn = {urn:nbn:de:swb:90-506951}, doi = {10.5445/IR/1000050695}, license = {https://creativecommons.org/licenses/by-sa/4.0}, abstract = {The goal of this thesis is to develop a rigorous analysis technique for proving functional and relational correctness of shared-memory multi-threaded object-oriented software systems---such as programs written in the Java language---based on formal program semantics and deductive verification. This work contains the first approach towards a semantically precise information flow anlaysis for concurrent programs.} }
@article{BrunsMostowskiUlbrich15, author = {Bruns, Daniel and Mostowski, Wojciech and Ulbrich, Mattias}, title = {Implementation-level Verification of Algorithms with {\KeY}}, year = 2015, month = nov, volume = 17, number = 6, pages = {729--744}, journal = {Software Tools for Technology Transfer}, publisher = {Springer}, language = {english}, issn = {1433-2779}, abstract = {We give an account on the authors' experience and results from the software verification competition held at the Formal Methods~2012 conference. Competitions like this are meant to provide a benchmark for verification systems. It consisted of three algorithms which the authors have implemented in Java, specified with the Java Modeling Language, and verified using the \KeY\ system. Building on our solutions, we argue that verification systems which target implementations in real-world programming languages are required to have powerful capabilities for abstraction. Regarding the \KeY\ tool, we explain features which, driven by the competition, have been freshly implemented to accommodate for these demands.}, doi = {10.1007/s10009-013-0293-y}, url = {https://link.springer.com/article/10.1007/s10009-013-0293-y} }
@inproceedings{KuestersTruderungBeckertEtAl15, author = {Ralf K{\"u}sters and Tomasz Truderung and Bernhard Beckert and Daniel Bruns and Michael Kirsten and Martin Mohr}, title = {A Hybrid Approach for Proving Noninterference of {Java} Programs}, booktitle = {28th IEEE Computer Security Foundations Symposium (CSF)}, editor = {C{\'e}dric Fournet and Michael Hicks and Luca Vigan{\`o}}, doi = {10.1109/CSF.2015.28}, url = {https://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=7243741}, isbn = {978-1-4673-7538-2}, pages = {305--319}, year = 2015, language = {english}, abstract = {Several tools and approaches for proving noninterference properties for Java and other languages exist. Some of them have a high degree of automation or are even fully automatic, but overapproximate the actual information flow, and hence, may produce false positives. Other tools, such as those based on theorem proving, are precise, but may need interaction, and hence, analysis is time-consuming. In this paper, we propose a hybrid approach that aims at obtaining the best of both approaches: We want to use fully automatic analysis as much as possible and only at places in a program where, due to overapproximation, the automatic approaches fail, we resort to more precise, but interactive analysis, where the latter involves only the verification of specific functional properties in certain parts of the program, rather than checking more intricate noninterference properties for the whole program. To illustrate the hybrid approach, in a case study we use the hybrid approach---along with the fully automatic tool Joana for checking noninterference properties for Java programs and the theorem prover \KeY for the verification of Java programs---and the CVJ framework proposed by K\"usters, Truderung, and Graf to establish cryptographic privacy properties for a non-trivial Java program, namely an e-voting system. The CVJ framework allows one to establish cryptographic indistinguishability properties for Java programs by checking (standard) noninterference properties for such programs.} }
@inproceedings{BrunsDoGreinerEtAl15, author = {Daniel Bruns and Huy Quoc Do and Simon Greiner and Mihai Herda and Martin Mohr and Enrico Scapin and Tomasz Truderung and Bernhard Beckert and Ralf K{\"u}sters and Heiko Mantel and Richard Gay}, title = {Poster: {Security} in E-Voting}, booktitle = {36th IEEE Symposium on Security and Privacy, Poster Session}, editor = {Sophie Engle}, language = {english}, year = 2015, month = {18~} # may }
@techreport{Bruns15, author = {Bruns, Daniel}, title = {Deductive Verification of Concurrent Programs}, year = 2015, month = feb, institution = {Department of Informatics, Karlsruhe Institute of Technology}, number = {2015,3}, series = {Karlsruhe Reports in Informatics}, url = {https://digbib.bibliothek.kit.edu/volltexte/1000045641}, urn = {urn:nbn:de:swb:90-456415}, issn = {2190-4782}, language = {english}, license = {https://creativecommons.org/licenses/by-nc-nd/3.0/}, abstract = {Verification of concurrent programs still poses one of the major challenges in computer science. Several techniques to tackle this problem have been proposed. However, they often do not scale. We present an adaptation of the rely\slash guarantee methodology in dynamic logic. Rely\slash guarantee uses functional specification to symbolically describe the behavior of concurrently running threads: while each thread \emph{guarantees} adherence to a specified property at any point in time, all other threads can \emph{rely} on this property being established. This allows to regard threads largely in isolation---only w.r.t.\ an environment constrained by these specifications. While rely\slash guarantee based approaches often suffer from a considerable specification overhead, we complement functional thread specifications with frame conditions. We will explain our approach using a simple, but concurrent programing language. Besides the usual constructs for sequential programs, it caters for dynamic thread creation. We define semantics of concurrent programs w.r.t.\ an underspecified deterministic scheduling function. To formally reason about programs of this language, we introduce a novel multi-modal logic, \emph{Concurrent Dynamic Trace Logic} (CDTL). It combines the strengthes of dynamic logic with those of linear temporal logic and allows to express temporal properties about symbolic program traces. We first develop a sound and complete sequent calculus for the logic subset that uses the sequential part of the language, based on symbolic execution. In a second step, we extend this to a calculus for the complete logic by adding symbolic execution rules for concurrent interleavings and dynamic thread creation based on the rely\slash guarantee methodology. Again, this calculus is proven sound and complete. } }
@inproceedings{Bruns15a, author = {Daniel Bruns}, title = {A Theorem Proving Approach to Secure Information Flow in Concurrent Programs (extended abstract)}, booktitle = {Workshop on Foundations of Computer Security (FCS~2015)}, editor = {Deepak Garg and Boris K{\"o}pf}, language = {english}, year = 2015, month = jul, url = {https://software.imdea.org/~bkoepf/FCS15/paper3.pdf} }
@inproceedings{BeckertBrunsKlebanovEtAl14, author = {Bernhard Beckert and Daniel Bruns and Vladimir Klebanov and Christoph Scheben and Peter H. Schmitt and Mattias Ulbrich}, title = {Information Flow in Object-Oriented Software}, booktitle = {Logic-Based Program Synthesis and Transformation, LOPSTR 2013}, editor = {Gopal Gupta and Ricardo Pe{\~n}a}, language = {english}, year = 2014, publisher = {Springer}, series = {Lecture Notes in Computer Science}, number = 8901, pages = {19--37}, doi = {10.1007/978-3-319-14125-1_2}, isbn = {978-3-319-14125-1}, abstract = {This paper contributes to the investigation of object-sensitive information-flow properties for sequential Java, i.e., properties that take into account information leakage through objects, as opposed to primitive values. We present two improvements to a popular object-sensitive non-interference property. Both reduce the burden on analysis and monitoring tools. The second contribution is a formalization of this property in a program logic -- JavaDL in our case -- which allows using an existing tool without requiring program modification. The third contribution is a novel fine-grained specification methodology. In our approach, arbitrary JavaDL terms (read side-effect-free Java expressions) may be assigned a security level -- in contrast to security labels being attached to fields and variables only. } }
@techreport{Bruns14, author = {Bruns, Daniel}, title = {Formal Verification of an Electronic Voting System}, year = 2014, month = aug, institution = {Department of Informatics, Karlsruhe Institute of Technology}, language = {english}, number = {2014,11}, series = {Karlsruhe Reports in Informatics}, url = {https://digbib.bibliothek.kit.edu/volltexte/1000042284}, urn = {urn:nbn:de:swb:90-422842}, issn = {2190-4782}, license = {https://creativecommons.org/licenses/by-nc-nd/3.0/}, abstract = {Electronic voting (e-voting) systems that are used in public elections need to fulfil a broad range of strong requirements concerning both safety and security. Among these requirements are reliability, robustness, privacy of votes, coercion resistance and universal verifiability. Bugs in or manipulations of an e-voting system may have considerable influence on the life of the humans living in a country where such a system is used. Hence, e-voting systems are an obvious target for software verification. In this paper, we report on an implementation of such a system in Java and the formal verification of functional properties thereof in the \KeY\ verification system. Even though the actual components are clearly modularized, the challenge lies in the fact that we need to prove a highly nonlocal property: After all voters have cast their votes, the server calculates the correct votes for each candidate w.r.t.\ the original ballots. This kind of trace property is difficult to prove with static techniques like verification and typically yields a large specification overhead. } }
@techreport{HuismanAhrendtBrunsEtAl14, author = {Huisman, Marieke and Ahrendt, Wolfgang and Bruns, Daniel and Hentschel, Martin}, title = {Formal Specification with {JML}}, year = 2014, institution = {Department of Informatics, Karlsruhe Institute of Technology}, number = {2014,10}, series = {Karlsruhe Reports in Informatics}, url = {https://digbib.bibliothek.kit.edu/volltexte/1000041881}, urn = {urn:nbn:de:swb:90-418817}, issn = {2190-4782}, language = {english}, license = {https://creativecommons.org/licenses/by-nc-nd/3.0/}, abstract = {This text is a general, self contained, and tool independent introduction into the \emph{Java{} Modeling Language}, JML. It is a preview of a chapter planned to appear in a book about the \KeY\ approach and tool to the verification of Java{} software. JML is the dominating starting point of \KeY\ style Java{} verification. However, this paper does not in any way depend on any tool nor verification methodology. Other chapters in this book talk about the usage of JML in \KeY\ style verification. Here, we only refer to \KeY\ in very few places, without relying on it. This introduction is written for all readers with an interest in formal specification of software in general, and anyone who wants to learn about the JML approach to specification in particular. The authors appreciate any comments or questions that help to improve the text. } }
@inproceedings{AhrendtBeckertBrunsEtAl14, author = {Ahrendt, Wolfgang and Beckert, Bernhard and Bruns, Daniel and Bubel, Richard and Gladisch, Christoph and Grebing, Sarah and H{\"a}hnle, Reiner and Hentschel, Martin and Herda, Mihai and Klebanov, Vladimir and Mostowski, Wojciech and Scheben, Christoph and Schmitt, Peter H. and Ulbrich, Mattias}, title = {The {\KeY} Platform for Verification and Analysis of {Java} Programs}, year = 2014, booktitle = {Verified Software: Theories, Tools, and Experiments (VSTTE 2014)}, language = {english}, editor = {Giannakopoulou, Dimitra and Kroening, Daniel}, pages = {1--17}, publisher = {Springer-Verlag}, number = 8471, series = {Lecture Notes in Computer Science}, isbn = {978-3-642-54107-0}, doi = {10.1007/978-3-319-12154-3_4}, url = {https://link.springer.com/chapter/10.1007/978-3-319-12154-3_4}, abstract = {The \KeY\ system offers a platform of software analysis tools for sequential Java. Foremost, this includes full functional verification against contracts written in the Java Modeling Language. But the approach is general enough to provide a basis for other methods and purposes: (i) complementary validation techniques to formal verification such as testing and debugging, (ii) methods that reduce the complexity of verification such as modularization and abstract interpretation, (iii) analyses of non-functional properties such as information flow security, and (iv) sound program transformation and code generation. We show that deductive technology that has been developed for full functional verification can be used as a basis and framework for other purposes than pure functional verification. We use the current release of the \KeY\ system as an example to explain and prove this claim.} }
@techreport{Bruns14a, author = {Daniel Bruns}, title = {Towards Specification and Verification of Information Flow in Concurrent {Java-}like Programs}, year = 2014, month = mar, institution = {Department of Informatics, Karlsruhe Institute of Technology}, language = {english}, number = {2014,5}, series = {Karlsruhe Reports in Informatics}, url = {https://digbib.bibliothek.kit.edu/volltexte/1000039446}, urn = {urn:nbn:de:swb:90-394465}, issn = {2190-4782}, license = {https://creativecommons.org/licenses/by-nc-nd/3.0/}, abstract = {Today, nearly all personal computer systems are multiprocessor systems, allowing multiple programs to be executed in parallel while accessing a shared memory. At the same time, computers are increasingly handling more and more data. Ensuring that no confidential data is leaked to untrusted sinks remains a major quest in software engineering. Formal verification, based on theorem proving, is a powerful technique to prove both functional correctness and security properties such as absence of information flow. Present verification systems are sound and complete, but often lack efficiency and are only applicable to sequential programs. Concurrent programs are notorious for all possible environment actions have to be taken into account. In this paper, we point out steps towards a formal verification methodology for information flow in concurrent programs. We consider passive attackers who are able to observe public parts of the memory at any time during execution and to compare program traces between different executions. Our approach consists of two main elements: (i) formalizing properties on whether two executions are indistinguishable to such an attacker in a decidable logic, and (ii) defining a technique to reason about executions of concurrent programs by regarding a single thread in isolation. The latter is based on the rely/guarantee approach. } }
@techreport{BeckertBrunsKlebanovEtAl13, author = {Bernhard Beckert and Daniel Bruns and Vladimir Klebanov and Christoph Scheben and Peter H. Schmitt and Mattias Ulbrich }, title = {Information Flow in Object-Oriented Software -- Extended Version --}, year = 2013, institution = {Department of Informatics, Karlsruhe Institute of Technology}, number = {2013,14}, series = {Karlsruhe Reports in Informatics}, language = {english}, license = {https://creativecommons.org/licenses/by-nc-nd/3.0/}, url = {https://digbib.bibliothek.kit.edu/volltexte/1000037606}, urn = {urn:nbn:de:swb:90-376067}, issn = {2190-4782} }
@techreport{BeckertBrunsKlebanovEtAl13a, author = {Bernhard Beckert and Daniel Bruns and Vladimir Klebanov and Christoph Scheben and Peter H. Schmitt and Mattias Ulbrich}, title = {Secure Information Flow for {Java} -- A Dynamic Logic Approach}, year = 2013, institution = {Department of Informatics, Karlsruhe Institute of Technology}, number = {2013,10}, language = {english}, series = {Karlsruhe Reports in Informatics}, url = {https://digbib.bibliothek.kit.edu/volltexte/1000036786}, issn = {2190-4782}, license = {https://creativecommons.org/licenses/by-nc-nd/3.0/}, annote = {sequence theory in Appendix~A} }
@inproceedings{BeckertBruns13, author = {Bernhard Beckert and Daniel Bruns}, title = {Dynamic Logic with Trace Semantics}, booktitle = {24th International Conference on Automated Deduction (CADE-24)}, editor = {Maria Paola Bonacina}, year = 2013, publisher = {Springer-Verlag}, series = {Lecture Notes in Computer Science}, volume = 7898, pages = {315--329}, isbn = {978-3-642-38573-5}, language = {english}, doi = {10.1007/978-3-642-38574-2_22}, url = {https://link.springer.com/chapter/10.1007/978-3-642-38574-2_22}, abstract = {Dynamic logic is an established instrument for program verification and for reasoning about the semantics of programs and programming languages. In this paper, we define an extension of dynamic logic, called Dynamic Trace Logic~(DTL), which combines the expressiveness of program logics such as dynamic logic with that of temporal logic. And we present a sound and relatively complete sequent calculus for proving validity of DTL formulae. Due to its expressiveness, DTL can serve as a basis for proving functional and information-flow properties in concurrent programs, among other applications.} }
@inproceedings{KuestersTruderungBeckertEtAl13, author = {Ralf K{\"u}sters and Tomasz Truderung and Bernhard Beckert and Daniel Bruns and J{\"u}rgen Graf and Christoph Scheben}, title = {A Hybrid Approach for Proving Noninterference and Applications to the Cryptographic Verification of {Java} Programs}, booktitle = {Grande Region Security and Reliability Day 2013}, url = {https://grsrd.uni.lu/papers/grsrd2013_submission_2.pdf}, year = 2013, editor = {Christian Hammer and Sjouke Mauw}, address = {Luxembourg}, language = {english}, note = {Extended Abstract} }
@inproceedings{BeckertBrunsGrebing12, author = {Bernhard Beckert and Daniel Bruns and Sarah Grebing}, title = {Mind the Gap: Formal Verification and the {Common} {Criteria}}, year = 2012, booktitle = {6th~International Verification Workshop, VERIFY-2010}, editor = {Markus Aderhold and Serge Autexier and Heiko Mantel}, language = {english}, abstract = {It is a common belief that the rise of standardized software certification schemes like the Common Criteria (CC) would give a boost to formal verification, and that software certification may be a killer application for program verification. However, while formal models are indeed used throughout high-assurance certification, verification of the actual implementation is not required by the CC and largely neglected in certification practice -- despite the great advances in program verification over the last decade. In this paper we discuss the gap between program verification and CC software certification, and we point out possible uses of code-level program verification in the CC certification process.}, series = {EPiC Series}, volume = 3, pages = {4--12}, publisher = {EasyChair}, issn = {2040-557X}, url = {https://easychair.org/publications/?page=1489979161} }
@inproceedings{BeckertBruns12, author = {Beckert, Bernhard and Bruns, Daniel}, title = {Formal Semantics of Model Fields in Annotation-based Specifications}, year = 2012, booktitle = {{KI 2012}: Advances in Artificial Intelligence}, editor = {Birte Glimm and Antonio Kr{\"u}ger}, publisher = {Springer-Verlag}, language = {english}, series = {Lecture Notes in Computer Science}, volume = 7526, isbn = {978-3-642-33346-0}, pages = {13--24}, url = {https://link.springer.com/chapter/10.1007/978-3-642-33347-7_2}, abstract = {It is widely recognized that abstraction and modularization are indispensable for specification of real-world programs. In source-code level program specification and verification, model fields are a common means for those goals. However, it remains a challenge to provide a well-founded formal semantics for the general case in which the abstraction relation defining a model field is non-functional. In this paper, we discuss and compare several possibilities for defining model field semantics, and we give a complete formal semantics for the general case. Our analysis and the proposed semantics is based on a generalization of Hilbert's $\varepsilon$~terms.} }
@techreport{BeckertBruns12a, author = {Bernhard Beckert and Daniel Bruns}, title = {Dynamic Trace Logic: Definition and Proofs}, year = 2012, institution = {Department of Informatics, Karlsruhe Institute of Technology}, number = {2012,10}, series = {Karlsruhe Reports in Informatics}, url = {https://digbib.bibliothek.kit.edu/volltexte/1000028184}, urn = {urn:nbn:de:swb:90-281845}, issn = {2190-4782}, license = {https://creativecommons.org/licenses/by-nc-nd/3.0/}, language = {english}, abstract = { Dynamic logic is an established instrument for program verification and for reasoning about the semantics of programs and programming languages. In this paper, we define an extension of dynamic logic, called Dynamic Trace Logic~(DTL), which combines the expressiveness of program logics such as dynamic logic with that of temporal logic. And we present a sound and relatively complete sequent calculus for proving validity of DTL formulae. Due to its expressiveness, DTL can serve as a basis for functional verification of concurrent programs and for proving information-flow properties among other applications.}, note = {A revised version replacing an unsound rule is available at \url{https://formal.kastel.kit.edu/~bruns/papers/trace-tr.pdf}.} }
@article{Bruns12, author = {Daniel Bruns}, title = {Eine formale {S}emantik f{\"u}r die {J}ava {M}odeling {L}anguage}, doi = {10.1007/s00287-011-0532-0}, journal = {Informatik-Spektrum}, publisher = {Springer-Verlag}, year = 2012, volume = 35, number = 1, pages = {45--49}, language = {ngerman}, url = {https://www.springerlink.com/content/b503j663353x482w/} }
@techreport{BeckertBrunsKuestersEtAl12, author = {Bernhard Beckert and Daniel Bruns and Ralf K\"{u}sters and Christoph Scheben and Schmitt, Peter H. and Tomasz Truderung}, title = {The {\KeY} Approach for the Cryptographic Verification of {J}ava Programs: {A} Case Study}, institution = {Department of Informatics, Karlsruhe Institute of Technology}, number = {2012,8}, year = 2012, series = {Karlsruhe Reports in Informatics}, language = {english}, url = {https://digbib.bibliothek.kit.edu/volltexte/1000027497}, urn = {urn:nbn:de:swb:90-274973}, license = {https://creativecommons.org/licenses/by-nc-nd/3.0/}, abstract = { In this paper, we report on an ongoing case study in which we use the \KeY\ tool, a theorem prover for checking functional correctness and noninterference properties of Java programs, to establish computational indistinguishability for a simple Java program that involves clients sending encrypted messages over an untrusted network to a server. The analysis uses a general framework, recently proposed by K{\"u}sters et al., which enables program analysis tools, such as \KeY, that can check (standard) noninterference properties for Java programs to establish computational indistinguishability properties. } }
@inproceedings{Bruns11, author = {Daniel Bruns}, title = {Specification of Red-black Trees: Showcasing Dynamic Frames, Model Fields and Sequences}, note = {Extended Abstract}, year = 2011, booktitle = {10th~{\KeY} Symposium}, editor = {Ahrendt, Wolfgang and Bubel, Richard}, address = {Nijmegen, the Netherlands}, language = {english}, month = {26--27~} # aug, url = {https://digbib.bibliothek.kit.edu/volltexte/1000024828}, urn = {urn:nbn:de:swb:90-248287}, abstract = {Complex data structures still pose a major challenge in specification and verification of object-oriented programs. Leino and Moskal have proposed a suite of benchmarks for verification tools, nicknamed ``VACID-0''. In contrast to similar papers, the tasks of VACID-0 do not only include verification in terms of an observable behavior but also of internal workings of algorithms and data structures. The arguably most difficult target are so-called red-black black trees. In this contribution, we present an implementation and specification in Java/JML$^\ast$ (i.e., \KeY's extension to JML with dynamic frames). It makes use of several new features: first and foremost the dynamic frame theory, model fields, the sequence ADT, as well as some newly supported features from standard JML.} }
@inproceedings{BeckertBruns11, author = {Bernhard Beckert and Daniel Bruns}, title = {Formal Semantics of Model Fields Inspired by a Generalization of {Hilbert's} $\varepsilon$~Terms}, note = {Extended Abstract}, year = 2011, booktitle = {10th~{\KeY} Symposium}, editor = {Ahrendt, Wolfgang and Bubel, Richard}, address = {Nijmegen, the Netherlands}, language = {english}, month = {26--27~} # aug, url = {https://digbib.bibliothek.kit.edu/volltexte/1000024829}, urn = {urn:nbn:de:swb:90-248290}, abstract = { It is widely recognized that abstraction and modularization are indispensable for specification of real-world programs. In source-code level program specification languages, such as the Java Modeling Language~(JML), model fields are a common means for achieving abstraction and information hiding. However, there is yet no well-defined formal semantics for the general case in which the abstraction relation defining a model field is non-functional and may contain references to other model fields. In this contribution, we discuss and compare several possibilities for defining model field semantics, and we give a complete formal semantics for the general case. Our analysis and the proposed semantics is inspired by a generalization of Hilbert's $\varepsilon$ terms.} }
@inproceedings{BrunsKlebanovSchaefer11, author = {Daniel Bruns and Vladimir Klebanov and Ina Schaefer}, title = {Verification of Software Product Lines with Delta-Oriented Slicing}, year = 2011, editor = {Bernhard Beckert and Claude March{\'e}}, booktitle = {Formal Verification of Object-Oriented Software ({FoVeOOS 2010})}, publisher = {Springer-Verlag}, language = {english}, series = {Lecture Notes in Computer Science}, volume = 6528, pages = {61--75}, isbn = {978-3-642-18069-9}, url = {https://www.springerlink.com/content/441476732611n21t/}, doi = {10.1007/978-3-642-18070-5_5}, abstract = {Software product lines (SPL) are a well-known methodology to develop industry-size adaptable software systems. SPL are often used in domains where high-quality software is desirable, but the overwhelming product diversity remains a challenge for assuring correctness. We present our work in progress on reducing the deductive verification effort across different products of an SPL. On the specification side, our approach enriches the delta language for describing SPLs with formal product specifications. On the verification side, we combine program slicing and similarity-guided proof reuse to ease the verification process.} }
@inproceedings{BrunsKlebanovSchaefer10, author = {Daniel Bruns and Vladimir Klebanov and Ina Schaefer}, title = {Verification of Software Product Lines: Reducing the Effort with Delta-oriented Slicing and Proof Reuse}, year = 2010, month = {28--30~} # jun, address = {Paris, France}, booktitle = {Papers Presented at the International Conference on Formal Verification of Object-Oriented Software ({FoVeOOS})}, editor = {Bernhard Beckert and Claude March{\'e}}, language = {english}, publisher = {Technical Report, Department of Informatics, Karlsruhe Institute of Technology, 2010-13}, series = {Karlsruhe Reports in Informatics}, number = {2010,13}, url = {https://digbib.bibliothek.kit.edu/volltexte/1000019096}, urn = {urn:nbn:de:swb:90-190964}, pages = {345--358}, abstract = {Software product lines (SPL) are a well-known methodology to develop industry-size adaptable software systems. SPL are often used in domains where high-quality software is desirable, but the overwhelming product diversity remains a challenge for assuring correctness. We present our work in progress on reducing the deductive verification effort across different products of an SPL. On the specification side, our approach enriches the delta language for describing SPLs with formal product specifications. On the verification side, we combine program slicing and similarity-guided proof reuse to ease the verification process.} }
@inproceedings{Bruns10, author = {Daniel Bruns}, title = {Formal Semantics for the {Java} {Modeling} {Language}}, note = {Best Paper Award}, year = 2010, month = {19--20~} # mar, booktitle = {Informatiktage 2010}, address = {Bonn, Germany}, pages = {15--18}, publisher = {Gesellschaft f{\"u}r Informatik}, series = {Lecture Notes in Informatics}, volume = {S-9}, isbn = {978-3-88579-443-1}, url = {https://subs.emis.de/LNI/Seminar/Seminar09/S-09.pdf}, language = {english}, abstract = {A common critique of formal methods in software development practise is, that they are not readily understandable and thus not widely used. The Java Modeling Language (JML) was created in an attempt to bridge that gap. By building upon the syntax of Java it is meant to be easily accessible to the common user -- who might not be skilled in formal modeling. Due to this advantage, JML has quickly become one of most popular specification languages to use with both static and runtime analysis of programs. JML specifications are written in a Java-like expression language as comments straight into source files. It provides both in-code assertions as well as method contracts and class invariants which are indicated by appropriate preceding keywords. However, the official reference mostly lacks a clear definition of semantics. In turn, several tools implementing JML syntax use their own interpretations. Past approaches to formal semantics have rather been documentations of those tools than providing a unified reference.} }
@mastersthesis{Bruns09, author = {Daniel Bruns}, title = {Formal Semantics for the {Java} {Modeling} {Language}}, year = 2009, month = jun, language = {english}, school = {Universit{\"{a}}t {Karlsruhe}}, type = {Diplomarbeit}, url = {https://digbib.bibliothek.kit.edu/volltexte/1000012399}, urn = {urn:nbn:de:swb:90-123994}, license = {https://creativecommons.org/licenses/by/3.0}, abstract = {This thesis is concerned with the Java Modeling Language (JML), a wide-spread specification language for Java, which is used in both static and runtime analysis of programs. Yet, the official reference mostly lacks semantics, while several tools which implement JML do not agree on their interpretation of JML specifications. Past approaches have all centered around a certain verification tool and are highly depending on specific higher order logics. In this work, we develop a formalization with little requirements. Upon a simple machine model we describe JML artifacts in basic notations such as first order logic. In that, we provide a nearly comprehensive overview of features which cover nearly all specification elements for sequential Java programs.} }
@article{Bruns08, author = {Daniel Bruns}, title = {Elektronische {Wahlen}: {Theoretisch} m{\"o}glich, praktisch undemokratisch}, language = {ngerman}, year = 2008, month = sep, journal = {FIfF-Kommunikation}, volume = 25, number = 3, issn = {0938-3476}, pages = {33--35} }
@mastersthesis{Bruns07, author = {Daniel Bruns}, title = {A Fixpoint-based Rule for Loop Verification}, year = 2007, month = jun, language = {english}, school = {Universit{\"a}t Karlsruhe}, type = {Studienarbeit} }
This file was generated by bibtex2html 1.98.