Один из нерешённых вопросов в модульном подходе – отсутствие стандартов на интерфейсы модулей. Разработчик библиотеки сам определяет удобные ему структуры хранения данных и интерфейсы функций, которые их обрабатывают. В результате, каждая библиотека получается уникальной и возникает сложность, связанная с заменой используемых модулей (библиотек).
Другая проблема при использовании библиотек – выбор наиболее оптимальной библиотеки под текущие задачи проекта. Во многих предметных областях существует множество библиотек с реализацией различных алгоритмов. При этом каждая библиотека имеет свою сложность внедрения, эффективность реализации, удобство использования структур данных и поддержку различных программно-аппаратных платформ. Наличие большого количества библиотек приводит к необходимости выбора из них одной или нескольких наиболее подходящих. Поддержка нескольких библиотек усложняет структуру разрабатываемого проекта, а значит, трудозатраты на его разработку увеличиваются. Задача выбора библиотеки часто является многокритериальной, в связи с чем приходится идти на компромисс, выбирая некоторое «среднее» решение, теряя в эффективности реализации, удобстве использования или количестве поддерживаемых программно-аппаратных платформ. Кроме того, в процессе разработки могут возникнуть задачи, которые нельзя решить, используя текущую библиотеку. Тогда разработчики могут столкнуться с задачей перехода на другую библиотеку. Можно выделить следующие причины такого перехода:
При переходе к использованию новой библиотеки разработчику придётся столкнуться с необходимостью выполнить модификацию разработанных структур данных и функций под те, которые используются в библиотеке. Такой переход может быть очень трудоёмким.
Итак, основной недостаток классической модульной разработки программного обеспечения – это сильная зависимость от конкретной реализации библиотеки. Этот недостаток порождает три актуальные проблемы:
Рассмотренные выше проблемы тесно связаны и часто возникают совместно. Так, решение о необходимости миграции на новую библиотеку осуществляется после анализа доступных вариантов и выбора одной или нескольких библиотек, наиболее подходящих под задачи проекта. Поэтому актуальность рассмотренных проблем можно также рассматривать взаимосвязано.
В работе предлагается макромодульный подход к разработке программ, позволяющий снизить остроту перечисленных проблем.
Руководитель проекта
Ранее в проекте участвовали
Разработаны основные положения макромодульного подхода и предложена архитектура среды времени исполнения.
Работы ведутся в следующих направлениях: