<
  • Главная
Статьи

Стаття: Програмування з явним виділенням станів

  1. висновок
  2. література

Розробка програми починається з того, що за словесним описом поведінки модуля складається перелік його вхідних і вихідних впливів, що відображаються на схемі зв'язків автомата. На схемі для кожного впливу вказується його джерело (приймач), повна назва (на мові розробника) і ідентифікатор у вигляді букви латинського алфавіту з номером. Для автомата ідентифікатор пропонується починати з букви 'A', для події - з 'e', ​​для вхідної змінної - з 'x', для змінної стану автомата - з 'y', а для вихідного впливу - з 'z'.

Наступним кроком побудуємо граф переходів. В першу чергу для нього необхідно визначити безліч станів, відповідних "природним" станів панелі. В даному випадку їх два: очікування (початковий стан) і переміщення.

В даному випадку їх два: очікування (початковий стан) і переміщення

Після цього визначаються послідовності подій, що викликають переходи між цими станами, і вводяться додаткові стану, "що розділяють" події в кожній з послідовностей. Додаткове стан, що виникає на шляху від стану "очікування" до стану "переміщення", назвемо "готовність". Потім стану в графі переходів нумеруються (починаючи з нуля) і визначаються інші переходи між станами, а також необхідні петлі. Hа останньому етапі в графі на основі схеми зв'язків автомата відображаються умови переходів і дії, що виконуються в вершинах, на дугах і на петлях. Побудований таким чином граф переходів змішаного автомата наведено на рис.

Як можна бачити, в графі переходів використовуються дуже короткі і дуже абстрактні позначення, але завдяки схемі зв'язків їх сенс зрозумілий. Спільний аналіз схеми зв'язків і графа переходів дозволяє навіть не брала участі в розробці фахівця зрозуміти поведінку створюваного програмного модуля.

Відзначимо, що при використанні SWITCH-технології замість терміна "логіка програми" (що передбачає роботу з прапорами) пропонується застосовувати термін "поведінка програми", що має на увазі роботу з станами.

Далі граф переходів формально і ізоморфно реалізується за шаблоном у вигляді функції, в даному випадку на мові Сі.

Застосовуваний шаблон дозволяє забезпечити зовнішню схожість тексту програмного модуля на граф переходів. Побудована функція не вимагає пояснень (коментарів) до своєї поведінки, так як при використанні SWITCH-технології текст програми не є основним (і тим більше єдиним) програмним документом, а поведінка однозначно і математично строго задається графом переходів. Ця функція не містить реалізації вхідних і вихідних впливів, а включає тільки їх виклики.

Отримана описаним шляхом частина програми є сістемонезавісімой. Коли вона завершена, можна перейти до побудови сістемозавісімой частини.

У програму вносяться обробники подій, кожен з яких також реалізований у вигляді функції і містить виклик побудованого автомата з передачею йому потрібного номера події.

Тепер додамо в вигляді "заглушок" функції вхідних (якщо вони є) і вихідних впливів (відповідно 'x' і 'z'), що містять тільки виклики функцій протоколювання, і вже на ранній стадії програмної реалізації ми отримаємо діючий макет розробляється модуля, що відповідає принципом покрокової низхідній розробки [2].

Програмна реалізація завершується розробкою наявних окремо функцій вхідних і вихідних впливів і використовуваних ними допоміжних модулів. Ці функції зазвичай можуть бути налагоджені незалежно.

Ці функції зазвичай можуть бути налагоджені незалежно

Структура отриманої програми відрізняється від традиційної, так як в її центрі знаходиться система взаємопов'язаних автоматів (в найпростішому випадку, як в нашому прикладі, - один автомат). Оскільки вона регулярна, стає можливим автоматичне отримання історії виконання програми в термінах автоматів в формі протоколу. Для цього достатньо ввести виклики функцій протоколювання в функції автоматів, а також вхідних і вихідних впливів.

висновок

Якщо раніше програмістами ставали переважно фахівці, які отримали інженерну або математичну освіту з відповідної усталеної культурою, то зараз вони виховуються інакше [9], і дисципліни програмування належну увагу не приділяється.

Пропонована в цій статті технологія є новою спробою введення такої дисципліни і заснована на апріорно завданні необхідних станів і їх візуалізації. Досвід її застосування цілком підтверджує висловлювання: "те, що не специфіковане формально, не може бути перевірено, а то, що не може бути перевірено, не може бути безпомилковим" [10]. Тому автори сподіваються (особливо з огляду на думку про роботу [5], висловлене в [11]), що їх підхід, принаймні для систем логічного управління і подієвих систем, в частині створення якісних програм є наближенням до того, що Ф.Брукс називає "срібною кулею" [2]. Зауважимо, що Брукс прихильно відгукується тільки про підхід Девіда Харела [8], також заснованому на застосуванні автоматів; гідності SWITCH-технології в порівнянні з підходом Харела показані в [7].

Автоматний підхід починає застосовуватися все ширше. Так, наприклад, творець операційної системи UNIX Кен Томпсон на питання про поточну роботу відповів: "Ми створили мову генерації машин з кінцевим числом станів, так як реальний селекторний телефонна розмова - це група взаємодіючих машин з кінцевим числом станів. Ця мова застосовується в Bell Labs за прямим призначенням - для створення зазначених машин, а до того ж з його допомогою стали розробляти драйвери "[12].

Пропонована парадигма програмування принципово відрізняється від інших тим, що поняття "автомат" є в ній центральним. Це відповідає місцю автомата в теорії управління. Крім того, відзначимо, що якщо в традиційному програмуванні присутня етап кодування, то тут додається етап, званий кодуванням станів.

На думку авторів, SWITCH-технологія дозволяє, відповідно до принципу Оккама, «не розмножувати сутності без необхідності" (як відбувається, наприклад, в UML) і володіє "мінімалізмом" [13], необхідним для забезпечення розуміння програм.

В даний час спостерігається зростання інтересу до парадигми автоматного програмування [14-15]. Для більшої її популяризації на сайті www.softcraft.ru створений розділ "Автоматні моделі".

література

1. Буч Г. Об'єктно-орієнтований аналіз та проектування з прикладами додатків на С ++. М .: Біном, СПб: Невський діалект, 1998. 560 с.
2. Брукс Ф. Міфічний людино-місяць, або Як створюються програмні системи. СПб .: Символ, 2000. 304 с.
3. Секрети програмування ігор / А. Ла Мот, Д. Раткліфф, М. Семінаторе і ін. СПб .: Питер, 1995. 278 с.
4. Дейкстра Е. Взаємодія послідовних процесів // Мови програмування. М .: Мир, 1972, с.9-86.
5. Шалит А.А. SWITCH-технологія. Алгоритмізація і програмування задач логічного управління. СПб .: Наука, 1998. 628 с.
6. Шалит А.А., Туккель Н.І. SWITCH-технологія - автоматний підхід до створення програмного забезпечення "реактивних" систем
// Промислові АСУ та контролери, 2000., №10, с.44-48.
7. Шалит А.А. Алгоритмізація і програмування для систем логічного управління і "реактивних" систем // Автоматика і телемеханіка,
2001, №1, c.3-39.
8. Буч Г., Рамбо Д., Джекобсон А. Мова UML. Інструкція користувача. М .: ДМК, 2000. 432 с.
9. Черняк Л. Створення програм як інженерна дисципліна // Computerworld Росія, 2000., №37, c.18-20.
10. Зайцев С.С. Опис і реалізація протоколів мереж ЕОМ. М.: Наука, 1989. 112 с.
11. Герр Р. Новий поворот // PC Magazine / Russian Edition, 1998, №10, с.88-90.
12. Кук Д., Урбан Д., Хамилтон С. Unix і не тільки: Інтерв'ю з Кеном Томпсоном // Відкриті системи, 1999, №4, с.35-47.
13. Герр Р. Налагодження людства // PC Magazine / Russian Edition, 2000., №5, с.90-91.
14. Любченко В.С. Ми вибираємо, нас вибирають ... (до проблеми вибору алгоритмічної моделі) // Світ ПК, 1999, №3.
15. Кузнєцов Б.П. Психологія автоматного програмування // BYTE / Росія, 2000., №11.



Назад в розділ



Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью