Введение.
В настоящее время программное обеспечение стано-
вится все более сложным продуктом интеллектуальной деятельности.
В связи с этим актуальной задачей становится повышение качества
проектирования разрабатываемого программного обеспечения.
Проектирование программных систем традиционно рассматрива-
ется как сложная человеко-машинная методология. В рамках этого
подхода предложены различные модели жизненного цикла разработки
программного обеспечения: каскадная; итерационная; спиральная [1].
Предложены различные методологии разработки программного обес-
печения: RUP; экстремальные подходы к проектированию и програм-
мированию [2].
Однако какая бы методология не использовалась для разработ-
ки программного обеспечения, ключевым звеном любой методологии
является этап проектирования. Как правило, остальные этапы предна-
значены для устранения ошибок на указанном этапе, для документи-
рования системы, обеспечения взаимодействия между командой про-
ектировщиков и т.д.
В настоящее время можно выделить следующие основные подходы
к проектированию программных систем.
1. Объектно-ориентированный подход (ОО-подход), как правило, с
использованием шаблонов проектирования [3].
2. Проектирование на основе сервис-ориентированного подхода [4]
(СОА-подход). В этом случае проектировщик создает отдельные мо-
дули системы в виде сервисов, а затем интегрирует сервисы в рабочие
процессы на основе технологии workflow. СОА-подход часто приме-
няется для высокоуровневой интеграции больших программных моду-
лей, однако нет никаких препятствий для использования этого подхода
на более детальных уровнях проектирования.
3. Проектирование на основе экспертных знаний и моделей (экс-
пертный подход). В отличие от первых двух подходов, которые пред-
ставляют собой сложившиеся методологии, это направление предста-
вляет собой скорее набор отдельных подходов, объединяющих такие
общие черты, как использование при проектировании методов интел-
лектуальных систем, активное применение кодогенерации.
В рамках экспертного подхода можно отметить подходы:
— экспертное программирование, предложенное Г.Б. Евгеневым
[5];
— концептуальное программирование, предложенное Э.Х. Тыугу
[6];
— методы преобразования и перепроектирования программных си-
стем, рассматривающие код программы как структуру данных,
например, проект rascal-mpl (
/).
78 ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2014. № 5