Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Шекті күй жүйелерінің мінез-құлқының диаграммасы
Diagram of behavior of finite state systems
Күй диаграммалары компьютерлік ғылым және оған қатысты салаларда жүйелердің мінез-құлқын сипаттау үшін қолданылады. Күй диаграммалары жүйенің шекті сандағы күйлерден тұратынын талап етеді. Кейде бұл шынымен де солай, ал кейде бұл орынды абстракция болып табылады. Күй диаграммаларының көптеген түрлері бар, олар біраз өзгешеліктерге ие және әртүрлі семантикалық мағыналарын білдіреді.
A state diagram is used in computer science and related fields to describe the behavior of systems. State diagrams require that the system is composed of a finite number of states. Sometimes, this is indeed the case, while at other times this is a reasonable abstraction. Many forms of state diagrams exist, which differ slightly and have different semantics.
Шолу
Мемлекеттік диаграммалар жүйенің мінез-құлқының абстрактілі сипаттамасын ұсынады. Бұл мінез-құлық бір немесе бірнеше мүмкін күйде болатын оқиғалар тізбегі арқылы талданады және көрсетіледі. Мұнда "әр диаграмма әдетте бір сыныптың объектілерін бейнелейді және жүйеде олардың күйлерінің өзгеруін қадағалайды". Мемлекеттік диаграммалар шекті күйлі автоматтары (немесе шекті автоматтар деп те аталады) графиктік түрде көрсету үшін қолданылуы мүмкін. Бұл теорияны Клод Шеннон мен Уоррен Уивер 1949 жылы жарық көрген "Математикалық коммуникация теориясы" кітабында ұсынды. Тағы бір дереккөз – Тейлор Буттың 1967 жылы шыққан "Sequential Machines and Automata Theory" кітабы. Күйлердің өту кестесі – тағы бір мүмкін бейнелеу тәсілі.
State diagrams provide an abstract description of a system's behavior. This behavior is analyzed and represented by a series of events that can occur in one or more possible states. Hereby "each diagram usually represents objects of a single class and track the different states of its objects through the system". State diagrams can be used to graphically represent finite state machines (also called finite automata). This was introduced by Claude Shannon and Warren Weaver in their 1949 book The Mathematical Theory of Communication. Another source is Taylor Booth in his 1967 book Sequential Machines and Automata Theory. Another possible representation is the state transition table.
Альтернативті семантика
Мемлекеттік диаграммаларды көрсету үшін басқа да семантика жиынтықтары қол жетімді. Мысалы, кіріктірілген басқарушылар үшін логиканы модельдеу және жобалауға арналған құралдар бар. Бұл диаграммалар, Харелдің бастапқы күй машиналарын сияқты, иерархиялық түрде ұялатылған күйлерді, ортогоналды аймақтарды, күйлердегі әрекеттерді және көшу әрекеттерін қолдайды.
There are other sets of semantics available to represent state diagrams. For example, there are tools for modeling and designing logic for embedded controllers. These diagrams, like Harel's original state machines, support hierarchically nested states, orthogonal regions, state actions, and transition actions.
Мемлекеттік диаграммалар мен блок-схемалар
Мемлекеттік машина формализміне жаңадан келгендер жиі мемлекеттік диаграммаларды ағымдық схемалармен шатастырады. Төмендегі сурет мемлекеттік диаграмманы ағымдық схемамен салыстырып көрсетеді. Мемлекеттік машина (а) панелі нақты оқиғаларға жауап ретінде әрекеттерді орындайды. Ал ағымдық схема (b) панелі іс-әрекеттер аяқталғаннан кейін түйіндер арасында автоматты түрде өтеді. Ағымдық схеманың түйіндері – күйлер графигінің индукцияланған жиектері. Себебі ағымдық схемадағы әрбір түйін бағдарламалық команданы білдіреді. Бағдарламалық команда – орындалуға тиіс әрекет. Команда – күй емес, бірақ бағдарламаның күйіне қолданылғанда, басқа күйге өтуге себеп болады. Егжей-тегжейлі айтқанда, бастапқы код тізімі бағдарламалық графикті көрсетеді. Бағдарламалық графикті орындау (талдау және түсіндіру) күй графигін құрайды. Әрбір бағдарламалық график күй графигін тудырады. Бағдарламалық графикті оның сәйкес күй графигіне түрлендіруді бағдарламалық графиктің "ашылуы" деп атайды. Бағдарламалық график – командалар тізбегі. Егер айнымалылар болмаса, күй тек бағдарламалық санауыштан тұрады, ол орындалу барысында бағдарламаның орнын қадағалайды (келесі орындалатын команда қандай). Команданы орындау алдында бағдарламалық санауыш белгілі бір позицияда болады (команда орындалғанға дейінгі күй). Команданы орындау бағдарламалық санауышты келесі командаға жылжытады. Бағдарламалық санауыш – күйдің толық бөлігі болғандықтан, команданы орындау күйді өзгертті. Осылайша, команданың өзі екі күй арасындағы өтуге сәйкес келеді. Енді толық жағдайды қарастырайық, онда айнымалылар бар және орындалатын бағдарламалық командаларға әсер етеді. Бағдарламалық санауыш әртүрлі бағдарламалық санауыш орындары арасында ғана емес, сонымен қатар орындалған командаларға байланысты айнымалылардың мәні де өзгеруі мүмкін. Сондықтан, егер біз кейбір бағдарламалық команданы қайта қарасақ (мысалы, циклде), бұл бағдарламаның бірдей күйде екенін білдірмейді. Бұрынғы жағдайда бағдарлама сол күйде болар еді, өйткені күйдің толық бөлігі – бағдарламалық санауыш. Осылайша, егер бағдарламалық санауыш сол позицияны (келесі команданы) көрсетсе, біз сол күйде екенімізді көрсету жеткілікті. Алайда, егер күйде мәнін өзгертетін айнымалылар болса, біз әртүрлі айнымалы мәндері бар бір бағдарлама орнында болуымыз мүмкін, яғни бағдарламаның күй кеңістігінде басқа күйде. "Ашылу" термині осы орындардың көбеюінен туындайды, бағдарламалық графиктен күй графигін құру кезінде. Өзіне-өзі өту – бастапқы және соңғы күйі бірдей болатын өту. Мысалы, санаушы толып кетіп, қайта 0-ге дейін жеткенше, кейбір санаушыны арттыратын do циклін қарастырайық. Do циклы бірдей арттыру командасын қайта-қайта орындаса да, оның күй кеңістігі цикл емес, түзу сызық. Бұл күйдің бағдарлама орнынан (мұнда циклдану) және қатаң түрде өсетін санауыш мәнінен (толып кетуге дейін) тұруына байланысты. Осылайша, толып кетуге дейін әртүрлі күйлер тізбекпен өтіледі. Толып кетуден кейін санауыш қайта 0-ге оралады, сондықтан бастапқы күй күй кеңістігінде қайтадан көрінеді, күй кеңістігінде циклді жабады (санауыш 0-ге тең деп есептесек). Жоғарыдағы сурет мемлекеттік диаграммалардың доғаларын ағымдық схеманың өңдеу кезеңдерімен сәйкестендіру арқылы рөлдердің ауысуын көрсетуге тырысады. Ағымдық схеманы өндірістегі конвейермен салыстыруға болады, өйткені ағымдық схема кейбір тапсырманың басынан соңына дейінгі дамуын сипаттайды (мысалы, компилятордың бастапқы кодты объектілік кодқа айналдыруы). Мемлекеттік машина мұндай даму туралы түсінікке ие емес. Жоғарыда көрсетілген есік мемлекеттік машинасының "жабық" күйі "ашық" күйінен гөрі жоғарырақ сатыда емес. Керісінше, ол ашылу/жабылу оқиғаларына әртүрлі жауап береді. Мемлекеттік машинадағы күй – өңдеу кезеңі емес, мінез-құлықты анықтаудың тиімді тәсілі.
Newcomers to the state machine formalism often confuse state diagrams with flowcharts. The figure below shows a comparison of a state diagram with a flowchart. A state machine (panel (a)) performs actions in response to explicit events. In contrast, the flowchart (panel (b)) automatically transitions from node to node upon completion of activities. Nodes of flowcharts are edges in the induced graph of states. The reason is that each node in a flowchart represents a program command. A program command is an action to be executed. A command is not a state, but when applied to the program's state, causes a transition to another state. In more detail, the source code listing represents a program graph. Executing the program graph (parsing and interpreting) results in a state graph. So each program graph induces a state graph. Conversion of the program graph to its associated state graph is called "unfolding" of the program graph. The program graph is a sequence of commands. If no variables exist, then the state consists only of the program counter, which keeps track of program location during execution (what is the next command to be applied). Before executing a command, the program counter is at some position (state before the command is executed). Executing the command moves the program counter to the next command. Since the program counter is the whole state, executing the command changed the state. Thus, the command itself corresponds to a transition between the two states. Now consider the full case, when variables exist and are affected by the program commands being executed. Not only does the program counter change between different program counter locations, but variables might also change values due to the commands executed. Consequently, even if we revisit some program command (e. g. in a loop), this does not imply the program is in the same state. In the previous case, the program would be in the same state because the whole state is just the program counter. Thus, if the program counterpoints to the same position (next command) it suffices to specify that we are in the same state. However, if the state includes variables that change value, we can be at the same program location with different variable values, meaning in a different state in the program's state space. The term "unfolding" originates from this multiplication of locations when producing the state graph from the program graph. A self transition is a transition where the initial and the final state are the same. A representative example is a do loop incrementing some counter until it overflows and becomes 0 again. Although the do loop executes the same increment command iteratively, its state space is not a cycle but a line. This results from the state being the program location (here cycling) combined with the counter value, which is strictly increasing (until the overflow). Thus, different states are visited in sequence until the overflow occurs. After the overflow the counter becomes 0 again, so the initial state is revisited in the state space, closing a cycle in the state space (assuming the counter was initialized to 0). The figure above attempts to show that reversal of roles by aligning the arcs of the state diagrams with the processing stages of the flowchart. One can compare a flowchart to an assembly line in manufacturing because the flowchart describes the progression of some task from beginning to end (e. g., transforming source code input into object code output by a compiler). A state machine generally has no notion of such a progression. The door state machine example shown above is not in a more advanced stage in the "closed" state than in the "opened" state. Rather, it simply reacts differently to the open/close events. A state in a state machine is an efficient way of specifying a behavior, rather than a stage of processing.
Басқа кеңейтулер
Қызықты кеңейтім – доғалардың кез келген сандағы күйден кез келген сандағы күйге өтуіне мүмкіндік беру. Бұл жүйеге бір уақытта бірнеше күйде болуға рұқсат болған жағдайда ғана мағыналы, яғни жеке күй жалпы, глобалдық күйдің шарты немесе басқа да ішінара аспектісін ғана көрсетеді. Осының нәтижесінде пайда болған формализм Петри желісі деп аталады. Тағы бір кеңейтім – ағымдық схемаларды Harel күй диаграммаларына (statecharts) енгізуге мүмкіндік береді. Бұл кеңейтім оқиғалармен және жұмыс процесімен басқарылатын бағдарламалық құралдарды жасауға көмектеседі.
An interesting extension is to allow arcs to flow from any number of states to any number of states. This only makes sense if the system is allowed to be in multiple states at once, which implies that an individual state only describes a condition or other partial aspect of the overall, global state. The resulting formalism is known as a Petri net. Another extension allows the integration of flowcharts within Harel statecharts. This extension supports the development of software that is both event driven and workflow driven.