3.4.3. Традиционные методологии структурирования
Существующие подходы к проектированию сложных систем можно разделить на два больших класса:
• Структурный (системный) подход или анализ, основанный на идее алгоритмической декомпозиции, где каждый модуль системы выполняет один из важнейших этапов общего процесса.
• Объектный подход, связанный с декомпозицией и выделением не процессов, а объектов, при этом каждый объект рассматривается как экземпляр определенного класса.
В структурном анализе [Yourdon, 1989; DeMarco, 1979; Gane & Sarson, 1979] разработано большое число выразительных средств для проектирования, в том числе графических [Буч, 1993]: диаграммы потоков данных (DFD - data-flow diagrams), структурированные словари (тезаурусы), языки спецификации систем, таблицы решений, стрелочные диаграммы «объект—связь» (ERD - entity-rela-tionship diagrams), диаграммы переходов (состояний), деревья целей, блок-схемы алгоритмов (в нотации Насси—Шнейдермана, Гамильтона—Зельдина, Фестля и др.), средства управления проектом (-диаграммы, диаграммы Ганта и др.), модели окружения.
Множественность средств и их некоторая избыточность объясняются тем, что каждая, предметная область, используя структурный подход как универсальное средство моделирования, вводила свою терминологию, наиболее подходящую для отражения специфики конкретной проблемы. Поскольку инженерия знаний имеет дело с широким классом ПО (это «мягкие» ПО), встает задача разработки достаточно универсального языка структурирования.
Объектный (объектно-ориентированный) подход (ООП), возникший как технология программирования больших программных продуктов, основан на следующих основных элементарных понятиях [Буч, 1992]: объекты, классы как объекты, связанные общностью структуры и свойств, и классификации как средства упорядочения знаний; иерархии с наследованием свойств; инкапсуляции как средства ограничения доступа; методы и полиморфизм для определения функций и отношений.
ООП имеет свою систему условных обозначений и предлагает богатый набор логических и физических моделей для проектирования систем высокой степени сложности, при этом эти системы хорошо структурированы, что порождает легкость их модификации. Впервые принцип ООП установлен в 1979 [Jones, 1979], а затем развит в работах [Shaw, 1984; Peterson, 1987; Буч, 1992].
Широкое распространение объектно-ориентированных языков программирования C++, CLOS, Smalltalk и др. успешно демонстрирует жизнеспособность и перспективность этого подхода.