Formális módszerek

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2018. január 17-én felülvizsgált verziótól ; az ellenőrzések 7 szerkesztést igényelnek .

A számítástechnikában és a szoftverfejlesztésben a formális módszerek a szoftverek  és hardverek specifikációjára , fejlesztésére és ellenőrzésére szolgáló matematikai apparátuson alapuló technikák csoportja [1] . A formális módszerek alkalmazása a szoftverek és hardverek tervezésénél abból az elvárásból fakad, hogy más mérnöki területekhez hasonlóan a matematikai elemzés alkalmazása jelentősen növelheti a rendszerek megbízhatóságát [2] . Ugyanakkor a formális módszerek meglehetősen összetettek, speciális képzést, idő- és erőforrás-befektetést igényelnek, és gyakran olyan feltételezéseken alapulnak, amelyek nem mindig valós körülmények között teljesíthetők. Ez oda vezet, hogy a formális módszereket leggyakrabban a nagy pontosságú rendszerek tervezésénél alkalmazzák, ahol a biztonság fontossága bármilyen eszközt indokol.

A formális módszerek az elméleti számítástechnika alapvető technikáinak meglehetősen széles osztályának alkalmazására vonatkoznak : különböző logikai számítások , formális nyelvek , automataelmélet , formális szemantika , típusrendszerek és algebrai adattípusok [3] .

A formális módszerek változatai

A formális módszerek alkalmazásának három szintje van:

Nulla szint Kidolgozunk egy formális specifikációt , majd ránézve megírjuk a programkódot . Ebben az esetben a formális és az informális rész közötti szakadék nem bizonyított, de a megoldás költséghatékony lehet. Első szint A programkódot a formális specifikációból automatikusan levezetjük, ellenőrző mechanizmusokat alkalmazunk , és bizonyítjuk a rendszer legkritikusabb tulajdonságait. Ezt az utat gyakran választják nagy pontosságú rendszerek esetén. Második szint Az automatikus tételbizonyítókat teljesen formalizált bizonyítások származtatására használják, amelyek automatikusan ellenőrzöttek. A megközelítés sok befektetést és kutatást igényel, de megtérül az összetett rendszerek legkritikusabb részein, ahol a hibák nem megengedettek (például integrált áramkörök tervezésénél ).

A formális módszertani megközelítések a programozási nyelvek formális szemantikájához hasonlóan osztályozhatók :

Denotációs szemantika _ _  _ Egy rendszer jelentése részben rendezett halmazokban fejeződik ki , és a módszerek a körülöttük lévő jól kidolgozott elméletre támaszkodnak. A módszer korlátja, hogy nem minden rendszer tekinthető intuitív módon vagy természetesen függvénynek . Műveleti szemantika _ _  _ Egy rendszer értékét egy egyszerűbb számítási modellen belüli műveletek sorozata jelöli (például a lambda-számítás vagy a Petri-háló ). A módszerek az egyszerűségükről híresek, ha nem az a tény hangsúlyozza, hogy egy „egyszerűbb” rendszer szemantikájára támaszkodnak, amelyet szintén meg kell határozni valamin keresztül. Axiomatikus szemantika _ _  _ A rendszer jelentése elő- és utófeltételekben van meghatározva , ami lehetővé teszi az elmélet összekapcsolását a klasszikus logikával, de nem ad képet arról, hogy pontosan mi történik a rendszeren belül (hogyan érhetők el az előfeltételek alapján az utófeltételek ) .

Emellett gyakran drámaian pozitív eredményeket lehet elérni a globális alkalmazhatóság feláldozásával és a túlzott formalizálással – az ilyen eseteket "könnyű" (könnyű) formális módszereknek nevezik. Két típusra oszthatók: továbbfejlesztett és gyengített automatizálású. A továbbfejlesztett automatizálásra példa az Alloy Analyzer specifikációelemző, amely a modell megtalálásának problémáját megoldhatóra csökkenti, szűkíti a keresési területet (ennek eredményeként az Alloy teljesen automatizáltan működik, ellentétben az interaktív próbákkal, de rendelkezik egy annak esélye, hogy nem találnak bizonyos problémákat). A gyengítettre példa a nyelvtanok konvergenciája , amelyben két formális nyelv ekvivalenciájának problémájának megoldhatatlanságát az a tény kezeli, hogy a transzformációkat maga az ember hajtja végre, és a tulajdonságokból már levonják a következtetéseket. az általa használt operátorok közül.

Formális módszerek használata

A formális módszereket a szoftverfejlesztés különböző szakaszaiban alkalmazzák :

Leírás Formális módszerek segítségével bármilyen részletességgel leírható a leendő rendszer. Egy ilyen formális leírás közvetlenül vagy közvetve előnyösen felhasználható a későbbi szakaszokban. Ugyanakkor azonnal megkezdődhet számos szükséges funkcionális tulajdonság bizonyítása, amely párhuzamosan zajlik a kód írásával vagy generálásával. Számos nyelv és számítás létezik a formális specifikációkhoz, de egyik sem állíthatja, hogy olyan univerzális, mint a Backus-Naur formája a szintaktikai specifikációhoz . Fejlődés Ha egy formális specifikáció operatív szemantikát használ, akkor egy adott rendszer megfigyelt viselkedése összehasonlítható a várt viselkedéssel, mert az ilyen szemantika megvalósítható, sőt automatikus kódgenerálásra is használható. Ha axiomatikus szemantikát használunk, akkor az elő- és utófeltételek közvetlenül leképezhetnek a végrehajtható kódban lévő utasításokra . Igazolás A formális specifikáció elkészítése után a szükséges tulajdonságok bizonyítására használható. A verifikáció lehet deduktív és modell : a deduktív tételek vagy meghatározott algebrák automatikus bizonyítását használja , és a modell következtetéseit nem magára a rendszerre, hanem az arra épülő modellre alapozta [ 4] . Ugyanakkor egyáltalán nem szükséges manuálisan felépíteni a modellt, ha olyan technikák alkalmazhatók, mint a programrész .

A formális módszerek kritikája

A kézi bizonyítások jelentős erőforrás-befektetést igényelnek, és a helyesség megerősítésén kívül nem járnak más előnnyel. Ennek eredményeként formális módszereket alkalmaznak azokon a területeken, ahol a bizonyítékok automatikusan beszerezhetők szoftveresen, vagy azokon, ahol a hiba költsége túl magas (például űrhajók vagy mágneses rezonancia képalkotás létrehozásakor ).

Absztrakciók, jelölések és formális metódusnyelvek

Jegyzetek

  • Jean François Monin, Michael Gerard Hinchey, A formális módszerek megértése , Springer, 2003, ISBN 1852332476
  1. RW Butler. Mi az a formális módszerek? (2001. augusztus 6.). Letöltve: 2006. november 16. Az eredetiből archiválva : 2012. augusztus 25..
  2. C. Michael Holloway. Miért érdemes a mérnököknek a formális módszereket fontolóra  venni (neopr.) . - 16. Digital Avionics Systems Conference (1997. október 27–30.). Archiválva az eredetiből 2018. július 23-án.
  3. Monin, 3-4
  4. Programellenőrzés modellekkel archiválva : 2010. február 21., a Wayback Machine , Open Systems , 2003. évi 12. szám.

Linkek

  • Formal Methods Europe (FME)
  • FM  - International Symposium on Formal Methods , egy rangos konferencia
  • ICFEM  – Nemzetközi Konferencia a Formai Mérnöki Módszerekről , valamivel alacsonyabb szintű IEEE konferencia
  • IFM  – Integrált formális módszerek nemzetközi konferenciája , az ICFEM-mel azonos szintű konferencia