Programování na základě automatů (přístup Shalytos) - Automata-based programming (Shalytos approach) - Wikipedia
![]() | tento článek příliš spoléhá na Reference na primární zdroje.Říjen 2020) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Programování na základě automatů je programovací technologie (Nepeyvoda 2005 ) . Jeho určující charakteristikou je použití konečné stavové automaty popsat chování programu. Přechod grafy státní stroje se používají ve všech fázích software vývoj (specifikace, implementace, ladění a dokumentace). Technologie automatizovaného programování byla představena společností Anatoly Shalyto v roce 1991 (Shalyto 1991 ) . Přepínací technologie (Shalyto 1998 ) byl vyvinut na podporu programování na základě automatů. Programování na základě automatů je považováno za spíše obecnou metodologii vývoje programu než jen za další implementaci konečného stavového automatu.
Programování na základě automatů
Hlavní myšlenkou navrhovaného přístupu je konstrukce počítačové programy stejným způsobem automatizace technologických procesů (a také další druhy procesů) je hotovo.
Pro to vše jsou na základě analýzy datové domény vyčleněny zdroje vstupních událostí, řídicí systém (systém interagujících konečných stavových strojů) a řídicí objekty implementující výstupní akce. Tyto řídicí objekty mohou také tvořit ještě další typ vstupních akcí, které jsou přenášeny prostřednictvím a zpětná vazba z ovládacích objektů zpět do konečné stavové automaty.
Hlavní rysy
V posledních letech byla věnována velká pozornost vývoji technologie programování pro vestavěné systémy a systémy v reálném čase. Tyto systémy mají zvláštní požadavky na kvalitu softwaru. Jedním z nejznámějších přístupů pro tuto oblast úkolů je synchronní programování (Benveniste 2003 ) (Shopyrin 2004 ) .
Současně s předstihem synchronního programování v Evropa, přístup k vývoji softwaru pro klíčové systémy zvaný automatizované programování nebo státní programování (Shalyto 1998 ) byl vytvořen v Rusko.
Termín událost se v programování používá stále více a více; v poslední době se stal jedním z nejčastěji používaných termínů ve vývoji softwaru. Na rozdíl od toho je nabízený přístup založen na termínu Stát (State-Driven Architecture). Po zavedení termínu vstupní akce, který by mohl označovat vstupní proměnnou nebo událost, termín automat bez výstupů může být přinesen. Po přidání termínu výstupní akce, může být použit termín „automat“. To je konečný deterministický automat.
Proto byl druh programování, který je založen na tomto termínu, nazýván „programování na základě automatů“. Proces vytváření softwaru by tedy mohl být pojmenován „design softwaru pro automaty“ (Shalyto 2000 ) .
Rysem tohoto přístupu je, že automaty používané pro vývoj jsou definovány pomocí přechodu grafy. Za účelem rozlišení uzlů těchto grafů termín státní kódování byl zaveden. S kódování více hodnot k rozlišení stavů automatu lze použít jedinou proměnnou, počet stavů se rovná počtu hodnot, které tato proměnná může nabrat. To umožnilo zavedení termínu pozorovatelnost programu (to znamená, že lze zkontrolovat hodnotu stavové proměnné).
Používání pojmu „stav“ na rozdíl od pojmů „události“ a „proměnné“ umožňuje jasněji pochopit a specifikovat úkol a jeho části (dílčí úkoly).
Je nutné si uvědomit, že používání programování na základě automatů znamená ladění vypracováním protokolů (protokolování) z hlediska automatů.
Pro tento přístup existuje formální a izomorfní metoda transformace z přechodového grafu do softwarového zdrojového kódu. Takže při použití programovací jazyky na vysoké úrovni, nejjednodušší způsob je použít konstrukci podobnou přepínač konstrukt Programovací jazyk C.. Proto se první implementace programování na základě automatů nazvala „Switch-Technology“. Další informace o programování na základě automatů naleznete v Článek „Přepínací technologie“.
V dnešní době bylo programování na základě automatů vyvinuto několika způsoby, pro různé typy úkolů, které je třeba řešit, a pro různé typy výpočetních zařízení.
Bylo vydáno ruské osvědčení o registraci Programovací jádro založené na automatech a pro Automatizační programovací modul plug-in pro Eclipse IDE.
Logické ovládání
V roce 1996 Ruská nadace pro základní výzkum[1] v rámci publikačního projektu č. 96-01-14066 podpořilo vydání knihy (Shalyto 1998 ) , ve kterém byla nabízená technologie popsána v aplikaci na logické řídicí systémy.
V takových systémech nejsou žádné události, ale vstupní a výstupní akce jsou binární proměnné a operační systém pracuje v režimu skenování. Systémy této třídy mají být obvykle implementovány na programovatelné logické automaty, které mají relativně malé množství Paměť a programování se provádí pomocí specializovaných jazyků (například jazyk žebříkových schémat nebo funkčních bloků). Byly vyvinuty metody formálního generování zdrojového kódu pro tyto jazyky pro případy, kdy specifikaci vyvíjeného projektu představuje systém přechodových grafů interagujících automatů (Shalyto 1998 ) .
Státní programování
Od nynějška byl přístup k automatům rozšířen na na základě událostí (reaktivní) systémy (Haryl 1987 ) . V takových systémech jsou odstraněna všechna výše uvedená omezení. Z názvu těchto systémů je zřejmé, že mezi vstupními akcemi se používají události. Výstupní akce mohou být reprezentovány libovolně funkce. Žádný operační systém v reálném čase lze použít jako prostředí.
Implementace automatů systémů založených na událostech byla provedena pomocí procedurální přístup k vývoji softwaru (Shalyto 2001a ) (Shalyto 2001b ) , odtud název „státní programování“.
Při použití této metody jsou výstupní akce přiřazeny oblouky, smyčky nebo uzly přechodových grafů (obecně se mají použít smíšené automaty Moore-Mealy (Shalyto 1998 ) ). To umožňuje reprezentovat v kompaktní formě sekvence akcí, které jsou reakcemi na odpovídající vstupní akce.
Jednou z vlastností takového přístupu k programování pro reaktivní systémy je, že centralizace programové logiky je dosažena likvidací logiky v obslužných rutinách událostí a vytvořením systému interagujících automatů, které jsou volány z těchto obslužných programů (Tukkel 2001 ) . Automaty v takovém systému mohou interagovat vnořením, schopností volat si navzájem a pomocí výměny stavových čísel.
Další důležitou vlastností tohoto přístupu je, že automaty v něm se používají třikrát: pro specifikaci, pro implementaci (zůstávají ve zdrojovém kódu) a pro vypracování protokolu, který se provádí, jak je uvedeno výše, z hlediska automatů. Ten umožňuje ověřit správnost fungování systému automatů. Protokolování se provádí automaticky na základě vytvořeného programu; lze jej použít k ladění programů se složitým chováním.
Tento přístup také umožňuje efektivní dokumentaci rozhodnutí učiněných během procesu návrhu, zejména těch, která se týkají formalizace chování programu (Tukkel 2002 ) .
To vše umožnilo spustit Nadace pro otevřenou projektovou dokumentaci (Shalyto 2003 ) , v jehož rámci je mnoho projektů na zdokonalování programování založeného na automatech (Domovská stránka programování automatů ) jsou vyvíjeny.
Stavově orientované objektově orientované programování
Kompozitní přístup založený na objektově i paradigmatech programování na základě automatů (Shalyto 2004 ) , (Shalyto 2005 ) , může být docela užitečné pro řešení úkolů z velmi širokého spektra. Tento přístup se nazýval „objektově orientované programování založené na stavu“.
Hlavním rysem tohoto přístupu je, že stejně jako v Turingovy stroje, stavy řízení (automaty) jsou výslovně vyčleněny. Počet těchto stavů je znatelně menší než počet stavů všech ostatních objektů (například stavy za běhu).
V programování byl zaveden termín „stavový prostor“. Tento termín znamená množinu ovládajících stavů objektu. Tento přístup tedy poskytuje srozumitelnější chování ve srovnání s případem, kdy takový prostor není výslovně vyčleněn.
Je popsána minimální sada dokumentů, které vizuálně a jasně popisují strukturální (statickou) a behaviorální (dynamickou) stránku softwarového projektu (Tukkel 2003 ) .
Ze zkušeností s adaptací navrhovaného přístupu (Tukkel 2001 ) lze konstatovat, že aplikace automatů činí chování programů jasnějším, protože použití objektů činí strukturu programů jasnější. Existence vysoce kvalitní projektové dokumentace činí další program refaktorování (změna jeho struktury při zachování jeho funkčnosti) mnohem jednodušší (Kuzněcov 2003 ) .
Výpočtové algoritmy
Pro implementaci výpočetních algoritmů lze použít přístup automatů. Bylo ukázáno (Tukkel 2002 ) že libovolný iterační algoritmus lze implementovat pomocí konstrukce, která je ekvivalentní operátoru smyčky dělat, zatímco
, uvnitř kterého je singlpřepínač
operátor, který implementuje automat.
Přístup založený na automatech je velmi efektivní pro implementaci některých algoritmů diskrétní matematiky, například algoritmu pro analýzu stromů (Korneev 2004 ) .
Byl nabídnut nový stavový přístup k vytváření vizualizérů algoritmů. Takový vizualizační software je široce používán v oddělení výpočetních technologií společnosti Petrohradská státní univerzita informačních technologií, mechaniky a optiky pro studenty výuky programování a diskrétní matematiky (Kazakov 2005 ) (Korneev 2005 ) . Tento přístup umožňuje reprezentovat logiku vizualizéru jako systém interagujících strojů s konečným stavem. Tento systém se skládá z dvojic automatů; každá z těchto dvojic obsahuje automaty „vpřed“ a „vzad“, které poskytují postupné dopředu a dozadu provádění algoritmů.
Instrumentace
Pro podporu programování automatů jsou vyvinuty různé softwarové nástroje. Jedním z těchto nástrojů je UniMod (Gurov 2004 ) (Gurov 2005 ) (UniMod ) . Tento nástroj je založen na následujících koncepcích: UML, Přepínací technologie, Zatmění IDE, Programovací jazyk Java, otevřený zdrojový kód (http://unimod.sourceforge.net/ ). To vše umožňuje mluvit o UniMod od zavedení spustitelný UML.
Některé příklady použití nástroje UniMod jsou uvedeny v (UniMod Příklady ) .
Shromážděné články o programování na základě automatů
Shromážděné články o programování na základě automatů byly publikovány v Univerzita ITMO. Bulletin (ifmo.ru 2008 ) obsahuje 28 článků o různých problémech programování na základě automatů.
První kniha o programování na základě automatů
V roce 2009 byla v ruském Petrohradu vydána první kniha o programování na základě automatů (Polikarpova 2009 ) .
Reference
- ^ „Archivovaná kopie“. Archivovány od originál dne 2008-03-14. Citováno 2008-03-17.CS1 maint: archivovaná kopie jako titul (odkaz)
- Nepeyvoda N.N. Styly a metody programování. M .: Internetová univerzita informačních technologií. 2005. (rus)
- Shalyto A.A. Programová implementace řídicích automatů // Námořní průmysl, řada „Automatizace a dálkové ovládání“. 1991, číslo 13, s. 41, 42. (rus)
- Shalyto A.A. Přepínací technologie. Algoritmizace a programování problémů logického řízení. SPb .: Nauka. 1998. (rus)
- Benveniste A. a kol. Synchronní jazyky o 12 let později. Proceedings of the IEEE, sv. 91, č. 1. ledna 2003. s. 64–83. (anglicky)
- Shopyrin D.G., Shalyto A.A. Synchronní programování // Informační a kontrolní systémy. 2004. # 3. str. 35-42. (rus)
- Shalyto A.A. Návrh softwarové automatizace: Algoritmizace a programování problémů logického řízení // Journal of Computer and Systems Sciences International. 2000. Vol.39. №6, str. 899-916. (engl) (rus)
- Harel D. Statecharts: Vizuální formalismus pro složité systémy // Věda o počítačovém programování. 1987. sv. 8, s. 231–274. (archivováno z originál dne 2007-04-27) (angl.)
- Shalyto A.A. Logické řízení a "reaktivní" systémy: algoritmizace a programování // Automatizace a dálkové ovládání. 2001. Vol.62. №1, s. 1-29. (engl) (rus)
- Shalyto A.A., Tukkel N.I. SWITCH-Technology: Automatizovaný přístup k vývoji softwaru pro reaktivní systémy // Programování a počítačový software. 2001. 27 (5). (engl) (rus)
- Tukkel N.I., Shalyto A.A. Státní programování // PC World. 2001. # 8, str. 116-121; # 9, str.132-138. (rus)
- Tukkel N.I., Shalyto A.A. Řídicí systém dieselového generátoru (fragment). Státní programování. Projektová dokumentace. 2002. (rus)
- Shalyto A.A. Nová iniciativa v programování. Nadace pro otevřenou projektovou dokumentaci // PC Week / RE. 2003. # 40, str. 38,39,42. (rus)
- Domovská stránka programování automatů. (rus ), (angl )
- Shalyto A.A., Naumov L.A. Metody objektově orientované implementace reaktivních látek na bázi konečných stavových strojů // Umělá inteligence. 2004. # 4. 756–762. (rus)
- Shalyto A.A., Naumov L.A., Korneev G.A. Metody implementace reaktivních agentů zaměřených na objekt na základě konečných automatů / 2005 Mezinárodní konference „Integrace znalostních multiagentních systémů. KIMAS ’05: Modeling, Exploration, and Engineering ”. USA, MA: IEEE, 2005, s. 460–465. (anglicky)
- Tukkel N.I., Shalyto A.A. Automaty a tanky // BYTE / Rusko. 2003. # 2. 69–73. (rus)
- Tukkel N.I., Shalyto A.A. Systém ovládání nádrže pro hru „Robocode“. Verze 1. Stavové objektově orientované programování. 2001. (rus)
- Kuznetsuv D.V., Shalyto A.A. Systém ovládání nádrže pro hru „Robocode“. Verze 2. Stavové objektové programování. 2003. (rus)
- Tukkel N.I., Shalyto A.A. Shalyto A.A., Tukkel N.I. Převádění iterativních algoritmů do automatizace // Programování a počítačový software. 2002. 28 (5). (rus)
- Korneev G.A., Shamgunov N.N., Shalyto A.A. Procházení stromů na základě automatů // Počítačové nástroje ve výuce. 2004. # 3, s. 32–37. (rus)
- Kazakov M.A., Shalyto A.A. Automatizovaný přístup k implementaci animace ve vizualizérech algoritmů // Počítačové nástroje ve výuce. 2005. # 3, str. 52–76. (rus)
- Korneev G.A., Shalyto A.A. Konstrukce vizualizérů algoritmů diskrétní matematiky // Vědecký a technický přehled SPbSU ITMO. Číslo 23. Vyspělé technologie v optických a informačních systémech. SPb .: SPbSU ITMO. 2005, s. 118–129. (rus)
- Gurov V.S., Mazine M.A., Narvsky A.S., Shalyto A.A. UML. Přepínací technologie. Zatmění. // Informační a kontrolní systémy. 2004. # 6, s. 12–17. (rus)
- Gurov V.S., Mazin M.A., Narvsky A.S., Shalyto A.A. UniMod: Metoda a nástroj pro vývoj reaktivních objektově orientovaných programů s Zdůraznění výslovných států Sborník kapitol IEEE z Petrohradu. Rok 2005. Mezinárodní konference „110. výročí rozhlasového vynálezu“. SPb ETU "LETI". 2005. V. 2, s. 106–110. (anglicky)
- UniMod. (anglicky)
- Příklady použití nástroje UniMod.] (rus ) (angl )
- Bulletin St Petersburg State University of Information Technologies, Mechanics and Optics. 2008. Svazek 53. Programování na základě automatů. (rus)
- Polikarpova N. I., Shalyto A. A. Programování na základě automatů SPb .: Piter. 2009 (rus)
- https://code.google.com/p/visio2python/