BC/NW 2014 №1 (24) :6.3

НОТАЦИЯ ПРОЕКТИРОВАНИЯ СТРУКТУР ДАННЫХ ДЛЯ ФУНКЦИОНАЛЬНЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

Борисенков Д.С., Федулов. А.С.

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

Типичные для функциональной парадигмы программирования структуры данных отличаются от структур данных, используемых в императивных языках программирования. С их помощью можно описать иерархию объектов без явного использования указателей. Кроме того, компилятором предоставляется гарантия целостности данных в этой иерархии. Средствами функциональных языков программирования (ФЯП) можно эффективно осуществлять проверку и извлечение данных из иерархии.

Нотация Д. Рассела [1] позволяет проектировать структуры данных ФЯП. Однако, она не поддерживает такие элементы объектно-ориентированной парадигмы программирования, как объекты и классы.

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

В качестве альтернативы нотации Д. Рассела в работе предлагается расширение нотации UML [2] посредством добавления диаграммы алгебраических типов данных. Структура каждого не примитивного типа данных может быть отображена на диаграмме в виде дерева, корнем которого является вершина с именем типа, а листьями — вершины с именами типов элементов. В работе предложен алгоритм преобразования диаграммы алгебраических типов данных в тексты шаблонов программ на ФЯП Scala,

Haskell и F#. Он состоит из двух фаз:

1) генерации слабозависимой от конкретного ФЯП последовательности токенов — символов, представляющих собой абстракцию над лексемами языков программирования;

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

Литература

1. D. Russel.FAD: Functional Analysis and Design Methodology. –

URL:http://kar.kent.ac.uk/13634/1/fad_a_functional_analysis_russell.pdf (дата обраще-ния: 1 сентября 2013)

2. Дж. Рамбо, М. Блаха. UML 2.0. Объектно-ориентированное моделирование и разработка. СПб: Питер, 2007. — 544