Методика построения событийно-управляемых программных систем с использованием языка спецификации CIAO
Ключевые слова:
модель поведения, системы со сложным поведением, реагирующие системы, граф переходов состояний, синтаксическая граф-схема, грамматика в регулярной форме, шаблоны генерации кода C модель поведения, шаблоны генерации кода CАннотация
Событийно-управляемые программные системы в научной литературе относят к классу систем со сложным поведением, называемых реагирующими системами (reactive systems), то есть систем, которые на одно и то же входное воздействие реагируют по-разному в зависимости от своего состояния и предыстории. Такие системы удобно описывать с помощью автоматных моделей с использованием специальных языковых средств – как графических, так и текстовых. Представлена методика автоматизированного построения систем со сложным поведением с использованием разработанного авторами языка CIAO (Cooperative Interaction of Automata Objects), который позволяет на основе неформального описания реагирующей системы формально специфицировать требуемое поведение. Описание реагирующей системы может быть задано словесно на естественном языке или иным способом, принятым в конкретной предметной области. Далее по этой спецификации на языке CIAO специальным преобразователем генерируется программная система взаимодействующих автоматов на языке программирования С++. Сгенерированная программа реализует поведение, гарантированно соответствующее заданной спецификации и исходному неформальному описанию. Для языка CIAO предусмотрена как графическая, так и текстовая нотация. Графическая нотация основана на расширенной нотации диаграмм автомата и диаграмм компонентов унифицированного языка моделирования UML, которые хорошо зарекомендовали себя в описании поведения управляемых событиями систем. Текстовый синтаксис языка CIAO описан контекстно-свободной грамматикой в регулярной форме. Автоматически генерируемый код на языке С++ допускает использование как библиотечных, так и любых внешних функций, написанных вручную. При этом доказательное соответствие формальной спецификации и сгенерированного кода сохраняется при условии соответствия внешних функций своим спецификациям. В качестве примера предложено оригинальное решение задачи Д. Кнута о реагирующей системе управления лифтом. Продемонстрирована действенность предлагаемой методики, поскольку сам автомат-преобразователь, генерирующий код на С++, представлен как реагирующая система, специфицирован на языке CIAO и реализован методом раскрутки. Проведено сравнение предлагаемой методики с другими известными формальными методами описания систем со сложным поведением.
Литература
2. Афанасьева И.В., Новиков Ф.А. Архитектура программного обеспечения систем оптической регистрации // Информационно-управляющие системы. 2016. № 3. С. 51–63.
3. Levonevskiy D., Novikov F., Fedorchenko L., Afanasieva I. Verification of Internet Protocol Properties Using Cooperating Automaton Objects // Proceedings of the 12th International Conference on Security of Information and Networks (SIN'19). ACM. 2019. pp. 1–4.
4. Harel D., Naamad A. The STATEMATE semantics of statecharts // ACM Transactions on Software Engineering and Methodology (TOSEM). 1996. vol. 5. no. 4. pp. 293–333.
5. Selic B., Gullekson G., Ward P.T. Real-Time Object-Oriented Modeling // John Wiley & Sons. 1994. 525 p.
6. Gomaa H. Designing Concurrent, Distributed, and Real-Time Applications with UML // Proceedings of the 28th international conference on Software engineering. 2006. pp. 1059–1060.
7. Gomaa H. Real-Time Software Design for Embedded Systems // Cambridge University Press. 2016. 586 p.
8. Поликарпова Н.И., Шалыто А.А. Автоматное программирование // Питер. 2011. 176 с.
9. Новиков Ф.А., Тихонова У.Н. Автоматный метод определения проблемно- ориентированных языков (Часть 3) // Информационно-управляющие системы. 2010. № 3. С. 29–37.
10. Fedorchenko L., Baranov S. Equivalent Transformations and Regularization in Context–Free Grammars // Cybernetics and Information Technologies. 2015. vol. 14. no. 4. pp. 29–44.
11. Новиков Ф.А., Иванов Д.Ю. Моделирование на UML. Теория, практика, видеокурс // Наука и Техника. 2010. 640 с.
12. Афанасьева И.В. Метод проектирования и реализации параллельных реагирующих систем: диссертация // Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики. 2018. 137 с.
13. Knuth D.E. The Art of Computer Programming: Fundamental Algorithms. 3rd ed. // Addison-Wesley Professional. 1998. vol. 1. 652 p.
14. Novikov F. et al. Attribute-based approach of defining the secure behavior of automata objects // Proceedings of the 10th International Conference on Security of Information and Networks (SIN'17). 2017. pp. 67–72.
15. Новиков Ф.А., Афанасьева И.В. Кооперативное взаимодействие автоматных объектов // Информационно-управляющие системы. 2016. № 6. С. 50–63.
16. Meyer B. Object-Oriented Software Construction: 2nd ed. // Prentice-Hall. 1997. 1296 p.
17. Nesteruk D. Design Patterns in .NET: Reusable Approaches in C# and F# for Object-Oriented Software Design // Apress. 2019. 376 p.
18. OMG. Unified Modeling Language. Ver. 2.5.1. URL: http://www.omg.org/spec/UML (дата обращения: 01.03.2020).
19. Yourdon E. Modern structured analysis // Prentice Hall. 1989. 688 p.
20. Мартыненко Б.К. Синтаксически управляемая обработка данных // Издательство Санкт-Петербургского университета. 2004. 316 с.
21. Федорченко Л.Н., Афанасьева И.В. Метод описания систем со сложным поведением на принципах обобщённых автоматов // Вестник Бурятского государственного университета. Математика, информатика. 2018. № 4. С. 22–36.
22. Harel D. Modelling Reactive Systems with Statecharts: The Statemate Approach // McGraw-Hill. 1998. 258 p.
23. Harel D. The Rhapsody semantics of statecharts // Integration of Software Specification Techniques for Applications in Engineering. 2004. pp. 325–354.
24. Grigoryev I. AnyLogic 7 in Three Days: A Quick Course in Simulation Modeling. 2nd ed. // CreateSpace Independent Publishing Platform. 2015. 256 p.
25. MathWorks. Stateflow. URL: https://www.mathworks.com/help/stateflow/index.html (дата обращения: 01.03.2020).
26. Selic B. ObjecTime Limited, Real-Time ObjectOriented Modeling (ROOM) // Proceedings of the 2nd IEEE Real-Time Technology and Applications Symposium (RTAS ’96). 1996. pp. 214.
27. Kanav S., Lúcio L., Hilden C., Schuetz T. Design and Runtime Verification Side-by-Side in eTrice // NASA Formal Methods Symposium. 2019. pp. 255–262.
28. Selic B. Using UML for modeling complex real-time systems // Languages, Compilers, and Tools for Embedded Systems. 1998. pp. 250–260.
29. Posse E., Dingel J. An executable formal semantics for UML-RT // Software and Systems Modeling. 2016. vol. 15. pp. 179–217.
30. Das T.K., Dingel J. Model development guidelines for UML-RT: conventions, patterns and antipatterns // Software and Systems Modeling. 2018. vol. 17. pp. 717–752.
31. Kedwan F., Sharma C. Model-Driven Software Development Platforms Reviews // International Journal of Computer Applications. 2019. vol. 178. no. 31. pp. 24–33.
32. IBM Rational Rose RealTime. URL: https://www.ibm.com/support/pages/node/574287 (дата обращения: 01.03.2020).
33. IBM Rational Software Architect RealTime Edition, v9.5.0 Product Documentation. URL: https://www.ibm.com/support/knowledgecenter/SS5JSH_9.5.0 (дата обращения: 01.03.2020).
34. Hili N., Dingel J., Beaulieu A. Modelling and Code Generation for Real-Time Embedded Systems with UML-RT and Papyrus-RT // Proceedings of the 39th International Conference on Software Engineering Companion (ICSE-C). IEEE/ACM. 2017. pp. 509–510.
35. Kahani N., Hili N., Cordy J.R., Dingel J. Evaluation of UML-RT and Papyrus-RT for modelling self-adaptive systems // Proceedings of the 9th International Workshop on Modelling in Software Engineering. 2017. pp. 12–18.
36. Kahani N., Bagherzadeh M., Dingel J., Cordy J.R. The problems with Eclipse modeling tools: A topic analysis of Eclipse forums // Proceedings of the 19th International Conference on Model Driven Engineering Languages and Systems. ACM/IEEE. 2016. pp. 227–237.
37. Eclipse Papyrus Real Time. URL: https://www.eclipse.org/papyrus-rt (дата обращения: 01.03.2020).
38. Gurov V.S., Mazin M.A., Narvsky A.S., Shalyto A.A. Tools for support of automata-based programming // Programming and Computer Software. 2007. vol. 33. no. 6. pp. 343–355.
39. Ricca F. et al. On the impact of state-based model-driven development on maintainability: a family of experiments using UniMod // Empir Software Eng. 2018. vol. 23. pp. 1743–1790.
Опубликован
Как цитировать
Раздел
Copyright (c) Ирина Викторовна Афанасьева, Фёдор Александрович Новиков, Людмила Николаевна Федорченко
Это произведение доступно по лицензии Creative Commons «Attribution» («Атрибуция») 4.0 Всемирная.
Авторы, которые публикуются в данном журнале, соглашаются со следующими условиями: Авторы сохраняют за собой авторские права на работу и передают журналу право первой публикации вместе с работой, одновременно лицензируя ее на условиях Creative Commons Attribution License, которая позволяет другим распространять данную работу с обязательным указанием авторства данной работы и ссылкой на оригинальную публикацию в этом журнале. Авторы сохраняют право заключать отдельные, дополнительные контрактные соглашения на неэксклюзивное распространение версии работы, опубликованной этим журналом (например, разместить ее в университетском хранилище или опубликовать ее в книге), со ссылкой на оригинальную публикацию в этом журнале. Авторам разрешается размещать их работу в сети Интернет (например, в университетском хранилище или на их персональном веб-сайте) до и во время процесса рассмотрения ее данным журналом, так как это может привести к продуктивному обсуждению, а также к большему количеству ссылок на данную опубликованную работу (Смотри The Effect of Open Access).