Помощь в написании студенческих работ
Антистрессовый сервис

Разработка методов проектирования и реализации поведения программных систем на основе автоматного подхода

ДиссертацияПомощь в написанииУзнать стоимостьмоей работы

Практическое значение работы состоит в том, что все полученные результаты могут быть использованы, а некоторые уже используются на практике. Предложенные методы позволяют повысить наглядность программ, упростить их визуализацию, а также упростить внесение изменений в них. При этом за счет преобразования условной логики в автоматную упрощается структура программ. Предложенный паттерн обеспечивает… Читать ещё >

Разработка методов проектирования и реализации поведения программных систем на основе автоматного подхода (реферат, курсовая, диплом, контрольная)

Содержание

  • ГЛАВА 1. ОБЗОР МЕТОДОВ, ПАТТЕРНОВ И ЯЗЫКОВ, ПРИМЕНЯЮЩИХСЯ ДЛЯ ОПИСАНИЯ ПОВЕДЕНИЯ ПРОГРАММ В ТЕЛЕКОММУНИКАЦИОННЫХ СИСТЕМАХ
    • 1. 1. Методы преобразования процедурных программ в автоматны
    • 1. 2. Паттерны проектирования. Паттерн State
    • 1. 3. Графический язык описаний и спецификаций SDL
    • 1. 4. Унифицированный язык моделировання^С/ML.12'
    • 1. 5. Язык ASML
    • 1. 6. SJVITCH-технология
  • Выводы
  • ГЛАВА 2. ПРИМЕНЕНИЕ КОНЕЧНЫХ АВТОМАТОВ ДЛЯ
  • РЕАЛИЗАЦИИ ВЫЧИСЛИТЕЛЬНЫХ АЛГОРИТМОВ
    • 2. 1. Задача о Ханойских башнях
      • 2. 1. 1. Классическое рекурсивное решение задачи
      • 2. 1. 2. Обход дерева действий
      • 2. 1. 3. Непосредственное перекладывание дисков
    • 2. 21. Задача о ходе коня
      • 2. 2. 1. Методы оптимизации
      • 2. 2. 2. Определение клеток, обход из которых невозможен
      • 2. 2. 3. Выявление заблокированных клеток
      • 2. 2. 4. Применение правила Варнсдорфа
      • 2. 2. 5. Использование различных массивов ходов коня
      • 2. 2. 6. Итеративная программа
      • 2. 2. 7. Рекурсивная программа
      • 2. 2. 8. Автоматная программа
    • 213. Обход деревьев
      • 2. 3. 1. Постановка задачи обхода двоичного дерева
      • 2. 3. 2. Описание структур данных для представления двоичных деревьев
      • 2. 3. 3. Ввод деревьев
      • 2. 3. 4. Обход двоичного дерева без использования стека
      • 2. 3. 5. Обход двоичного дерева с использованием стека
      • 2. 3. 6. Обход Личного дерева без использования стека
      • 2. 4. Реализация рекурсивных алгоритмов на основе автоматного подхода
      • 2. 4. 1. Введение
      • 2. 4. 2. Изложение метода
      • 2. 4. 3. Факториал
      • 2. 4. 4. Числа Фибоначчи
      • 2. 4. 5. Задача о ханойских башнях
      • 2. 4. 6. Задача о ранце
  • Выводы
    • ГЛАВА 3. ПАТТЕРН ПРОЕКТИРОВАНИЯ STATE MACHINE
  • 3. 1. Описание паттерна
    • 3. 1. 1. Назначение
    • 3. 1. 2. Мотивация
    • 3. 1. 3. Применимость
    • 3. 1. 4. Структура
    • 3. 1. 5. Участники
    • 3. 1. 6. Отношения
    • 3. 1. 7. Результаты
    • 3. 1. 8. Реализация
    • 3. 1. 9. Пример кода
  • 3. 2. Повторное использование классов состояний
    • 3. 2. 1. Расширение интерфейса автомата
    • 3. 2. 2. Расширение логики введением новых состояний
  • Выводы
  • ГЛАВА 4. ЯЗЫК ПРОГРАММИРОВАНИЯ STATE MACHINE
    • 4. 1. Особенности языка State Machine
    • 4. 2. Пример использования языка State Machine
      • 4. 2. 1. Описание примера
      • 4. 2. 2. Описание состояний
      • 4. 2. 3. Описание автомата
      • 4. 2. 4. Компиляция примера
    • 4. 3. Грамматика описания автоматов и состояний
      • 4. 3. 1. Грамматика описания состояния
      • 4. 3. 2. Грамматика описания автомата
    • 4. 4. Повторное использование
      • 4. 4. 1. Допустимые способы повторного использования
      • 4. 4. 2. Описание примеров
      • 4. 4. 3. Наследование состояний. fy 4.4.4. Использование одного состояния в различных автоматах
    • 4. 5. Реализация препроцессора
      • 4. 5. 1. Генерация Java-классов по описанию состояний
      • 4. 5. 2. Генерация /аш-классов по описанию автоматов
  • Выводы
  • ГЛАВА 5. ВНЕДРЕНИЕ РЕЗУЛЬТАТОВ РАБОТЫ
    • 5. 1. Область внедрения
      • 5. 1. 1. Система Navi Harbour
      • 5. 1. 2. База данных СУДС
    • 5. 2. Постановка задачи
    • 5. 3. Применение паттерна State Machine для проектирования класса ThreadFactory
      • 5. 3. 1. Формализация постановки задачи
      • 5. 3. 2. Проектирование автомата ThreadFactory
      • 5. 3. 3. Диаграмма классов реализации автомата ThreadFactory
      • 5. 3. 4. Реализация контекста автомата ThreadFactory
      • 5. 3. 5. Пример реализации класса состояния автомата ThreadFactory
  • Актуальность проблемы. При разработке телекоммуникационных систем и компьютерных сетей весьма актуальной является задача формализации описаний их поведения. При этом наиболее известным является графический< язык описаний и спецификаций SDL [1] (Specification and Description Language), разработанный Международным союзом электросвязи (ITU-T). Этот язык входит в Рекомендации ITU-T серии Z.100.

    Диаграммы, являющиеся основой этого языка, в отличие от схем алгоритмов, содержат состояния в явном виде. Поэтому язык SDL является автоматным. Однако SDL-диаграммы обладают рядом недостатков, к которым можно отнести, например, громоздкость. С другой стороны, при разработке систем рассматриваемого класса все шире используется объектно-ориентированное программы, для проектирования которых применяется' унифицированный язык моделирования [2] (UML —Unified Modeling Language). В этом языке для описания поведения также используется автоматная модель — диаграммы состояний Statecharts [3], предложенные Д. Харелом. Эти диаграммы из-за использования словесных обозначений также являются весьма громоздкими.

    Поэтому в последние годы были выполнены исследования, направленные на объединение языков SDL и UML (Рекомендации Z.109 ITU-Т, 2000). Однако из изложенного выше следует, что применительно к описанию поведения, даже совместное применение указанных выше языков не делает диаграммы менее громоздкими.

    Для устранения этого недостатка с 1991 года в России разрабатывается б’Ж/ГСЯ-технология [4], предназначенная для алгоритмизации и программирования систем со сложным поведением. Эта технология была названа также автоматным программированием. Графы переходов, используемые для описания поведения в рамках предлагаемого подхода, достаточно компактны, так как они применяются совместно со схемами связей, подробно описывающими интерфейс автоматов.

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

    Не менее актуальной является также решение задачи о формальном переходе от спецификации задачи к ее реализации.

    Целью диссертационной работы является разработка методов проектирования и реализации поведения программных систем на основе автоматного подхода.

    В работе рассматриваются два типа задач: классические вычислительные алгоритмы (в основном рекурсивные) и задачи управления. В первом случае реализация осуществляется на основе процедурного подхода, а во втором — на основе объектно-ориентированного.

    Основные задачи исследования состоят в следующем.

    1. Разработка метода преобразования классических вычислительных алгоритмов с явной рекурсией в автоматные, что, в частности, позволяет формализовать процесс их визуализации.

    2. Разработка образца проектирования (паттерна) объектов, с изменяющимся в зависимости от состояния поведением, в котором устранены недостатки известного паттерна State [5].

    3. Разработка языка автоматного программирования, основанного на непосредственной поддержке предложенного паттерна.

    Методы исследования. В работе использованы методы дискретной математики, построения и анализа алгоритмов, теории автоматов, построения компиляторов, паттерны проектирования объектно-ориентированных программ.

    Научная новизна. В работе получены следующие научные результаты, которые выносятся на защиту.

    1. Для ряда вычислительных алгоритмов (например, обход деревьев) предложена их автоматная реализация, которая более наглядна по сравнению с классическими решениями.

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

    3. Для реализации объектов, поведение которых варьируется от состояния, разработан паттерн проектирования State Machine, обеспечивающий по сравнению с применяемым для этой цели паттерном State, возможность повторного использования классов состояний, централизацию логики переходов и независимость классов состояний друг от друга.

    4. На базе предложенного паттерна, за счет введения дополнительных синтаксических конструкций в язык Java [6], разработан автоматный язык State Machine, позволяющий писать программы непосредственно в терминах автоматного программирования.

    Результаты диссертации были получены в ходе выполнения научно-исследовательских работ «Разработка технологии программного обеспечения систем управления на основе автоматного подхода», выполненной по заказу Министерства образования РФ в 2001 — 2004 гг., и «Разработка технологии автоматного программирования», выполненной по гранту Российского фонда фундаментальных исследований по проекту № 02−07−90 114 в 2002 — 2003 гг. (http://is.ifmo.ru, раздел «Наука»).

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

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

    Реализация результатов работы. Результаты, полученные в диссертации, используются на практике.

    1. В компании eVelopers [7] (Санкт-Петербург) при создании системы автозавершения ввода в пакете автоматно-ориентированного программирования Unimod [8].

    2. В компании Транзас [9] (Санкт-Петербург) при создании телекоммуникационной системы управления движением судов Navi Harbour.

    3. В учебном процессе на кафедре «Компьютерные технологии» СПбГУ ИТМО при чтении лекций по курсам «Теория автоматов в программировании» и «Программирование на языке Java».

    Апробация диссертации. Основные положения диссертационной работы докладывались на XXXIII конференции профессорско-преподавательского состава СПбГУ ИТМО (Санкт-Петербург, 2004), научно-методических конференциях «Телематика-2002», «Телематика-2004» (Санкт-Петербург) и на конференции Microsoft Research Academic Days 2004 (Санкт-Петербург).

    Публикации. По теме диссертации опубликовано 9 печатных работ, в том числе в журналах «Информационно-управляющие системы», «Программист», «Компьютерные инструменты в образовании», «Телекоммуникации и информатизация образования» и «Мир ПК».

    Структура диссертации. Диссертация изложена на 193 страницах и состоит из введения, пяти глав и заключения.

    Список литературы

    содержит.

    Все основные результаты, полученные в диссертации, опубликованы. Кроме работ автора, на которые даны ссылки в тексте диссертации, им опубликованы также и работы [69−74]. Приведем информацию о личном вкладе автора.

    В работах [69, 70] автором предложена идея метода преобразования рекурсивных программ в автоматные. Выполнена реализация ряда примеров на основе этого метода.

    В работе [71] автор предложил один из методов оптимизации алгоритмов обхода доски. Он также выполнил ряд реализаций этого алгоритма.

    В работах [52, 72] автором предложен язык автоматного программирования и его реализация.

    В работах [73, 74] автором предложен обход двоичных деревьев на основе автоматного подхода. Окончательная версия этого обхода и обобщение на случай обхода Личных деревьев была произведена в соавторстве.

    В работе [48] при разработке паттерна State Machine автором был предложен ряд реализаций, устраняющих недостатки паттерна State. Автором продемонстрирована эффективность этого паттерна по сравнению другими объектно-ориентированными реализациями.

    Заключение

    .

    В диссертации получены следующие научные результаты.

    1. Обоснована целесообразность разделения множества состояний на два класса: управляющие и вычислительные на примерах таких классических алгоритмов как, например, «Ханойские башни», «Обход шахматной доски ходом коня», «Обход деревьев». Показано, что, как и в машине Тьюринга, небольшое число состояний первого типа может управлять огромных числом состояний второго типа.

    2. Предложен формальный метод построения автоматных программ на основе традиционных процедурных программ с явной рекурсией.

    3. Разработан паттерн проектирования State Machine, устраняющий такие недостатки известного паттерна State как сложность повторного использования классов состояний, децентрализованная логика переходов и сильная связность классов состояний друг от друга.

    4. Для непосредственной поддержки паттерна State Machine предложен одноименный язык программирования. Этот язык является расширением языка Java за счет введения в него синтаксических конструкций automaton, state, events. Реализован препроцессор, преобразующий код, написанный на этом языке, в код на языке Java.

    Показать весь текст

    Список литературы

    1. . С. Сигнализация в сетях связи. Том 1. М.: Радио и связь, 2001. —439 с.
    2. UML™ Resource Page, http://www.uml.org/
    3. Harel D. Statecharts: A visual formalism for complex systems //Sci. Comput. Program. 1987. Vol.8. — P. 231−274
    4. Шалыто A. A. SWITCH-технология. Алгоритмизация и программирование задач логического управления. СПб.: Наука, 1998. — 628 с.
    5. Gamma Е., Helm R., Johnson R., Vlissides J. Design Patterns. MA: Addison-Wesley Professional. 2001. — 395 (Гамма Э., Хелм P., Джонсон P., Влассидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. СПб.: Питер, 2001. — 368с).
    6. Java technology, http://iava.com/en/index.jsp7. eVelopers Corporation, http://www.evelopers.com/about.html
    7. UniMod. Eclipse plugin. http://unimod.sourceforge.net/.
    8. Transas — a world-leading developer and supplier of a wide range of software and integrated solutions for the transportation industry (http://www.transas.com).
    9. А. А. Туккель Н.И. Реализация вычислительных алгоритмов на основе автоматного подхода //Телекоммуникации и информатизация образования. 2001. № 6. http://is.ifmo.ru. раздел «Статьи».
    10. Abstract State Machine Language, http://research.microsoft.com/fse/asml/
    11. Кафедра «Технологии программирования», http://is.ifmo.ru.
    12. Eclipse, http://www.eclipse.org/.
    13. P. Фундаментальные алгоритмы на С++. Киев: ДиаСофт, 2001.
    14. А.А., Туккель Н. И. От тьюрингова программирования к автоматному //Мир ПК, 2002. № 2. http://is.ifmo.ru. раздел «Статьи».
    15. Стивене P. Delphi. Готовые алгоритмы. М.: ДМК, 2001.
    16. Ахо А., Хопкрофт Д., Ульман Д. Структуры данных и алгоритмы. М.: Вильяме, 2000.
    17. И. Алгоритмы: «возврат назад» и «разделяй и властвуй» //Программист. 2002. № 3.
    18. Р., Кнут Д., Поташник О. Конкретная математика. М.: Мир, 1998.
    19. А.В. Информатика. Творчество. Рекурсия. Киев: Наукова думка, 1988.
    20. В.Д. Ханойские башни. http://alglib.chat.ru/paper/hanoy.html
    21. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на С++. М.: Бином, СПб.: Невский диалект, 1998.
    22. И. Алгоритмы: «возврат назад» и «разделяй и властвуй» //Программист. 2002. № 3.
    23. М. Математические новеллы, М.: Мир, 1974.
    24. И. Алгоритмы: AI-поиск //Программист. 2002. № 7.
    25. Гик Е. Шахматы и математика. М.: Наука, 1983.
    26. Н. Алгоритмы + структуры данных = программы. М.: Мир: Мир, 1985.
    27. Н. И., Шамгунов Н. Н., Шалыто А. А. Ханойские башни и автоматы //Программист. 2002 № 8. http://is.ifmo.ru. раздел «Статьи».
    28. Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. М.: Центр непрер.матем. образования, 2000.
    29. . А. Программирование. Теоремы и задачи. М.: Центр непрер.матем. образования, 2004.
    30. Д. Искусство программирования. Т. 1. Основные алгоритмы. М:.: Вильяме, 2003.
    31. В. Н., Евстигнеев В. А. Графы в программировании: обработка, визуализация и применение. СПб.: БХВ-Петербург, 2003.
    32. А.А., Туккель Н. И. Преобразование итеративных алгоритмов в автоматные // Программирование. 2002. № 5. с. 12−26. http://is.ifmo.ru, раздел «Статьи»
    33. Дж. Введение в компьютерные науки. М.: Вильяме, 2001.
    34. Java Data Objects (JDO). http://iava.suR.com/products/ido/index.isp.
    35. Eliens A. Principles of Object-Oriented Software Development. MA.: Addison-Wesley, 2000. — 502 p. (Элиенс А. Принципы объектно-ориентированной разработки программ. М.: Вильяме, 2002. — 496 с).
    36. Sanden В. The state-machine pattern // Proceedings of the conference on TRI-Ada '96 http://iava.sun.com/products/ido/index.isp.
    37. Adamczyk P. The Anthology of the Finite State Machine Design Patterns. http.7/jerrv.cs.uiuc.edu/'-plop/plop2003/Papers/Adamczvk-State-Machine.pdf
    38. Odrowski J., Sogaard P. Pattern Integration — Variations of State // Proceedings of PLoP96. http ://vvww. cs. wustl. edu/~schmi dt/PLoP-96/odrowski.ps.gz.
    39. Sane A., Campbell R. Object-Oriented State Machines: Subclassing, Composition, Delegation, and Genericity // OOPSLA '95. http://choices.cs.uiuc.edu/sane/home.html.
    40. Aho A., Sethi R., Ullman J. Compilers: Principles, Techniques and Tools. MA: Addison-Wesley, 1985, 500 p. (Ахо А., Сети P., Ульман Дж.
    41. Компиляторы: принципы, технологии и инструменты. М.: Вильяме, 2001.—768 с).
    42. Fawler М. Refactoring. Improving the Design of Existing Code. MA: Addison-Wesley. — 1999. — 431 p. (Фаулер M. Рефакторинг. Улучшение существующего кода. — М.: Символ-плюс, 2003. — 432 с).
    43. Martin R. Three Level FSM // PLoPD, 1995. http://cpptips.hyperformix.com/cpptips/fsm5.
    44. Раздел «Статьи» сайта кафедры «Технологии программирования» Санкт-Петербургского государственного университета информационных технологий, механики и оптики (http://is.ifmo.ru/articles").
    45. The Self Language, (http://research.sun.com/self/language.htmn.
    46. Н. Н., Корнеев Г А. Шалыто А. А. Паттерн State Machine для объектно-ориентированного проектирования автоматов // Информационно-управляющие системы. 2004. № 5, с. 13 — 25
    47. X., Дэвид Т. Программист-прагматик. М.: Лори, 2004. — 288 с.
    48. Язык прикладного программирования STL 1.0. Руководство пользователя (v 1.0.13 b). http://lmt-automation.ifmo.ru/pdfs/stlguide 1 0 13b. pdf
    49. Ваганов С. A. Flora Ware — ускорить разработку приложений. http://www.softcraft.ru/paradigm/oop/flora/index.shtml
    50. Green A. Trail: The Reflection API. http://java.sun.eom/d 1 ocs/books/tutorial/reflect/
    51. Generics, http://iava.sun.eom/i2se/l.5.0/docs/guide/language/generics.html
    52. Naur P. et al. Revised Report on the Algorithmic Language ALGOL 60
    53. Communications of the ACM. 1960. Vol. 3. No.5, pp. 299−314. к
    54. Object-Oriented Programming Concepts http://. ava.sun. com/docs/books/tutorial/j ava/concepts/
    55. Open Source License, http://vvww.opensource.org/licenses/historical.php61. http://www.cs.princeton.edu/-appel/modern/iava/ Modern Compiler Implementation in Java.
    56. А. А., Туккель H. И. SWITCH-технология — автоматный подход к созданию программного обеспечения «реактивных» систем // Программирование. 2001. № 5. С. 45−62. (http://is.ifino.ru, раздел «Статьи»).
    57. Vessel Traffic Services/ Navi-Harbourhttp://www.transas.com/vts/naviharbour/index.asp).
    58. Shore-base systems department (http://www.transas.com/vts/index.asp).
    59. Straustrup B. The С++ Programming Language. MA: Addison-Wesley, 2000, 957р. (Страуструп Б. Язык программирования С++. СПб.: Бином, 2001. — 1099 с).
    60. Boost (http://www.boost.org)
    61. Н.И., Шалыто A.A. Система управления танком для игры «Robocode». Вариант 1. Объектно-ориентированное программирование с явным выделением состояний, (http://is.ifmo.ru/proiects/tanks/)
    62. Microsoft Foundation Classes (http://microsoft.com)
    63. Н.И., Шалыто А. А., Шамгунов Н. Н. Реализация рекурсивных алгоритмов автоматными программами //Труды Всероссийской научно-методической конференции «Телематика-2002». СПб.: СПбГУ ИТМО. 2002, с. 181−182
    64. Н.И., Шалыто А. А., Шамгунов Н. Н. Реализация рекурсивных алгоритмов на основе автоматного подхода //Телекоммуникации и информатизация образования. 2002. № 5. с. 7299 (http://is.ifmo.ru, раздел «Статьи»)
    65. Н. И., Шамгунов Н. Н, Шалыто А. А. Задача о ходе коня //Мир ПК 2003. № 1. http://is.ifmo.ru. раздел «Статьи».
    66. Н.Н., Шалыто А. А. Язык автоматного программирования State //Труды Всероссийской научно-методической конференции «Телематика-2004». СПб.: СПбГУ ИТМО. 2004, с. 180−181.
    67. Г. А., Шамгунов Н. Н., Шалыто А. А. Обход деревьев на основе автоматного подхода. Полная версия статьи с приложением, опубликованная на сайте http://is.ifmo.ru. раздел «Статьи».
    68. Г. А., Шамгунов Н. Н., Шалыто А. А. Обход деревьев на основе автоматного подхода //Труды Всероссийской научно-методической конференции «Телематика-2004». СПб.: СПбГУ ИТМО. 2004, с. 182−183.
    69. Mealy G. A Method for Synthesizing Sequential Circuits //Bell System Technical Journal. 1955. V.34. № 5. — P. 1045−1079.
    70. Moore E. Gedanken Experiments on Sequential Machines //В 6. — P. 129−153.
    71. Automata Studies //Ed. Shannon C.E., McCarthy J. Princeton Univ. Press, 1956. — P. 400 (Автоматы //Ред. Шеннона К. Э., МакКарти Дж. М.: Изд-во иностр. лит., 1956. — 451 с).
    72. Rubin М., Scott D. Finite automata and their decision problem //IBM J. Research and Development. 1959. V.3. № 2. — P. 115−125 (Кибернетический сборник. Вып.4. M.: Изд-во иностр. лит., 1962).
    73. Глушков В.' М. Синтез цифровых автоматов. М.: Изд-во физ.-мат. лит., 1962. —476 с.
    74. S. С. Representation of Events in Nerve Nets and Finite Automata //В работе 77. —P. 3−41.
    75. Thompson К. Regular expression Search Algorithm //Communications of the ACM. 1966. V. 11. № 6. — P. 419−422.
    76. Hopcroft J., Motwani R., Ullman J. Introduction to Automata Theory, Languages and Computation. MA: Addison-Wesley, 2001. — 521 p. (Хопкрофт Д., Мотвани P., Ульман Дж. Введение в теорию автоматов, языков и вычислений. М.: Вильяме, 2001. — 528 с).
    Заполнить форму текущей работой