< индекс---содержание № 4---след. статья в № 4---след. в рубрике >
УДК 681.3
ПОНЯТИЙНЫЙ АНАЛИЗ И КОНТЕКСТНАЯ ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ
В.С. Выхованец(1), В.Я. Иосенкин(2)
(1)Институт проблем управления им. В.А. Трапезникова, г. Москва;
(2)
Приднестровский государственный университет им. Т.Г. Шевченко, г. ТираспольРассмотрена контекстная технология программирования, основанная на создании специализированного языка для решения заданного класса прикладных задач путем понятийного анализа предметной области и отражения ее понятийной структуры в понятиях языка. Описаны средства для задания семантики определяемого языка. На примерах программ показана возможность реализации в рамках контекстной технологии некоторых известных методов описания семантики.
Современные информационные технологии характеризуются возрастающей сложностью информационных систем, создаваемых в различных областях и предназначенных для хранения, обработки, поиска, распространения, передачи и предоставления информации. Накопленный опыт их проектирования показывает сложность и трудоемкость этого процесса, длительного по времени и требующего высокой квалификации участвующих в нем специалистов.
До сих пор проектирование информационных систем выполняется в основном на интуитивном уровне с применением неформализованных методов, основанных на искусстве проектировщиков, их практическом опыте, экспертных оценках и дорогостоящих экспериментальных проверках получаемых результатов. Кроме того, в процессе жизненного цикла информационная система подлежит постоянному изменению в соответствии с изменяющимися потребностями пользователей и развитием их представлений о предметной области, что еще более усложняет разработку и сопровождение таких систем.
Структурная методология предоставила в распоряжение разработчиков методы структурной декомпозиции предметной области. Наглядность и строгость структурного анализа позволяет разработчикам и пользователям системы формализовать представления, необходимые для адекватной реализации информационной системы.
В структурном анализе и проектировании применяются различные модели, описывающие функциональную структуру системы (модель SADT) [1], последовательность выполняемых действий (модель IDEF3) [2], передачу данных между функциональными процессами (диаграммы потоков данных DFD) [3], отношения между данными (модель “сущность – связь” или ERM) [4].
Однако широкое применение структурного анализа и следование его рекомендациям связано с трудностями создания детальных формальных спецификаций информационной системы, проверки их на полноту и непротиворечивость. Еще большие трудности ожидают разработчиков при попытке изменения этих спецификаций.
На смену структурному анализу и как естественное его развитие пришла методология объектно ориентированного анализа и одноименная технология программирования. Объектно ориентированный анализ необходим для создания объектной модели предметной области. Основные принципы объектно ориентированной технологии (децентрализация, контракты, самодостаточность, классификация, бесшовность) [5] реализуются методами абстрагирования, инкапсуляции и полиморфизма при структурной декомпозиции предметной области [6]. При этом используются такие понятия как объект, класс, атрибут, метод, интерфейс и др.
Формальная спецификация результатов объектно ориентированного анализа осуществляется на языке моделирования UML (Unified Modeling Language) [7], который содержит графические и языковые средства для определения, представления, проектирования и документирования результатов анализа предметной области. Язык поддерживает стандартный набор декомпозиционных схем, реализуемых в виде всевозможных диаграмм и нотаций. В UML отражена как методология структурного анализа в виде диаграмм классов, компонентов и их размещения, так и объектно ориентированная методология, представленная в виде различных моделей поведения объектов: варианты применения, взаимодействие, состояния, деятельность.
Отличительное свойство UML от других средств моделирования (IDEF3, DFD, ERM) – возможность расширения языка, основанная на таких сущностях, как стереотипы, теги и ограничения. Однако главное достоинство объектно ориентированного подхода состоит в том, что создаваемые объектно ориентированные модели более открыты и легче поддаются внесению изменений, поскольку их конструкция базируется на устойчивых формах отражения результатов декомпозиции. Это дает возможность модели развиваться постепенно и не приводит к полной ее переработке даже в случае существенных изменений представлений о предметной области и требований к проектируемой информационной системе.
Известный недостаток современных технологий программирования заключается в наличии достаточно большого семантического (смыслового) разрыва между содержательными представлениями о предметной области и решаемыми задачами и теми средствами, которые заложены в языке программирования для решения задач. Иными словами, семантический разрыв – это явление несоответствия решаемых задач тем средствам, которые используются для их решения.
Одна из особенностей семантического разрыва определяется различием системы понятий языка программирования и системы понятий, применяемых для постановки и решения задач в той или иной предметной области. По своей сути любой универсальный язык программирования навязывает разработчику программы некоторую систему понятий, в то время как высокоуровневая модель предметной области с этими понятиями согласуется плохо или не согласуется вообще.
Высокая стоимость информационных систем, их низкая эффективность и надежность, объективная трудоемкость, интеллектуальная и технологическая сложность процесса программирования в некоторой степени являются последствиями семантического разрыва. Для сокращения семантического разрыва используется повышение уровня абстракций языков программирования [8]. Однако последнее снимает только часть проблем, не затрагивая существенным образом понятийную систему языка программирования.
Настоящая статья посвящена контекстной технологии программирования, которая зародилась как объединение объектно ориентированной и фортоподобной технологий, осуществленное путем контекстной интерпретации слов фортоподобного языка [9] и на основе понятийного анализа предметной области.
С целью сокращения семантического разрыва средствами контекстной технологии создается специализированный язык, отражающий понятийную структуру предметной области и класс решаемых задач. Такой подход основывается на допущении, что уже в процессе изучения предметной области и специфики заданного класса прикладных задач, еще до начала программирования, формируется система понятий, приспособленная для постановки и решения задач, которая и найдет свое отражение в создаваемом языке.
Другой базовый принцип, именем которого названа представляемая технология, состоит в контекстной интерпретации лексем. Контекстная интерпретация как принцип заключается в определении семантического (смыслового) значения лексем специализированного языка в зависимости от окружающего их контекста. В отличие от генераторов компиляторов [10], у которых возможности задания контекстных условий, необходимых для реализации языков программирования высокого уровня, достаточно бедны, в контекстной технологии контекстные условия не только систематически задаются, но и естественным образом используются. Это позволяет не только улучшить выразительные возможности определяемого языка, но и повысить его уровень.
И, наконец, в связи с зарождением контекстной технологии как некоторого развития объектно ориентированной, ей не чужды все те принципы и методы, на которых основана последняя.
Трудности, связанные с созданием и сопровождением современных информационных систем, в значительной мере объясняются семантическим разрывом, возникающим между содержательными представлениями о предметной области и решаемыми задачами и средствами языков программирования, служащими для решения этих задач. Для сокращения семантического разрыва предлагается применение контекстной технологии программирования, основанной на понятийном анализе предметной области и контекстной интерпретации лексем.
В контекстной технологии понятийный анализ используется для выявления понятийной структуры предметной области, отражаемой в понятиях создаваемого специализированного языка. Контекстная интерпретация, в свою очередь, позволяет естественным образом реализовать контекстные условия для специализированного языка и улучшить его выразительные возможности.
При использовании специализированного языка, создаваемого по контекстной технологии, ожидается получение более простых и надежных программ. Для оценки реальных улучшений и определения предпочтительных областей применения целесообразны экспериментальные исследования.
В заключение укажем на некоторые публикации, где приведены не вошедшие в настоящую статью описания особенностей контекстной технологии программирования. Так, в докладе [24] описан вычислительный механизм контекстной технологии и рассмотрен пример более сложной предметной области. В статье [25] содержится описание принципов контекстного программирования с их привязкой к вычислительной модели. Работа [26] посвящена вопросам создания, хранения и использования знаний, представленных в виде откомпилированных понятийных моделей, а также содержит описание адресных структур вычислительного механизма контекстной технологии.
5. Meyer B. Object Technology: The Conceptual Perspective // Computer. – 1996. – N 1. – P. 86 – 88.
6. Буч Г. Объектно-ориентированное проектирование с примерами применения. – М.: Конкорд, 1992.
7. Рамбо Дж., Буч Г., Якобсон А. UML. Специальный справочник. – СПб.: Питер, 2002.
10. Хантер Р. Основные концепции компиляторов. – М.: Вильямс, 2002.
11. Горский Д.П. Вопросы абстракции и образования понятий. – М.: Изд-во АН СССР, 1961.
12. Рейуорд-Смит В. Теория формальных языков. Вводный курс. – М.: Радио и связь, 1988.
13. XML Schema Part 2: Datatypes. W3C Recommendation (http://www.w3.org/).
16. Гаскаров Д.В. Интеллектуальные информационные системы. – М.: Высш. шк., 2003.
17. Братчиков И.Л. Синтаксис языков программирования. – М.: Наука, 1975.
18. Першиков В.И., Савинков В.М. Толковый словарь по информатике. – М.: Финансы и статистика, 1991.
19. Кнут Д. Семантика контекстно-свободных языков // Семантика языков программирования. – М.; 1980.
21. Пратт Т., Зелковиц М. Языки программирования: разработка и реализация. – СПб.: Питер, 2002.
22. Ахо А., Ульман Д. Теория синтаксического анализа, перевода и компиляции. – М.: Мир, 1978.
( (095) 787-88-44
E-mail:
vyk@ipu.ru