Vérification formelleIn the context of hardware and software systems, formal verification is the act of proving or disproving the correctness of intended algorithms underlying a system with respect to a certain formal specification or property, using formal methods of mathematics. Formal verification can be helpful in proving the correctness of systems such as: cryptographic protocols, combinational circuits, digital circuits with internal memory, and software expressed as source code.
Langage de spécificationUn langage de spécification est un Langage formel en Informatique utilisé pendant l'analyse systémique, l'analyse des exigences et la conception des systèmes pour décrire un système à un niveau beaucoup plus élevé qu'un langage de programmation, qui est utilisé pour produire un code exécutable pour un système. Les langages de spécification ne sont généralement pas exécutés directement. Ils sont destinés à décrire le quoi, pas le comment. En effet, il est considéré comme une erreur si une spécification d'exigence est encombrée de détail d'implémentation non nécessaire.
Formal specificationIn computer science, formal specifications are mathematically based techniques whose purpose are to help with the implementation of systems and software. They are used to describe a system, to analyze its behavior, and to aid in its design by verifying key properties of interest through rigorous and effective reasoning tools. These specifications are formal in the sense that they have a syntax, their semantics fall within one domain, and they are able to be used to infer useful information.
Logique modaleEn logique mathématique, une logique modale est un type de logique formelle qui étend la logique propositionnelle, la logique du premier ordre ou la logique d'ordre supérieur avec des modalités. Une modalité spécifie des . Par exemple, une proposition comme « il pleut » peut être précédée d'une modalité : Il est nécessaire qu'''il pleuve ; Demain, il pleut ; Christophe Colomb croit quil pleut ; Il est démontré qu'''il pleut ; Il est obligatoire quil pleuve.
Software verification and validationIn software project management, software testing, and software engineering, verification and validation (V&V) is the process of checking that a software system meets specifications and requirements so that it fulfills its intended purpose. It may also be referred to as software quality control. It is normally the responsibility of software testers as part of the software development lifecycle.
Verification and validationVerification and validation (also abbreviated as V&V) are independent procedures that are used together for checking that a product, service, or system meets requirements and specifications and that it fulfills its intended purpose. These are critical components of a quality management system such as ISO 9000. The words "verification" and "validation" are sometimes preceded with "independent", indicating that the verification and validation is to be performed by a disinterested third party.
Test oracleIn computing, software engineering, and software testing, a test oracle (or just oracle) is a mechanism for determining whether a test has passed or failed. The use of oracles involves comparing the output(s) of the system under test, for a given test-case input, to the output(s) that the oracle determines that product should have. The term "test oracle" was first introduced in a paper by William E. Howden. Additional work on different kinds of oracles was explored by Elaine Weyuker.
Logique temporelle linéaireEn logique, la logique temporelle linéaire (LTL) est une logique temporelle modale avec des modalités se référant au temps. En LTL, on peut coder des formules sur l'avenir d'un chemin infini dans un système de transitions, par exemple une condition finira par être vraie, une condition sera vraie jusqu'à ce qu'une autre devienne vraie, etc. Cette logique est plus faible que la logique CTL*, qui permet d'exprimer des conditions sur des ramifications de chemins et pas seulement sur un seul chemin.
Logique temporelleLa logique temporelle est une branche de la logique mathématique et plus précisément de la logique modale, qui est formalisée de plusieurs manières. La caractéristique commune de ces formalisations réside en l'ajout de modalités (autrement dit de « transformateurs de prédicats ») liées au temps ; par exemple, une formule typique de la logique modale est la formule , qui se lit : « la formule est satisfaite jusqu'à ce que la formule le soit » et qui signifie que l'on cherche à garantir qu'une certaine propriété (ici ) est satisfaite pendant tout le temps qui court avant qu'une autre formule (ici ) le soit.
Computation tree logicComputation tree logic (CTL) is a branching-time logic, meaning that its model of time is a tree-like structure in which the future is not determined; there are different paths in the future, any one of which might be an actual path that is realized. It is used in formal verification of software or hardware artifacts, typically by software applications known as model checkers, which determine if a given artifact possesses safety or liveness properties. For example, CTL can specify that when some initial condition is satisfied (e.
Méthode formelle (informatique)En informatique, les méthodes formelles sont des techniques permettant de raisonner rigoureusement, à l'aide de logique mathématique, sur un programme informatique ou du matériel électronique numérique, afin de démontrer leur validité par rapport à une certaine spécification. Elles reposent sur les sémantiques des programmes, c'est-à-dire sur des descriptions mathématiques formelles du sens d'un programme donné par son code source (ou, parfois, son code objet).
Connecteur logiqueEn logique, un connecteur logique est un opérateur booléen utilisé dans le calcul des propositions. Comme dans toute approche logique, il faut distinguer un aspect syntaxique et un aspect sémantique. D'un point de vue syntaxique, les connecteurs sont des opérateurs dans un langage formel pour lesquels un certain nombre de règles définissent leur usage, au besoin complétées par une sémantique. Si l'on se place dans la logique classique, l'interprétation des variables se fait dans les booléens ou dans une extension multivalente de ceux-ci.
Runtime verificationRuntime verification is a computing system analysis and execution approach based on extracting information from a running system and using it to detect and possibly react to observed behaviors satisfying or violating certain properties. Some very particular properties, such as datarace and deadlock freedom, are typically desired to be satisfied by all systems and may be best implemented algorithmically. Other properties can be more conveniently captured as formal specifications.
Software verificationSoftware verification is a discipline of software engineering, programming languages, and theory of computation whose goal is to assure that software satisfies the expected requirements. A broad definition of verification makes it related to software testing. In that case, there are two fundamental approaches to verification: Dynamic verification, also known as experimentation, dynamic testing or, simply testing. - This is good for finding faults (software bugs).
Vérification de modèlesthumb|308x308px|Principe du model checking. En informatique, la vérification de modèles, ou model checking en anglais, est le problème suivant : vérifier si le modèle d'un système (souvent informatique ou électronique) satisfait une propriété. Par exemple, on souhaite vérifier qu'un programme ne se bloque pas, qu'une variable n'est jamais nulle, etc. Généralement, la propriété est écrite dans un langage, souvent en logique temporelle. La vérification est généralement faite de manière automatique.
Disjonction logiqueLa disjonction logique, ou disjonction non exclusive, de deux assertions est une façon d'affirmer qu'au moins une de ces deux assertions est vraie (la première, la deuxième, ou les deux). Dans le langage logique ou mathématique, et dans les domaines techniques qui l'emploient, elle se traduit par le OU logique, un opérateur logique dans le calcul des propositions. La proposition obtenue en reliant deux propositions par cet opérateur s'appelle également leur disjonction ou leur somme logique.
Test (informatique)vignette|Une programmeuse écrivant du code Java avec JUnit. En informatique, un test désigne une procédure de vérification partielle d'un système. Son objectif principal est d'identifier un nombre maximal de comportements problématiques du logiciel. Il permet ainsi, dès lors que les problèmes identifiés seront corrigés, d'en augmenter la qualité. D'une manière plus générale, le test désigne toutes les activités qui consistent à rechercher des informations quant à la qualité du système afin de permettre la prise de décisions.
Conjonction logiqueEn logique, la conjonction est une opération mise en œuvre par le connecteur binaire et. Le connecteur et est donc un opérateur binaire qui lie deux propositions pour en faire une autre. Si on admet chacune des deux propositions, alors on admettra la proposition qui en est la conjonction. En logique mathématique, le connecteur de conjonction est noté soit &, soit ∧. En théorie de la démonstration, plus particulièrement en calcul des séquents, la conjonction est régie par des règles d'introduction et des règles d'élimination.
Langage de description de matérielUn langage de description de matériel, ou du matériel (ou HDL pour hardware description language en anglais) est un langage informatique permettant la description d'un circuit électronique au niveau des transferts de registres (RTL). Celui-ci peut décrire les fonctions réalisées par le circuit (description comportementale) ou les portes logiques utilisées par le circuit (description structurelle). Il est possible d'observer le fonctionnement d'un circuit électronique modélisé dans un langage de description grâce à la simulation.
Fonction NON-OULa fonction OU-NON (NOR en anglais) est un opérateur logique de l'algèbre de Boole. À deux opérandes, qui peuvent avoir chacun la valeur VRAI ou FAUX, il associe un résultat qui a lui-même la valeur VRAI seulement si les deux opérandes ont la valeur FAUX. Cette fonction logique correspond aux mots français ni... ni, car la phrase ni A ni B est vraie si et seulement si les phrases A et B sont toutes les deux fausses ! On peut utiliser les symboles d'après les Lois de De Morgan Une lampe s'allume, sauf si l'on appuie sur « a » ou « b » ou « a » et « b » et seulement dans ces cas-là.