Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
модуль.docx
Скачиваний:
350
Добавлен:
05.03.2016
Размер:
2.15 Mб
Скачать

1.2.2. Програмування

Виникає питання, чому ж скінченна автоматна модель теорії автоматів особливо актуальна зараз, коли існує величезна кількість як мов програмування, так і середовищ для розроблення програмного забезпечення?

Мають місце дві проблеми:

  • непередбачувана поведінка коду програми, розробленої виключно засобами RAD (Rapid Application Development – засоби швидкого розроблення програмних засобів);

  • «згасання» «культури програмування».

Приклади RAD: Borland Delphi та C, що забезпечують прискорене розроблення програм за рахунок використання об’єктно-орієнтованого та візуального програмування. Вони дають змогу не лише програмувати у звичному сенсі слова, але й фактично малювати програми (як інтерфейс, так і реалізацію), використовуючи візуальні компоненти VCL.

Будь-який візуальний об’єкт VCL характеризується рядом властивостей, методів та подій. Здавалося б, простою маніпуляцією перерахованими атрибутами можливо примушувати програму, що розробляється, робити те, що вимагає від неї програміст-розробник. Але це далеко не так.

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

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

Керувати поведінкою коду дає можливість механізм теорії автоматів ще сорокарічної давності.

Стилі програмування розрізняються за базовими поняттями, використовуючи такі поняття, як "подія", "підпрограма", "функція", "клас" ("об’єкт") й т. д. Стиль програмування, заснований на явному виділенні станів та застосуванні автоматів для описування поведінки програм, носить назву "автоматне програмування", а відповідний стиль проектування програм – "автоматне проектування". Автоматне програмування можна розглядати не лише як самостійний стиль програмування, але й як доповнення до інших стилів, наприклад, до об’єктно-орієнтованого, оскільки йдеться не лише та не стільки про використання скінченних автоматів у програмуванні, скільки про метод створення програм у цілому, поведінка яких описується автоматами. Тобто як окремий компонент, так і програма в цілому може бути реалізована як автомат.

У автоматному програмуванні існує два напрями: Switch-технологія та скінченно-автоматна технологія. Switch-технологія – технологія розроблення систем логічного управління на базі скінченних автоматів, що охоплює процес проектування, реалізації, наладки, верифікації (перевірки), документування та супроводу.

Кодування/програмування автоматів у рамках скінченно-автоматної технології засноване на таких принципах:

  • введено поняття динамічного об’єкта, який може бути наділений алгоритмом поведінки в часі;

  • алгоритм поведінки об’єкта задається моделлю скінченного автомата; мова описування автомата заснована на базі табличної форми подання автоматів; логіка поведінки об’єкта (таблиця переходів автомата) відокремлена від методів автоматного об’єкта (предикатів та дій), що пов’язані з реалізацією його поведінки в часі;

  • будь-які динамічні об’єкти можуть проектуватися паралельно.

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

Графи в наочній для людини формі відображають переходи між станами, а також "прив’язку" вихідних дій та інших автоматів до станів та/або переходів. На основі Switch-технології вже розроблені програми для облаштування продажу газованої води, банкомату, світлофора, системи керування пасажирським ліфтом, система керування автомобільної сигналізації, автоматизованої системи оплати мобільного телефону, пристрої обміни валюти, пристрої для продажу проїзних квитків й т.д.

Скінченно-автоматна технологія дає змогу реалізувати ідею паралелізму. На відміну від неї технології розроблення програм «зверху вниз», «від низу до верху», структурний підхід таких можливостей або не мають, або вони обмежені. Навіть у технології об’єктно-орієнтованого програмування питання паралельної роботи об’єктів винесені за її рамки. Використання інших технологій, що базуються на відомих паралельних моделях, пов’язане з труднощами, пов’язаними якщо не з обмеженнями сфери їх застосування, то з проблемами подальшої реалізації на програмному і/або апаратному рівнях.

Паралельні моделі – один із основних та перспективних напрямів в області розвитку програмування та апаратних засобів. Ідея паралелізму дуже приваблива. Але для її використання необхідно, по-перше, розв’язати проблему опису, тобто вибору формальної паралельної моделі, та, по-друге, проблему реалізації моделі. Скінченно-автоматна технологія використовує модель із засобами представлення та описування паралелізму, які за своїми можливостями не поступаються іншим паралельним моделям, а її реалізація багато в чому простіша. Крім того, застосовуючи стандартні прийоми, нескладно перейти від паралельного звичайного автоматного представлення до послідовного описування.

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

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