Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Preface

Boost , Meta State Machine (MSM) , Meta State Machine (MSM)

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Preface

MSM - это библиотека, позволяющая легко и быстро определять состояние машин с очень высокой производительностью. С этого момента обычно быстро возникают два основных вопроса, поэтому, пожалуйста, позвольте мне попытаться ответить на них заранее.

  • Когда нужна государственная машина?

    Чаще, чем вы думаете. Очень часто государственную машину определяют неформально, даже не замечая этого. Например, внутри класса объявляется некий булев атрибут, скажем, помнить, что задача выполнена. Позже булевой фактически нуждается в третьем значении, поэтому он становится интом. Через несколько недель нужен второй атрибут. Потом треть. Вскоре вы обнаруживаете, что пишете:

    <void incoming_data(data)>

    <{>

    <if (data == packet_3 && flag1 == work_done && flag2 > step3)...>

    <}>

    Это начинает выглядеть как обработка событий (содержащаяся внутри данных), если какая-то стадия жизни объекта достигнута (но безобразна).

    Это может быть определение протокола, и это общий случай использования для государственных машин. Еще одним распространенным является пользовательский интерфейс. Этап взаимодействия пользователя определяет, активна ли кнопка, доступна ли функциональность и т.д.

    Но есть много других вариантов использования, если вы начинаете искать. Фактически, весь метод разработки, основанный на модели, Executable UML (http://en.wikipedia.org/wiki/Executable_UML) определяет его полное динамическое поведение с использованием государственных машин. Диаграмма класса, диаграммы состояния машины и язык действия - все, что вам абсолютно нужно в исполняемом мире UML.

  • Еще одна государственная машинная библиотека? Зачем?

    Правда, существует множество государственных машинных библиотек. Это должно быть признаком того, что если вы не используете ни один из них, вы можете что-то упустить. Почему вы должны использовать этот? К сожалению, при поиске хорошей библиотеки государственных машин вы обычно довольно быстро попадаете в одну или несколько из следующих проблем:

    • скорость: «государственные машины медленные» обычно является первой критикой, которую вы можете услышать. Хотя это часто является оправданием не использовать какие-либо и вместо этого прибегать к грязным, рукописным реализациям (я имею в виду, нет, ваши не грязные, конечно, я говорю о других разработчиках). МСМ устраняет это часто слабое оправдание, потому что оно невероятно быстрое. Большинство рукописных реализаций будут побиты МСМ.

    • Легкость использования: хороший аргумент. Если вы пользуетесь другой библиотекой, то вы правы. Многие определения государственных машин будут похожи на:

      <state s1 = new State; // a state>

      <state s2 = new State; // another state>

      <event e = new Event; // event>

      <s1->addTransition(e,s2); // transition s1 -> s2>

      Чем больше переходов у вас есть, тем менее читаемым он является. Давным-давно Java еще не было так много, и многие электронные системы были построены с помощью машины состояний, определяемой простой таблицей переходов. Вы можете легко увидеть всю структуру и сразу увидеть, если вы забыли некоторые переходы. Благодаря нашим новым технологиям, эта простота использования исчезла. MSM возвращает вам таблицу перехода и снижает уровень шума до минимума.

    • Выразительность: MSM предлагает несколько интерфейсов и постоянно пытается улучшить методы определения состояния машины. Например, вы можете определить переход с eUML (одним из интерфейсов MSM) как:

      <state1 == state2 + event [condition] / action>

      Это не просто синтаксический сахар. Такая формализованная, читаемая структура позволяет легко общаться с экспертами в области программного обеспечения. Понимание экспертами домена вашего кода значительно сократит количество ошибок.

    • разработка, управляемая моделью: общая трудность разработки, управляемой моделью, — это сложность создания круговой поездки (генерирования кода из модели, а затем модели из кода). Это связано с тем, что если структура машины состояния вам трудно читать, скорее всего, вашему инструменту анализа также будет трудно. Надеемся, что синтаксис MSM поможет разработчикам инструментов.

    • особенности: большинство разработчиков используют только 20% богато определенного стандарта UML. К сожалению, это никогда не одинаковые 20% для всех. И поэтому, скорее всего, потребуется что-то из стандарта, который не реализован. MSM предлагает очень большую часть стандарта, с большим количеством на пути.

    Давайте не будем больше ждать, я надеюсь, что вы будете наслаждаться МСМ и веселиться с ним!

Статья Preface раздела Meta State Machine (MSM) Meta State Machine (MSM) может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Meta State Machine (MSM) ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 22:50:48/0.0071310997009277/0