Hendrik Post
Bosch
Network
Latest external collaboration on country level. Dive into details by clicking on the dots.
Publication
Featured researches published by Hendrik Post.
automated software engineering | 2008
Hendrik Post; Carsten Sinz
Configurable software is ubiquitous, and the term software product line (SPL) has been coined for it lately. It remains a challenge, however, how such software can be verified over all variants. Enumerating all variants and analyzing them individually is inefficient, as knowledge cannot be shared between analysis runs. Instead of enumeration we present a new technique called lifting that converts all variants into a meta-program, and thus facilitates the configuration-aware application of verification techniques like static analysis, model checking and deduction-based approaches. As a side-effect, lifting provides a technique for checking software feature models, which describe software variants, for consistency. We demonstrate the feasibility of our approach by checking configuration dependent hazards for the highly configurable Linux kernel which possesses several thousand of configurable features. Using our techniques, two novel bugs in the kernel configuration system were found.
integrated formal methods | 2007
Hendrik Post; Wolfgang Küchlin
We port verification techniques for device drivers from the Windows domain to Linux, combining several tools and techniques into one integrated tool-chain. Building on ideas from Microsofts Static Driver Verifier (SDV) project, we extend their specification language and combine its implementation with the public domain bounded model checker CBMC as a new verification back-end. We extract several API conformance rules from Linux documentation and formulate them in the extended language SLICx. Thus SDV-style verification of temporal safety specifications is brought into the public domain. In addition, we show that SLICx, together with CBMC, can be used to simulate preemption in multi-threaded code, and to find race conditions and to prove the absence of deadlocks and memory leaks.
requirements engineering | 2009
Hendrik Post; Carsten Sinz; Florian Merz; Thomas Gorges; Thomas Kropf
Synchronization between component requirements and implementation centric tests remains a challenge that is usually addressed by requirements reviews with testers and traceability policies. The claim of this work is that linking requirements, their scenario-based formalizations, and software verification provides a promising extension to this approach. Formalized scenarios, for example in the form of low-level assume/assert statements in C, are easier to trace to requirements than traditional test sets. For a verification engineer, they offer an opportunity to better participate in requirements changes. Changes in requirements can be more easily propagated because adapting formalized scenarios is often easier than deriving and updating a large set of test cases. The proposed idea is evaluated in a case study encompassing over 50 functional requirements of an automotive software developed at Robert Bosch GmbH. Results indicate that requirement formalization together with formal verification leads to the discovery of implementation problems missed in a traditional testing process.
Proceedings of the 2006 conference on Specification and verification of component-based systems | 2006
Hendrik Post; Wolfgang Küchlin
Linux contains thousands of device drivers that are developed independently by many developers. Though each individual driver source code is relatively small---≈10k lines of code---the whole operating system contains a few million lines of code. Therefore Linux device drivers offer a useful application area for modular analysis.Our finding is that despite the precise modeling of most features of the standard systems programming language C, model checking software verification tools for C fail to provide means for modular analysis of device drivers. We inspected CBMC [2], SLAM-SDV [3], MAGIC [1], BLAST [4] and others and found that a rich additional environment model for every device driver is needed. This model must provide information on out-of-scope initialized pointers and complex data structures. We present strategies to automatically create feasible, bounded data environments for Linux device drivers instead of creating them manually. Our solution differs from general interface generation mechanisms (e.g. CUTE[5]), because is it specialised on bounded model checking of Linux device drivers written in C. Our contribution is a preprocessing step that extends the usability of CBMC for modular Linux device driver analysis.
Software Testing, Verification & Reliability | 2009
Hendrik Post; Carsten Sinz; Wolfgang Küchlin
A thin film transistor array substrate of a liquid crystal display is provided which includes a substrate, a shorting bar on the substrate, and a plurality of gate lines connected to the shorting bar, each gate line having an electrically non-connection region and a connection region connecting the non-connection region to the shorting bar, wherein said connection region has a thickness such that the gate lines and the shorting bar are electrically separated from each other when the connection regions are anodized.
quality of information and communications technology | 2010
Florian Merz; Carsten Sinz; Hendrik Post; Thomas Gorges; Thomas Kropf
Traditionally, test cases are used to check whether a system conforms to its requirements. However, to achieve good quality and coverage, large amounts of test cases are needed, and thus huge efforts have to be put into test generation and maintenance. We propose a methodology, called Abstract Testing, in which test cases are replaced by verification scenarios. Such verification scenarios are more abstract than test cases, thus fewer of them are needed and they are easier to create and maintain. Checking verification scenarios against the source code is done automatically using a software model checker. In this paper we describe the general idea of Abstract Testing, and demonstrate its feasibility by a case study from the automotive systems domain.
international conference on software testing, verification, and validation | 2009
Hendrik Post; Carsten Sinz
Bounded model checking---as well as symbolic equivalence checking---are highly successful techniques in the hardware domain. Recently, bit-vector bounded model checkers like CBMC have been developed that are able to check properties of (mostly low-level) software written in C. However, using these tools to check equivalence of software implementations has rarely been pursued. In this case study we tackle the problem of proving the functional equivalence of two implementations ofthe AES crypto-algorithm using automatic bounded model checking techniques. Cryptographic algorithms heavily rely on bit-level operations, which makes them particularly suitable for bit-precise tools like CBMC. Other software verification tools based on abstraction refinement or static analysis seem to be less appropriate for such software. We could semi-automatically prove equivalence of the first three rounds of the AES encryption routines. Moreover, by conducting a manually assisted inductive proof, we could show equivalence of the full AES encryption process.
Innovations in Systems and Software Engineering | 2015
Florian Merz; Carsten Sinz; Hendrik Post; Thomas Gorges; Thomas Kropf
In this article we propose a technique, called abstract testing, which replaces traditional test cases by abstract test cases. By doing so, fewer test cases are needed, and they are linked more closely to the requirements. Abstract tests can be considered as verification scenarios on the source code level which are derived from the requirements. Checking verification scenarios against the source code is done automatically using a software model checker. We also suggest a migration path from traditional tests to abstract test cases, which provides a smooth transition towards this new technique. Finally, we demonstrate feasibility of abstract testing by a case study from the automotive systems domain.
Archive | 2017
Alexander Viehl; Udo Gleich; Hendrik Post; Assume Partners
To address the safety challenges arising from future mobility systems requirements, novel analysis methods and tools are needed. Besides the evolution and utilization of new hardware architectures, software development must address the increasing complexity of new highly automated mobility solutions. Consequently, the single most important roadblock for this market is the ability to come up with an affordable, safe multi-core development methodology that allows industry to deliver trustworthy new functions at competitive prices. The ITEA3 ASSUME project delivers solutions for the development and verification of highly automated, safety relevant, and performance critical mobility systems. The ASSUME consortium includes leading European industry partners for mobility solutions and tool and service providers for embedded system development, as well as leading research institutes for static analysis in model-driven and traditional embedded systems development.
Proceedings of the 2012 System, Software, SoC and Silicon Debug Conference | 2012
Wei Hong; Alexander Viehl; Nico Bannow; Christian Kerstan; Hendrik Post; Oliver Bringmann; Wolfgang Rosenstiel