Spelling suggestions: "subject:"[een] PROGRAM VERIFICATION"" "subject:"[enn] PROGRAM VERIFICATION""
31 |
Static analysis of program by Abstract Interpretation and Decision Procedures / Analyse statique par interprétation abstraite et procédures de décisionHenry, Julien 13 October 2014 (has links)
L'analyse statique de programme a pour but de prouver automatiquement qu'un programme vérifie certaines propriétés. L'interprétation abstraite est un cadre théorique permettant de calculer des invariants de programme. Ces invariants sont des propriétés sur les variables du programme vraies pour toute exécution. La précision des invariants calculés dépend de nombreux paramètres, en particulier du domaine abstrait et de l'ordre d'itération utilisés pendant le calcul d'invariants. Dans cette thèse, nous proposons plusieurs extensions de cette méthode qui améliorent la précision de l'analyse.Habituellement, l'interprétation abstraite consiste en un calcul de point fixe d'un opérateur obtenu après convergence d'une séquence ascendante, utilisant un opérateur appelé élargissement. Le point fixe obtenu est alors un invariant. Il est ensuite possible d'améliorer cet invariant via une séquence descendante sans élargissement. Nous proposons une méthode pour améliorer un point fixe après la séquence descendante, en recommençant une nouvelle séquence depuis une valeur initiale choisie judiscieusement. L'interprétation abstraite peut égalementêtre rendue plus précise en distinguant tous les chemins d'exécution du programme, au prix d'une explosion exponentielle de la complexité. Le problème de satisfiabilité modulo théorie (SMT), dont les techniques de résolution ont été grandement améliorée cette décennie, permettent de représenter ces ensembles de chemins implicitement. Nous proposons d'utiliser cette représentation implicite à base de SMT et de les appliquer à des ordres d'itération de l'état de l'art pour obtenir des analyses plus précises.Nous proposons ensuite de coupler SMT et interprétation abstraite au sein de nouveaux algorithmes appelés Modular Path Focusing et Property-Guided Path Focusing, qui calculent des résumés de boucles et de fonctions de façon modulaire, guidés par des traces d'erreur. Notre technique a différents usages: elle permet de montrer qu'un état d'erreur est inatteignable, mais également d'inférer des préconditions aux boucles et aux fonctions.Nous appliquons nos méthodes d'analyse statique à l'estimation du temps d'exécution pire cas (WCET). Dans un premier temps, nous présentons la façon d'exprimer ce problème via optimisation modulo théorie, et pourquoi un encodage naturel du problème en SMT génère des formules trop difficiles pour l'ensemble des solveurs actuels. Nous proposons un moyen simple et efficace de réduire considérablement le temps de calcul des solveurs SMT en ajoutant aux formules certaines propriétés impliquées obtenues par analyse statique. Enfin, nous présentons l'implémentation de Pagai, un nouvel analyseur statique pour LLVM, qui calcule des invariants numériques grâce aux différentes méthodes décrites dans cette thèse. Nous avons comparé les différentes techniques implémentées sur des programmes open-source et des benchmarks utilisés par la communauté. / Static program analysis aims at automatically determining whether a program satisfies some particular properties. For this purpose, abstract interpretation is a framework that enables the computation of invariants, i.e. properties on the variables that always hold for any program execution. The precision of these invariants depends on many parameters, in particular the abstract domain, and the iteration strategy for computing these invariants. In this thesis, we propose several improvements on the abstract interpretation framework that enhance the overall precision of the analysis.Usually, abstract interpretation consists in computing an ascending sequence with widening, which converges towards a fixpoint which is a program invariant; then computing a descending sequence of correct solutions without widening. We describe and experiment with a method to improve a fixpoint after its computation, by starting again a new ascending/descending sequence with a smarter starting value. Abstract interpretation can also be made more precise by distinguishing paths inside loops, at the expense of possibly exponential complexity. Satisfiability modulo theories (SMT), whose efficiency has been considerably improved in the last decade, allows sparse representations of paths and sets of paths. We propose to combine this SMT representation of paths with various state-of-the-art iteration strategies to further improve the overall precision of the analysis.We propose a second coupling between abstract interpretation and SMT in a program verification framework called Modular Path Focusing, that computes function and loop summaries by abstract interpretation in a modular fashion, guided by error paths obtained with SMT. Our framework can be used for various purposes: it can prove the unreachability of certain error program states, but can also synthesize function/loop preconditions for which these error states are unreachable.We then describe an application of static analysis and SMT to the estimation of program worst-case execution time (WCET). We first present how to express WCET as an optimization modulo theory problem, and show that natural encodings into SMT yield formulas intractable for all current production-grade solvers. We propose an efficient way to considerably reduce the computation time of the SMT-solvers by conjoining to the formulas well chosen summaries of program portions obtained by static analysis.We finally describe the design and the implementation of Pagai,a new static analyzer working over the LLVM compiler infrastructure,which computes numerical inductive invariants using the various techniques described in this thesis.Because of the non-monotonicity of the results of abstract interpretation with widening operators, it is difficult to conclude that some abstraction is more precise than another based on theoretical local precision results. We thus conducted extensive comparisons between our new techniques and previous ones, on a variety of open-source packages and benchmarks used in the community.
|
32 |
[en] TECHNIQUES FOR THE USE OF HOARE LOGIC IN PCC / [pt] TÉCNICAS PARA O USO DO CÁLCULO DE HOARE EM PCCJULIANA CARPES IMPERIAL 22 January 2004 (has links)
[pt] Atualmente, a maioria dos programas para computadores é
obtida através da WEB. Como muitas vezes a procedência
são fontes desconhecidas, é preciso se certificar de que
o código se comporta como o esperado. A solução ideal
seria verificar o código contra uma especificação de
políticas de segurança ,contudo, isso pode consumir muito
tempo.Uma outra alternativa é fazer com que o próprio
código prove ser seguro. O conceito de proof-carryng code
(PCC)é baseado nessa idéia : um programa carrega consigo
uma prova de sua conformidade com certas políticas de
segurança. Ou seja ,ele carrega uma prova a respeito de
propriedades do próprio código. Portanto, os mesmos
métodos froamsi usados para a verificação de programs
podem se utilizados para esta tecnolgia. Considerando
este fato,neste trabalho é estudado como cálculo de
Hoare, em método formal para realizar a verificação de
programas, aplicado a códigos-fonte escritos em uma
linguagem de programação imperativa, pode ser útil
á tecnica de PCC. Conseqüentemente, são pesquisados
métodos para a geração de provas de correção de programas
utilizando o método citado, para tornar possível a
geração de provas de segurança para PCC utilizando o
cálculo de Hoare. / [en] Nowdays most computer programs are obtained from the
WEB. Since their source is usually unknown, it is necessary
to be sure that the code of the program behaves as
expected.The ideal solution would be verify the code
against a specification of safety policies.However, this
can take too much time.Another approach is making the code
itself prove that it is safe. The concept os proof-carryng
code (PCC) is based on this idea: a program carries a proof
of its conformity with certain safety policies. That is ,
it carries a proof cencerning properties related to the
code itself. Therefore, the same formal methods employed in
formal verification of programs can be used in this
tecnology. Due to this fact, in this work it is studied how
Hoare logic applied to source codes written in an
imperative programming language, which is a formal methods
are researched to generate proofs of program correctness
using the method explained, so that it can be possible to
generate PCC safety programs with Hoare logic.
|
33 |
Quality Assurance of Test Specifications for Reactive Systems / Qualitätssicherung von Testspezifikationen für Reaktive SystemeZeiß, Benjamin 02 June 2010 (has links)
No description available.
|
34 |
Model-Based Exploration of Parallelism in Context of Automotive Multi-Processor SystemsHöttger, Robert Martin 15 July 2021 (has links)
This dissertation entitled ’Model-Based Exploration of Parallelism in the Context of Automotive Multi-Core Systems’ deals with the analytical investigation of different temporal relationships for automotive multi-processor systems subject to critical, embedded, real-time, distributed, and heterogeneous domain requirements. Vehicle innovation increasingly demands high-performance platforms in terms of, e.g., highly assisted or autonomous driving such that established software development processes must be examined, revised, and advanced. The goal is not to develop application software itself, but instead to improve the model-based development process, subject to numerous constraints and requirements. Model-based software development is, for example, an established process that allows systems to be analyzed and simulated in an abstracted, standardized, modular, isolated, or integrated manner. The verification of real-time behavior taking into account various constraints and modern architectures, which include graphics and heterogeneous processors as well as dedicated hardware accelerators, is one of many challenges in the real-time and automotive community. The software distribution across hardware entities and the identification of software that can be executed in parallel are crucial in the development process. Since these processes usually optimize one or more properties, they belong to the category of problems that can only be solved in polynomial time using non-deterministic methods and thus make use of (meta) heuristics for being solved. Such (meta) heuristics require sophisticated implementation and configuration, due to the properties to be optimized are usually subject to many different analyses.
With the results of this dissertation, various development processes can be adjusted to modern architectures by using new and extended processes that enable future and computationally intensive vehicle applications on the one hand and improve existing processes in terms of efficiency and effectiveness on the other hand. These processes include runnable partitioning, task mapping, data allocation, and timing verification, which are addressed with the help of constraint programming, genetic algorithms, and heuristics.
|
35 |
Smart Software Engineering - Gestaltung agiler Methoden und Technologien zur Verbesserung der Softwareentwicklungsprozesse mittelständischer SystemhäuserBarenkamp, Marco 19 April 2021 (has links)
Im Rahmen der Dissertation wurden die Wechselwirkungen, mögliche Potenziale und Herausforderungen von agilen Prinzipien im Hinblick auf IoT– und KI–Anwendungen auf den Softwareentwicklungsprozess in mittelständischen Unternehmen untersucht. Dazu wurde primär dem gestaltungsorientierten Forschungsparadigma, welches von besonderer Relevanz für die konstruktionsorientierte deutsche Wirtschaftsinformatik ist, gefolgt. Ein Primärziel dieses Forschungsvorhabens war die theoretische Herleitung agiler Methoden und Technologien zur Verbesserung der Software–Engineering–Prozesse mittelständischer Systemhäuser sowie die empirische Validierung und kritische Betrachtung dieser Technologien und Methodiken anhand ausgewählter, repräsentativer Fallbeispiele. Das zweites Primärziel der Dissertation ist die Forschungsarbeit an KI–Systemen, insbesondere im Rahmen von IoT–Anwendungen unter Berücksichtigung der möglichen Wechselwirkungen.
|
36 |
Provably Sound and Secure Automatic Proving and Generation of Verification Conditions / Tillförlitligt sund och säker automatisk generering och bevisning av verifieringsvillkorLundberg, Didrik January 2018 (has links)
Formal verification of programs can be done with the aid of an interactive theorem prover. The program to be verified is represented in an intermediate language representation inside the interactive theorem prover, after which statements and their proofs can be constructed. This is a process that can be automated to a high degree. This thesis presents a proof procedure to efficiently generate a theorem stating the weakest precondition for a program to terminate successfully in a state upon which a certain postcondition is placed. Specifically, the Poly/ML implementation of the SML metalanguage is used to generate a theorem in the HOL4 interactive theorem prover regarding the properties of a program written in BIR, an abstract intermediate representation of machine code used in the PROSPER project. / Bevis av säkerhetsegenskaper hos program genom formell verifiering kan göras med hjälp av interaktiva teorembevisare. Det program som skall verifieras representeras i en mellanliggande språkrepresentation inuti den interaktiva teorembevisaren, varefter påståenden kan konstrueras, som sedan bevisas. Detta är en process som kan automatiseras i hög grad. Här presenterar vi en metod för att effektivt skapa och bevisa ett teorem som visar sundheten hos den svagaste förutsättningen för att ett program avslutas framgångsrikt under ett givet postvillkor. Specifikt använder vi Poly/ML-implementationen av SML för att generera ett teorem i den interaktiva teorembevisaren HOL4 som beskriver egenskaper hos ett program i BIR, en abstrakt mellanrepresentation av maskinkod som används i PROSPER-projektet.
|
Page generated in 0.23 seconds