Formální metody

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 17. ledna 2018; kontroly vyžadují 7 úprav .

V informatice a softwarovém inženýrství jsou formální metody skupinou technik  založených na matematickém aparátu pro specifikaci , vývoj a ověřování softwaru a hardwaru [ 1] . Použití formálních metod pro návrh softwaru a hardwaru je způsobeno očekáváním, že stejně jako v jiných inženýrských oborech může použití matematické analýzy významně zvýšit spolehlivost systémů [2] . Formální metody jsou zároveň poměrně složité, vyžadují speciální školení, investice do času a zdrojů a často jsou založeny na předpokladech, které nejsou vždy dosažitelné v reálných podmínkách. To vede k tomu, že formální metody se nejčastěji používají při návrhu vysoce přesných systémů, kde důležitost bezpečnosti ospravedlňuje jakékoli prostředky.

Formální metody se zabývají aplikací poměrně široké třídy základních technik teoretické informatiky : různých logických kalkulů , formálních jazyků , teorie automatů , formální sémantiky , typových systémů a algebraických datových typů [3] .

Odrůdy formálních metod

Existují tři úrovně aplikace formálních metod:

Úroveň nula Je vyvinuta formální specifikace , poté je napsán programový kód , který se na ni dívá. V tomto případě zůstává mezera mezi formální a neformální částí neprokázaná, ale řešení může být nákladově efektivní. První úroveň Programový kód je odvozen z formální specifikace automaticky, jsou použity verifikační mechanismy a jsou prokázány nejkritičtější vlastnosti systému. Tato cesta se často volí u vysoce přesných systémů. Druhý stupeň Automatické dokazovatele vět se používají k odvození plně formalizovaných důkazů, které se automaticky ověřují. Tento přístup vyžaduje mnoho investic a výzkumu, ale vyplatí se v nejkritičtějších částech složitých systémů, kde nejsou povoleny chyby (například při návrhu integrovaných obvodů ).

Formální metodické přístupy mohou být také klasifikovány podobným způsobem jako formální sémantika programovacích jazyků :

Denotační sémantika _ _  _ Význam systému je vyjádřen v podmínkách částečně uspořádaných množin a metody spoléhají na dobře rozvinutou teorii kolem nich. Omezením této metody je, že ne každý systém lze intuitivně nebo přirozeně považovat za funkci . Operační sémantika _ _  _ Hodnota systému je označena posloupností akcí v rámci jednoduššího výpočetního modelu (jako je lambda kalkul nebo Petriho sítě ). Metody jsou proslulé svou jednoduchostí, ne-li zdůrazněny tím, že se opírají o sémantiku „jednoduššího“ systému, který je také potřeba něčím definovat. Axiomatická sémantika _ _  _ Význam systému je definován z hlediska předpokladů a postpodmínek , což umožňuje propojit teorii s klasickou logikou, ale nedává představu o tom, co se přesně děje uvnitř systému (jak se dosahuje postpodmínek na základě předpokladů) .

Navíc lze často dramaticky pozitivních výsledků dosáhnout obětováním globální použitelnosti a přílišnou formalizací – takové případy se nazývají „odlehčené“ (odlehčené) formální metody. Lze je rozdělit do dvou typů: se zesílenou a s oslabenou automatizací. Příkladem vylepšené automatizace je analyzátor specifikací Alloy Analyzer , který za účelem snížení problému s hledáním modelu na řešitelný, zužuje oblast hledání (v důsledku toho Alloy pracuje plně automatizovaně, na rozdíl od interaktivních dokazovačů, ale má šance, že nenajdete nějaké problémy). Příkladem oslabeného je konvergence gramatik , ve které je neřešitelnost problému ekvivalence dvou formálních jazyků řízena tím, že transformace provádí člověk sám a z vlastností jsou již vyvozovány závěry. jím používaných operátorů.

Použití formálních metod

Formální metody se používají v různých fázích vývoje softwaru :

Specifikace Pomocí formálních metod je možné popsat budoucí systém s jakoukoliv úrovní detailů. Takovýto formální popis lze přímo nebo nepřímo s výhodou použít v pozdějších fázích. Práce na prokazování řady požadovaných funkčních vlastností přitom mohou začít okamžitě a jít souběžně s psaním či generováním kódu. Existuje řada jazyků a kalkulací pro formální specifikace, ale žádný nemůže tvrdit, že je tak univerzální jako formulář Backus-Naur pro specifikaci syntaxe . Rozvoj Pokud formální specifikace používá operační sémantiku, lze pozorované chování konkrétního systému porovnat s očekávaným chováním, protože taková sémantika může být proveditelná a může být dokonce použita pro automatické generování kódu. Pokud se použije axiomatická sémantika, pak se předběžné a následné podmínky mohou mapovat přímo na příkazy ve spustitelném kódu. Ověření Jakmile je připravena formální specifikace, lze ji použít k prokázání požadovaných vlastností. Verifikace může být deduktivní a modelová : deduktivní využívá automatický důkaz vět nebo specifických algeber a model nezakládá své závěry na systému samotném, ale na modelu na něm postaveném [4] . Zároveň není absolutně nutné sestavit model ručně, pokud jsou použitelné techniky jako programová sekce .

Kritika formálních metod

Ruční nátisky vyžadují značné investice zdrojů a neposkytují žádnou jinou výhodu než potvrzení správnosti. V důsledku toho se formální metody používají buď v oblastech, kde lze důkazy získat automaticky pomocí softwaru, nebo v těch, kde je cena chyby příliš vysoká (například při vytváření kosmických lodí nebo zobrazování magnetickou rezonancí ).

Abstrakce, notace a jazyky formálních metod

Poznámky

  • Jean François Monin, Michael Gerard Hinchey, Pochopení formálních metod , Springer, 2003, ISBN 1852332476
  1. RW Butler. Co jsou formální metody? (6. srpna 2001). Získáno 16. listopadu 2006. Archivováno z originálu dne 25. srpna 2012.
  2. C. Michael Holloway. Proč by inženýři měli zvážit formální metody  (neopr.) . - 16. konference digitálních avionických systémů (27.–30. října 1997). Archivováno z originálu 23. července 2018.
  3. Monin, s. 3-4
  4. Ověření programu s modely Archivováno 21. února 2010 na Wayback Machine , Open Systems , č. 12, 2003.

Odkazy

  • Formal Methods Europe (FME)
  • FM  - International Symposium on Formal Methods , prestižní konference
  • ICFEM  - mezinárodní konference o metodách formálního inženýrství , mírně nižší úroveň IEEE konference
  • IFM  - International Conference on Integrated Formal Methods , konference na stejné úrovni jako ICFEM