Spelling suggestions: "subject:"[een] FORMAL METHODS"" "subject:"[enn] FORMAL METHODS""
231 |
Estendendo CRefine para o suporte de t?ticas de refinamentoConserva Filho, Madiel de Souza 07 October 2011 (has links)
Made available in DSpace on 2014-12-17T15:47:59Z (GMT). No. of bitstreams: 1
MadielSCF_DISSERT.pdf: 1874479 bytes, checksum: dc22e7d8884791a523682f62c1e8c32c (MD5)
Previous issue date: 2011-10-07 / Coordena??o de Aperfei?oamento de Pessoal de N?vel Superior / The use of increasingly complex software applications is demanding greater investment
in the development of such systems to ensure applications with better quality. Therefore,
new techniques are being used in Software Engineering, thus making the development
process more effective. Among these new approaches, we highlight Formal
Methods, which use formal languages that are strongly based on mathematics and have a
well-defined semantics and syntax. One of these languages is Circus, which can be used
to model concurrent systems. It was developed from the union of concepts from two other
specification languages: Z, which specifies systems with complex data, and CSP, which
is normally used to model concurrent systems. Circus has an associated refinement calculus,
which can be used to develop software in a precise and stepwise fashion. Each step
is justified by the application of a refinement law (possibly with the discharge of proof
obligations). Sometimes, the same laws can be applied in the same manner in different
developments or even in different parts of a single development. A strategy to optimize
this calculus is to formalise these application as a refinement tactic, which can then be
used as a single transformation rule. CRefine was developed to support the Circus refinement
calculus. However, before the work presented here, it did not provide support for
refinement tactics. The aim of this work is to provide tool support for refinement tactics.
For that, we develop a new module in CRefine, which automates the process of defining
and applying refinement tactics that are formalised in the tactic language ArcAngelC. Finally,
we validate the extension by applying the new module in a case study, which used
the refinement tactics in a refinement strategy for verification of SPARK Ada implementations
of control systems. In this work, we apply our module in the first two phases of
this strategy / A utiliza??o de aplica??es de software cada vez mais complexas est? exigindo um
maior investimento no desenvolvimento de sistemas, garantindo uma melhor qualidade
das aplica??es. Diante desse contexto, novas t?cnicas est?o sendo utilizadas na ?rea de
Engenharia de Software, tornado o processo de desenvolvimento mais eficaz. Destacam-
se, como exemplo dessas novas abordagens, os M?todos Formais. Estes m?todos utilizam
linguagens formais que t?m sua base fundamentada na matem?tica, apresentando uma
sem?ntica e sintaxe bem definidas. Uma dessas linguagens ? Circus, que possibilita a mo-
delagem de sistemas concorrentes. Esta linguagem foi desenvolvida a partir da uni?o dos
conceitos das linguagens formais Z (que permitem a modelagem de dados complexos) e
CSP Communicating Sequential Processes (que permitem a modelagem de sistemas con-
correntes). Adicionalmente, Circus tamb?m possui um c?lculo de refinamento associado,
que pode ser utilizado para desenvolver software de forma precisa e gradual. Cada etapa
deste c?lculo ? justificada pela aplica??o de uma lei de refinamento (possivelmente com a
prova de certas condi??es chamadas de obriga??es de prova). Algumas vezes, as mesmas
leis podem ser aplicadas da mesma forma em diferentes desenvolvimentos ou mesmo em
partes diferentes de um ?nico desenvolvimento. Uma estrat?gia para otimizar esse c?l-
culo ? formalizar estas aplica??es como t?ticas de refinamento, que podem ser utilizadas
como uma simples regra de transforma??o. A ferramenta CRefine foi desenvolvida para
realizar o suporte a este c?lculo de refinamento de Circus. Entretanto, antes deste traba-
lho, essa ferramenta n?o fornecia suporte para as t?ticas. A proposta desta disserta??o ?
oferecer um suporte ferramental para a utiliza??o das t?ticas no c?lculo de refinamento de
programas Circus. Para tanto, foi desenvolvido um novo m?dulo em CRefine, que auto-
matiza o processo de defini??o e aplica??o das t?ticas de refinamento. Nesta extens?o as
t?ticas s?o formalizadas na linguagem de t?ticas para sistemas concorrentes, ArcAngelC.
Por fim, validamos a extens?o, aplicando o novo m?dulo a um estudo de caso, que utiliza
as t?ticas em uma estrat?gia de refinamento para verifica??o de implementa??es SPARK
Ada de sistemas de controle. Nesta disserta??o, aplicamos o novo modulo ?s duas fases
iniciais desta estrat?gia.
|
232 |
Gera??o autom?tica de hardware a partir de especifica??es formais: estendendo uma abordagem de tradu??oMedeiros Junior, Ivan Soares de 27 April 2012 (has links)
Made available in DSpace on 2014-12-17T15:48:02Z (GMT). No. of bitstreams: 1
IvanSMJ_DISSERT.pdf: 2894212 bytes, checksum: 3acb921ac87239ee36be60cb2e15b0e6 (MD5)
Previous issue date: 2012-04-27 / Coordena??o de Aperfei?oamento de Pessoal de N?vel Superior / Removing inconsistencies in a project is a less expensive activity when done in the
early steps of design. The use of formal methods improves the understanding of systems.
They have various techniques such as formal specification and verification to identify
these problems in the initial stages of a project. However, the transformation from a
formal specification into a programming language is a non-trivial task and error prone,
specially when done manually. The aid of tools at this stage can bring great benefits to
the final product to be developed.
This paper proposes the extension of a tool whose focus is the automatic translation of
specifications written in CSPM into Handel-C. CSP is a formal description language suitable
for concurrent systems, and CSPM is the notation used in tools support. Handel-C is a
programming language whose result can be compiled directly into FPGA s. Our extension
increases the number of CSPM operators accepted by the tool, allowing the user to define
local processes, to rename channels in a process and to use Boolean guards on external
choices. In addition, we also propose the implementation of a communication protocol
that eliminates some restrictions on parallel composition of processes in the translation
into Handel-C, allowing communication in a same channel between multiple processes to
be mapped in a consistent manner and that improper communication in a channel does
not ocurr in the generated code, ie, communications that are not allowed in the system
specification / A remo??o de inconsist?ncias em um projeto ? menos custosa quando realizada nas
etapas iniciais da sua concep??o. A utiliza??o de M?todos Formais melhora a compreens?o
dos sistemas al?m de possuir diversas t?cnicas, como a especifica??o e verifica??o
formal, para identificar essas inconsist?ncias nas etapas iniciais de um projeto. Por?m, a
transforma??o de uma especifica??o formal para uma linguagem de programa??o ? uma
tarefa n?o trivial. Quando feita manualmente, ? uma tarefa pass?vel da inser??o de erros.
O uso de ferramentas que auxiliem esta etapa pode proporcionar grandes benef?cios ao
produto final que ser? desenvolvido.
Este trabalho prop?e a extens?o de uma ferramenta cujo foco ? a tradu??o autom?tica
de especifica??es em CSPM para Handel-C. CSP ? uma linguagem de descri??o formal
adequada para trabalhar com sistemas concorrentes, CSPM ? a nota??o utilizada pelas
ferramentas de apoio da linguagem. Handel-C ? uma linguagem de programa??o cujo
resultado pode ser compilado diretamente para FPGA s. A extens?o consiste no aumento
no n?mero de operadores CSPM aceitos pela ferramenta, permitindo ao usu?rio definir
processos locais, renomear canais e utilizar guarda booleana em escolhas externas. Al?m
disto, propomos tamb?m a implementa??o de um protocolo de comunica??o que elimina
algumas restri??es da composi??o paralela de processos na tradu??o para Handel-C, permitindo
que a comunica??o em um mesmo canal entre m?ltiplos processos possa ser mapeada
de maneira consistente e que no c?digo gerado n?o ocorra comunica??es indevidas
em um canal, ou seja, comunica??es que n?o s?o permitidas na especifica??o do sistema
|
233 |
BTS:uma ferramenta de suporte ao desenvolvimento sistem?tico de sistemas confi?veis baseados em componentesSilva, Sarah Raquel da Rocha 13 December 2013 (has links)
Made available in DSpace on 2014-12-17T15:48:09Z (GMT). No. of bitstreams: 1
SarahRRS_DISSERT.pdf: 1954614 bytes, checksum: ba3eee36fc3f3f1030a71fa2ad2f605a (MD5)
Previous issue date: 2013-12-13 / Universidade Federal do Rio Grande do Norte / The component-based development of systems revolutionized the software development
process, facilitating the maintenance, providing more confiability and reuse. Nevertheless,
even with all the advantages of the development of components, their composition is an
important concern. The verification through informal tests is not enough to achieve a
safe composition, because they are not based on formal semantic models with which we
are able to describe precisally a system s behaviour. In this context, formal methods
provide ways to accurately specify systems through mathematical notations providing,
among other benefits, more safety. The formal method CSP enables the specification
of concurrent systems and verification of properties intrinsic to them, as well as the
refinement among different models. Some approaches apply constraints using CSP,
to check the behavior of composition between components, assisting in the verification
of those components in advance. Hence, aiming to assist this process, considering
that the software market increasingly requires more automation, reducing work and
providing agility in business, this work presents a tool that automatizes the verification
of composition among components, in which all complexity of formal language is kept
hidden from users. Thus, through a simple interface, the tool BST (BRIC-Tool-Suport)
helps to create and compose components, predicting, in advance, undesirable behaviors in
the system, such as deadlocks / O desenvolvimento de sistemas baseados em componentes revolucionou o processo de
desenvolvimento de software, facilitando a manuten??o, trazendo mais confiabilidade e
reutiliza??o. Por?m, mesmo com todas as vantagens atribu?das ao componente, ? necess?rio
uma an?lise detalhada de sua composi??o. Realizar verifica??o a partir de testes
de software n?o ? o suficiente para se ter uma composi??o segura, pois esses n?o s?o
baseados em modelos sem?nticos formais nos quais podemos descrever precisamente o
comportamento do sistema. Nesse contexto, os m?todos formais oferecem a possibilidade
de especificarmos sistemas de forma precisa, atrav?s de nota??es com forte base
matem?tica, trazendo, entre outros benef?cios, mais seguran?a. O m?todo formal CSP
possibilita a especifica??o de sistemas concorrentes e verifica??o de propriedades inerentes
a tais sistemas, bem como refinamento entre diferentes modelos. Existem abordagens que
aplicam restri??es usando CSP, para verificar o comportamento da composi??o entre componentes,
auxiliando a verifica??o desses componentes antecipadamente. Visando auxiliar
esse processo, tendo em vista que o mercado de software busca cada vez mais automa??o,
minimizando trabalhos e trazendo agilidade nos neg?cios, este trabalho apresenta uma ferramenta
que automatiza a verifica??o da composi??o entre componentes, onde o conjunto
de verifica??es CSP impostas ? gerado e verificado internamente, oculto para o usu?rio.
Dessa forma, atrav?s de uma interface simples, a ferramenta BTS (BRIC-Tool-Suport)
ajuda a criar e compor componentes, prevendo, com anteced?ncia, comportamentos indesej?veis
no sistema, como deadlocks
|
234 |
Improving scalability of exploratory model checkingBoulgakov, Alexandre January 2016 (has links)
As software and hardware systems grow more complex and we begin to rely more on their correctness and reliability, it becomes exceedingly important to formally verify certain properties of these systems. If done naïvely, verifying a system can easily require exponentially more work than running it, in order to account for all possible executions. However, there are often symmetries or other properties of a system that can be exploited to reduce the amount of necessary work. In this thesis, we present a number of approaches that do this in the context of the CSP model checker FDR. CSP is named for Communicating Sequential Processes, or parallel combinations of state machines with synchronised communications. In the FDR model, the component processes are typically converted to explicit state machines while their parallel combination is evaluated lazily during model checking. Our contributions are motivated by this model but applicable to other models as well. We first address the scalability of the component machines by proposing a lazy compiler for a subset of CSP<sub>M</sub> selected to model parameterised state machines. This is a typical case where the state space explosion can make model checking impractical, since the size of the state space is exponential in the number and size of the parameters. A lazy approach to evaluating these systems allows only the reachable subset of the state space to be explored. As an example, in studying security protocols, it is common to model an intruder parameterised by knowledge of each of a list of facts; even a relatively small 100 facts results in an intractable 2<sup>100</sup> states, but the rest of the system can ensure that only a small number of these states are reachable. Next, we address the scalability of the overall combination by presenting novel algorithms for bisimulation reduction with respect to strong bisimulation, divergence- respecting delay bisimulation, and divergence-respecting weak bisimulation. Since a parallel composition is related to the Cartesian product of its components, performing a relatively time-consuming bisimulation reduction on the components can reduce its size significantly; an efficient bisimulation algorithm is therefore very desirable. This thesis is motivated by practical implementations, and we discuss an implementation of each of the proposed algorithms in FDR. We thoroughly evaluate their performance and demonstrate their effectiveness.
|
235 |
Rigorous System-level Modeling and Performance Evaluation for Embedded System Design / Modélisation et Évaluation de Performance pour la Conception des Systèmes Embarqués : Approche Rigoureuse au Niveau SystèmeNouri, Ayoub 08 April 2015 (has links)
Les systèmes embarqués ont évolué d'une manière spectaculaire et sont devenus partie intégrante de notre quotidien. En réponse aux exigences grandissantes en termes de nombre de fonctionnalités et donc de flexibilité, les parties logicielles de ces systèmes se sont vues attribuer une place importante malgré leur manque d'efficacité, en comparaison aux solutions matérielles. Par ailleurs, vu la prolifération des systèmes nomades et à ressources limités, tenir compte de la performance est devenu indispensable pour bien les concevoir. Dans cette thèse, nous proposons une démarche rigoureuse et intégrée pour la modélisation et l'évaluation de performance tôt dans le processus de conception. Cette méthode permet de construire des modèles, au niveau système, conformes aux spécifications fonctionnelles, et intégrant les contraintes non-fonctionnelles de l'environnement d'exécution. D'autre part, elle permet d'analyser quantitativement la performance de façon rapide et précise. Cette méthode est guidée par les modèles et se base sur le formalisme $mathcal{S}$BIP que nous proposons pour la modélisation stochastique selon une approche formelle et par composants. Pour construire des modèles conformes au niveau système, nous partons de modèles purement fonctionnels utilisés pour générer automatiquement une implémentation distribuée, étant donnée une architecture matérielle cible et un schéma de répartition. Dans le but d'obtenir une description fidèle de la performance, nous avons conçu une technique d'inférence statistique qui produit une caractérisation probabiliste. Cette dernière est utilisée pour calibrer le modèle fonctionnel de départ. Afin d'évaluer la performance de ce modèle, nous nous basons sur du model checking statistique que nous améliorons à l'aide d'une technique d'abstraction. Nous avons développé un flot de conception qui automatise la majorité des phases décrites ci-dessus. Ce flot a été appliqué à différentes études de cas, notamment à une application de reconnaissance d'image déployée sur la plateforme multi-cœurs STHORM. / In the present work, we tackle the problem of modeling and evaluating performance in the context of embedded systems design. These have become essential for modern societies and experienced important evolution. Due to the growing demand on functionality and programmability, software solutions have gained in importance, although known to be less efficient than dedicated hardware. Consequently, considering performance has become a must, especially with the generalization of resource-constrained devices. We present a rigorous and integrated approach for system-level performance modeling and analysis. The proposed method enables faithful high-level modeling, encompassing both functional and performance aspects, and allows for rapid and accurate quantitative performance evaluation. The approach is model-based and relies on the $mathcal{S}$BIP formalism for stochastic component-based modeling and formal verification. We use statistical model checking for analyzing performance requirements and introduce a stochastic abstraction technique to enhance its scalability. Faithful high-level models are built by calibrating functional models with low-level performance information using automatic code generation and statistical inference. We provide a tool-flow that automates most of the steps of the proposed approach and illustrate its use on a real-life case study for image processing. We consider the design and mapping of a parallel version of the HMAX models algorithm for object recognition on the STHORM many-cores platform. We explored timing aspects and the obtained results show not only the usability of the approach but also its pertinence for taking well-founded decisions in the context of system-level design.
|
236 |
Conclusive formal verification of clock domain crossing properties / Vérification formelle concluante des propriétés des systèmes multi-horlogesPlassan, Guillaume 28 March 2018 (has links)
Les circuits microélectroniques récents intègrent des dizaines d'horloges afin d'optimiser leur consommation et leur performance. Le nombre de traversées de domaines d'horloges (CDC) et la complexité des systèmes augmentant, garantir formellement l'intégrité d'une donnée devient un défi majeur. Plusieurs problèmes sont alors soulevés : configurer le système dans un mode réaliste, décrire l'environnement par des hypothèses sur les protocoles, gérer l'explosion de l'espace des états, analyser les contre-exemples, ...La première contribution de cette thèse a pour but d'atteindre une configuration complète et réaliste du système. Nous utilisons de la vérification formelle paramétrique ainsi qu'une analyse de la structure du circuit afin de détecter automatiquement les composants des arbres d'horloge. La seconde contribution cherche à éviter l'explosion de l'espace des états en combinant des abstractions localisées du circuit avec une analyse de contre-examples. L'idée clé est d'utiliser la technologie de raffinement d'abstraction guidée par contre-exemple (CEGAR) où l'utilisateur influence la poursuite de l'algorithme en se basant sur des informations extraites des contre-exemples intermédiaires. La troisième contribution vise à créer des hypothèses pour des environnements sous-contraints. Tout d’abord, plusieurs contre-exemples sont générés pour une assertion, avec différentes raisons d’échec. Ensuite, des informations en sont extraites et transformées en hypothèses réalistes.Au final, cette thèse montre qu'une vérification formelle concluante peut être obtenue en combinant la rapidité de l'analyse structurelle avec l'exhaustivité des méthodes formelles. / Modern hardware designs typically comprise tens of clocks to optimize consumption and performance to the ongoing tasks. With the increasing number of clock-domain crossings as well as the huge complexity of modern SoCs, formally proving the functional integrity of data propagation became a major challenge. Several issues arise: setting up the design in a realistic mode, writing protocol assumptions modeling the environment, facing state-space explosion, analyzing counter-examples, ...The first contribution of this thesis aims at reaching a complete and realistic design setup. We use parametric liveness verification and a structural analysis of the design in order to identify behaviors of the clock and reset trees. The second contribution aims at avoiding state-space explosion, by combining localization abstractions of the design, and counter-example analysis. The key idea is to use counterexample-guided abstraction refinement as the algorithmic back-end, where the user influence the course of the algorithm based on relevant information extracted from intermediate abstract counterexamples. The third contribution aims at creating protocol assumptions for under-specified environments. First, multiple counter-examples are generated for an assertion, with different causes of failure. Then, information is mined from them and transformed into realistic protocol assumptions.Overall, this thesis shows that a conclusive formal verification can be obtained by combining inexpensive structural analysis along with exhaustive model checking.
|
237 |
Décomposition formelle des spécifications centralisées Event-B : application aux systèmes distribués BIP / Formal decomposition of event-B centralized specifications : application to BIP distributed systemsSiala, Badr 15 December 2017 (has links)
Cette thèse a pour cadre scientifique la décomposition formelle des spécifications centrali- sées Event-B appliquée aux systèmes distribués BIP. Elle propose une démarche descendante de développement des systèmes distribués corrects par construction en combinant judicieu- sement Event-B et BIP. La démarche proposée comporte trois étapes : Fragmentation, Dis- tribution et Génération de code BIP. Les deux concepts clefs Fragmentation et Distribution, considérés comme deux sortes de raffinement automatique Event-B paramétrées à l'aide de deux DSL appropriés, sont introduits par cette thèse. Cette thèse apporte également une contribution au problème de la génération de code à partir d'un modèle Event-B issu de l'étape de distribution. Nous traitons aussi bien les aspects architecturaux que comportemen- taux. Un soin particulier a été accordé à l'outillage et l'expérimentation de cette démarche. Pour y parvenir, nous avons utilisé l'approche IDM pour l'outillage et l'application Hôtel à clés électroniques pour l'expérimentation. / The scientific framework of this thesis is the formal decomposition of the centralized specifications Event-B applied to distributed systems based on the BIP (Behavior, Interaction, Priority) component framework. It suggets a top-down approach to the development of correct by construction distributed systems by judiciously combining Event-B and BIP. The proposed approach consists in three steps : Fragmentation, Distribution and Generation of BIP code. We introduce two key concepts, Fragmentation and Distribution, which are considered as two kinds of automatic refinement of Event-B models. They are parameterized using two appropriate DSL. This thesis also contributes to the problem of code generation from Event- B models resulting from the Distribution step. Accordingly, we deal with both architectural and behavioral aspects. A special care has been devoted to the implementation and the experimentation of this approach. To achieve this, we have used the IDM approach for tooling and the Electronic Hotel Key System for experimentation.
|
238 |
Validation des spécifications formelles de la mise à jour dynamique des applications Java Card / Validation of formal specifications for dynamic updates in Java Card applicationsLounas, Razika 10 November 2018 (has links)
La mise à jour dynamique des programmes consiste en la modification de ceux-ci sans en arrêter l'exécution. Cette caractéristique est primordiale pour les applications critiques en continuelles évolutions et nécessitant une haute disponibilité. Le but de notre travail est d'effectuer la vérification formelle de la correction de la mise à jour dynamique d'applications Java Card à travers l'étude du système EmbedDSU. Pour ce faire, nous avons premièrement établi la correction de la mise à jour du code en définissant une sémantique formelle des opérations de mise à jour sur le code intermédiaire Java Card en vue d'établir la sûreté de typage des mises à jour. Nous avons ensuite proposé une approche pour vérifier la sémantique du code mis à jour à travers la définition d'une transformation de prédicats. Nous nous sommes ensuite intéressés à la vérification de la correction concernant la détection de points sûrs de la mise à jour. Nous avons utilisé la vérification de modèles. Cette vérification nous a permis de corriger d'abord un problème d'inter blocage dans le système avant d'établir d'autres propriétés de correction : la sûreté d'activation et la garantie de mise à jour. La mise à jour des données est effectuée à travers les fonctions de transfert d'état. Pour cet aspect, nous avons proposé une solution permettant d'appliquer les fonctions de transfert d’état tout en préservant la consistance du tas de la machine virtuelle Java Card et en permettant une forte expressivité dans leurs écritures. / Dynamic Software Updating (DSU) consists in updating running programs on the fly without any downtime. This feature is interesting in critical applications that are in continual evolution and that require high availability. The aim of our work is to perform formal verification the correctness of dynamic software updating in Java Card applications by studying the system EmbedDSU. To do so, we first established the correctness of code update. We achieved this by defining formal semantics for update operations on java Card bytecode in order to ensure type safety. Then, we proposed an approach to verify the semantics of updated programs by defining a predicate transformation. Afterward, we were interested in the verification of correction concerning the safe update point detection. We used model checking. This verification allowed us first to fix a deadlock situation in the system and then to establish other correctness properties: activeness safety and updatability. Data update is performed through the application of state transfer functions. For this aspect, we proposed a solution to apply state transfer functions with the preservation of the Java Card virtual machine heap consistency and by allowing a high expressiveness when writing state transfer functions.
|
239 |
Preuves d'algorithmes distribués par composition et raffinement. / Proofs of Distributed Algorithms by refinement and compositionBousabbah, Maha 08 December 2017 (has links)
Dans cette thèse, nous présentons des approches formelles permettant de simplifier la modélisation et la preuve du calcul distribué. Un système distribué est défini par une collection d’entités de calcul autonomes,qui communiquent ensemble pour accomplir une tâche commune. Chaque entité exécute localement son calcul et ne peut interagir qu’avec ses voisins.Le développement et la preuve du calcul distribué est un défi qui nécessite l’utilisation de méthodes et outils avancés. Dans nos travaux de thèse,nous étudions quelques problèmes fondamentaux du distribués, en utilisant Event-B, et nous proposons des schémas de preuve basés sur une approche“correct-par-construction”. Nous considérons un système distribué défini par réseau fiable, de processus anonymes et avec un modèle de communication basé sur l’échange de messages. Dans certains cas, nous faisons abstraction du modèle de communications en utilisant le modèle des calculs locaux. Nous nous focalisons d’abord sur le problème de détection de terminaison du calcul distribué. Nous proposons un patron formel permettant de transformer des algorithmes “avec détection de terminaison locale” en des algorithmes“avec détection de terminaison globale”. Ensuite, nous explicitons les preuves de correction d’un algorithme d’énumération. Nous proposons un développement formel qui servirait de point de départ aux calculs qui nécessitent l’hypothèse d’identification unique des processus. Enfin, nous étudions le problème du snapshot et du calcul d’état global. Nous proposons une solution basée sur une composition d’algorithmes existants. / In this work, we propose formal approaches for modeling andproving distributed algorithms. Such computations are designed to run oninterconnected autonomous computing entities for achieving a common task :each entity executes asynchronously the same code and interacts locally withits immediate neighbors. Correctness of distributed algorithms is a difficulttask and requires advancing methods and tools. In this thesis, we focus onsome basic problems of distributed computing, and we propose Event-B solutionsbased on the ”correct-by-construction” approach. We consider reliablesystems. We also assume that the network is anonymous and processes communicatewith asynchronous messages. In some cases, we refer to local computationsmodel to provide an abstraction of the distributed computations.We propose a formal framework enhancing the termination detection propertyof distributed algorithms. By relying on refinement and composition,we show that an algorithm specified with “local termination detection”, canbe reused in order to compute the same algorithm with “global terminationdetection”. We then focus on the enumeration problem : we start with anabstract initial specification of the problem, and we enrich it gradually bya progressive and incremental refinement. The computed result constitutesbasic initial steps of others distributed algorithms which assume that processeshave unique identifiers. We therefore focus on snapshot problems, andwe propose to investigate how existing algorithms can be composed, withrefinement, in order to compute a global state in an anonymous network.
|
240 |
Formal Guaranties for Safety Critical Code Generation : the Case of Highly Variable Languages / Garanties formelles pour la génération de code critique : L’affaire des langages fortement variablesDieumegard, Arnaud 30 January 2015 (has links)
Les fonctions de commande et de contrôle sont parmi les plus importantes des systèmes embarqués critiques utilisés dans des activités telles les transports, la santé ou la gestion de l’énergie. Leur impact potentiel sur la sûreté de fonctionnement fait de la vérification de leur correction l’un des points les plus critiques de leur développement. Cette vérification est usuellement effectuée en accord avec les normes de certification décrivant un ensemble d’objectifs à atteindre afin d’assurer un haut niveau de qualité du système et donc de prévenir l’apparition de défauts. Cette vérification du logiciel est traditionnellement basée sur de nombreux tests et des activitiés de relectures de code, toutefois les versions les plus récentes des standards de certification permettent l’utilisation de nouvelles approches de développement telles que l’ingénierie dirigée par les modèles et les méthodes formelles ainsi que l’utilisation d’outil pour assister les processus de développement. Les outils de génération automatique de code sont exploités dans la plupart des processus de développement de systèmes embarqués critiques afin d’éviter des erreurs de programmation liées à l’humain et pour assurer le respect des règles de production de code. Ces outils ayant pour vocation de remplacer les humains pour la production de code, des erreurs dans leur conception peuvent causer l’apparition d’erreurs dans le code généré. Il est donc nécessaire de vérifier que le niveau de qualité de l’outil est le même que celui du code produit en s’assurant que les objectifs spécifiées dans les normes de qualification sont couverts. Nos travaux visent à exploiter l’ingénierie dirigée par les modèles et les méthodes formelles pour développer ces outils et ainsi atteindre un niveau de qualité plus élevé que les approches traditionnelles. Les fonctions critiques de commande et de contrôle sont en grande partie conçues à l’aide de langages graphiques à flot de données. Ces langages sont utilisés pour modéliser des systèmes complexes à l’aide de blocs élémentaires groupés dans des librairies de blocs. Un bloc peut être un objet logiciel sophistiqué exposant une haute variabilité tant structurelle que sémantique. Cette variabilité est à la fois liée aux valeurs des paramètres du bloc ainsi qu’à son contexte d’utilisation. Dans notre travail, nous concentrons notre attention en premier lieu sur la spécification formelle de ces blocs ainsi que sur la vérification de ces spécifications. Nous avons évalué plusieurs approches et techniques dans le but d’assurer une spécification formelle, structurellement cohérente, vérifiable et réutilisable des blocs. Nous avons finalement conçu un langage basé sur l’ingénierie dirigées par les modèles dédié à cette tâche. Ce langage s’inspire des approches des lignes de produit logiciel afin d’assurer une gestion de la variabilité des blocs à la fois correcte et assurant un passage à l’échelle. Nous avons appliqué cette approche et la vérification associée sur quelques exemples choisis de blocs issus d’applications industrielles et l’avons validé sur des prototypes logiciels que nous avons développé. Les blocs sont les principaux éléments des langages d’entrée utilisés pour la génération automatique de logiciels de commande et de contrôle. Nous montrons comment les spécifications formelles de blocs peuvent être transformées en des annotations de code afin de simplifier et d’automatiser la vérification du code généré. Les annotations de code sont vérifiées par la suite à l’aide d’outils spécialisés d’analyse statique de code. En utilisant des observateur synchrones pour exprimer des exigences de haut niveau sur les modèles en entrée du générateur, nous montrons comment la spécification formelle de blocs peut être utilisée pour la génération d’annotations de code et par la suite pour la vérification automatique des exigences. / Control and command softwares play a key role in safety-critical embedded systems used for human related activities such as transportation, healthcare or energy. Their impact on safety makes the assessment of their correctness the central point in their development activities. Such systems verification activities are usually conducted according to normative certification guidelines providing objectives to be reached in order to ensure development process reliability and thus prevent flaws. Verification activities usually relies on tests and proof reading of the software but recent versions of certification guidelines are taking into account the deployment of new development paradigms such as model-based development, and formal methods; or the use of tools in assistance of the development processes. Automatic code generators are used in most safety-critical embedded systems development in order to avoid human related software production errors and to ensure the respect of development quality standards. As these tools are supposed to replace humans in the software code production activities, errors in these tools may result in embedded software flaws. It is thus in turn mandatory to ensure the same level of correctness for the tool itself than for the expected produced code. Tools verification shall be done according to qualification guidelines. We advocate in our work the use of model-based development and formal methods for the development of these tools in order to reach a higher quality level. Critical control and command software are mostly designed using graphical dataflow languages. These languages are used to express complex systems relying on atomic operations embedded in blocks that are gathered in block libraries. Blocks may be sophisticated pieces of software with highly variable structure and semantics. This variability is dependent on the values of the block parameters and of the block's context of use. In our work, we focus on the formal specification and verification of such block based languages. We experimented various techniques in order to ensure a formal, sound, verifiable and usable specification for blocks. We developed a domain specific formal model-based language specifically tailored for the specification of structure and semantics of blocks. This specification language is inspired from software product line concepts in order to ensure a correct and scalable management of the blocks variability. We have applied this specification and verification approach on chosen block examples from common industrial use cases and we have validated it on tool prototypes. Blocks are the core elements of the input language of automatic code generators used for control and command systems development. We show how our blocks formal specification can be translated as code annotations in order to ease and automate the generated code verification. Code annotations are verified using specialised static code analysis tools. Relying on synchronous observers to express high level requirements at the input model level, we show how formal block specification can also be used for the translation of high level requirements as verifiable code annotations discharged using the same specialised tooling. We finally target the assistance of code generation tools qualification activities by arguing on the ability to automatically generate qualification data such as requirements, tests or simulation results for the verification and development of automatic code generators from the formal block specification.
|
Page generated in 0.0357 seconds