Главная > Документ

1

Смотреть полностью

А.А. Красилов

ИНФОРМАТИКА

В СЕМИ ТОМАХ

Том 6. Методы информатики

(Изобретание, проектирование,

разработка и сопровождение)

Москва

1997 - 2003

ИНФОРМАТИКА

Том 1. Основы информатики

(Введение в информатику)

Том 2. Информатика смысла

(Машинная лингвистика)

Том 3. Концептуальная информатика

(Толковый словарь по информатике)

Том 4. Представление знаний

(Структуры данных)

Том 5. Основания информатики

(Теоретические основы)

Том 6. Методы информатики

(Изобретание, проектирование,

разработка и сопровождение)

Том 7. Интеллектуальные системы

(Системы решения проблем)

Альберт Александрович Красилов

УДК ....................

Аннотация

Каждая наука является коллекцией своих методов. Информатика также включает в состав своих инструментов методы изобретания, проектирования, разработки и сопровождения любого объекта с помощью средств вычислительной техники, способствующие поиску нового знания. Здесь представлено большое число методов, порожденных в различных науках и областях знаний, в особенности в программировании. Излагаемые методы частично модифицированы по сравнению с их оригинальным изложением для их ориентирования и усиления при использовании в информатике, как технологии обработки знаний.

Each science is a collection of the methods. The informatics also includes in structure of the tools methods inventionment, designing, development and maintenance of any object with the help of computer facilities means, promoting to search of new knowledge. The large number of methods caused in various sciences and fields of knowledge, in particular in programming here is submitted. The stated methods are partially modified in comparison with their original statement for their orientation and strengthening at use in informatics, as technologies of the knowledge processing.

()

ОГЛАВЛЕНИЕ

Введение

Глава 1. Методология информатики

1.1. Обзор направлений в информатике

1.2. Способы определения методов в информатике

1.3. Методы в информатике

1.3.1. Наглядное программирование

1.3.2. Языковое программирование

1.3.3. Концептуальное программирование

1.3.4. Повторное использование программ

1.3.5. Логическое программирование

1.3.6. Алгоритмическое программирование

1.3.7. Интеллектуальное программирование

1.4. Стили программирования

1.4.1. Текстовый стиль программирования

1.4.2. Графовый стиль программирования

1.4.3. Литературный стиль программирования

1.4.4. Сценарное программирование

1.4.5. Функциональное программирование

1.4.6. Другие стили программирования

1.5. Стиль и технология в информатике

1.6. Искусство в технологии обработки знаний

1.7. Интеллект в информатике

Глава 2. Инженерия знаний (знаниеведение)

2.1. Отладка знаний

2.2. Этапы создания объекта

2.3. Фазы процесса поиска нового знания

2.4. Работы в процессе поиска нового знания

2.5. Технологические операции

2.6. Технологические маршруты

2.7. Обзор методов информатики

2.7.1. Методы проектирования данных в информатике

2.7.2. Методы проектирования множеств данных

2.7.3. Методы рекурсивного проектирования данных

2.7.4. Методы применения контроля принадлежности значений множеству

2.7.5. Методы структурирования данных

2.7.6. Использование синонимии

2.7.7. Методы сокращения форм имени

2.7.8. Методы проектирования приближенных вычислений

Глава 3. Повторное использование разработок

3.1. Общие концепции

3.2. Основные предпосылки исследования

3.3. Модели создания субпрограмм

3.3.1. Системная модель процесса создания субпрограммы и риюз

3.3.2. Ситуационная модель создания субпрограмм

3.4. Жизненный цикл программ в риюзе

3.5. Методология реализации риюза

3.5.1. Уровни абстракции и риюз

3.5.2. Методология риюза

3.6.Инструментальные средства риюза

3.6.1. Задачи внедрения риюза

3.6.2. Инструментарий

3.7. Оценка повторного использования и проблемы риюза

Глава 4. Методы, поддерживающие изобретание

Введение

Принципы для изобретания

4.1. Методы формирования понятий

4.2. Методы сбора фактов, утверждений о фактах

4.3. Методы сбора знаний

4.4. Методы формулировки целей

4.5. Методы сбора операций

4.6. Методы исследования причин изобретения

4.7. Методы сходства и различий для установления причинных связей

4.7.1. Метод сходства

4.7.2. Метод различия

4.7.3. Композиция методов сходства и различия

4.7.4. Метод сопутствующих изменений

4.7.5. Метод остатков

4.7.6. Метод аналогий

4.7.7. Метод споров

4.8. Метод формирования идеального результата

4.9. Метод проб и ошибок

4.10. Методы построения иерархии задач, сведение задачи к подзадачам

4.11. Методы классификации

4.12. Общие методы решения задач

4.13. Методы фокального объекта

4.14. Методы морфологических карт

4.15. Методы предельных границ

4.16. Методы коллективного творчества

4.17. Методы схем

4.18. Методы технических противоречий

4.19. Методы устранения технических противоречий

4.19.1. Общие подходы

4.19.2. Переход от одной противоположности к другой

4.19.3. Приемы устранения противоречий

4.19.4. Коллективный анализ

4.19.5. Анализ путей исследований

4.20. Методы оценки результата

4.21. Методы моделирования

4.22 Человеческий фактор

Глава 5. Методы, поддерживающие проектирование

Введение

5.1. Методы объектно-ориентированного проектирования

5.2. Метод структурного проектирования

5.3. Методы проблемного проектирования

5.4. Методы логического проектирования

5.5. Методы декларативного проектирования

5.6. Методы создания проекта

5.7. Методы ведения проекта

5.8. Методы управления проектами

5.9 Методы ведения библиотек

5.10. Методы синтеза программ

Глава 6. Методы, поддерживающие разработку

6.1. Метод модульного проектирования разработки

6.1.1. Пояснение требований к модулю

6.1.2. Создание модулей

6.2. Метод блочного проектирования разработки

6.3. Метод разработки из готовых блоков

6.4. Методы проектирования последовательных вычислений

6.5. Метод макропроектирования

6.6. Метод проектирования сверху вниз

6.7 Метод разработки снизу-вверх

6.8. Заметка о методе пакетов прикладных программ

6.9. Метод проектирования реального времени

6.9.1. Определение метода

6.9.2. Характеристика реального времени

6.9.3 Способы синхронизации процессов

6.9.4. Технология планирования реального времени

6.10 Метод использования астрономического времени

6.10.1. Проблемы астрономического времени

6.10.2 Определение метода

6.10.3. Характеристика астрономического времени

6.11 Метод контроля логической правильности знаний и запросов

Глава 7. Методы, поддерживающие сопровождение

7.1. Методы контроля

7.2. Метод развивающегося программирования

7.3. Методы обеспечения надежности процессов сопровождения

7.4. Методы повышения эффективности труда программистов и знаниеведов

7.5. Методы обеспечения надежности программ

7.6. Методы обеспечения эффективности программ

7.7. Метод сопряжения языков высокого и низкого уровней

7.8. Методы обеспечения машинной зависимости и независимости

7.8.1. Метод машинной зависимости

7.8.2. Машинная независимость

7.9. Методы сокрытия данных, операций и управления

7.10. Методы обеспечения читаемости программ текстов

7.11. Методы обеспечения программ документами

Литература

Сокращения для терминов

АП - алгоритмическое программирование

БД - база данных

БЗ - база знаний

ВМ - вычислительная машина

гл. - глава

ГЯ - граф языка

ЕЯ - естественный язык

ЖЦ - жизненный цикл

ИИС - инструментарий интеллектуальной системы

ИМГР - интерпретатор машины грамматического разбора

Интеллсист- интеллектуальная система

ИП - интеллектуальное программирование

КП - концептуальное программирование

КС - контекстно-свободный

ЛП - логическое программирование

МГР - машина грамматического разбора

МТ - машина Тьюринга

НП - наглядное программирование

ПИ - повторное использование

разд. - раздел

СеГ - семантическая грамматика

СиГ - синтаксическая грамматика

СП - синтезированная программа

СУБД - система управления базой данных

СУБЗ - система управления базой знаний

ФРАК - формульный автокод

ФЯ - формальный язык

ЯЛ - язык Лейбниц

ЯП - языковое программирование

ЯПП - язык профессиональной прозы

Введение

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

В методологии информатики выделяется инженерия знаний по своему существу. Построение нового знания - удел инженерии знаний (знаниелогии). Этот подход отличается от существовавшего до сих пор подхода к инженерии знаний. Он сводился только к консультационной (экспертной) помощи пользователю в формализации знаний и к исправлению ошибок, возникающих при вводе в память ВМ различных представлений знания. Новый взгляд состоит в анализе технологии приобретения нового знания. Проблемам инженерии знаний посвящена гл. 2.

Неправильной следует считать точку зрения, которая состоит в запрете использования имеющегося задела или готового продукта – это очевидно. Только повторное использование готового продукта позволяет существенно сэкономить время и ресурсы. Для информатики важным обстоятельством является разрешение проблем повторного использования любых объектов. Этим вопросам посвящена глава 3.

Составной и также значительной частью методологии информатики является технология создания нового знания. Большая часть тома посвящена методологическим основам информатики, которые подразумевают детальную планировку деятельности человека, оснащенного СВТ, для создания нового знания. Всю деятельность в информатике подразделяют на этапы (они уже перечислены в подзаголовке), каждый этап - на фазы (их 8), а фазы - на конкретные работы (как в [Боэм85]). Главными этапами являются:

  1. изобретание (читателя не должно смущать новое слово, оно понятно по существу) - подготовительная мозговая деятельность человека при выработке идей в добывании нового знания о предмете, явлении, процессе или их свойствах;

  2. проектирование - также в значительной части известная деятельность человека по определению и планированию последовательности работ при создании нового знания;

  3. разработка - рабочая часть в деятельности человека по распределению времени и ресурсов эффективной организации и исполнению всех работ;

  4. сопровождение - большей частью организационная деятельность человека по внедрению или распространению результатов всего процесса создания нового знания.

Четыре этапа отражены в четырех главах тома (4, 5, 6 и 7) в форме разбора основных методов информатики.

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

Глава 1. Методология информатики

О методологии вообще. Информатика расцвела вместе с внедрением в жизнь ВМ. Ее применение связано прежде всего с процессами составления и использования программ независимо от того, составляются они вручную или автоматически. И сегодня чаще всего в преподавании информатики (да и в практической деятельности, связанной с информатикой) широко используется понятие программы, хотя оно и использовалось задолго до появления ВМ в управленческой деятельности человека. Поскольку понятие информатики нами расширено содержательно, понятие программы мы будем использовать также широко по сравнению с общепринятым. Планирование своей деятельности - кардинальная характеристика человека. Построение планов (и программ) является наверное самой древней заботой человека. Она передана через программирование в деятельность по применению ВМ.

Сущность программы. В предыдущих томах «Информатики» было показано, что в ИП под программой понимается совокупность БЗ (класса задач) и запроса (конкретная задача) пользователя знаниями. Источником класса программ является БЗ. Такое отчасти схематическое определение (логической) программы и класса (логических) программ позволяет по новому посмотреть на сущность программирования. Впредь далее будем определять программу как совокупность знаний и запросов независимо от того, связаны мы с ВМ или с некоторой познавательной деятельностью. Весь излагаемый материал данного тома подразумевает такое понимания термина «программа». Возможно нам пригодится понятие класса программ, тогда и здесь будем иметь в виду БЗ как условного синонима класса программ. Использование понятий программа, класс программ или программирование подразумевает именно такое понимание. Все излагаемые методы создания программ, классов программ или программирования возникли в ранней информатике, поэтому и источником знаний об этих понятиях являются литература и деятельность человека по применению ВМ, поэтому везде ниже наложен отпечаток таких источников. Считается актуальным распространение нового понимания этих понятий для осмысления информатики.

Истоки появления программ объяснены в интуиционистской логике. Если запрос (говоря в общем) формален или включает абстрактные величины, то действует классическая математическая логика с законом исключенного третьего. Если в запросе рассматривается некоторая модель (абстракции почти или совсем отсутствуют), то действует интуиционистская логика, отрицающая закон исключенного третьего и требующая построения алгоритма для окончательного выяснения истины для запроса. Алгоритм представляется программой, которая неизвестна для прямого пользователя (и это правильно). Программа служит отложенным средством выяснения истины для запроса.

Итак, принимаем сказанное за установку на применение имеющихся методов, практической работы и сложившихся традиций в программировании в рамках нового понимания информатики и переходим к рассмотрению сущности методологии информатики. Воспользуемся многими прецедентами определения методологии.

Имеющиеся определения методологии. Наиболее полным и удачным описанием сущности понятия методологии программирования (и информатики) считается работа [Турский87]. Будет следовать указаниям этой работы в определении понятия методологии. В книге сказано: «Методология программирования на ВМ - как, по-видимому, и любая другая методология - включает в себя три компоненты, которые почти невозможно отделить одну от другой. Это наука, ремесло и фольклор (мифология)» Действительно, наука изучает цели информатики (программирования) и дает теоретические рекомендации для ответа на вопрос, как искать знания; ремесло - это передача традиций в информатике (программировании), или экспериментальный и эмпирический подход к проблеме поиска решений на ВМ и результата обучения пользователя (программиста); фольклор связан с мифами и ритуалами, с накопленными опытом и особенностями практической деятельности в применении ВМ.

В работе [Непейвода81] указаны такие три кита методологии: теория, технология и прагматика. Теория - это способ обобщения практических знаний на базе строгой проверки методов и методик программирования; технология - это способ конкретизации теоретических знаний применительно к практической деятельности; прагматика - это систематизация практических запросов, потребностей и т.п. на изготовление программы и при оценке качества изготовляемого программного продукта. Характеристика понятия методологии согласуется с приведенной выше, но в данном случае очерчивается несколько другая проблемная область. В этом ничего плохого нет, наоборот, варианты определений способствуют точному пониманию термина.

Новое определение методологии. Будем основываться на следующих семи китах методологии (в скобках указаны ссылки на указанные выше компоненты): фиксация знаний (фольклор), языки в информатике (отчасти - прагматика), понятия (отчасти - наука), данные и факты (отчасти относящиеся к ремеслу), основания информатики (теория), собственная технология информатики (технология), система знаний (наука). Эта семерка также хорошо согласуется с предыдущими двумя версиями определения методологии, но расшифровывает и расширяет ее назначение и область применения. Изложение методологии программирования, как части методологии информатики, является лишь иллюстрацией общих построений понятия методологии. Мы считаем, что данное здесь определение методологии может относиться к любой области деятельности человека. Заметим, что естественным образом реализуется эволюция понятий конкретной деятельности из фольклора в язык информатики, из языка к понятиям, из понятий к данным, из данных к основаниям, из оснований к технологии и из технологии к системе знаний, а в целом в информатику как науку.

Информатика формируется в настоящее время из результатов исследований по применению ВМ к обработке знаний. Существование информатики связывается не только с применением ВМ, но рассматривается и раскрывается понятие знание, а кроме этого методы информатики становятся шире по применению. Однако методическая часть информатики возникла в недрах программирования и несет в связи с этим отпечаток процессов программирования. Это не должно никоим образом смущать кого-либо. Наоборот, необходимо этим воспользоваться для более качественного изучения методологии программирования (обратное воздействие). Отсюда, в частности, следует, что одной из проблем информатики является проблема переноса методологии программирования на изучение знания о знании.

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

Свойство отчуждаемости программы или знаний от их создателя чрезвычайно важно для характеристики программы и знаний. Как отмечал А.П. Ершов, отчужденность программы - это ее способность функционировать без вмешательства разработчика (или заказчика). Для этого программный продукт или знание должны удовлетворять следующим главным требованиям:

  • иметь интеллектуальный интерфейс для быстрого доступа и применения ко всем возможностям программного продукта,

  • быть максимально приближенным к средствам ЕЯ для передачи того или иного вида знаний в память ВМ,

  • содержать полный фактический и терминологический материалы для тестирования и верификации программ и знаний,

  • обладать концептуальным единством, все должно служить главной цели программного продукта или знания,

  • быть теоретически и практически обоснованным, что составляет критерий их правильности и пригодности,

  • быть поддержанными инструментальными средствами для пользователя и выполнять все функции, предусмотренными в нем,

  • быть органической частью системы или среды, в которых программа и знания работают.

Эти требования являются обязательными для методологии информатики и представляют собой задание на проектирование инструментария ИП. А данный выше обобщенный обзор определений методологии направлен на введение к проблематике, на начало детального изучения методологии программирования и ИП.

Цель главы - представить новое понимание технологии в информатике, которая естественным образом вытекает из накопленного знания о применении ВМ. Отличие ее от ранее используемого понимания обосновано новым расширенным пониманием понятия программы как БЗ вместе с запросом пользователя на разрешение задания в данной области знаний. Для определения места новой технологии рассмотрим вначале различные направления в применении ВМ. Эти направления зависят от выделения одного из ведущих понятий вида знаний. В самом начале важно заметить, что проблема излагаемого нового понимания технологии в информатике служит только образцом для формирования собственных технологий разработчиков программ и БЗ.

1.1. Обзор направлений в информатике

Развитие информатики происходит по нескольким направлениям, связанными со способами передачи ВМ заданий или представлениями знаний для выполнения этих заданий. Вычленение направлений позволяет обнаружить пути развития методологии программирования и методов автоматизации обработки информации и знаний. Основная цель приводимой ниже классификации направлений - определить место сравнительно новой методологии обработки знаний на ВМ - ИП. Вторая цель является сопутствующей основной цели. Программирование накопило огромную коллекцию методов, методик, приемов и способов, которые необходимо распространить на всю информатическую деятельность. Частые ссылки на технологию программирования вызваны именно этими обстоятельствами.

Каждое расширение ассортимента СВТ порождает новое направление в информатике (и, в особенности, в программировании), соответствующее новому средству. Например, в связи с развитием видеотехники (дисплеев) для ВМ развилось, в частности, визуальное программирование, в основе которого лежит манипулирование изображениями; в связи с развитием аудиотехники (анализаторов и синтезаторов звука) разворачивается программирование с помощью звуков или (можно так именовать) аудиопрограммирование, в связи с развитием сенсорного воздействия через экран или перо рождается сенсорное программирование и т.п. В настоящее время трудно провести четкую классификацию всех направлений в программировании из-за невозможности точного предвидения путей развития СВТ. Конечно, пути развития часто пересекаются с путями усиления способностей человека. Подсказкой для предвидения может послужить стремление пользователя к применению всех своих органов чувств и свойств своего мышления для общения с ВМ. Тем не менее, мало что известно о будущих путях реализации таких стремлений человека. Однако прогностическую классификацию различных направлений, учитывающих только реальные возможности человека, сделать можно и полезно в качестве прогноза развития информатики, для оценки областей применения ВМ.

Начнем с общей классификации направлений, известных из литературы по программированию и информатике. При классификации под программированием мы будем понимать явное или неявное построение планов вычислений на ВМ на языке программирования любого уровня для решения конкретных проблем или классов проблем. При этом конечной деятельностью пользователя является передача ВМ необходимых для создания программы сведений (знаний) и получение требуемых результатов после выполнения программы. Начальная работа пользователя может быть связана с манипулированием самыми различными сведениями. В частности, манипулирование текстами алгоритмов и различными данными подразумевает алгоритмическое программирование. Ниже кратко каждое направление характеризуется следующим образом (ссылки на литературу даны представительно: одна-две ссылки - одно направление, хотя можно сказать, что современная библиография богата и содержит более или менее подробные описания всех направлений информатики, которые порождены программированием; делается также сопоставление направлений с классами наук, которые ближе всего примыкают к нему).

1.Наглядное программирование (НП) [Райан89] - использование всевозможных изобразительных, в широком смысле этого слова, средств (аналогично восприятию всеми органами чувств человека) для передачи машине имен понятий и последовательностей действий или подборку фактического материала и знаний при решении конкретных проблем. Основными пользовательскими операциями здесь являются операции композиции, декомпозиции, детализации, обобщения и теоретико-множественные операции с нетекстовой информацией. НП более всего согласуется и удовлетворяет естественным наукам.

2. Языковое программирование (ЯП) [Красилов86] - создание спецификаций заданий на программирование обработки языков, текстов и программ с помощью грамматики некоторого языка представления данных, фактов, программ и знаний для решения лингвистических заданий. Обычно и традиционно рассматриваются два сорта языков: ЕЯ и ФЯ с постепенной тенденцией развития ФЯ по направлению к ЕЯ. Первые классифицируются по профессиям, а ФЯ - по кластерам грамматик для методов программирования, которые формализованы в каждом ФЯ. Общий подход к ЯП был дан в гл.2. ЯП, если использовать ЕЯ, предназначено более всего для обслуживания гуманитарных наук.

3. Концептуальное программирование (КП) [Тыугу84] - создание определений и описаний понятий для выражения смысла и формы конкретных проблем относительно понятий, по описанию которых автоматически выводятся новые понятия или синтезируются программы построения новых понятий. В данном случае набор логических формул определяет последовательность определений величин, операций или композицию (суперпозицию) величин и операций, которые в свою очередь определяют последовательность действий при формировании требуемого понятия или его значения (подробнее проблемы были рассмотрены в гл.3). КП ближе всего продвинуто в сторону интеллектуализации и к ИП. КП включает такой сорт программирования как широко используемое объектно-ориентированное программирование (ООП). Современное его состояние отражает главным образом АП (см. п.6). Это легко объяснить тем обстоятельством, что ООП родилось в недрах АП. В связи с этим сложно выделить четкие границы между ООП и АП, этому сорту программирования более не уделяется внимания здесь. КП призвано обслуживать информатические науки.

4. Повторное использование и проектирование программ (ПИ) [Красилов91а] - тиражирование, адаптация, настройка, компиляция и генерация программ на основе имеющихся в библиотеках программных модулей и проектов программ (см. разд.4). ПИ призвано обслуживать главным образом искусствознание в самом широком смысле этого слова. Наибольшее применение ПИ получило при создании пакетов прикладных программ.

5. Логическое программирование (ЛП) [Хоггер88] - изучение и создание отношений и логических зависимостей для автоматического синтеза программ. В этом направлении программа выводится из спецификации проблемы на логическом языке с использованием методов построения доказательства теорем в интуиционистском, информатическом и др. исчисленьях. К настоящему времени накоплена значительная библиотека методов ЛП, основанных на языках Лисп и Пролог и на применениях ЭС. ЛП предназначено для обслуживания фундаментальных наук. ИП также скорее напоминает ЛП, как и КП. ЛП излагается и изучается в большинстве публикаций информатического направления.

6. Алгоритмическое программирование (АП) [Мейер82] - описание наборов операндов, операций и их последовательностей для выполнения и получения новых значений операндов. Известна сущность АП - это изобретание и формирование идентификаторов, последовательностей действий, представляемых с помощью идентификаторов, и потоков данных. Это направление является наиболее продвинутым в современной информатике. АП обслуживает технические и технологические науки.

7. Интеллектуальное программирование (ИП) [Лорьер90, Красилов90е] – это процесс ввода в ВМ знаний о предметной и проблемной областях и запроса пользователя, на основе которых логически выводится ответ. Ответ может быть представлен новыми фактами, выражениями или программами. ИП - основной вопрос, рассматриваемый в т.7, он связано с применением Интеллсист любой конфигурации.

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

НП - лингвосемиотические знания (символьные тексты),

ЯП - семантические знания (представления языков),

КП - концептуальные знания (формулировки определений понятий),

ПИ - фактографические знания (массивы и таблицы фактов),

ЛП - теоретические знания (логические исчисления),

АП - алгоритмические знания (записи действий),

ИП - кибернетические знания (записи любой природы о системах).

Ясно, что знания данного вида используются только в идеальных примерах исследования или разрешения проблем. Обычно для разрешения данной проблемы используются комбинации различных видов знаний. Поэтому можно выделить самые разнообразные композиции направлений программирования. Построение идеальной модели в соответствии с классификацией полезно для формирования частных знаниеориентированных методов. Следует обратить внимание на то, что имеются и другие виды знаний, которые по нашему глубокому убеждению совпадают с одним из перечисленных выше. Совпадение понимается условно, некоторые виды знаний образуют кластер основного вида знаний. Например, процедурные знания относятся к алгоритмическим, системные знания - к кибернетическим, логические знания - к теоретическим, гуманитарные знания - к лингвосемиотическим. Кластер вида знания позволяет построить классификацию некоторых сортов программирования по данному направлению из приведенной классификации.

В остальных разделах рассматриваются перечисленные направления информатики. По каждому направлению может быть предложена своя внутренняя классификация в зависимости от способа представления данных для выполнения в конечном счете программ. Выделение направлений целесообразно для показа на не программистское использование ВМ, приближающее пользователя любой специализации к его предметным и проблемным областям и к его лексикону (в самом широком смысле этого слова).

Здесь указан только примерный перечень критериев классификации. Другие критерии может сформировать любой, знающий или формирующий современные методологии программирования. Смысл классификации по сортам заключается в том, чтобы иметь возможность более точно описать саму методологию программирования. Как уже было отмечено, данная выше классификация направлений в информатике рассматривает идеальные случаи использования ВМ. Реальные задания машине представляют собой сложные комбинации указанных в классификации приемов и способов кодирования информации с целью ее обработки. Наглядный пример тому - это компьютерные игры [Арсак90, Громов87, Компьютер88, Минскин87], при создании и использовании которых применяются почти все указанные сорта программирования и направления информатики. Любая абстракция имеет вполне определенное назначение: обнаружить достигнутое и найти неизвестное.

Классификация направлений в информатике разрешает несколько проблем. Прежде всего классификация позволяет сделать обзор современных достижений в информатике и оценить состояние дел в области применения СВТ. Вторая проблема связана с определением белых пятен в программировании и информатике. Огромный поток неявных пользователей должен увеличиваться до охвата каждого человека. Современная жизнь породила проблему широкого внедрения информатики в обеспечение комфортного жизненного уровня каждому. Эту цель можно достичь внедрением непрограммистских подходов в информатике. Еще одно важное обстоятельство следует иметь в виду. Все направления в классификации хорошо согласуются с проблемами моделирования человеческой деятельности. Чем ближе «поведение» ВМ к человеческому, тем продуктивнее решение задач человека, тем ближе общение в системе человек-ВМ к общению в системе человек-человек.

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

1.2. Способы определения методов в информатике

Информатика и ее методология диктуют специальный подход к определению методов, которым посвящен настоящий том. Все методы включают по мере возможности следующую совокупность информатических способов, определяющих изобретание, проектирование, разработку и сопровождение объекта на протяжении его жизненного цикла от появления идеи до снятия с применений. Совокупность способов включает:

- синтаксические или лингвистические приемы построения формальных или неформальных грамматик,

- построение языка, применяемого для описания объектов или их характеристик, семантические приемы формирования принимаемых значений (смыслов) каждого понятия,

- концептуальные приемы логического построения определений понятий,

- прагматические приемы формирования ограничительных требований и наборов фактического материала,

- формульные и смысловые приемы построения соотношений и содержательных объяснений вещей,

- предметные приемы построения и формирования примеров и иллюстраций,

- системные приемы установления взаимосвязей между объектами,

Целями определений методов являются указания на приемы или алгоритмы получения искомых результатов по исходным данным, независимо от конкретного применения. Главная цель состоит в построении полной и замкнутой технологии ИП для решения разнообразных вопросов, задач, заданий или проблем на основе знаний, представленных в естественном виде.

Смысл и сущность метода в информатике заключены в указании или в предписании способов получения нового знания с помощью ВМ. Исходные посылки для построения методов содержатся в богатом опыте программирования на ВМ, использующим самые разнообразные виды представления знаний. Ясно, что программирование явилось не только источником методов, но и показателем быстрого развития информатики.

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

Метод в конечном счете должен определять алгоритм, с помощью которого реализуется применение метода. Вообще же это требование к методам не является обязательным, но выполнение требования увеличивает силу метода. Перечислить все методы невозможно, поэтому здесь рассматриваются только представительные методы.

1.3. Методы в информатике

Том 6 в основном посвящен методам информатики. Программирование и наука программ естественным образом породили совокупность методов, которые целесообразно и правомерно следует перенести в информатику, поскольку они явились источником новых подходов и методик обработки знаний для получения нового знания. Здесь же, в данном разделе, рассматривается общее понимание методов независимо от их предметного назначения. Определение понятия метода должно стать шаблоном для формирования каждого конкретного метода информатики. Каждое определение, в том числе определение понятия метода, должно иметь форму критерия для оценки того или иного приема, который можно именовать методом.

Метод - это способ достижения цели, процесс решения конкретной проблемы, совокупность приемов и операций практического или теоретического освоения (познания) действительности. Метод информатики - это метод и средство организации изобретания, проектирования, разработки (преобразования, защиты, хранения и т.п.) и сопровождения данных, знаний, программных или аппаратных систем и, в частности, программ, разрабатываемых в соответствии с исходной постановкой проблемы и для получения нового знания на основе имеющегося накопленного знания. Краткие определения мы сопровождаем некоторыми пояснениями, расширяющими данные выше определения. Дополнения связаны с требованиями, которым должны удовлетворять методы информатики.

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

Второе требование состоит в том, что метод должен быть одинаково применим для всех описаний предметов, на преобразование которых ориентирован метод. Применение метода не обязательно, если эффективность результата применения сомнительна. Иногда можно ограничиться отдельным приемом, составляющим часть метода, или простой операцией из совокупности, определяющей метод. Важна независимость методов (их ортогональность), это обеспечит наиболее точный выбор средств для получения результата. Наибольший эффект дает композиция методов.

Третье требование относится к способу получения результата применения метода: метод должен обеспечивать объективность в самом процессе и в получении результатов преобразования описаний предметов как при его использовании всеми, так и при демонстрации метода. Указанное требование трудно оформить в некоторый формализм, здесь более всего работает интуитивные подходы. Существенным в учете объективности является отсутствие противоречий как в процессе построения результата, так и в самом результате.

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

Излагаемые в томе методы не всегда удовлетворяют перечисленным требованиям в силу непрерывного развития информатики, которое соответствует диалектическим рассуждениям. Итак, рассмотрим чуть подробнее классификацию методов программирования или/и информатики. (Можно попросить прощение за некоторые повторы предложений в изложении классификаций.)

1.3.1. Наглядное программирование. Прежде небольшое вступление. Необходимый существенный рост количества программистов, как уже упоминалось, напоминает ситуацию с необходимым ростом количества телефонисток в 20-х годах ХХ века. Проблема роста армии телефонисток тогда была разрешена в результате создания автоматических телефонных станций, что привело к передаче функций телефонисток каждому пользователю телефонного аппарата. Необходимость в программистах также разрешается путем создания новых СВТ и программ для эффективного их применения самими пользователями. Весь арсенал новых аппаратных и программных средств направлен на привлечение большого числа непрограммистов для решения их проблем (заданий). Подобные мероприятия изменяют процедуру составления программ решения конкретных проблем. Появляется новый стиль программирования, который постепенно образует новое направление в информатике.

Относительно НП как направления написано достаточное число публикаций. Тем не менее, представляет интерес краткий суммирующий обзор сортов НП. Всякая классификация указывает на пробелы, которые могут представить интерес, например, для системного программиста, создателя программ для построения программ.

Современное программирование характеризуется широким применением символьного способа представления информации. Другие способы представления (такие как картинки, рисунки, графики, пиктограммы и произвольные символьные наборы, не выражающие содержательного текста ЕЯ или ФЯ) также постепенно находят все более широкое применение в практике использования ВМ. Символьный способ применяется главным образом для представления программ и знаний, исходных данных или результатов. Несимвольный способ используется для представления исходных данных при формировании конкретной проблемы и конечных результатов ее разрешения. Ввод несимвольной информации вызывает компиляцию имеющихся в библиотеках программ в комплекс выполняемых программ. Здесь для пользователя ВМ имеется фактор решения проблем без программистов, автоматическое составление программ без написания команд машины или текстов ФЯ. Подобная деятельность человека при разрешении проблем с помощью ВМ вполне может называться наглядным программированием.

НП обладает важным пользовательским свойством: оно не требует от пользователя знания программирования и языков для написания программ. Такого пользователя можно именовать видеопрограммистом или аудиопрограммистом в зависимости от органа чувств, которые используется для общения с ВМ. Единственным главным требованием для непрограммиста является требование знания средства передачи сообщений для ВМ (клавиатура, микрофон, сенсоры и др.). Для эффективного НП пользователю необходимо знать краткое руководство, составленное системным программистом.

Данный перечень не завершен, поскольку еще не все органы чувств человека используются при программировании различных проблем. Этот перечень возможно никогда не завершится, так как «программистом» может быть некоторое устройство, животное или просто часть природы, имеющие другие (по сравнению с человеком) органы восприятия и воздействия.

НП действительно является (надо сказать несколько точнее - напоминает) программированием с определенным уровнем интеллекта по такому признаку как использование программы, отторгнутой от ее создателя. Прямой пользователь сам определяет что и как необходимо сделать для решения его проблемы. Средств в отторгнутой программе достаточно для выполнения своих или предписанных заданий. Конечно, необходимо принимать во внимание два обстоятельства: новые проблемы, кроме тех, которые представлены (запрограммированы) с помощью НП, решить сложно или невозможно. Решение новых проблем возможно только внешне, поскольку они не решалась до сих пор пользователем, но возможность ее решения уже была заложена в средства НП, в его инструментарий. Качественно новая проблема может быть решена средствами НП, если будет изготовлен его инструментарий или пакет программ. Второе обстоятельство: ИП оснащено инструментарием, которое ориентировано на БЗ (класс проблем) и на создание запроса для решения каждой конкретной проблемы средствами ЯПП. Решение новой проблемы требует незначительных изменений в запросах.

Имеется существенное отличие НП и ИП. Частично об этом уже сказано. Кроме этого, оно состоит в том, что в НП невозможно вложить новое или дополнительное знание, кроме того, которое заложено в программы обслуживания НП; новое знание можно вложить только в процессе задания запроса на выполнение определенных (глобальных или емких) операций, допустимых средствами НП. Знания, заложенные в программы обслуживания НП, ограничивают возможности решения только одного класса проблем. Необходимо иметь в виду, что такие знания могут быть противоречивыми. В связи со сказанным можно говорить о том, что НП - это программирование с определенным уровнем интеллекта, имеющее вполне определенную меру интеллектуальности. ИП сохраняет за собой все преимущества интеллектуального взаимодействия в системе человек-ВМ. Заметим, что ИП может иметь в качестве составной части дополнительные средства НП, используемые в процессе настройки программ.

Повсеместное внедрение персональных профессиональных ВМ, оснащенных видеотерминалами, и создание общедоступных программных продуктов позволяют сформулировать новое направление в информатике. Оно базируется на вводе в память ВМ не символьной информации, может быть лучше сказать нетекстовой информации, а картинок, графики, рисунков, через пиктограммы и произвольные символьные наборы, не выражающие содержательного текста естественного, профессионального языка. Ввод такой информации (если это не является развлечением, игрой) обязательно вызывает работу ВМ по некоторым программам, использующим части вводимых данных в качестве исходных, а части - в качестве средств управления этими программами. Подобная деятельность называется нами наглядным или визуальным программированием.

Наглядное программирование (как процесс) расчленяется на этапы:

- идентификация данных в процессе обзора возможностей программы;

- выбор работы и ее инициализация;

- скрытая от пользователя интерпретация данных;

- автоматическое формирование макроопераций или макрокоманд;

- выполнение программы или заказанных пользователем операций.

Каждый этап может повторяться многократно до завершения всех работ или принудительного выхода из программы. Процесс программирования понимается как выбранная пользователем последовательность указанных этапов, инициируемая нажатием клавиш (мыши или клавиатуры) до получения искомого результата.

Виды НП известны и соответствуют каждому органу чувств человека. Поскольку НП внешне конкурирует с ИП необходимо вкратце напомнить о видах НП и водоразделе этих двух сортов. Считается, что их пять (может быть и больше), им соответствует пять сортов программирования, которые перечислены ниже.

1. Визуальное программирование (ВИП, см. например [Бродская81]), которое в связи с развитием средств визуализации классифицируется подробнее. Классификация дана ниже.

2. Аудиопрограммирование (АУП) [Речевая79, Фланаган68, Шиндлер89] постепенно внедряется средств звукового взаимодействия с ВМ. АУП возникло в связи с развитием средств СВТ восприятия и синтеза речи человека. АУП относится к НП, так как инициализация программ или подпрограмм реализуется звуком аналогично инициализации программ клавишами или пиктограммами. Каждое слово или каждый звук заменяет нажатие клавишей, число которых становится значительным по числу и по сравнению с числом клавиш на клавиатуре. Сущность АУП состоит в выборе программного пути в зависимости от звуковых сигналов и получение результата в форме звуковых сигналов.

3. Осязательное программирование (ОСП) [Моль75] можно пока отнести к фантастическому сорту программирования из-за слабого развития сенсорных средств восприятия информации. Отчасти можно говорить об ОСП в случае работы программ от прикосновения пальцем поверхности экрана дисплея. Сущность осязательного программирования объяснить можно так же как и АУП, если заменить понятие звука на понятие осязание. Например, может ли понимать некоторое устройство ласки или удары.

4. Обонятельное программирование (ОБП) также фантастично как и ОСП, хотя можно представить устройство для обнаружения следов по аналогии с использованием собак (при этом можно предусмотреть резкое изменение запахов, от поиска которых устраняется собака). В последнее время появились средства обнаружения веществ по запаху, которые еще соединены с ВМ для массового использования.

5. Вкусовое программирование (ВКП) структурно аналогично ОБП является более фантастичным. Можно представить себе некоторое устройство для дегустации напитков подобно тому как это делает дегустатор. Соединенной с ВМ такое устройство определит рождение ВКП.

К перечисленному можно добавить моделирование гравитационного чувства человека, интуицию и др. Из перечисленных сортов НП уделим некоторое внимание ВИП, поскольку оно поддержано новыми средствами вычислительной техники. К визуальному относятся следующие классы процессов составления программ.

1. Геометрическое программирование (ГЕП) [Роджерс89] использует образы или образцы геометрических фигур для конструирования новых фигур и создания документации по результатам конструирования. ГЕП характеризуется операциями манипулирования фигурами либо через клавиши, либо пиктограммами, либо через сенсорные датчики. Задание машине также может передаваться клавишами или с помощью меню. ГЕП изучается в графической информатике.

2. Графовое программирование (ГРП) [Красилов73] является наиболее распространенным среди системных программистов. Технология графового программирования состоит из формирования некоторого графа, его нагрузки по дугам или вершинам и ввода информации о таком графе в память ВМ [Красилов78]. Граф способствует наглядному выражению потоков данных и управления. ГРП успешно заменяет текстовую запись программ графовой в форме, например, Р-схем Вельбицкого.

3. Графическое программирование (ГФП) [Райан89] связано с представлением заданий ВМ в форме рисунков или графиков, которые подлежат обработке. Вызов необходимых для обработки программ аналогичен работе непрограммиста в ГЕП и графической информатике.

4. Пиктографическое программирование (ПИП) является частным случаем ГФП и применяется пока только вместо программирования через меню. Направлению ПИП уделяется мало внимания из-за сложности создания пиктограмм. Возможно ГФП будет способствовать развитию ПИП, которое по существу состоит в замене клавиш малыми рисунками и манипулирование ими аналогично клавишам. Результаты ПИП могут быть самыми разнообразными.

5. Программирование через меню (МЕП) [Денинг84] известно более всего как метод построения иерархии работ и подработ для все более точной квалификации необходимой непрограммисту конкретной проблемы. В Интеллсист этот вид программирования используется для сокрытия ФЯ Лейбниц. МЕП описывается языком меню, о котором говорилось в т.2.

6. Табличное программирование (ТАП) [Хамбли76] связано прежде всего с табличным способом представления алгоритмов, которые содержат большое число альтернативных действий и условия их выбора. Решение частной проблемы связано с посылкой непрограммистом системе логической информации, выражающей свойства данных, действий или целей получения результата.

7. Раскрывающее программирование (РАП) является в некотором смысле новым стилистическим подходом к использованию машинных ресурсов. РАП является противоположностью метода Парнаса скрытия информации. Пользователь представляет свое задание ВМ общей целью, которую в дальнейшем раскрывает до деталей. Например, общая блок-схема рассматривается как совокупность блоков для выполнения вложенных блок-схем. Этот процесс заканчивается вслед за окончательной детализацией самого внутреннего блока всей схемы. В отличие от структурного программирования за дисплеем выполняются все блок-схемы, их раскрытие осуществляет программная система. Некоторый этап раскрытия может оказаться конечным без дальнейшего уточнения.

8. Комбинация перечисленных выше видов программирования (КОП). В действительности почти каждая программа строится на базе самых разнообразных видов, приемов и методов с использованием различных стилей программирования и направлений информатики. Поэтому предыдущие семь сортов только вычленяют сущность использования ВМ непрограммистом, а фактическая работа может осуществляться средствами всех направлений.

Все большим спросом начинает пользоваться АУП, но оно же является наименее продвинутым вперед. АУП подразделяется на: командное, или передачу заданий ВМ в форме речевых команд на выполнение определенных действий, разговорное или ведение диалога с ВМ с помощью речи на ЕЯ, мелодичное или передача машине информации средствами музыки и др. Даже постановка проблем АУП в настоящее время весьма затруднительна. Но это же является и весьма привлекательным для информатики обстоятельством. Имеется надежда на теорию веры, которая рассматривает самые разнообразные утверждения и выводит новое знание так, что пользователь должен сам принять решение о правильности итоговых утверждений. ИЛ занимается поиском истины и позволяет выводить новые факты при условии, что исходное утверждение является истинным. Некоторый подход изложен в т.7.

1.3.2. Языковое программирование. ЯП явилось первым направлением в информатике, поскольку общение с ВМ возможно только на некотором языке. Вначале общение реализовывалось на языке машины, затем зародились тысячи ФЯ для описания данных и программ, наконец, стала актуальной проблема общения с ВМ на языке, близком к естественному. Итак, ЯП подразумевает такие виды: литературное программирование (Дейкстра), программирование на ЯПП (Интеллсист), программирование на ФЯ [Мейер82], функциональное программирование [Хювенен90]. Этот перечень не завершен, он исторически будет непрерывно развиваться. Некоторые из указанных видов программирования рассмотрим подробнее.

1.3.3. Концептуальное программирование. КП – это создание описаний понятий для выражения смысла и формы конкретной проблемы, по которым автоматически синтезируются программы [Тыугу84]. В данном случае набор логических формул определяет последовательность операций или композицию операций, что определяет последовательность действий при формировании требуемого предмета. КП ближе всего продвинуто в сторону интеллектуализации и к ИП.

КП включает такой сорт программирования как недавно появившееся объектно-ориентированное программирование (ООП). Современное его состояние отражает главным образом АП (см. п.6). Это легко объяснить тем обстоятельством, что ООП родилось в недрах АП. В связи с этим сложно выделить четкие границы ООП и АП, мы более не будем уделять внимания этому сорту программирования. КП призвано обслуживать информатические науки.

КП способствует быстрому освоению проектирования и разработки больших комплексных текстовых или программных систем. Для успешного применения такого сорта программирования необходим инструментарий. Он представлен в Интеллсист в форме спецификаций предметной и проблемной областей. Можно также обратить внимание на список литературы для определения распространенности КП вообще и программирования в спецификациях, в частности.

1.3.4. Повторное использование программ. ПИ представляется как тиражирование, адаптация, настройка, компиляция и генерация программ на основе имеющихся в библиотеках программных модулей и проектов программ. ПИ призвано обслуживать главным образом искусствознание. Наибольшее применение ПИ получило при создании пакетов прикладных программ.

Повторное использование программ или программных проектов (английское слово reuse - повторное использование программ - можно транскрибировать как риюз, см. подробнее в [Красилов91а] и в гл.3) возникло в результате анализа программ и программных библиотек, поиска путей повышения эффективности инженерного труда программистов. Поиски в этом направлении привели прежде всего к анализу уже используемых методов: контрольный повторный прогон программы, запуск вариантов решения задачи, использование программы с другими процедурами методического характера, повторная компиляция, массовое использование пакетов прикладных программ, ПИ проектов, требований, целей и др. Эти методы позволили точнее сформулировать подход к повторному использованию программ.

Главная проблема, которая возникает в риюзе, состоит в том, чтобы найти методы, встраиваемые в методы программирования и обеспечивающие поддержку реализации риюза. Например, риюз поддерживается, если при разработки программы максимально используются уровни абстракции, методы структурируемости текстов данных и программ, осуществляется систематическое применение завершенной сквозной технологии программирования, используется строгая иерархичность работ и т.п. Важно также обнаружить инвариантные части процессов проектирования, разработки и сопровождения программ. Например, инвариантами являются жизненный цикл программного обеспечения, методы аналогий, прототипирования и др.

Для реализации риюза применяется программный и методологический инструментарий. Приемы, используемые при этом, можно охарактеризовать такими примерами как визуализация, документирование, информирование, анализ и критика разработок, система подсказок, обучение пользователя, объяснение работы программы, возможность доконструирования программ и т.п. Этим перечнем нельзя ограничиваться, он может использоваться только в самом начале развития метода риюза. Риюз в будущем программировании выступает как новое эффективное направление в информатике, указывающее новый род деятельности инженера по программированию и знаниеведа.

1.3.5. Логическое программирование. Современное программирование 80-90-х годов характеризуется широким внедрением логических методов и языков в информатику [Кларк87, Логическое88, Логический90, Логический98, Хоггер88]. Они ближе к непрограммисту нежели процедурные методы, поскольку все рассуждения человека являются логическими моделями действительности. А внедрение языка Пролог обеспечило основы для прямого использования логических зависимостей в решении проблем с помощью ВМ [Братко90, Доорс90, Кларк87, Клоксин87, Набебин96, Стерлинг90, Язык88].

ЛП представляет собой совокупность способов и приемов формализации знаний о проблеме, постановке заданий на базе языка исчисления высказываний и предикатов с последующим автоматическим выводом и решением исходной проблемы [Красилов87б, 88в, Непейвода82]. ЛП подразумевает формирование спецификации проблемы в виде логической формулы с кванторами всеобщности и существования для знаний о предметной области А(Х) и запроса В(Х,У), которые можно представить так: Для известной величины Х из области, описываемой логически как А(Х), найти У такое, чтобы удовлетворялось логическое соотношение В(Х,У). Это высказывание достаточно просто переводится на ФЯ и может быть представлено следующим выражением - для всякого Х (А(Х) => существует У В(Х,У)).

ЛП связано с формированием логических формул А(Х) и В(Х,У) средствами некоторого языка, близкого непрограммисту, и автоматическим логическим выводом алгоритма У := F(Х) такого, что: для всякого Х (А(Х) => В(Х,F(Х))) - теорема в интуиционистской логике. Здесь весьма важно иметь в виду, что у алгоритма могут быть альтернативы. Это обстоятельство вытекает из свойств квантора существует. Решение задачи синтеза алгоритма по спецификации задачи может состоять из набора альтернативных алгоритмов. В АП это обстоятельство предусматривается, если постановка задачи исследована математически и установлено число выводимых алгоритмов (или результатов решения задачи). Интеллсист должна учитывать возможность наличия альтернативных решений без предварительных исследований. В этом одно из главных различий АП и Интеллсист.

Из сказанного выше ясно, что имеется по крайней мере два сорта ЛП, которые можно именовать автоматическим синтезом алгоритмов и созданием Пролог-программ для вывода результата по БЗ о фактах и утверждениях о фактах по правилам вывода. Сравнительная молодость ЛП говорит за то, что в скором времени могут появиться новые сорта ЛП. В частности новым является подход к решению задач с помощью Интеллсист и ИЛ, на которой базируется логический вывод решения.

1.3.6. Алгоритмическое программирование. Это направление в информатике является наиболее проработанным и оснащенным самыми различными методами и технологиями. В связи с таким обстоятельством можно здесь ограничиться только некоторыми замечаниями. АП (как направление) классифицируется по сортам для построения которых мы укажем лишь критерии классификации. Конечно главным критерием выделения сорта программирования является конкретный язык программирования. Он задает все возможности использования ВМ, которые контролируются формальным описанием и реализацией системы программирования. Например, Фортран определяет сорт программирования, который отличается от программирования на языке Ада.

Сорт программирования может определяться используемым методом программирования. Этот критерий классификации также важен для характеристики всех процессов создания программ и документации на программы. Построить такую классификацию просто, если известны методы программирования. Например, язык Ада формализует более 50 методов [Красилов83а, 88б], каждый из них определяет сорт процесса создания программы.

В АП каждая новая проблема (каждое новое задание) требует нового программирования, программа пишется заново для каждой задачи. Можно рассматривать проблемы повторного использования программ, или построение модификаций программ, или реализацию их версий или редакций. Но каждый раз перепрограммирование или допрограммирование так или иначе связано с процессами построения программ, цена которых является достаточно высокой (по крайней мере выше, чем цена новой аналогичной разработки). В ИП логически программируется класс проблем (БЗ), а каждая новая проблема требует формулировки нового запроса, что значительно проще построения новой программы и не требует знания ФЯ. Конечно, методы ПИ частично спасают дело построения новой программы. Однако, в конечном счете построение конечного программного комплекса приводит к частичной или даже полной работе с программой. Здесь может быть обнаружена конкуренция ИП и ПИ, которая разрешается в пользу ИП.

Программа обладает свойствами тонкой структуры алгоритмического знания. Это означает то, что незначительные изменения в программе могут привести к большой ошибке, устранение которой может потребовать большой работы. Достаточно сказать, что устранение ошибки на этапе сопровождения программы дороже устранения ее на этапе проектирования в 200 раз. ИП значительно устойчивее относительно изменения знаний или их исправления для уточнения. Это соотношение важно для реализации эффективного сопровождения программного продукта. Достаточно сказать, что ошибки в ИП устраняются на этапе проектирования знаний и запроса.

АП характеризуется большим числом формальных или формализованных методов, они весьма разнообразны и не содержат единого подхода. И как следствие этого - большие потери интеллектуальных сил при использовании методов программирования. ИП сопровождается большим числом методов извлечения знаний для решения класса проблем. Однако все они единообразны с точки зрения объекта обработки и средства представления объекта (знания).

АП использует императивные языки для представления алгоритмических знаний, в то время как ИП использует декларативные языки, которые ближе к ЕЯ общения людей. Императивные языки имеют глубокую специфичность и с трудом сводятся к декларативным языкам. Специфичность императивных языков связана с деятельностью только некоторых специальностей, а применение ВМ связано или должно быть связано со всеми специальностями. Императивные языки характеризуются жесткостью понятий, а декларативные - их мягкостью.

Каждая программа по методологии АП в результате выполнения поставляет одно решение, которое было заложено в эту программу. Это одно решение может оказаться по смыслу неправильным, поскольку задача может иметь несколько решений исходной проблемы, а полученное единственное решение может оказаться не искомым. ИП и Интеллсист поставляют все решения исходной проблемы. Это важное обстоятельство при принятии решений на основе машинного решения проблемы.

Эффективность АП зависит от языка представления программ или метода решения исходной проблемы. Эффективность ИП зависит целиком от совокупности знаний, заложенных в базу (повышение эффективности связано с введением дополнительных знаний). Конечно же АП может подразделяться на сорта по критерию используемого оборудования, которое характеризуется объемами памяти, быстродействием и логическими возможностями. От конкретных значений характеристик оборудования зависит стиль или сорт программирования, сама организация процессов использования ВМ и программы подготовки специалистов по программированию.

1.3.7. Интеллектуальное программирование. Сущность ИП указана выше, а также определены некоторые его преимущества по сравнению с АП. К этому надо добавить, что классификация Интеллсист подробно описана в [Красилов91б, 91в] и что ИП ориентирована на создание программ без ФЯ и программистов. В этих статьях строится семимерное пространство ИП (см. также том 7) для того, чтобы наглядно установить равносильность ИП и АП с точки зрения конечных возможностей использования ВМ. Можно высказать оптимизм относительно возможностей ИП: они намного шире возможностей АП. Простое объяснение кроется в том, что ИП рассматривает все виды знаний и их представления, способы представления заданий на обработку информации максимально приближены к пользователю, к его профессиональному языку. Программированием каждый человек занимается давно. Достаточно указать на примеры: лекция или доклад программирует слушателя на решение задач, обзор которых дан в лекции или докладе.

В самом общем виде спецификация проблемы может быть сформулирована на языке исчисления предикатов следующим образом: для известной величины Х и искомой величины У имеется логическая связь Р(Х,У). Каково бы ни было значение Х, найти значение У, удовлетворяющее этой логической связи. На ФЯ эта запись после автоматической трансляции примет следующий вид:

для всякого Х (существует У такой, что Р(Х, У)),

На ЯПП эта запись может выглядеть так: «для Х (найти У (Р(Х,У)))». Приведенная формальная запись проблемы и запись на ЯПП приводят к одинаковым результатам.

ИП состоит в сборе знаний, выраженных в спецификации логической формулой Р(Х,У) и в автоматическом решении логического уравнения, записанного в данной выше форме. Проблемами ИП в такой постановке являются: сбор знаний, формирование метода решения логического уравнения, уточнение знаний об условии Р и связанных с ним запросов пользователя. Важно здесь же отметить такое утверждение: попытка построения универсального решателя Саймона, основанного только на математической логике, является тупиковой (это уже было установлено и описано в литературе), необходимо строить Интеллсист (и инструментарий ИП), способную решать задания в силу переданных машине знаний. С человеком происходит что-то аналогичное: он может давать ответы или решать задачи только на по запросам (или вопросам), которые он может разрешить на основе имеющихся в его распоряжении знаний. Такой тезис едва ли может быть опровергнут практикой информатики. Можно дать классификацию спецификаций, которая вытекает из приведенной формулы. Это явится основой для классификации сортов ИП (сопоставление с классификацией Интеллсист по семимерному пространству [Красилов91в]). Можно представить Р, например так (см. статью Манна): Р := А(Х) => существует У (В(Х,У)) для проблем, решаемых продукционным программированием. Можно вместе с этим примером рассмотреть и другие формулировки Р. Многие задачи, например создание продукционных ЭС, используют эту форму для Р (см. [Уотермен89, Красилов90е]). Здесь сформулировано больше проблем нежели готовых рецептов для разрешения их методами ИП. Это довольно убедительно показывает на молодость этого направления информатики и представляет интерес для исследователя. Для изучения преимуществ ИП перед АП рассмотрены выше ряд пунктов сопоставления методов и средств этих направлений в информатике. Можно высказать оптимизм относительно возможностей ИП: они шире возможностей АП. Простое объяснение кроется в том, что ИП рассматривает все виды знаний и их представления, способы представления заданий на обработку информации максимально приближены к пользователю, к его профессиональному языку, а семимерное пространство классификации Интеллсист значительно шире пространства классификации АП.

Рассуждение первично,

реализация намеченного плана вторична.

Подумай, сделай, проверь.

А не наоборот. - Непейвода

1.4. Стили программирования

Современная информатика разработала значительное число стилей и сортов программирования. Каждый стиль или сорт более всего приспособлен для разработки информатической документации в определенной области деятельности человека.

Кроме данной выше (в разд. 1.3) классификации сортов программирования целесообразно рассмотреть другую классификацию, выделяющую стилевую сторону процесса. Стиль программирования определяется как общность образной системы процесса решения класса задач, средств выразительности алгоритмов и программ, творческих приемов их разработки, общность, обусловленная единством алгоритмического содержания класса проблем. Можно говорить о стиле отдельной программы, о стиле программиста, о стиле работы коллектива и о стиле целого направления в программировании. Ниже рассмотрим только часть классификации стилей программирования, которая во многом связана с приведенной классификацией.

1.4.1. Текстовый стиль программирования. Этим стиль используют все перечисленные сорта и виды программирования, так как они применяют только символы для записи данных, алгоритмов и программ. В частности ИП использует такой стиль.

1.4.2. Графовый стиль программирования. Средством для представления некоторых свойств программ является граф. Ранее обсуждались методы применения в программировании блок-схем для представления потоков данных, операций и управления. С появлением ВМ эти методы были первыми регулярными приемами построения программ. Также обсуждался метод программирования знаний с применением графов для представления текстов в БЗ семантическими сетями с операциями соединения и подчинения.

1.4.3. Литературный стиль программирования (ЛИП). ЛИП Дейкстры является обобщением структурного программирования для программистов, оно характеризуется использованием ЕЯ или языка профессиональной (деловой) прозы для написания суперпозиций из операций подстановки. В данном сорте программирования реализуется смыкание описания алгоритма и формальных средств его передачи ВМ. ЛИП на ЯПП необходимо прежде всего для передачи машине знаний экспертов (см. [Красилов00в]) в Интеллсист в поддержку метода аксиоматического программирования. ЛИП на ФЯ известно [Броуди90, Вегнер83, Вирт77б, Дал69, Дейкало84, Доорс90, Красилов67, Маурер80, Пратт79, Универс68] более всего программистам. Это их профессиональный язык общения с ВМ. В связи с этим обстоятельством (более всего программистская литературы представляет именно этот сорт использования ВМ). Несмотря на широкое распространение ЯП можно обнаружить, что имеется значительный потенциал такого направления в информатике. Рано делать утверждение, что использование естественных или искусственных языков исчерпало свои возможности за 50-летнее существование ВМ.

1.4.4. Сценарное программирование (СЦП). СЦП является довольно молодой областью деятельности системного и пользовательского программирования. Пример языка сценариев рассмотрен в [Красилов86]. Он ориентирован на написание технических пьес для взаимодействия с ВМ в сети с помощью реплик с обеих сторон. Язык Пьеса не был реализован, разработка завершилась на стадии разработки проекта системы автоматизации программирования диалога. Несмотря на широкое распространение ЯП можно обнаружить, что имеется значительный потенциал такого направления в информатике.

1.4.5. Функциональное программирование (ФУП). ФУП [Хендерсон83] основано на языках типа языка Лисп. Этот сорт программирования развивался в сторону применения методов программирования на аналоговых вычислительных машинах (каждый блок выполняется на основе цифровой аппаратуры) и методов программирования операций обработки потоков данных, который управляет операционными блоками. Цифровое моделирование аналоговой вычислительной техники использует преимущества быстродействия аналоговой техники и продуктивное использование памяти цифровой техники для увеличения гибкости программ и быстродействия обработки информации. Программирование, относящееся к ФУП, имеет свои черты и требует навыков в работе. Написание программ обработки возможно только при использовании смысловых сетей представления данных и функциональных программ. Потоковый метод программирования обработки данных предполагает написание программ в форме композиции функциональных символов, определяющей последовательное выполнения отдельных функций (арифметики, математического анализа и др.), а поток данных поставляет значения конкретных аргументов этих функций. Функциональная машина предполагает устройство (программное, аппаратное или программно-аппаратное), именуемое монитором, которое инициирует отдельные функциональные блоки в зависимости от свойств потока данных. Функциональная программа определяет конкретные действия монитора.

1.4.6. Другие стили программирования. Все большим спросом начинает пользоваться АУП, но оно же является наименее продвинутым вперед. АУП подразделяется на: командное (передача заданий ВМ в форме речевых команд на выполнение определенных действий), разговорное (ведение диалога с ВМ с помощью речи на языке профессиональной прозы), мелодичное (передача машине информации средствами музыки) и др. Даже постановка проблем АУП в настоящее время весьма затруднительна. Но это же является и весьма привлекательным для информатики обстоятельством.

Имеется еще значительное число стилей, сортов и видов программирования. В качестве примеров можно указать на эвристическое и генологическое программирование (системы как средства преодоления феноменологических ограничений), библиотечное или пакетное программирование. В последнее время изобретаются стили программирования, которые ориентированы и применяются в определенных областях знаний. Составление различных планов также является важным стилем программирования. Можно подытожить такие рассуждения следующим утверждением: важную и неоспоримую роль играло и играет алгоритмическое знание, его возможности не будут исчерпаны никогда.

1.5. Стиль и технология в информатике

Информатика определяется как технология анализа имеющегося знания и синтеза нового знания на основе известного. Такая формулировка является общей и вытекающей из определения информатики. Однако, информатика является также и прежде всего деятельностью по выработке нового знания с помощью ВМ, деятельностью, которая предполагает технические и технологические процессы обработки знания. Разнообразие процессов предполагает широкий спектр стилей и конкретных технологий. Поскольку технология обработки знаний происходит из технологии программирования [Красилов86а], следует считать, что стили и технологии в информатике аналогичны известным в программировании технологиям (и стилям). Более того, технологии и стили в информатике происходят и аналогичны технологиям и стилям в любой науке и в любой деятельности, поскольку каждая наука и деятельность занимаются добычей нового знания.

Прежде всего стиль в информатике основан на рассудительности, образности в обработке знаний с применением творческих приемов, обусловленности и единстве определения информатики и ее содержания и выразительности ЕЯ. О каждом методе информатики можно говорить как стилевом, если он применяется точно и регулярно. Стиль нельзя отождествлять с методом. Только сущность применения метода формирует стиль. Стиль можно отнести к отдельному человеку, решающему задачи.

Рассудительность лежит в основе представления знаний, ЯПП является прежде всего рассудительным языком. Его командная часть незначительна, поскольку записи алгоритмов требует малого числа примитивов: соединение выражений, метки выражений и перехода по метке. Остальные конструкции (цикл или условный оператор) являются «следствием» кванторных выражений («для всякого» и «найти»). Представление знаний органически требует определенного стиля во всех работах со знаниями: поиск, отбор, ввод в память ВМ, отладка и анализ результатов логического вывода.

Образность в обработке знаний также обязательна, поскольку нет знаний вообще, они всегда связаны с реальными или воображаемыми предметами, явлениями или процессами, а представление знаний является их образом. В обработке знаний всегда участвует творческое начало. Уже поиск следующего шага в обработке требует изобретательности. С другой стороны, малейший шаг для отклонения от правила или метода обработки приводит к появлению ошибок. Разрешение такого противоречия и создает творческое начало.

Выразительность ЕЯ, который воплощен в ЯПП, переносит еще одну стилевую характеристику в информатику. Каждый ЯПП формирует стиль в общении с Интеллсист. Стиль играет большую роль в представлении знаний.

1.6. Искусство в технологии обработки знаний

Указанные в заглавии два понятия достаточно тесно переплетаются. Искусство связано с умением применять методы обработки знаний так, чтобы получить эффект от их применения. Поскольку эффективность применения того или иного метода заведомо неизвестна, то необходимо обладать некоторым искусством для выбора метода. На рынке компьютерной литературы существует множество книг, предназначенных для обучения основным алгоритмам, используемых при программировании. Они в значительной степени конкурируют между собой. Особой книгой следует считать [Кнут00] - трехтомник, который стоит вне всякой конкуренции, входит в золотой фонд мировой литературы по информатике и является настольной книгой практически для всех, кто связан с программированием. Она предназначена для обучения «искусству» программирования и предлагает массу рецептов усовершенствования программ.

Вот несколько цитат из указанного трехтомника с незначительными перефразировками. Процесс обработки знания - это очень увлекательное занятие. И дело не только в том, что оно оправдывает себя с экономической и научной точек зрения; оно может вызвать также эстетические переживания, подобные тем, которые испытывают творческие личности при написании музыки или стихов. Цель книги - дать читателю разнообразные знания и умения, из которых и состоит ремесло программиста. Этот трехтомник предназначен для всех, кто серьезно интересуется компьютерами, а не только для профессионалов. В сущности, одна из главных целей состояла в том, чтобы сделать методы программирования более доступными для специалистов из других областей. Как правило, эти специалисты получают большие преимущества, используя компьютеры, но не могут позволить себе тратить время на поиски необходимой информации, крупицы которой разбросаны по множеству технических журналов.

Всякое искусство предполагает знание самых простых методов, таких как организация циклов (повторное выполнение некоторого набора команд), а также использование подпрограмм и переменных с индексами, знание распространенных компьютерных терминов, например «память», «регистры», «биты», «плавающая точка», «переполнение», «программное обеспечение»; большинство терминов, которые не определены в тексте, поясняются в алфавитном указателе в конце каждого тома. (Этим завершено неявное «цитирование».) Выбор метода связан с выбором языка представления знаний и запросов на решение задачи.

Генетические алгоритмы. Скажем, если нам надо выбрать совокупность фиксированного числа параметров рынка, наиболее выражено влияющих на его динамику, это будет набор имен этих параметров. Об этом наборе можно говорить как о совокупности хромосом, определяющих качества индивида - данного решения поставленной задачи. Значения параметров, определяющих решение, будут тогда называться генами. Поиск оптимального решения при этом похож на эволюцию популяции индивидов, представленных их наборами хромосом. В этой эволюции действуют три механизма: во-первых, отбор сильнейших - наборов хромосом, которым соответствуют наиболее оптимальные решения; во-вторых, скрещивание - производство новых индивидов при помощи смешивания хромосомных наборов отобранных индивидов; и, в-третьих, мутации - случайные изменения генов у некоторых индивидов популяции. В результате смены поколений в конце концов вырабатывается такое решение поставленной задачи, которое уже не может быть далее улучшено.

С точки зрения нашего анализа генетические алгоритмы имеют два слабых места. Во-первых, сама постановка задачи в их терминах не дает возможности проанализировать статистическую значимость получаемого с их помощью решения и, во-вторых, эффективно сформулировать задачу, определить критерий отбора хромосом под силу только специалисту. В силу этих факторов сегодня генетические алгоритмы надо рассматривать скорее как инструмент научного исследования, чем как средство анализа данных для практического применения в бизнесе и финансах. Сейчас в России доступен только один продукт этого типа - система GeneHunter фирмы Ward Systems Group. Его стоимость - около 1000 долл.

Эволюционное программирование. Сегодня это самая молодая и наиболее перспективная ветвь data mining, реализованная, в частности, в системе PolyAnalyst. Суть метода в том, что гипотезы о виде зависимости целевой переменной от других переменных формулируются системой в виде программ на некотором внутреннем языке программирования. Если это универсальный язык, то теоретически на нем можно выразить зависимость любого вида. Процесс построения этих программ строится как эволюция в мире программ (этим метод немного похож на генетические алгоритмы). Когда система находит программу, достаточно точно выражающую искомую зависимость, она начинает вносить в нее небольшие модификации и отбирает среди построенных таким образом дочерних программ те, которые повышают точность. Таким образом система «выращивает» несколько генетических линий программ, которые конкурируют между собой в точности выражения искомой зависимости. Специальный транслирующий модуль системы PolyAnalyst переводит найденные зависимости с внутреннего языка системы на понятный пользователю язык (математические формулы, таблицы и пр.), делая их легкодоступными. Для того чтобы сделать полученные результаты еще понятнее для пользователя-нематематика, имеется богатый арсенал разнообразных средств визуализации обнаруживаемых зависимостей. Для контроля статистической значимости выводимых зависимостей применяется набор современных методов, например рандомизированное тестирование. Все эти меры приводят к тому, что PolyAnalyst показывает в задачах анализа российских финансовых рынков весьма высокие показатели.

1.7. Интеллект в информатике

Интеллект символов, текстов, программ, графики и картинок известен всем. Он определяется многими факторами, среди которых отметим семь, относя их более всего к программам и знаниям вообще. Факторы интеллекта квалифицируются как номинации, поскольку отсутствуют точные количественные оценки для подсчета конечного рейтинга интеллекта исследуемого объекта. Так обычно поступают и при оценке деятельности или выступления человека. Интеллектуальность разработанной человеком программы оценивается по следующим семи номинациям:

1. наглядность или внешняя интеллектуальность,

2. осмысленность или внутренняя интеллектуальность, оснащенность языками,

3. концептуальность или базовые основы программного комплекса,

4. использование БД, взаимосвязь данных, их целостность и защищенность,

5. наличие логического вывода или вывод ответов на запросы пользователей,

6. программная пригодность или настраиваемость и адаптируемость программы,

7. системная пригодность или общественная жизнь программного комплекса.

Каждая номинация расшифровывается чуть подробнее в т.7..Главный вывод, который можно заключить из подробных обсуждений состоит в том, что Интеллсист является наиболее интеллектуальной по сравнению с имеющимися программами ИИ. Инструментарий ИП будет непрерывно улучшаться в смысле интеллектуальности по мере развития его версий, по завершении временно замороженных работ и подработ.

Интеллект в информатике является главным атрибутом любой программы, поскольку она ориентирована на прямого пользователя. Интеллект в информатике будет развиваться по мере развития средств СВТ. Чем более работа программы приравнивается к поведению и деятельности человека, тем выше программа будет оцениваться положительно и квалифицировано по всем факторам и номинациям интеллектуальности.

Глава 2. Инженерия знаний (знаниеведение)

Прежде всего (первое) перед каждым пользователем стоят цели решения задач или заданий информатическими средствами. Каждая работа, связанная с достижением такой цели, требует знаний и умений. Второе - каждое задание может относиться к одному из классов заданий. Их классификация может быть осуществлена по различным признакам, например так, как сделано ранее. Здесь принято рассматривать семь видов знаний, семь классов задач и семь координат классификационного пространства Интеллсист. Обработкой знаний занимаются все. ВМ используется для ускорения процессов обработки знаний. Любая обработка основана на знаниях. Отсюда следует, что важным делом информатики является знание о знании. Практическая часть информатики состоит в создании автоматизированных или автоматических методов обработки знаний. Всякая деятельность в этом направлении именуется в информатике инженерией знания. В главе рассматриваются начальные основы инженерии знаний. В т.7 кратко рассматриваются проблемы знаниелогии.

Деятельность человека в информатике в помощь прямому пользователю ВМ именуется знаниеведением. Роль и деятельность знаниеведа рассматривается также в т.7. Здесь же создаются предпосылки для подхода к описанию такой деятельности.

2.1. Отладка знаний

Отладка знаний являет новую парадигму в информатике. ЭС во многом проигрывает только из-за того, что в таких системах отсутствуют средства отладки знаний. Доверие к ЭС в последнее время резко упало. Как только знаниеориентированная система приобретет свойства автоматического обнаружения ошибок в представлениях знаний, она будет популярна в применениях. Интеллсист обладает такими свойствами. Вначале рассмотрим понятие отладки знаний.

Источники ошибок бывают самые разнообразные. Причины большинства ошибок известны. Примерами причин появления ошибок могут быть такие: пропуск или подмена знаков, описки, которые чаще всего бывают случайными, теоретические «заблуждения», разрушения или искажения представлений знания, порождение новых ошибок при неправильном исправлении ранее обнаруженных ошибок.

Поиск, локализация, квалификация и исправление ошибок в представлениях знаний всегда были важной работой, она определяет процедуру отладки знаний. Обычно выделяют ошибки следующих 13 классов: 8 классов учитываются во многих программных системах (к ним относятся синтаксические, лингвистические, концептуальные, семантические, прагматические, формульные, системные и предметные), новыми для автоматизации являются 5 классов ошибок (к ним относятся смысловые, локальные противоречия, глобальные противоречия, независимость и полнота знаний). Чтобы знания были осмысливаемы, необходимо обнаруживать смысловые ошибки, вызванные нарушением правил СеГ или СиГ. Каждый человек говорит истинами независимо от того, что само высказывание может содержать модальности или отдельные ложные утверждения. Например, истинными будут высказывания: «возможно пойдет дождь» или «он говорит неправду». Важно, чтобы в контексте БЗ или запроса были обнаружены противоречия. Локальные противоречия могут оказаться менее ответственными, они могут «подчищать» знания, реже они могут оказываться существенными, что потребует тщательного разбора всех сведений, которые рождают локальные противоречия. Самыми существенными являются глобальные противоречия. При их наличии разрешение запроса невозможно. Поиск противоречий является сложным делом. Поэтому надо иметь аппарат автоматического обнаружения противоречий. Независимость знаний, наличие явных или завуалированных «повторов» частей текстов, должна обеспечить сокращение знакового и текстового объема знаний. Исключение избыточности в текстах не менее важно, чем обнаружение других классов ошибок, оно также должно быть автоматическим. Зависимость знаний более всего характеризует их источник. Наконец, обнаружение полноты знаний является важным для гарантии получения окончательных результатов, состоящих из новых фактов.

Смысловые ошибки во многом аналогичны синтаксическим, лингвистическим, концептуальным, семантическим, прагматическим и формульным ошибкам в совокупности. Отличия состоят в том, что правила формирования текстов знаний и запросов не фиксированы, они определяются самими записями знаний и запросов. По технике автоматизации поиска смысловых ошибок имеется значительная, а иногда и полная, аналогия с перечисленными выше ошибками. Заметим, что первые 8 классов ошибок не рассматриваются подробно в силу их большой известности. О них кратко уже упоминалось ранее. По тем же причинам не рассматриваются и смысловые ошибки. Если текст правильно передает смысл, то в нем не содержатся смысловые ошибки. Результатом такой отладки знаний будет грамматически корректный текст с точки зрения правил СеГ.

Локальные противоречия выявляются тогда, когда часть текста противоречит части знаний в базе. Простой пример с локальным противоречием выглядит так: «я пойду в кино или в театр и одновременно я пойду в кино или не пойду в театр». В результате логического вывода получится ответ: «я пойду в кино». Локальные противоречия обнаруживаются в результате внутреннего логического анализа текстов, осуществляемого в процессе логического вывода при вводе знаний или при разрешении запроса. Практические примеры могут и не содержать такие простые и явные противоречия. При этом после логического вывода объем БЗ уменьшится. Для Интеллсист уменьшение объема БЗ будет сигналом для появления локального противоречия. Результатом такой отладки знаний будет «чистый» текст.

Глобальные противоречия выявляются тогда, когда вводимый абзац полностью противоречит знаниям из БЗ. В Интеллсист такие ошибки (хотя и редко) обнаружатся в результате обнуления размера БЗ. В результате Интеллсист выдаст сообщение о том, что результат ложен. Глобальные противоречия обнаруживаются при полном логическом анализе всех текстов, осуществляемого также в процессе логического вывода при вводе знаний или при разрешении запроса. Результатом такой отладки знаний будут получены корректная БЗ или корректный запрос.

Независимость знаний обнаруживается при наличии локальных или глобальных повторов в текстах по смыслу или при непосредственном совпадении фрагментов текста. Независимость знаний есть результат логического сопоставления смыслов двух предложений или абзацев. Результатом такой отладки знаний будет «очищенный» от явных или неявных повторов текст.

Полнота знания выявляется при разрешении запросов тогда, когда результат логического вывода не состоит из фактов, а из выражение, смысл которых не всегда ясен. Полнота знания выявляется после реализации логического вывода как результат применения метода решения логического уравнения. Знание в БЗ и запросе будет полным, если в результате получаются только альтернативы совместных новых фактов. При этом надо заметить, что получение единственного решения, а не альтернативных решений, характеризует знания как абсолютно полными. Получение альтернативных решений может оцениваться положительно. Все зависит от требований к заданию. В математике высоко ценится факт единственности решения. Здесь требуется абсолютная полнота. Практические задачи могут предполагать альтернативные ответы Интеллсист, так как выбор окончательного решения зависит от человека. Знание не полно, если в ответе содержатся утверждения о фактах. Такие результаты могут быть полезными при производстве аналитических выкладок и выявлении характеристик нового понятия. Такие результаты получаются на ранних стадиях проектирования. Наконец, такие результаты полезны при автоматическом создании программ. Полнота знаний выявится после ввода исходных данных и получения итоговых результатов счета по синтезированной программе.

Таким образом, под отладкой знаний понимаются процессы поиска, локализации, квалификации и исправления ошибок 13 классов. В этих процессах сложным является квалификация ошибки в условиях их автоматического обнаружения. Чаще всего Интеллсист помогает выполнению этих процессов. Первую обнаруживаемую ошибку следует исследовать сразу после обнаружения. Если пропустить первую ошибку, то последующие могут оказаться порожденными, идентификация которых будет почти невозможной. Ошибки следует разбирать непосредственно после ее появления.

Работа по отладке знаний относится к инженерии знаний. Она является весьма ответственной и выполняться в первую очередь. Процесс отладки знаний лучше всего осуществлять по мере накопления знаний. Автоматический поиск ошибок (даже незначительных) не требует больших затрат по времени. При этом необходимо помнить крылатую оценку, что позднее обнаружение ошибки или обнаружение их на этапах сопровождения знаний стоит в несколько сот раз дороже, чем обнаружение ошибок на этапах проектирования [Боэм85].

2.2. Этапы создания объекта

Здесь увеличивается число этапов создания любого объекта по сравнению с тем, что предлагается в монографии [Боэм85]. Имеются и другие предложения по членению процесса создания некоторого изделия на этапы. Хорошим критерием правильности членения процесса на этапы является равномерность распределения относительных затрат на выполнение этапа. Примерное распределение затрат на производство программного изделия по этапам представлено в таблице. Большие затраты на сопровождение связаны с внесением изменений из-за ошибок и развитием, маркетингом, рекламой и др.

Этап работ

Доля затрат в %

Проектирование программного изделия

10

Разработка программного изделия

40

Сопровождение программного изделия

50

В связи с внедрением ВМ доли затрат переливаются из нижних рядов таблицы в верхние.

Этап является средством постановки промежуточных целей для эффективного достижения общей цели создания изделия. ИП меняет состав этапов, они должны учитывать процессы формирования исходных идей. В обработках знаний необходимо рассматривать следующие этапы: изобретание, проектирование, разработка и сопровождение. Три этапа создания программного изделия расширяются до четырех этапов создания любого изделия. Всегда уделялось мало времени и материальных затрат на выработку идей и эксперименты в связи с новыми идеями. При создании материальных объектов изобретание связано с затратами, на которые трудно пойти. Если исследования идей ведется с помощью информатики, то затраты существенно сокращаются. Этот факт установлен после реализации первых программных моделей и проведения исследований с их помощью. Остальные этапы не вызывают сомнений. В современной информатике следует рассматривать новое разделение процессов обработки знаний с другими оценками долей затрат. Оно представлено в таблице.

Этап работ

Доля затрат в %

Изобретание изделия

10

Проектирование изделия

30

Разработка изделия

30

Сопровождение изделия

30

Затраты на разработку и сопровождение БЗ сокращается существенно, поскольку БЗ подвергаются всесторонней автоматической отладке. По сравнению с программами БЗ не является кодом, который требует больших затрат на поиск ошибок и модернизацию.

Совокупность этапов образует жизненный цикл изделия или объекта. Этапы могут подразделяться на составные части. Жизненный цикл любого изделия можно представить графически в виде зависимости числа изделий от времени его полного существования. Примеры таких графиков представлены ниже. Если конечным продуктом является знание, то к процессам разработки инструментария ИП, Интеллсист, БЗ или запросов следует применять членение жизненного цикла на четыре этапа.

Имеется общий закон вещей. Он состоит в том, что число каждой вещи изменяется в соответствии с графиками. Рассмотрим систему координат, вдоль оси абсцисс которой располагается масштаб времени (например, года), а вдоль оси ординат - количество данной вещи или числа потребителей (N). Вначале данной вещи не было. Некоторой дате соответствует N=0. Начинается развитие вещи: конечно, возникает идея о вещи, строятся экспериментальный образец (N=1) и опытное производство. Затем наступает бум (если имеется спрос на эту вещь): налаживается серийное производство и общее потребление. Вот здесь для N наблюдается экспоненциальный рост (в этом месте работает первый закон информатики, см. т.7, для каждой конкретной единицы измерения объема знаний). Средняя часть графика с названием «насыщение вещью» подразумевает общее потребление, осмысление вещи (или фактическая оценка ценности вещи) и появление новых идей. Значения N стабилизируются, начиная постепенное падение (уменьшение) значения N. Наконец, последняя часть графика

Рис. Жизненный цикл изделия.

(самая продолжительная по времени) именуется «старением» и включает последовательные шаги: падение спроса, переоценку вещи и появление музейного экспоната. В зависимости от назначения вещи «хвост» графика либо спадает до нуля, либо останавливается на уровне пропорциональности численности потребителей (со спадом за пределами графика). График 1 представляет появление идеи, которая не нашла своего воплощения в жизни, график 2 является характерным для подавляющего числа объектов, а график 3 - относится к объектам, которые не могут в обозримом будущем исчезнуть из употребления (к таким объектам относятся, например, ложки, посуда, одежда). Знание не является исторической вещью, поэтому спад объема знаний может быть только при замене одного способа хранения другим. Бум для знаний приводит к новым методам сжатия представлений знания. Знание особая вещь, его объем выражается в различные годы различными единицами. Развитие средств познания способствует смене единицы измерения такой «вещи» как знание.

2.3. Фазы процесса поиска нового знания

Теперь ограничимся такими изделиями как инструментарий ИП, Интеллсист, БЗ или запросы. Каждый этап имеет протяженность по времени и остается достаточно емким. Следуя рекомендациям работы [Боэм85] предлагается расчленить каждый этап на фазы, характеризующиеся однородной деятельностью разработчика. Фазами являются процессы, которые представлены ниже в таблице вместе с относительными затратами.

Фаза работ

Доля затрат в %

Планирование знаний и процессов обработки, выработка требований к представлениям знаний и данных.

10

Техническое проектирование процессов создания, разработки и сопровождения.

20

Выбор средств представления знаний и данных в виде, пригодным для ввода в Интеллсист.

50

Комплексирование всего материала из частей, отладка и испытание знаний.

20

Доля затрат по срокам и ресурсам труда - это часть общих затрат на данном этапе. Планирование изделий продуктивнее начинать с написания руководств пользователя, которые будут выполнять роль задания на разработку изделия и корректироваться после завершения работ по его созданию. На этой фазе вырабатываются качественные основы изделия. Техническое проектирование связано с выработкой количественных основ изделия. Следующая фаза, выбор средств, является довольно трудной, так как работы в ней связаны с проблемами формализации знаний по изложенным ранее канонам. Последняя фаза традиционна для всех методов применения ВМ.

2.4. Работы в процессе поиска нового знания

Каждая фаза подразделяется на конкретные работы. Работа связана с выполнением конкретной функции. Подразделение фазы на работы делается по прецеденту, который можно найти в [Боэм85]. Наименования работ в нижеследующей таблице несколько изменены, поскольку объектом разработки являются БЗ и запросы. Наименования работ в программировании даны через косую черту. В обобщенном виде их перечень дан в таблице вместе с относительной трудоемкостью каждой работы (через косую черту в двух строчках даны относительные затраты, характеризующие затраты в ИП и в программировании).

Наименование работ

Доля затрат в %

Анализ требований

18

Детальное проектирование

17

Запись текстов и данных / Программирование

10 / 20

Отладка знаний / Отладка программ

19 / 9

Верификация и подтверждение

12

Документирование

8

Управление качеством

5

Управление работами и проектом

11

Различие имеются только во второй и третьей строчках работ со знаниями и программами. Создание записей текстов затруднено из-за того, что на эту работу выпадает тяжесть формализации знаний, а уменьшение затрат на отладку обосновывается полной автоматизацией отладки знаний. Приведенные цифры являются приблизительными, они могут существенно зависеть от сложности задания.

Каждая работа представляет отдельную технологическую операцию. Необходимо заметить, что конкретная реализация технологии обработки знаний может состоять из работ-операций, которые могут отличаться от приведенных в таблице. Перечень работ является лишь образцом для подражания. Они сформулированы для деятельности в программировании на основе большого практического опыта, но малого практического опыта по обработке знаний.

2.5. Технологические операции

Вся совокупная деятельность по обработке знаний от задумки до получения результатов представляется последовательностью отдельных технологических операций. Если считать, что все операции применяются, то можно построить матрицу из 4 этапа * 4 фазы * 8 работ = 128 клеток таблицы операций. Полный или почти полный перечень работ относится к сложным проектам коллектива специалистов, решающим ответственные задачи. Простые задачи раскладываются на значительно меньшее число работ. Это может быть обосновано весьма малыми затратами на отдельные работы, которые могут объединяться. Например, некоторые фазы могут отождествиться с одной работой.

Создание программ - это довольно сложная деятельность, деятельность в ИП требует меньших затрат, но она не является менее сложной. Рассмотрение технологии решения конкретной задачи приводит к предварительному построению технологического маршрута. Для коллектива разработчиков обычно составляется сетевой график работ. При проектировании БЗ и запросов учитывается и используется накопленный человеческий опыт работы со знаниями.

2.6. Технологические маршруты

Вопросы технологического маршрута заимствованы из сферы материального производства. Маршрут зависит от задачи и имеющейся технологической оснастки (язык записи алгоритмов, данных, знаний и программ, средства автоматизации, инструментарий и др.). Однако полный набор реально выполняемых технологических операций не используется в конкретных проектах. Некоторые работы не выполняются вообще или они являются простыми, не претендующими на самостоятельность. Поэтому каждая конкретная последовательность операций образует конкретный технологический маршрут рассматриваемого проекта [Красилов88а].

Технологический маршрут поддерживает жизненный цикл знаний и запросов, он заимствуется из программирования, но существенно сокращается по объему. Жизненный цикл знаний и запроса оценивается временем от возникновения идей до снятия их с эксплуатации. Изучение цикла необходимо для:

  • оценки требуемых ресурсов и правильного их распределения,

  • прогноза и оценки материальных затрат,

  • организации управления разработками,

  • выбора методов разработки,

  • выбора методов повышения эффективности работ.

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

2.7. Обзор методов информатики

Можно считать верными три утверждения: программированием и знанями занимаются весьма с древних времен, программированием и знаниями занимаются всегда и в программировании и в поиске знаний участвуют все. Подтверждением тому являются факты: каждый составляет планы действий, числа и тексты пишут многие. В этом разделе рассмотрим некоторые известные методы программирования и добычи знаний для иллюстрации высказанных утверждений. Главные метода информатики рассматриваются в главах 4, 5, 6 и 7.

Простейшими примерами программирования являются совокупность приемов записи чисел и строк. Сложнее представляется программирование структур из чисел и строк (программирование здесь состоит в выборе символов или лексем и построении их последовательностей или списков). В качестве образцов рассмотрим далее методы информатики. Они предназначены для выполнения технологических операций. Том 6 посвящен главным образом обзору методов в информатике. Их огромное число. Но среди них можно выделить главные. Набор методов подразделяются в соответствии с этапами работ, которые обсуждены выше.

2.7.1. Методы проектирования данных в информатике. Применение ВМ в любой отрасли знания связано с вводом в память данных об объектах, их свойствах, исследованиях, вычислениях, наблюдениях и др. До реализации действий по вводу информации в ВМ необходимо определить, что понимается под данными. Определение этого понятия предшествует их использованию при выполнении программы ВМ.

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

Изложенное выше неформальное определение данных для изложения сущности, процессов и методов проектирования данных будет достаточным. Кратко проектирование данных можно определить следующим образом: совокупность синтаксически и семантически определенных способов записи, ввода, хранения и вывода данных, обеспечивающая работу программ или создание БД и БЗ, а также способов и приемов их описания, переводов из одного представления в другое, формирования внешних представлений и выработки атрибутов таких представлений, - все это называется методом проектирования данных.

О программировании данных написано много публикаций. В них описываются наиболее распространенные данные: числа, строки, символы, перечисления чисел, строк, символов, слов и терминов, структуры из чисел, строк, символов, слов и терминов [Язык88]. Данными со временем стали записи программ и формулы, поскольку они могут подвергаться любой переработке. Наконец, в последнее десятилетие получили свое развитие организованные совокупности данных, именуемые БД и БЗ. Таков не претендующий на полноту перечень разнообразных форм данных, используемых при программировании ВМ. Этот ассортимент существенно отличается от предлагаемого ранее в практике программирования и в литературе [Берзтисс60].

Основное назначение метода проектирования данных состоит в поддержании хорошего уровня обмена информацией в системе человек-ВМ с помощью различных терминальных устройств и линий связи. Ему должны соответствовать все требования, предъявляемые к способам представления данных. Наиболее привлекательным требованием является требование максимальной аналогии со средствами, имеющимися в ЕЯ. Однако то большое разнообразие в представлении данных, которое имеется в ЕЯ недопустимо из-за невозможности проведения контроля однозначности интерпретации при вводе данных в память ВМ. Поэтому практически чаще используются ЯПП или ФЯ, на которых каждый пользователь ВМ пишет программы и данные. В таких языках фиксируются способы представления данных, они поддаются автоматическому контролю.

Кажется, что концепция данных нам известна более всего. В записях программ и вне программ мы используем числа, тексты или случайные последовательности символов различной природы. По мере развития методов информатики становится ясным, что работа с данными таит в себе большое количество загадок. Данные постепенно начинают играть одинаковую роль с программами. Современные ЭС функционируют с БЗ, представление которых использует все средства информатики. В БЗ программы выполняют роль данных.

Проектирование алгоритмов и программ начинается с формирования исходных данных и результатов обработки этих данных. Эта процедура проста, если решается вычислительная проблема, процедура сложнее, если решается проблема составления БД, и процедура сложна в достаточной мере, если решается проблема формирования и обработки БЗ. Процесс формирования данных в соответствии с некоторым формализмом составляет программирование данных. Этот процесс должен начинать самые первые этапы использования ВМ. Проблемы программирования данных может не возникать, если создание программ опирается на заданный способ представления данных.

К представлениям данных любого вида предъявляются достаточно противоречивые требования. Это вызывается противоположными желаниями обеспечения эффективности программ обработки и наглядности представления данных о реальных предметах, явлениях и процессах, которые исследуются с помощью таких программ. В основе представления программ и данных для ВМ лежат форматность (ограниченный объем и позиционность представлений) и малая по количеству атрибутика (характеристика) представлений, в основе реального мира - бесформатность и широкое разнообразие атрибутов представлений. Указанные два признака вполне характеризуют противоречивость требований.

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

Информатика предлагает варьируемые классификации данных. Вариация целиком зависит от ФЯ, используемого для представления данных. Мы будем опираться на средства языка Ада [Джехани88]. Классификация данных в языке Ада является обобщающей и содержит всевозможные символьные представления данных. Хуже обстоит дело с последовательностями картинок. Трудно указать публикации с описаниями формальных методов для использования картинок.

Значительной сложностью обладают файловые структуры данных, которые предназначены для группового обмена данными между различными устройствами памяти ВМ. Файл - это поименная совокупность логических записей. Файлы описываются формально структурами (записями) и содержат поля с данными для алгоритмической обработки, для управления файлом и для контроля за процессами обработки данных файла и самого файла. Программы или программные подсистемы обслуживания файлов обычно являются частями операционной системы и используются с помощью средств языка управления данными [Джадд75, Информ75, Крамм89].

Также большой сложностью обладают структуры, которые предназначены для кодирования, хранения и переработки данных БЗ. Для их представления используются те же формальные основы, что и структуры данных. Но БЗ могут усложняться тем, что среди полей структуры могут содержаться поля со значениями атрибутов самих полей или самой структуры. Например, для представления фреймов и слотов в структуре должны быть поля для значений внешних имен самих полей и структур. Обычно в программировании внутреннее представление умалчивает внешнюю атрибутику объектов. Языки представления знаний должны предусматривать способы представления всего исходного материала каждого элемента знаний или данного, являющегося частью представлений знаний.

Специальное по отношению к традиционным способам представления данных введение информации о БД и БЗ выдвигает требования для программных систем управления такими данными. Такие системы (СУБД и СУБЗ) к настоящему времени имеют богатую историю [Гаврилова00, Грей89, Дейт80, Информ75, Калиниченко90, Когаловский92, Крамм89, Красилов92, Логический98, Лозовский82, Мартин80, Мейер87, Тиори85, Ульман90, Цаленко89] и интенсивно используются в разработках Интеллсист. Эти системы предписывают определенный метод проектирования данных на некотором языке представления данных или в диалоге с ВМ. Надо отметить, что для БД и знаний отсутствуют какие-либо стандарты. Поэтому все или по крайней мере подавляющее большинство систем управления уникальны и чаще всего не совместимы друг с другом ни по методам представления данных, ни по формату представлений.

Программные системы, обеспечивающие и поддерживающие деловые применения ВМ, чаще всего используют широко распространенные СУБД. Интеллсист, базирующиеся на знаниях, в частности, интеллектуальные или ЭС, используют СУБД Oracle [Оракл92]. БЗ используют самые разнообразные сорта и виды данных.

Необходимо обратить внимание на тот факт, что до сих пор рассматривался символьный метод записи данных. Имеется обширный класс геометрических, графических или картинный данных. Программирование таких данных представляет собой относительно новый метод информатики, который еще предстоит исследовать. Его можно переносить на другие формы данных, которые связаны с моделирование всех органов чувств человека. Например, метод информатики составит способы и приемы программирования звуковой информации или представлений звука. В современных методах программирования не рассматривались такие способы и приемы.

В связи с программированием данных имеет смысл рассматривать понятия жизненного цикла данных, технологии программирования данных и др., которые аналогичны понятиям, относящимися к программе и знанию, изобретанию (процессы формирования идей о структурах, представлениях и формах данных), проектирование (процессы создания документов на данные), разработка (процессы сбора, ввода и хранения данных) и сопровождение (процессы развития, исправления, защиты и сохранения данных). Надо считать, что и технологии программирования данных аналогичны технологиям программирования.

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

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

Методы построения новых типов данных зависят от их назначения. Рассмотрение назначения типов данных определит их важность по сравнению с понятием множества в математике. Тип данных предназначен для следующего:

- определять новые типы или подтипы данных для проектирования контроля за правильностью выполнения операций и распространения операций типа;

- определять основные свойства объектов (переменных, параметров, процедур, массивов и записей) принимать значения из только заданного в определении типа или подтипа данных;

- определять свойства структур массивов, записей и таблиц данных, а также свойств индексов массивов и ключей таблиц, принимать контролируемые значения из заданного типа данных;

- определять свойства формальных параметров подпрограмм и формальных параметров настройки для контроля за процессами сопоставления формальных и фактических параметров;

- определять свойства результата операции или функции для точного и контролируемого формирования выражений из этих операций и функций при заданных свойствах операндов;

- указывать интерпретацию значения некоторого выражения при уточнении типа значения этого выражения;

- явно указывать на правила преобразования значения выражения в значение требуемого типа.

Здесь перечислены основные пункты назначения типов данных. Остальные пункты являются их производными. Главное и обобщающее назначение типов данных состоит в указании допустимых значений (смыслов) величин и в обеспечении организации контроля за процессами использования самих данных в вычислениях. Контроль за использованием данных может быть статическим (в процессе трансляции и компиляции программы) и динамическим (в процессе выполнения программы). Он обеспечивает надежность процесса отладки программы и поиск всех сортов ошибок в текстах программ.

Проектирование множеств данных (другими словами можно именовать как проектирование среды предметной области и самой предметной области) состоит из анализа и выбора стандартных типов данных или из формирования описаний новых типов. Описание типа вводит новый термин, указывает тип-прецедент и ограничения на прецедент, а также возможные данные о представлении отдельного значения или всей совокупности значений данного типа. Все исходные данные для построения типов данных рассмотрены в томах 2 и 4.

Каждый тип связан с операциями. Операции типа включают:

- базовые операции типа,

- предопределенные операции из стандартного пакета,

- пользовательские операции.

Базовые операции рассматриваются в также в томах 2 и 4.

2.7.3. Методы рекурсивного проектирования данных. По сравнению с рассмотренными данными сложными являются рекурсивные данные. К ним относятся списки, цепи, деревья и другие структуры. Менее сложными данными являются записи из полей и таблицы. Размеры и свойства элементов массивов, столбцов таблиц и полей записи являются предметом глубоких исследований. Возьмем достаточно сложный пример описания термина «человек», требующего рекурсивного использования записей по применению записей в записях и ссылок на это же понятие при указании родственников данного человека, но это рассмотрим ниже в этом разделе.

Другой пример. Понятие бесконечности интенсивно используется в математике. Например, числовой ряд, списочная или древовидная структуры или функция с неограниченным числом параметров. Понятие бесконечности проникает в информатику при решении самых разнообразных заданий. Бесконечность указывается в математике исходным образцом и правилом для получения любого члена бесконечного набора некоторых объектов или выражений. Аналогично поступают и при построении бесконечных последовательностей в информатике. Описание ФЯ - хороший пример создания бесконечных рекурсивных цепочек символов на основе порождающей грамматики. Способы и приемы введения понятия бесконечности для представления данных образуют совокупность методов проектирования рекурсивных данных. Именно рекурсия дает возможность введения бесконечных понятий. Методы можно определить следующим образом.

Методы проектирования рекурсивных данных - это метод информатики, образующий совокупность способов формирования понятий, синтаксического определения конструкции и операций с ними для введения структурных типов данных, использующих при формировании ссылки на сами эти определения. Методы предназначены для задания в знаниях и запросах в форме списков, деревьев, графов и иерархически зависящих данных. Структурные типы данных подразумевают связность данных, которая отражает главное свойство знания передачи сведений о реальном мире. Хорошими примерами представления знаний структурными конструкциями являются фреймы, семантические сети и БЗ.

Данное выше определение является конечно формальным и не полностью отражает информатику данных. Более полное и точное определение имеется в языках программирования (см. том 2 - определение ЯПП). Обычно рекурсивность представлений данных используется в таких конструкциях как запись. Имеются специальные конструкции для представления графов или сетей данных. Надо отметить главное свойство рекурсивного представления данных - обеспечение надежных и компактных представлений. Архитектура языковых конструкций имеет следующий вид:

спецификация понятия А;

описание понятия В, использующее понятие А;

полное описание понятия А, использующее понятие В;

Такая конструкция используется в языке Ада. Спецификация понятия А вводит идентификатор и, возможно, передает главные свойства этого понятия. Описание понятия В использует ссылку на понятие А. Наконец, полное описание понятия А использует описание понятия В так, что описание А становится определяемым через самого себя. Имеются и более простые способы введения рекурсивных понятий. Они основаны на явном указании скрытия ссылки на самого себя. В таком случае архитектура языковых конструкций будет следующей:

спецификация понятия А,

ссылка на то же понятие А,

спецификация понятия В,

конец спецификации понятия А;

Такие рекурсивные определения даются в языке Алгол 68 при формировании видов записей. Служебное слово ref является в языке средством защиты от бесконечных рекурсий (подстановка считается невозможной).

Данные два способа введения рекурсивных определений данных можно считать базовыми, другие формы - производными. Проиллюстрируем их на примерах записи текстов на языках Ада и Алгол 68 [Красилов78в]. В ЯПП используется во многом аналогичный аппарат определений. В языке Ада описание записи можно представить так:

тип СПИСОК;

............

тип ссылка на элемент is access СПИСОК;

........................................

type СПИСОК is

record

ЭЛЕМЕНТ: тип_элемента;

ССЫЛКА : ССЫЛКА_НА_ЭЛЕМЕНТ;

end record;

Более сложные примеры используют глубокие рекурсии, запрятанные в двойные или тройные ссылки или в использовании трех или четырех понятий для построения ссылок на определяемые понятия.

Реализация рекурсивных данных (соответственно методов рекурсивного программирования данных) осуществляется с помощью памяти стекового или магазинного типов. Поскольку считается, что динамические ссылки на понятия в процессе выполнения программы имеют цепочки конечной длины, то и реализация рекурсий требует стеки конечных размеров.

2.7.4. Методы применения контроля принадлежности значений множеству. Указанный в заглавии метод применения может быть предназначен для изложения принципов использования операции принадлежности значений типу данных и для применения самого метода в системе решения заданий. Первое применение ясно по существу. Второе применение важно для реализации контроля за правильностью использования значений указанного для величины типа. Этот метод решает часть задач экологии текстов знаний и заданий.

Для каждого типа метод применяется стандартно по известным соотношениям. Здесь нет ничего необычного. Такой контроль обязателен для всех типов данных. Обычно соотношения реализуются довольно просто программистами в системах решения заданий.

2.7.5. Методы структурирования данных. Метод структурирования данных состоит в построении структурных объектов - массивов, записей, таблиц и процедур. Метод сложен по степени абстрагирования и доступен более всего знаниеведу или системному программисту. Наиболее подходящим средством обойти метод является использование готовых БЗ, ориентированных на классы задач пользователя. При наличии БЗ прямой пользователь может только познакомиться с описанием БЗ и с приемами применения знаний из этой базы. Для прямого пользователя процедуры структурирования данных являются наиболее сложными методами формализации знаний. С другой стороны, знание метода означает умение описать объект, зная все его свойства. Если у пользователя не получается процедура формализации, то он должен формировать полное описание свойств объектов для реализации структурирования данных.

Знаниевед или системный программист приступает к реализации метода с построения указанных выше структурных типов данных в соответствии с требованиями заданий пользователя. Затем они могут заполнить описанные структуры данных соответствующими наборами данных (наборы однотипных данных для массива, данными для полей записи, строчками таблицы или алгоритмами процедур). И, наконец, необходимо сделать описание структурных данных для пользователя так, чтобы он мог применять их в заданиях. Это обычный подход программистов, занимающихся описанием предметной области задачи.

2.7.6. Использование синонимии. Определение синонима известно из грамматики ЕЯ. Отличие синонимии в ЕЯ и ЯПП связано с тем обстоятельством, что ведущий термин, для которого строится синоним, может быть сложным выражением. Введение синонима позволяет экономить время для выполнения записи знаний или заданий. Да и практика оформления знаний часто связана с применением аббревиатуры, что является синонимами развернутых терминов в последовательности слов и знаков. Синонимы часто встречается в практике работы специалистов (это их ";птичий"; язык).

Можно поименовать эти действия как метод синонимного программирования, который состоит в синтаксической и семантической поддержке приемов введения имен (терминов) со свойствами обозначать одно определенное понятие. Метод применяется либо для раскрытия через имя содержательной части понятия, либо для условного кодирования имени с целью сокращения при его написании.

2.7.7. Методы сокращения форм имени. Имя, представляющее (идентифицирующее) термин, может состоять из многих слов и знаков. Тогда частое его использование может оказаться утомительным. В этом случае можно ввести сокращенное имя (аббревиатуру) в качестве синонима описанного термина. Теперь можно использовать аббревиатуру так, как это принято в ЕЯ.

Далее (в версиях Интеллсист) предполагается использовать сокращения для составных имен. Например, вместо переменной с индексом можно будет использовать аббревиатуру, вместо ссылки на выражение можно будет использовать также аббревиатуру.

2.7.8. Методы проектирования приближенных вычислений. Методы программирования приближенных вычислений важен в тех случаях, когда ограничения по памяти препятствуют полному представлению данных при реализации вычислений. Вещественные числа обычно не могут быть введены точно в память ВМ из-за ограниченности разрядности ячейки памяти. Метод определяется как совокупность приемов, поддержанных синтаксически и семантически, введения и представления числовых данных и операций над ними для обеспечения контролируемых приближенных вычислений с заданной абсолютной или относительной погрешностью исходных данных и результатов вычисления. Многие языки программирования не предусматривают никаких средств автоматического контроля за точностью вычислений. Предполагается, что использование таких языков допустимо при алгоритмическом контроле за выполнением требований по точности вычислений. Метод подразумевает исследование разрядности ВМ и использование арсенала методов раздела математики - приближенных вычислений.

Глава 3. Повторное использование разработок

Повторное использование (транслитерация английского слова reuse - риюз) программ, лексиконов, БД, БЗ и запросов (для краткости будем далее этот перечень здесь именовать субпрограммой) является новой проблемой современного программирования и информатики, обобщающей ряд частных проблем. Повторное использование программ нужно распространять на. БЗ, которые вообще отличаются от программ устойчивым постоянством. Кроме того, БЗ представляют класс логических программ. Идея повторного использования родилась (если оценивать историю вопроса) в программировании, она легко распространяется на БЗ и запросы. Риюз универсален настолько, что его можно назвать информатическим методом. Надо быть осторожным и говорить вначале слово программирование, а затем слово информатика, если рассматриваем риюз. В рамках возможностей ФЯ (например, Ада) и ЯПП с привлечением системной и ситуационной моделей процесса разработки программного обеспечения исследуются проблематика и предпосылки повторного использования программ (или некоторой вещи), взаимосвязь концепций риюза и современного программирования (информатики). В главе дана оценка эффективности риюза. Предлагаются методология реализации риюза и характеристики инструментальных средств поддержки.

3.I. Общие концепции

Побудительными причинами появления в информатике риюза явились публикация о сборочном программировании, разворачивание исследований по риюзу и осмысление всей проблематики повторного использования знаний, программ и заданий и всех атрибутов жизненного цикла объектов, обеспечивающих эффективное использование ВМ. Представляется полезным осмыслить понятие повторного использования субпрограмм в контексте ЖЦ любого объекта. Принципиально ничто не мешает повторно использовать результаты любого этапа ЖЦ, например проекта, отдельного модуля, всей субпрограммы, документации на знания и т.п. При этом возникает проблема развития языков представления знаний любого вида и программного инструментария со своими методами и средствами. Мы делим ЖЦ на четыре фундаментальных этапа: изобретание, проектирование, разработка и сопровождение. С этой точки зрения повторное использование результатов по этапам ЖЦ можно квалифицировать как допроектирование или доконструирование. Такой подход шире и опирается на публикации уже известные и приведенные в списке литературы.

В современном программировании возникла новая парадигма - повторное проектирование и использование программного обеспечения в широком смысле этого понятия. Ниже мы рассмотрим основные предпосылки появления этой парадигмы. Будем кратко именовать повторное проектирование и использование знаний и программ словом риюз. Риюз существовал всегда. Но это не приводило к существенному сокращению расходов на программирование. Желание понять причины явно недостаточного внимания к риюзу и чрезвычайно большие затраты на дублирующие работы, которые оцениваются примерно в 70-80% от общих затрат, заставили разработчиков по-новому взглянуть на риюз. Применение для знаний эффективнее применения для программ, поскольку допроектирование или доконструирование знаний значительно проще по времени и затратам труда.

Любая деятельность по созданию субпрограмм связана с разработкой или с использованием имеющихся методов программирования, которые должны быть подкреплены соответствующими инструментальными средствами, определенной степенью абстракции и формализации, автоматизацией. Некоторые из этих вопросов будут рассмотрены ниже. Для иллюстрации мощности понятия и методов риюза рассмотрим список известных в практике программирования конкретных методик.

Среди методик следует отметить такие:

I) Простой повторный запуск программы для контроля работы ВМ или самой программы (подтверждение), а также для счета очередного варианта задачи. Заметим, что повторный прогон программы реального времени может показать неожиданные результаты.

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

3) Использование старой субпрограммы с новым методом решения проблемы представляет риюз. За счет этого получаются новое качество субпрограммы и экономия ресурсов ВМ при решении старых задач.

4) Если программа собрана из подпрограмм библиотеки, то можно сказать, что использован риюз для частей программы. Сборочное программирование - это один из фундаментальных методов риюза. Сборочное программирование - это разработка нового программного проекта или его рабочих версий нового применения, путем повторного использования компонент с или без модификации их спецификации или тела, с или без построения новых компонент. В самом простом виде сборочное программирование реализуется в языке Ада (компиляция из подпрограмм библиотеки) [Джехани88]. В особенности хорошей иллюстрацией риюза использование БЗ из библиотеки.

5) Программирование с использованием пакетов прикладных программ представляет еще один широко известный метод риюза. Такой подход напоминает сборку программ из подпрограмм.

6) Если предыдущие примеры применения риюза иллюстрировали, как правило, использование модификации управления в программах, то последующие примеры показывают использование модификации данных. Например, модификация предметной области влечет частичное изменение описаний в субпрограмме и получение другой субпрограммы. Такая форма риюза характерна для ассемблерных языков программирования и поддерживается макроассемблером. Другим ярким примером является аппарат настраиваемых подпрограмм и пакетов в языке Ада, который можно считать аналогом макросредств в языке высокого уровня.

7) Модификация проблемной области приводит к изменению некоторых модулей субпрограммы, но для основной части субпрограммы может применяться риюз. Практически важной формой риюза является использование методов переноса субпрограмм на ВМ различных архитектур. И здесь язык Ада может показать широкие возможности для построения субпрограмм, независящих от свойств конкретных архитектур ВМ. Еще пример. Реализация языка Си на различных архитектурах ВМ привела к переносу субпрограмм на такие ВМ.

8) К риюзу в широком смысле следует отнести повторное использование варианта спецификации проекта программного обеспечения (и не только). Если язык предусматривает разработку проекта программы, то риюз внедряется автоматически, как это свойственно языку Ада.

9) С таким же успехом можно говорить о повторном использовании готовой схемы решения проблемы (или задачи, задания). Эта методика является наиболее распространенной в практике использования ВМ. Широко известный метод структурного программирования указывает на приемы использования готовых структур программ для построения новых программ. Язык Ада содержит прекрасный ассортимент хорошо структурированных конструкций операторов и описаний. ИП предусматривает автоматическое внедрение риюза БЗ, анкетного и шаблонного запросов, что представляет собой внедрение риюза в рамках Интеллсист.

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

11) К риюзу следует отнести также повторное использование требований к разработке субпрограмм. Условия применения программ чаще всего повторяются, поэтому требования к работе субпрограмм становятся одинаковыми. Может быть в связи с этим разделы о требованиях к программам в технических заданиях одинаковы.

12) И последняя методика: использование одной и той же цели для создания различных субпрограмм. Общая цель порождает одинаковые структуры субпрограмм.

В [Красилов91а] рассмотрены проблемы повторного использования компоненты программных систем, они будут затрагиваться ниже. На риюз можно посмотреть еще шире. Логично отнести к риюзу повторное использование языка программирования, ВМ одинаковой модели и др. Так или иначе приведенный перечень методик достаточно полно характеризует историю риюза, богатство методологии риюза и заставляет внимательно присмотреться к методам и инструментальным средствам повторного проектирования, программирования и использования программ.

Подытоживая содержание примеров методик можно определить риюз как метод информатики, представляющий совокупность способов и средств использования имеющихся и отработанных субпрограмм и БД в новых проектах путем настройки, адаптации, модификации или прямого применения. Как обычно краткое определение не составляет полной картины проблемы, поэтому в дальнейшем делается попытка шире раскрыть смысл риюза. Цель настоящей главы - привлечь внимание программистов всех категорий (в том числе и прямых пользователей ВМ) к одному из эффективных методов информатики.

Заметим, что перечисление примеров риюза может привести к выводу, что риюз и проблемы риюза просты. Попробуем опровергнуть это мнение. Несомненно, что риюз - продление жизни субпрограмм или их частей. Сейчас обратим внимание только на одну главную проблему риюза: что необходимо сделать, чтобы при создании новых программ обеспечить риюз в наибольшей степени. Можно сразу предложить одну из методик решения этой проблемы: внедрение единого языка программирования, роль которого должен сыграть, например язык Ада. Предложение основывается на том факте, что язык Ада реализует более 50 методов программирования, многие из которых поддерживают риюз [Красилов88б]. Роль единого языка логического программирования в ИП играет ЯПП (или ЕЯ). Следует напомнить, что под субпрограммой здесь имеются в виду различные объекты, в том числе лексиконы, БЗ, шаблоны, запросы к Интеллсист и др. Для краткости используется слово субпрограмма, а все методы программирования распространяются на эти объекты.

В соответствии с рекомендациями [Красилов88б] можно выставить ряд требований к субпрограмме и технологии ее разработки, выполнение которых обеспечивает в значительной степени риюз (риюзность субпрограммы). Такими требованиями являются:

  • модульность, структурированность и блочность, как основы хорошего стиля программирования (для БЗ и запросов, использующих ЯПП, блоком можно считать абзац);

  • проверяемость (или контролируемость), документируемость и читаемость, как основа для обеспечения переносимости субпрограммы (ЯПП это требование поддерживает, так как он является частью ЕЯ);

  • планируемость и автоматизируемость, как основа для ведения разработки методом риюза (для ЯПП накоплен обширный опыт выполнения этого требования);

  • подтверждаемость, верифицируемость и внедряемость, как основа для успешного внедрения средств программотехники или знаниелогии в методологию риюза.

Перечисленные черты субпрограмм и технологии разработки носят общий характер и создают только базу для успеха методологии риюза. Обычно решающее значение имеют детали процессов создания новых проектов.

3.2. Основные предпосылки исследования

В программистской литературе правильно подмечено, что основная причина исследования риюза кроется в естественной деятельности специалиста по информатике, связанной, с одной стороны, с внедрением ВМ в различные сферы деятельности человека, а с другой - общностью основ применения ВМ. Поэтому одна и та же субпрограмма успешно используется в таких различных областях как: техника, геология, статистика, физика и т.п. Исследование и применение риюза стимулируется также дефицитом программистов. Имеются и другие, может быть менее веские причины. Вот некоторые из них:

  • медленно (независимо от экономических факторов) решается проблема ускорения процесса реализации больших программных проектов для народного хозяйства;

  • многоязычие одной или нескольких различных ВМ становится серьезным препятствием для достижения высокой эффективности процессов создания программ;

  • дублирующие разработки программ чаще всего возникают из-за отсутствия эффективных методов проектирования и использования таких свойств программ, которые способствуют повторному их использованию;

  • имеются и организационно-экономические причины, вызванные отсутствием рынка машинного знания, подкрепленного соответствующими законодательными актами;

К этому перечню необходимо добавить следующие аргументы в пользу риюза, особенно важные для систем, работающих в реальном масштабе времени:

  • техническая система, которая имеет встроенную ВМ, развивается значительно медленнее, чем темп обновления встроенных ВМ, в таком случае необходимо обеспечить повторное использование субпрограмм предыдущей ВМ;

  • идеология программирования и алгоритмы моделирования технических систем в большинстве случаев сохраняются, они стабильны и долгоживущие;

  • испытанные в реальной работе субпрограммы при риюзе гарантируют сокращение стоимости разработки и эксплуатации, повышение надежности субпрограммы и в целом качества самой субпрограммы и ее использования;

  • известна позитивная роль консерватизма разработчиков, заказчиков и пользователей, обученных одной и той же субпрограмме, одному и тому же языку, одним и тем же средствам и методам информатики.

Сказанное в полной мере относится к синтезированным субпрограммам, полученным в инструментарии Интеллсист и применяемым во встроенных системах. Можно подробнее раскрыть каждую в отдельности причину возникновения риюза. По-видимому, нет особой необходимости раскрывать их, читатель сам может это сделать с большим успехом. Мы лишь заострили его внимание на эффективность, значимость и полезность риюза для программирования систем реального времени.

Экспертную оценку экономической эффективности риюза можно дать, исходя из следующих, требующих дополнительных исследований, соображений: если стоимость разработанных программ составляет единицу, то цена повторно используемой программы равна по экспертной оценке десятой части от указанной единицы. Приведенная оценка может быть и ошибочной, поскольку имеющиеся исходные данные для оценки весьма ненадежны. Ясно, что экономическая эффективность риюза зависит от этапа ЖЦ и используемого метода риюза, поэтому приведенная оценка отражает имеющийся опыт эксперта. Для более точной оценки необходима достоверная статистика по реальным применениям риюза в определенных методологических рамках.

Исследование причин возникновения риюза - это прогноз ЖЦ риюза. От того насколько правильно оценены причины, настолько достоверен прогноз в сравнительно молодом методе информатики, а также в методологии его применения. Возможность эффективного внедрения риюза во многом обеспечивается концепциями хорошего стиля программирования:

  • использование уровней абстракции для объектов субпрограммы поддерживает риюз,

  • сохранение уровней структур управления упрощает процедуру необходимых изменений при создании новой субпрограммы,

  • аналогично, структуризация данных упрощает процедуру необходимых изменений при создании новых БД и БЗ,

  • систематичность процессов создания субпрограмм и данных от начала до завершения проекта обеспечивает удешевление риюза,

  • моделирование является составной частью хорошей технологии программирования и в то же время служит концептуальной основой применения риюза,

  • иерархия и модульность также составляют концептуальную основу применения риюза,

  • наконец, активная ориентация на риюз также является хорошей концепцией, стимулирующей развитие методов риюза.

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

3.3. Модели создания субпрограмм

Ниже поясняются две модели создания программ:

  • Системная модель,

  • Ситуационная модель.

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

Ниже приведена таблица шагов упомянутой системной модели и степень автоматизации процесса, характеризующая некоторые фундаментальные подходы в информатике. В таблице расширен традиционный перечень этапов использования ВМ. Словом «да»» обозначены действия, которые автоматизируются в зависимости от общей методологии создания программы. Слова «да» поставлены в тех местах, где имеется эффект от полной или частичной автоматизации конкретного процесса, указанного в первой колонке. При традиционном подходе автоматизируются работы, выполняемые после написания программы на некотором языке.

Предварительные пояснения к таблице. Простой синтез программ использует автоматическое доказательство спецификаций проблемы [Красилов85в, 87б] для извлечения текста программы. Сложный синтез программы включает аналитические выкладки для формирования новых математических методов решения данной проблемы, например, приводящих к построению спецификаций проблемы, к которым может применяться простой метод синтеза программы. Синтез программ в Интеллсист является именно таким. Как было показано на примерах, риюз применим ко всей совокупности действий по созданию субпрограммы. Степень автоматизации риюза зависит от разработанности и формализма соответствующих методов применения риюза. Согласно приведенной таблице риюз выглядит перспективно (если не принимать во внимание автоматический синтез субпрограмм).

Системная модель процесса создания субпрограмм позволила выделить риюз как средство информатики, более эффективное по сравнению с другими методами программирования. Конечно, приведенная характеристика риюза требует более тщательного исследования, чем простое «да – нет» голосования. Для этого необходимо привлечь значительно больший объем фактического материала, а также выработать методику и номенклатуру качественных и количественных показателей риюза. Основная цель раздела привлечь внимание читателя к проблеме сопоставления свойств процессов риюза и широко известных процессов создания субпрограмм (лексиконов, БЗ и запросов).

Таблица Обзор операций по созданию субпрограмм

Действия по созданию субпрограммы

Существующая традиция

Простой синтез

Сложный синтез

Риюз

Постановка цели использования ВМ

нет

нет

нет

да

Разработка требований к субпрограмме

нет

нет

нет

да

Математический анализ задачи

нет

нет

нет

да

Разработка численного метода

нет

нет

да

да

Построение схемы решения проблемы

нет

нет

да

да

Спецификация проблемы

нет

нет

да

да

Доказательство проблемы

нет

да

да

да

Построение алгоритма

нет

да

да

да

Применение языка программирования

нет

да

да

да

Трансляция субпрограммы

да

да

да

да

Выполнение субпрограммы

да

да

да

да

Анализ полученных результатов

да

да

да

да

3.3.2. Ситуационная модель создания субпрограмм. Ситуационная модель, в соответствии с общим определением, представляет собой мысленное формирование ситуаций с субпрограммами, мотивацию проблемы, решаемой с их помощью, характеристику цели создания субпрограмм, оценку их состояния. Ситуационная модель в нашем случае позволяет изучать разнообразные стандартные ситуации и действия, связанные с проектированием и разработкой субпрограмм. Она имеет свое отношение к действиям по созданию субпрограмм и к состоянию реального мира. И при таком подходе к риюзу требуется расширение в представлениях цепочки действий. Ситуационная модель создания субпрограмм может быть представлена четырьмя этапами (изобретание, проектирование, разработка и сопровождение программ), фазами (их четыре на каждом этапе) и работами (их восемь для каждой фазы). Каждая технологическая операция (реально их может быть более 400) использования ВМ в рамках какой-либо работы может рассматриваться с точки зрения риюза. И здесь можно обнаружить интересные параллели после сопоставления технологических операций и операций риюза.

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

3.4. Жизненный цикл программ в риюзе

Оценить риюз с позиции ЖЦ программ можно несколькими путями, отметив основные с нашей точки зрения подходы.

1) Прежде всего рассмотрим общие соображения:

  • ЖЦ субпрограммы является инвариантом, что и оправдывает применение к нему методологии риюза,

  • риюзом в чистом виде является использование аналогов и прототипов в программировании и информатике,

  • само понятие технологии подразумевает выявление и внедрение риюза, это в особенности относится к программным средствам поддержки ЖЦ,

  • исследование и применение риюза скорее всего должны ориентироваться на дорогие в смысле затрат ресурсов этапы.

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

3) Технологический маршрут создания субпрограмм методом риюза сам является предметом исследований.

3.5. Методология реализации риюза

Обычно рассматривают следующие методы, которые являются наиболее яркими средствами реализации риюза:

  • разработка и применение метакомпилятора для генерации конкретного компилятора с некоторого исходного языка на некоторый рабочий язык;

  • применение микроассемблерных языков программирования;

  • проведение моделирования предметной области;

  • использование трансформационного метода преобразования текстов исходных программ для получения новых субпрограмм;

  • разработка и применение конверторов одного языка высокого уровня в другой язык высокого уровня;

  • широкое применение библиотек субподпрограмм и пакетов прикладных программ;

  • средства непроцедурного программирования;

  • использование языка программирования Ада [Джехани88, Красилов86б, 87а, 88б, 89в, 91а],

  • применение Интеллсист на основе ЯПП.

Последние две строчки выглядит несколько предвзято. Однако тщательное исследование языков Ада, ЯПП и методов, формализованных в языке, убедительно показывает правомерность этих строчек.

3.5.1. Уровни абстракции и риюз. Широко известен принцип сокрытия данных, операций и управления, впервые сформулированный Парнасом. Он позволяет строить уровни абстракции в программировании, как впрочем и в информатике. Уровни сокрытия, или уровни абстракции (именно это теперь является главным), используемые в методах риюза, помогают уточнять понятие риюза и раскрывают новые области применения риюза, а также высвечивают его проблематику.

Уровни абстракции зарождались постепенно, как правило в том порядке, который приведен ниже, они относятся прежде всего к средствам реализации алгоритмов и субпрограмм. Вот перечень сопоставлений уровней абстракции, относящихся к указанному предмету, и их конкретизации, полнее всего представленных в языке Ада и ЯПП:

Номер

Конкретный код

Абстракция

1

код

лексемы

2

величина

идентификатор или термин и их описания

3

множество данных или смыслов понятия

тип данных и его описание

4

скобочная формула

выражение

5

единица действия

оператор или вызов процедуры

6

технологическая или программная единица

модуль или блок и абзац

7

проект модуля

спецификация модуля (его описание)

8

программный шаблон

настройка подпрограммы на объекты, типы и подпрограммы

9

проблема

спецификация проблемы (ее описание) или запрос

10

метод решения

математика проблемы или знания

11

логика решения

схема решения или логический вывод

12

знание

спецификация исчисления или совокупность прикладных аксиом

13

постановка проблемы

спецификация требований или формулировка запроса

14

цель

спецификация цели

Указанный перечень абстракций - это средство обеспечения риюза, поскольку абстракция позволяет реализовать независимость отдельных экземпляров конкретизации друг от друга. Сама абстракция может использоваться вновь без каких-либо изменений. Абстракция любого уровня является резервом для риюза предыдущего уровня. Это обстоятельство должно находиться в основе реализации риюзности вновь разрабатываемой субпрограммы.

Например, язык Ада обеспечивает и поддерживает формализацию первых восьми уровней абстракции в указанном выше перечислении, в то время как ЯПП обеспечивает и поддерживает формализацию всех уровней. Так как каждый язык формализует соответствующие ему уровни синтаксически, то система программирования на базе ЯПП автоматизирует все процессы контроля и подготовки рабочих субпрограмм в соответствии с указанными уровнями абстракции. Многие широко распространенные языки программирования поддерживают меньшее число уровней. Это тем более становится явным, если приведенный перечень сопоставлений сделать детальным. Каждый уровень абстракции подразумевает тот или иной метод скрытия данных, операций и управления. Детальное рассмотрение о том, какое уровень реализует метод скрытия, предоставляется читателю.

3.5.2. Методология риюза. Вопросов, относящихся к методологии реализации риюза, по количеству столько же сколько вопросов при решении проблем программирования. Качество же вопросов намного выше, поскольку в такой общей постановке проблема риюза возникла только в последнее время. Проведение аналогии с программированием помогает разобраться в целом по проблеме риюза и ответить на имеющиеся вопросы. Действительно, необходимо рассмотреть технологию риюза и соответствующие технологические, инструментальные и сервисные средства. Совпадение или близость многих методологических принципов риюза и программирования совершенно не означает, что весь арсенал средств программирования переносится на риюз автоматически. Попробуем показать это читателю.

Системного программиста, да и любого другого программиста не удивит данный список методов и средств риюза. Каждая строчка указывает на возможность риюза (в смысле повторного использования) той или иной стороны программирования. Эти методы являются основными для реализации риюза. Можно конкретизировать методы вширь и вглубь. Однако мы оставляем это дело для читателя. Важно подчеркнуть в заключении раздела, что методология риюза почти ничем не отличается от методологии программирования и методологии информатики.

3.6.Инструментальные средства риюза

Инструмент риюза имеет свои особенности, которые и рассмотрены ниже.

3.6.1. Задачи внедрения риюза. В работах [Бар88, Боэм85, Гантер81, Красилов88б, 91а], которые стимулировали появление этого раздела, перечислены основные действия при решении задачи применения риюза. (В данном случае задача - это оперативная тактическая проблема, решение которой определяет целенаправленное эффективное применение риюза.) Такими действиями относительно проекта субпрограммы, кода и документации считаются:

  • познание того, что может делать субпрограмма,

  • понимание того, как это может делать субпрограмма,

  • выделение необходимых частей (идентификация функций и структуры),

  • выбор методов модификации субпрограмм,

  • доконструирование (изменение функций и структуры).

Некоторые характеристики таких понятий, как переносимость, изменяемость, ремонтопригодность и т.п., помогают глубже понять особенности перечисленных действий.

В этой связи можно опять вспомнить главную проблему риюза и переформулировать ее как проблему риюзности субпрограмм, проектов и документации. Свойство риюзности должно быть результатом внедрения промышленных методов проектирования, разработки и сопровождения ПО и мерой качества любого субпрограммного продукта. В таком аспекте обеспечение риюзности субпрограмм - это одна из главных задач технологии программирования (ПП и ИП). Проектирование риюза неотделимо от процесса проектирования и реализации ЖЦ субпрограммы. Проектирование риюза - это реализация принципа непрерывного программирования на протяжении ЖЦ. Свойство риюзности субпрограмм - это качество, обеспечивающее накопление интеллектуального продукта. Познание и понимание субпрограмм с необходимостью включают поиск ошибок, умение сопровождать субпрограммы и применять их в разнообразных ситуациях, находить новое использование субпрограмм. Для реализации понимания, познания, выделения и доконструирования обычно должны проделываться обширные работы следующего содержания [Красилов91а]:

  • активное исследование субпрограмм прогонами, экспериментами (методами черного ящика),

  • изучение документации и изданий,

  • использование машинного самообучения,

  • организация обучения без анализа схемы выполнения субпрограмм,

  • обращение за помощью к специалистам (получение консультации),

  • поиск подсказки,

  • постановка вопросов, соответствующих знаниям,

  • поиск знаний в случае его недостаточности,

  • групповая учеба.

Некоторые работы автоматизированы в ИП (см. т.7).

Языки высокого уровня и языки спецификаций способствуют быстрому пониманию субпрограмм. Это же относится и к языку Ада и в особенности к ЯПП. Здесь уместно заметить, что достоинства языка Ада, обеспечивающие модульность, структурированность, читабельность и документируемость субпрограмм, подтверждают роль языка высокого уровня для риюза. Например, модульность и структурированность субпрограмм позволяют выполнить действие по выделению ее частей. Полная автоматизация переработки знаний, представленных на ЯПП обеспечивают весьма высокое понимание субпрограмм.

Пожалуй, самым неопределенным среди указанных действий является «доконструирование». По-видимому, эта неопределенность связана с отсутствием подходящих методов спецификации субпрограмм, изменение которых обеспечивало бы быстрое изменение самих субпрограмм. Здесь могут существенно помочь методы пошагового программирования. Возможно, что имеются и другие подходы. Можно привести примеры автоматической спецификации и автоматический синтез субпрограмм.

3.6.2. Инструментарий. Будем использовать в этом разделе еще одно английское слово со следующей транслитерацией - кит (в переводе слово kit обозначает ранец, багаж, инструмент). Это слово как нельзя лучше всего подходит ко всем вопросам создания инструментальных средств для риюза. Отметим несколько главных кит`ов.

Первый кит - кит визуализации. Это средство должно обеспечить максимальное познание субпрограммы и документации. Главное требование к этому кит`у состоит в абстрагировании от второстепенного. Важно, чтобы визуализация субпрограмм существенно отличалась от дампа всякого рода. Избирательность, форма и средство визуализации составляют своего рода проблему системного программирования, которая не решена в современной информатике.

Второй кит - кит документирования. Это средство должно обеспечивать в самых лучших традициях документами все стадии риюза. При анализе проблем документирования, каждый системный программист может сформулировать требования и задачи такого кит`а.

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

Четвертый кит - кит анализа потоков данных, операций и управления. Это средство должно способствовать максимальному пониманию субпрограммы и документации.

Пятый кит - кит критики перекликается с кит`ом анализа. Это инструментальное средство должно задавать вопросы пользователю для того, чтобы обратить внимание на все тонкие места в программе.

Шестой кит - кит подсказок является инструментальным средством, подчиненным всем другим кит`ам. Это средство схоже с ЭС и должно базироваться на богатой БЗ, накопленной в течении длительного времени.

Седьмой кит - кит обучения, способствующий познанию и пониманию всех составных частей программы или документации. Автоматизированное обучение, связанное с данным программным продуктом, важно для передачи опыта программирования вообще. Каждому ясно, какое значение придается средствам обучения при передаче субпрограмм.

Восьмой кит - кит объяснения должен отвечать на вопросы программиста, занимающегося риюзом. Этот кит сложен и требует, например, реализации диалогового интерфейса на ЕЯ. Пожалуй, эта особенность - главная и трудоемкая.

Последний, девятый кит - кит доконструирования является самым сложным кит`ом. Проблем в доконструировании более всего, и этому кит`у необходимо уделить самое пристальное внимание. Эта проблема еще не рассматривалась программистами широко. Простой пример решения проблемы - редактирование текстов программ.

Перечисленные инструментальные средства, как это можно обнаружить при внимательном рассмотрении, имеют свои специфические особенности, отличные от особенностей инструментальных средств программирования. Риюз вносит новые идеи и методы построения инструментальных средств в информатике. Здесь приходится признать, что дан только перечень инструментов, но не рассмотрены методы построения таких средств. Область информатики, изучающая инструментальные средства риюза, является новой и требует специального рассмотрения.

До сих пор мы рассматривали риюз субпрограмм и документации. Но риюз можно рассматривать и несколько шире. Риюз в общих чертах распространяется на повторное проектирование предмета, повторение процедур проектирования. Эти подходы характеризуют, и достаточно эффективно, информатику и ее методологию. Имеется еще ряд методик, которые примыкают к риюзу и должны снабжаться соответствующими инструментальными средствами. Во - первых, это создание прототипов субпрограмм и внедрение концепции прототипирования как метода информатики, включаемому в риюз с одной стороны. И, во-вторых, это макетирование, или построение макета субпрограмм или документов, как эффективный метод информатики, включаемый в риюз с другой стороны.

В заключении раздела заметим, что ИП опирается на инструментарий, который автоматизирует значительно большую часть операций и представляет пользователю соответствующие средства. Интеллсист представляет инструментальные средства для риюза знаний.

3.7. Оценка повторного использования и проблемы риюза

Все рассмотренные средства риюза хороши, полезны и приносят экономические выгоды. Они поддерживают и существенно улучшают характеристики технологии программирования, к которым можно отнести:

  • использование накопленного опыта современного программирования,

  • использование готовых субпрограммных и текстовых материалов,

  • существенное уменьшение общих затрат на создание субпрограммного продукта и СВТ,

  • обучение программистов хорошим субпрограммам и хорошему стилю в информатике, в применении ВМ,

  • существенное повышение надежности субпрограмм и процесса программирования,

  • существенное повышение эффективности субпрограмм и процессов создания субпрограмм, и, следовательно, повышения производительности труда программистов,

  • выработка прогрессивных требований к языкам, субпрограммам и документации.

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

Основная оценка риюза должна связываться со степенью уменьшения дублирующих разработок, которые по оценкам некоторых специалистов достигает 70-80%. Полное устранение дублирующих промышленных разработок будет самой высокой оценкой риюза, характеризуемой повышением общей производительности труда в 4-5 раз. Сказанное не относится к рыночной конкуренции, стимулирующей улучшение качества субпрограммной продукции.

Рассмотрим проблемы риюза, как стратегические задачи, решения которых интересны по существу, но трудны из-за необходимости уточнения постановки задач и поиска подходящих методов их решения. Среди проблем отметим главные:

  • построение автоматизированного процесса ознакомления пользователя с наличием субподпрограмм в библиотеках или архивах,

  • изучение и внедрение действий, указанных в разделе 3.6,

  • определение понятий наследования субпрограмм и документации, а также выявление свойств соответствующих объектов,

  • создание и реализация иерархии языков представления данных, субпрограмм, спецификаций проблем, требований и целей,

  • исследование и разработка методики образования цены субпрограммы и документации для риюза,

  • создание условий для обеспечения риюза в процессе разработки субпрограмм и документации (экономических, технических, юридических),

  • внедрение средств автоматического получения субпрограмм.

Перечень проблем приводит к предварительной формулировке достаточных условий поддержки риюза:

  • автоматическое накопление БЗ из субпрограмм и описаний процессов программирования,

  • автоматическое использование БЗ для целей риюза,

  • учет в языках программирования средств обеспечения риюза,

  • автоматизация доконструирования и внесения изменений в субпрограммы и документацию,

  • автоматизация разработки и применения каждого инструментального средства, указанного в разделе 8,

  • автоматическое выполнение запросов на обучение методам риюза.

Перечисленные условия внедрения риюза должны учитываться на всех этапах, фазах и работах при создании повторно используемого субпрограммного продукта. Вместе с методами программирования и информатики методология риюза образуют фундаментальную архитектуру интеллектуальной среды проектирования субпрограмм. Здесь усматриваются основные проблемы и центр тяжести современного программирования и применения ВМ именно в риюзе - повторном использовании субпрограмм. Внедрение методологии риюза и реализация соответствующей инструментальной поддержки обеспечит основные атрибуты субпрограммы и процесса программирования: надежность и эффективность.

Вместе с общими проблемами можно указать на частные проблемы, например:

  • как эффективно видоизменять субпрограммы и документацию,

  • как собирать знания о работе субпрограммы,

  • при каких условиях можно и нужно применять риюз,

  • как применять инструментальные средства.

Этим перечнем мы хотели обратить внимание читателя на широту поля для исследователя современного состояния программирования и информатики. Заметим, что проблем и вопросов много, и они не зависят от того, что история риюза имеет такую же протяженность, как и само программирование. Заметим также, что данные выше перечни не претендуют на полноту. Например, кроме упомянутых выше методов реализации риюза (прямой риюз, использование модификаций, адаптация и настройка) имеются еще и такие: самоадаптация, самонастройка и генерация - все они требуют специального рассмотрения.

Глава 4. Методы, поддерживающие изобретание

Творчество - процесс получения нового знания. Информатика - технология получения нового знания. Творчество и информатика связаны между собой именно таким образом. Информатика исследует методы всех четырех этапов создания новой информационной вещи (под таким названием мы понимаем информацию или знание о предметах, явлениях и процессах). Наиболее новым и интересным является этап изобретания. Несмотря на уже достаточное количество публикаций по теме об алгоритме изобретения (многие идеи взяты из [Альтшуллер73 и 79]) на лицо имеется весьма слабая пропаганда методов и приемов получения нового знания. Роль информатики и состоит главным образом в изучении и применении таких методов и способов с применением ВМ (или без них). Для других этапов информацию по методологии информатики поставляет программирование и большая жизненная практика инженерии на ВМ. Первый же этап опирается на теорию изобретательства и многое заимствовано из нее так же, как другие три этапа заимствовали методы из программирования. Ясно, что методы изобретания не исчерпываются приведенными в данной главе, но они являются показательными для творчества в различных сферах деятельности человека. За более подробными сведениями необходимо обратиться к приведенной литературе.

Введение

С изобретания начинается творческая работа над новой вещью или новым знанием. Известными методами общего характера являются эволюция старого, наброски нового, перенос свойств старого на новое, выбор методики поиска новой вещи, поиск противоречий в старой и разрешение противоречий для создания новой вещи и др. Чаще всего в материальном производстве используются законы развития технических систем:

1. Развиваться, превращая систему в подсистему и опираясь на знание статики, кинематики и динамики развивающейся системы.

2. Работоспособность системы должна распределяться равномерно между своими частями с учетом времени жизни каждой части.

3. Энергия любого вида должна проходить насквозь по всем частям системы в пропорциях возможностей каждой части.

4. Должна соблюдаться согласованность ритмики всех частей системы.

5. Развитие систем идет в направлении увеличения степени идеальности частей и всей системы.

6. Неравномерность развития частей системы допускается только в том случае, когда учтены все предыдущие пункты или законы и свойства ремонтопригодности.

7. Система включается в подсистему только при сохранении законов развития новой итоговой системы.

8. Система развивается в такой последовательности: вначале на макроуровне, а затем на микроуровне.

9. Направление развития системы определяется или изменяется с увеличением ее вепольности.

Никогда не отвергайте как очевидный никакой принцип, так как только осознанное применение таких принципов может принести успех.

Принципы для изобретания. Выше перечислены главные законы развития систем. Кроме них целесообразно руководствоваться аксиомами искусства открытия, которые вытекают из следующих принципов. В [Эксперт89] приводятся принципы логического подхода к изобретанию, из которых сформулированы следующие (см. также [Альтшуллер79]) принципы изобретания, которые кроме их формулировок проиллюстрированы частными примерами из областей разработки технологии ИП, инструментария ИП и Интеллсист.

Принцип 1. Прежде чем начать действовать, необходимо задать себе четыре вопроса: что мы имеем, зачем все делается, чем мы должны воспользоваться для достижения цели, как обеспечить согласованность средств и цели.

Перед созданием Интеллсист предусматривались такие ответы на вопросы первого принципа: имеется богатейший опыт процедурного программирования, доступного лишь программистам, Интеллсист реализовывался для обеспечения всех прямых пользователей ИП средствами решения задач без программистов, для реализации Интеллсист использован опыт создания знаниеориентированных программ, цели ИП и известные программистские средства согласованы, в частности, путем использования готовых программ и автоматического синтеза новых программ.

Принцип 2. Рассуждения и план первичны, действие вторично.

Для ИП рассуждения первичны, а выполнение программы вторично (действие ВМ). Примеров применения принципа много, так как он выполняется повсеместно. Первая фраза указывает на частный случай применения в технологии Интеллсист.

Принцип 3. Все подвергай сомнению, в особенности когда имеется мнение об очевидности рассматриваемой вещи.

Любознательность отличает человека от животного. Еще большее отличие замечается в том случае, когда все подвергается сомнению. Имелись большие сомнения относительно возможности автоматического синтеза программ. Анализ разрешений запросов в Интеллсист показал на возможность построения СП.

Принцип 4. Недостатки являются потенциальными достоинствами, если их правильно использовать.

В процессе разработки технологии и инструментария ИП обнаруживалось много недостатков программ Интеллсист, которые обращались в достоинства системы, так как они подсказывали пути введения новых ее свойств.

Принцип 5. Все время принимать во внимание средства и ресурсы реализации, чтобы цель была достижимой. Средства и ресурсы должны быть согласованы.

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

Принцип 6. Создатели универсальных средств не дали себе труда продумать, для каких конкретных задач они годятся. Всегда необходимы дополнительные знания.

Интеллсист в основе своей является универсальным средством для решения задач или построения программ только на основе введенных знаний. Продуманы также конкретные задачи, для которых годится система. Интеллсист применима только к тем задачам, которые согласуются со знаниями в БЗ и запросе.

Принцип 7. Согласуйте цель со средствами. Они должны быть согласованы.

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

Принцип 8. Любая формализация (абстракция от второстепенного) должна выражать своеобразие целей.

Цель Интеллсист реализовать на основе знаний в БЗ логический вывод ответа на запросы пользователя. Исходный текст на ЯПП постепенно формализуется в соответствии с целью системы.

Принцип 9. Определения выбираются в соответствии с целью.

Новое определение информатики построено в соответствии с целью применения ВМ для самых разнообразных областей знания.

Принцип 10. Ничего лишнего: ни знаков, ни описаний, ни языков, ни понятий, ни фактов, ни теорий, ни алгоритмов и ни систем. Лишнее не должно мешать процессу создания вещи. Лишнее может только увеличить надежность.

ИП использует только ЕЯ. Понятия, описания, теории, алгоритмы, системы и факты создаются самим пользователем. ФЯ можно использовать также по заказу пользователя. Его поиски нового зависят от него самого, поэтому применение этого принципа остается в силе для пользователя.

Принцип 11. Часто встречающиеся вещи необходимо переводить в неявную форму. Важен метод умолчания, сводящийся к сохранению известного (часто встречающегося) в малодоступном месте.

Инструментарий ИП выполняет этот принцип. Меню обеспечивает умолчание во всех формах, в нем скрыты правила ФЯ Лейбниц. Важно также сохранение действий пользователя, которые часто им применяются. Поэтому по умолчанию выполняются именно часто используемые действия.

Принцип 12. Новые понятия вводите только по необходимости.

Такой принцип остается для пользователя также, как в его специальности. Информатика и ИП вводят чрезвычайно мало новых понятий по сравнению с уже известными. Однако без новых понятий не обойтись, так как область обработки знаний является молодой и еще мало изученной. Новые понятия в информатике вводятся в соответствии с данной в определении информатики классификацией основных понятий или с новой областью применения.

Принцип 13. Не существует вещи, которая не могла бы быть выражена в общеупотребительных терминах. И только когда будет убеждение в отсутствии термина, его следует сочинить.

Этот принцип поддерживается в ИП и обеспечивает пользователя всеми средствами для его эффективного применения. Хорошим примером тому служат средства определения синонимов, которые не вводят новых понятия, а только их имена, что свойственно любой конкретной области знаний.

Принцип 14. Путь к конкретизации лежит через максимальное обобщение.

Максимальным обобщением в информатике являются понятия типы данных (множества смыслов понятий), которые выбирает или формирует пользователь. Этого обобщения достаточно для описания конкретных фактов или утверждений о фактах, его достаточно для формализации знаний.

Принцип 15. Каждый формализм должен обладать строгой математической интерпретацией.

В информатике и ИП используется формализм ИЛ, который имеет строго математическую интерпретацию (см. том 5). ИЛ положена в основу построения Интеллсист, его ядра, МЛВ и МАВ.

Принцип 16. Не все интерпретируется полностью. Если бы отсутствовали неизвестные вещи, то не существовало бы проблем.

Этот принцип является главным при формулировке запросов пользователя. Все величины в запросе подразделяются на исходные и искомые. Наличие искомых величин определяет задание или задачу поиска нового знания (относительно искомых величин).

Принцип 17. Формализуйте (пробуйте отвлекаться от второстепенного) смело, отвлекайтесь от многих сторон действительности. Безжалостная критика - путь получения правильного решения.

Если за пользователем остается процедура формализации во время выбора типов данных, то Интеллсист выполняет принцип 17 полностью: трансляция текстов ЕЯ на ФЯ и обнаружение тринадцати классов ошибок, как метод критики знаний и запросов.

Принцип 18. Интересна не истина, а условия достижения истины.

Интеллсист решает главную задачу: определить условия, при которых запрос становится истинным. Система полностью удовлетворяет этому принципу и реализует его в полном объеме.

Принцип 19. Используйте незнание как можно более эффективно.

Интеллсист использует незнание для решения многих проблем. Среди них можно отметить следующие: поиск искомых величин и формирование вопросов для пользователя о частичной недостаточности знаний.

Принцип 20. В плохой форме не удержится и не уместится хорошее содержание.

Этот принцип послужил критерием построения интерфейсов пользователь-ВМ, ВМ-СУБД и пользователь-СП.

Принцип 21. Не все недостатки надо устранять. В первую очередь необходимо развивать достоинства, а не устранять недостатки.

Процесс разработки инструментария ИП строится именно по такому принципу. Каждая программа проектируется по версиям и редакциям с постепенным устранением ее недостатков. Обычно недостатками являются: наличие ошибок, меньшее число реализованных функций и меньший охват требований пользователя, которые предъявляются перед проектированием программы. Интеллсист является программой, которая развивается по такому принципу.

Принцип 22. У каждой вещи необходимо рассматривать все ее свойства для различения с другими вещами, по форме, природе, определению, способу представления, обобщению и применению вещи, в особенности, при ее синтезе.

Принцип рассмотрения всех свойств выполнялся при проектировании Интеллсист путем заимствования всего хорошего, что было в известных программных системах трансляции, редактирования и поиска информации.

Принцип 23. Необходимо отличать одну вещь от другой по любым признакам, свойствам и характеристикам.

Наиболее ярким примером применения принципа различения вещей является процедура сравнения Интеллсист с ЭС и прологовыми системами (см. том 7).

Принцип 24. Стремитесь к совершенному познанию вещи, знанию всех сведений о ней, надо по возможности все знать о вещи и все объяснять.

Наиболее ярким предметом является информатика, о которой исследованы все свойства и объяснены все ее стороны. Этого потребовало новое определение информатики.

Принцип 25. Имеется один эффективный путь познания: начинать с простого и упорно идти к сложному.

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

Принцип 26. Классифицировать и классифицировать везде и всюду.

Все описание информатики базируется на классификации познавательного процесса, связанной с цифрой 7. До формирования нового определения информатики было построено и исследовано более 150 классификаций. Некоторые из них излагаются в каждом томе.

Принцип 27. Документировать и документировать и по возможности не на бумаге, а в памяти ВМ, и перед непосредственной разработкой.

Та разработка будет успешной и качественной, которая придерживается такого принципа. Чтобы построить Интеллсист, необходимо было создать 7 томов настоящего текста информатики, описать все приемы кодировки и построения схем программ.

Законы развития систем и принципы (аксиомы) подхода к изобретанию лежат в основе построения методов информатики, поддерживающих этап информационного изобретания любой вещи (предмета, явления или процесса). Общий алгоритм изобретания включает следующую последовательность этапов (например, см. [Альтшуллер73, 79]):

  1. сбор (возможно дополнительных) знаний,

  2. построение модели задачи из общей ее формулировки,

  3. построение идеального конечного результата,

  4. анализ модели задачи,

  5. устранение ";физических"; противоречий,

  6. предварительная оценка результатов в сопоставлении его с идеальным конечным результатом,

  7. развитие ответа на решение задачи (построение обратных связей в процессах поиска решения),

  8. анализ хода решения с окончательной оценкой итогового результата.

Реализация алгоритма может варьировать шаги или его разделы, он может служить образцом для реальной работы. Методы и способы, которые рассматриваются ниже, раскрывают почти все шаги этого алгоритма.

4.1. Методы формирования понятий

В соответствии с СеГ каждый вводимый в Интеллсист текст должен состоять из терминов. Состав терминов обычно диктуется стандартным лексиконом и лексиконом специальности (конкретной наукой). В подавляющем большинстве случаев термины известны каждому специалисту. Но имеются случаи, когда бывает необходимо изобретать термины, в особенности тогда, когда пользователь встречается с новым понятием с неизвестным именем или вводит новое (чаще неизвестное) понятие. Наиболее частый случай - это новое неизвестное понятие, входящее в утверждения, которые передаются в качестве запроса. Действительно, запись любого уравнения включает термин неизвестной величины Х. Такое имя широко известно еще с первого класса средней школы. При формулировке больших задач в качестве неизвестных вводят термины Х1, Х2, Х3 и т.п. Даже неизвестные понятия целесообразно именовать естественными словами и знаками. Например, вместо Х следует вводить термин «неизвестная величина», «я пошел» или «новое явление». Если аналогичных терминов очень много, их сложнее перечислять, и они имеют одинаковые характеристики, то тогда вводят термин со свойствами быть массивом. В таких же случаях вводят термины из других букв и цифр. Поскольку СеГ разрешает использовать естественные термины, этим целесообразно воспользоваться, не вводя абстрактных терминов типа Х. Это первое важное обстоятельство, которое необходимо учитывать во избежание введения путаницы при обозначении неизвестных. Заведомо неизвестными бывают понятия, которые имеют свои уникальные имена (термины). К условным именам прибегают в математике для подчеркивания абстракций, к ним приучают еще в школе.

Новые понятия должны быть связаны с новыми терминами. Если понятие заимствовано из другого ЕЯ, то либо находят подходящий перевод на русский язык, либо по смыслу изобретают новое имя, либо используется имя на языке оригинала. И правильно утверждается в [Половинкин88], что введение ошибочного термина может затормозить развитие науки или способствовать возникновению ложных построений. Поэтому введение нового понятия и его термина необходимо применять некоторые принципы:

(1) каждый термин должен отражать возможные и допустимые его смыслы и связи с другими понятиями,

(2) он должен соответствовать СиГ,

(3) кратко отражать или описывать основные свойства понятия,

(4) при этом должны использоваться сложившиеся каноны отрасли знания,

(5) число вводимых терминов должно быть минимальным.

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

ЯПП допускает использование любых терминов. Ими могут быть сочетания слов, чисел или знаков. Например, символ точки или точки с запятой являются терминами понятия о конце фразы. Математик может рассматривать понятие, имеющее имя «а+в». Слова в СеГ могут включать символы цифр. Любые символы клавиатуры могут входить в состав терминов. Даже коды вида #123 могут быть термином или его частью. Такая свобода выбора термина не исключает требований и правил формирования терминов. Но каждый исследователь-пользователь находится в своей области знания, в которой используются самые неожиданные обозначения понятий. Химик использует термины H3SO4 или CO2, физик или математик применяет греческий алфавит для обозначения термина - альфа или омега. Филолог использует «длинные» термины типа «и примкнувший к ним» или «солнце всходит и заходит» (при анализе какого-то литературного произведения). Таких примеров можно привести много, бесконечное множество.

Сила привычки в использовании своих терминов велика. Для СеГ такое обстоятельство не должно быть препятствием. В СеГ предусмотрен метод введения «отсебятины» и собственные имена. Свой термин нецелесообразно использовать, поскольку имеется официальный термин. Но если все-таки хочется ввести свой термин, то можно его ввести, так, как СеГ это допускает. Тогда можно ввести свой термин как синоним официального. Синонимия терминов является распространенным приемом введения «отсебятины» во многих ЯПП. Обычно БЗ, а точнее ее лексикон, диктует терминологию. В конце концов изобретение термина - это не столь сложная процедура. Далее наступает более сложная проблема - проблема формализации понятия, определения множества смыслов понятия, поименованном изобретенным термином.

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

Новые термины изобретаются случайно, по аналогии или по вдохновению, поиском методом проб и ошибок, в результате мозговой атаки коллектива исследователей, перебором эвристик или направленным перебором, в результате морфологического анализа, использованием заготовок на поиск, синтеза или в результате экспертной оценки. Здесь все методы хороши. Формирование нового термина должно осуществляться в соответствии с рекомендациями тома 3.

Инструментарий Интеллсист имеет подсистему первичного анализа текстов для построения черновых терминологических словарей. В результате корреляционного анализа текста по смыслу создается словарь терминов, который можно эффективно использовать для выбора терминов, если они еще неизвестны. Этот метод формирования терминов в представленном обзоре методов является последним. Но он может стать главным или основным в конкретной работе со знаниями.

В самом начале исследований обычно вводится абстрактное понятие с абсолютно неопределенными характеристиками (тип, исходное значение, структура) и с неизвестным определением. Интеллсист поможет автоматически определить некоторые или все характеристики в результате разрешения запроса. Этим методом целесообразнее всего и воспользоваться.

4.2. Методы сбора фактов, утверждений о фактах

Большинство наук и большая часть научной или изобретательской деятельности связана со сбором фактического материала. В результате сбора могут быть сформированы массивы конкретных однотипных данных, записи с разнородными значениями в соответствии с типами полей, массивы одинаковых по структуре и свойствам полей записей, таблицы (через СУБД), тексты или словари. Такие данные могут служить хорошим материалом для обработки в задачах поиска данных или в качестве исходных данных для решения задач. Оценка данных на точность, полноту или противоречивость может производиться либо автономно, либо в процессе решения задач с помощью Интеллсист. Итак, основные проблемы сбора фактов состоят в их поиске, вводе в память ВМ и контроле данных с различных точек зрения. Главным результатом поиска являются построенные типы данных для понятий.

Независимо от того, какие конкретные данные коллекционируются по существу и какие в действительности собираются факты. Ведь вначале определяются термины понятий, а затем собираются данные как значения выбранных терминов. Совокупность терминов и их значений определяет факты. После сбора фактического материала можно приступить к исследованиям. Представленная только что кратко процедура создает общее представление о начальной работе в исследовании.

Вся предшествующая деятельность человека накопила богатейший опыт изобретений и исследований, огромный материал для продолжения творчества. Чаще факты собираются в экспериментах, исследованиях или экспедициях. Конечно, изучить и полностью использовать весь опыт и накопленный материал не представляется возможным. Изучение накопленного опыта и материала необходимо опроцедурить так, чтобы минимизировать время поиска требуемого метода изобретания. Идеальный результат - иметь все под рукой. Теперь приходят на помощь ВМ, память которых непрерывно увеличивается. Процедура ознакомления с опытом и материалом почти всегда индивидуальна и зависит от наличия книг, вторичной информации, привычек и др. Мы рассмотрим некоторые вопросы грандиозной проблемы извлечения данных, фактов и операций, отходя от традиционных способов ознакомления с печатными материалами, поскольку проблема изучения печатной публикации является скорее психологической тем более, что они содержат знания только в 5-15% текста. После сбора фактов можно приступать к сбору знаний.

4.3. Методы сбора знаний

Сбор знаний по новой области знаний является самой сложной и длительной процедурой. Правда, некоторые могут сказать, что сложнее собирать знания в известных и хорошо разработанных областях. Хотя по известной области знаний имеются разнообразные публикации. Их использование наталкивается на сложные процедуры фильтрации знаний (ввод, поиск ошибок, устранение избыточности, поиск противоречий). Самой упрощенной процедурой приобретения знаний является процесс использование готовых или заказных БЗ. Новое исследование связано с формированием нового знания, поэтому к процессам сбора знаний необходимо подходить весьма ответственно.

Прежде всего необходимо помнить общие положения (или наставления) и определение понятия ";знания";. Знания выражаются аксиомами, представленными утверждениями. Затем. Выражения задают зависимости операндов (констант и величин) и операций (операций, функций и процедур). Аксиомы служат определению величин (термандов) и операций (термаций), а также их связей. Сущность знаний состоит в выражении всего известного о понятиях. Методов сбора знаний много, некоторые из них будут рассмотрены в данном разделе.

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

Имеется большое число методов сбора знаний, помимо основного, который используется в ИП. Учеба, чтение и исследования - составляют фундаментальные условия для приобретения знаний. Интеллсист имеет встроенные знания, которые собраны для обслуживания наибольшего числа задач из всех областей знания. Это следует из такого рассуждения. ФЯ для разработки программ создавались именно из таких условий. Язык Лейбниц создавался в результате анализа всего ассортимента ФЯ, он является их обобщением. Затем было произведено сопоставление ЕЯ с языком Лейбниц.

Кроме встроенных знаний имеются фундаментальные знания (которые известны в учебном заведении), знания о физических единицах (которые важны для инженеров) и знания об интерфейсе (которые важны для создателей программ). БЗ с такими знаниями прикладываются к Интеллсист по желанию пользователя. Любая БЗ может помочь или ускорить сбор знаний. Можно сказать (условно), что применение этих БЗ составляет следующий метод сбора знаний.

К методам сбора знаний относят следующие работы, они перечислены ниже. Номер по порядку не имеет отношения к приоритету метода.

1. Метод наблюдения за предметами, явлениями или процессами уже упоминался, он известен каждому исследователю. Результатом применения метода могут быть коллекции фактов, описания и характеристики понятий, а также законов или закономерностей. Весь собранный материал может послужить частью БЗ или запроса. Все зависит от важности материала, либо он пригоден для многих задач (БЗ), либо он используется в одной конкретной задаче (запрос).

2. Метод интервью с экспертами, способными оценивать знания, или со специалистами, знающими свое дело более других. Формы и способы проведения интервью описаны достаточно подробно в технической литературе [Осуга89, Пойа76, Приобрзн90].

3. Метод анкетирования специалистов позволяет собирать факты или оценивать имеющиеся утверждения.

4. Метод использования публикаций любого типа применяется чаще всего. Главная проблема извлечения знаний из публикаций состоит в фильтрации текстов с целью выделения искомого знания. Как извлечь знания из публикации, которая насыщена избыточными сведениями, не относящимися к предмету исследований или решения задач, зависит от пользователя, который может сочетать различные (уже перечисленные) методы извлечения знаний. При статистической оценке в каждой публикации всего 5-15% текста с требуемыми знаниями.

5. Метод проведения исследований является самым распространенным в практике любого инженера. Исследуют многие предметы, явления и процессы. Результатом исследований могут быть набор фактов, закономерности или просто совокупность утверждений или записей, которые представляют знания. Исследования могут быть связаны с проведением опытов или экспериментов.

6. Метод изобретания знаний или создание своих знаний - это достаточно сложный процесс извлечения знаний. Ниже будет подчеркнута сложность метода.

7. Метод использование библиотек БЗ является эффективным средством сбора знаний, который рекомендуется в ИП. С помощью инструментария Интеллсист можно использовать проверенные знания для быстрого применения в разрешениях различных запросов. Наибольшим спросом могут пользоваться заказные БЗ. Такие БЗ могут оказаться дорогими, но их распространение за умеренную цену оправдает затраты за короткое время.

4.4. Методы формулировки целей

Основной метод формирования целей состоит в поиске ответов на вопросы. Сам вопрос ставит цель поиска ответа на него. «Что это такое?», «Чего желаете?» или «Какова цель?» - вот примеры классических вопросов, содержащих требования цели. Цели зависят от уровня творчества. Выбор уровня обосновывается либо сферой основной деятельности человека, либо суммой накопленного им знания. Классификация уровней творчества основана на постепенном расширении области знания человека и не является строго обязательной. Примером классификации может быть следующий:

1. Использование конкретных задач в качестве целей деятельности.

2. Формулировка новой задачи, возникающей в результате исследований.

3. Формулировка проблемы как обобщение совокупности однородный задач.

4. Проблемы профессии представлены целями узкой области знаний.

5. Отрасль деятельности человека представлена целями широкой области знаний.

6. Система взглядов подразумевает разнообразие постановки целей.

7. Мировоззрение как источник постановки общих целей.

Формулировка цели предполагает постановку по крайней мере задачи. Каждая задача сразу подразделяется на подцели: что дано и что требуется найти. Сама постановка задачи представляет собой процесс, который завершается окончательной формулировкой главных двух подцелей. Кроме этого обычно рассматривается структура задачи, которая включает рассмотрение данных, описание результатов и операций, построение последовательности операций. Разработка структуры задачи ставит ряд подцелей следующего уровня. Этот процесс может оказаться достаточно протяженным и зависимым от класса целей.

Только разнообразие операций указывает на пространство целей, которые могут возникать при изучении структуры задачи:

  • организация данных или распределение предпочтений (взаимодействие, подчинение, отношение),

  • сопоставление данных и величин, воздействие величин друг на друга,

  • управление операциями (передача информации или управления, вхождение операций),

  • классификация или обобщение, иерархия, объединение (составная часть, части одного уровня),

  • конструирование данных и отношений (объединение, соединение, вложенность),

  • расчленение, сочленение, компоновка частей исследуемого объекта (физические силы, соединения частей, физические основы связи, химические связи),

  • материал или вещество, которое растворяется, кристаллизуется, кипит (передача физических явлений),

  • поле - сложение, взаимодействие (переход в состояния, изменение свойств),

  • способ - взаимодействие исполнитель-предмет (положение частей, степень участия, обусловленность),

  • метод - вывод, применение, сочетание, выкладки (этапы, шаги, переходы, передачи данных),

  • явление - наблюдение, фиксация (взаимозависимость, взаимообусловленность),

  • технология - маршрутные операции (взаимодействие работающих частей),

  • прибор - измерение, воздействие (связь по физическим величинам),

  • устройство - прием, переработка, передача (взаимное положение),

  • конструкция - сборка, компоновка, разборка (отношение надежности, усилия взаимодействия),

  • система - взаимодействие частей (каналы связи, потоки информации),

  • художественное произведение - исполнение, интерпретация, формирование,

  • сочинение - запись, чтение,

  • тексты - конкатенация, разбор,

  • искусство - окраска, композиция (соотношение форм, цвета, звука и т.п.)

Сравнение, как основная операция в процессах изобретания, применяется чаще всего. Кроме сравнения применяются операции преобразования данных. Порядок выполнения операций также представляет собой операцию изобретания. Порядок бывает:

  • последовательный

  • параллельный

  • условный

  • циклический

  • иерархический

  • смешанный

  • распределенный

Вот приблизительный набор общих операций. Он этим не исчерпан, а исчерпаем ли он? Скорее всего не исчерпаем даже в каждой конкретной науке, не говоря об отрасли знаний или деятельности человека.

4.5. Методы сбора сведений об операциях

В подавляющем числе случаев для записи знаний применяются известные операции. Сведения о таких операциях собираются из учебников, БЗ, при опросе специалистов и др. Это самый распространенный метод сбора сведений об операциях - использовать имеющиеся сведения. Проблемы сбора сведений об операциях возникают при введении или исследовании новых операций. В общем операции изучают точно так же как изучают величины. Новая операция - это функция, зависящая от одного, двух или ни одного параметра. Математический анализ (как наука) предоставляет множество методов изучения функций. В результате изучения могут быть построены описание операций, аксиомы, определяющие эту операцию, правила вывода с построенной операцией или построены подпрограммы выполнения операций.

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

Фактически мало что сказано о рассматриваемом методе. Это обосновано тем, что исследование операций или сбор сведений об операциях является сложной теоретической задачей, которая под силу только специалистам высокой квалификации. Имеется много публикаций по методам исследования операций. Даже их обзор занял бы значительное здесь место. Этот раздел призван только для того, чтобы указать на сложность проблем сбора сведений об операциях. В емких исследованиях новых областей знания не избежать фундаментального подхода к методам сбора сведений об операциях. Работа подобного сорта ответственна и требует больших предварительных знаний во многих областях. Имеется только одно утешительное обстоятельство, значительная часть необходимых операций описана в БЗ. Пользователю достаточно изучить их описания и перейти к применению имеющихся описаний.

4.6. Методы исследования причин изобретания

Причины формирования нового объекта (предмета, явления или процесса) могут быть самые разнообразные. Вот некоторые из них:

  • неудобства или затруднения в труде или по жизни,

  • некомфортабельность в быту или на отдыхе,

  • необходимость инструмента для выполнения работ,

  • поиск чего-либо в библиотеках или столах,

  • улучшение существующих объектов по структуре или параметрам,

  • обучение изобретению нового молодого поколения,

  • простая тяга к изобретанию (как у изобретателей).

Разве можно перечислить все причины? Это не под силу любому исследователю. Иногда достаточно сказать ";Надо!"; или ";Найти!";, что явится причиной изобретания нового.

Методы исследования указанных причин необходимы для самого процесса формирования нового объекта. Сами методы частично описаны в разделах настоящей главы.

4.7. Методы сходства и различий для установления причинных связей

Поиск знаний и истины - вечная забота человека. Интеллсист должна способствовать человеку в таком стремлении. С древних времен человек обнаружил свои способности в использовании методов вывода: дедукция (от общего к частному), индукции (от частного к общему), традукции (от частного к частному) и абдукции. С применением этих приемов обнаружилось также, что практическое их применение приводит к результату, который является достоверным по вероятности (или по возможности), отчасти при этом результаты ненадежны. Тем не менее практическое применение указанных методов продуктивно, но иногда требует обсуждения для уточнения, подтверждения веры в результат. Некоторые образцы таких приблизительных или правдоподобных рассуждений по вероятности ниже рассматриваются для того, чтобы продемонстрировать возможности информатической логики, Интеллсист, БЗ и запросы для Интеллсист и предостеречь пользователя от абсолютного восприятия способов умозаключений по индукции, помочь ему определиться в условиях их применения.

В общем замечательные методы логического вывода могут применяться, но с некоторыми уточнениями или оговорками условий применения. Цель использования методов состоит в возможности расширения БЗ, с их помощью можно получить новые факты (возможно с определенной степенью достоверности), формировать новые проблемы или организовать новые исследования. Вся указанная совокупность действий методологически относится к процессам изобретания и к технологии использования Интеллсист.

При рассмотрении методов установления причинных связей, аналогий и ведения спора будет использован простой логический формализм. Рассмотрим известный пример: «Что было раньше - курица или яйцо?». Одни рассуждают, что курица является причиной яйца (К => Я), другие - яйцо является причиной курицы (Я => К). Углубленный спор может привести к логической мысли, что все было одновременно, а именно: К => Я и Я => К, что для Интеллсист определяет действия:

(not К \/ Я) & (not Я \/ К) следует not К & not Я \/ Я & К следует (К = Я),

но

(not К \/ Я) \/ (not Я \/ К) следует not К \/ К \/ not Я \/ Я следует истина.

Спор зашел в тупик, курица и яйцо являются одновременно причинами и следствиями. Поэтому родилась шутка: «Раньше были курица и яйцо!». Углубление спора должно предусматривать введение или поиск дополнительных знаний, отводящих или выводящих из тупиковой ситуации.

Заметим важное обстоятельство. Приблизительные рассуждения чаще всего могут базироваться на многозначных или размытых логиках. Однако рассуждения по индукции, являющиеся также приблизительными, продуктивны во многих жизненных ситуациях при рассуждении с неполным знанием (например, при проведении следствий по совершенным проступкам). Важно, чтобы в результате проведения приблизительных рассуждений автоматически определялись, или по опыту учитывались, условия и ограничения приблизительности. Если каждый раз иметь в виду условия и ограничения, то можно получать точные и полезные результаты.

В этом разделе существенную роль будут играть понятия: обстоятельство, причина и следствие. Обстоятельство здесь понимается как факт или имя факта, относящиеся к объекту (далее, как и ранее, под объектом будем иметь в виду предмет, явление или процесс), причина - это объект, вызывающий к жизни другой объект, следствие - результат действия причины. Повод является примером непосредственной причины. Причина сама может быть следствием другой причины, а следствие может стать причиной другого объекта. Такими краткими определениями будем пользоваться в дальнейшем.

В изобретании перечисленные методы способствуют сравнению идей, объяснению новых объектов, порождению веры в правомерность рассуждений или опровержения веры на основе глубоких исследований. При изучении, в частности, причин и следствий применяется логический вывод, следовательно, используется интеллектуальная работа, а ее результаты определяют интеллект применяющего все указанные методы. Действительно, из фактов (обстоятельств) трудно, а иногда вообще невозможно понять следствия из имеющихся причин.

Рассмотрим три группы методов изобретания. Первая группа выявляет сходства и различия исследуемых явлений и обстоятельств. Она по большей части применяется в производстве следствия или расследования. Вторая группа методов связана с часто используемыми методами рассуждений по аналогии. Область применения этой группы характеризуется широким диапазоном поисков и исследований. Третья группа связана с организацией коллективного поиска истины, знаний и объектов, она именуется как метод спора и применима прежде всего при мозговом штурме и критике новых идей и объектов.

4.7.1. Метод сходства. Начнем с наиболее распространенного метода, применяемого чаще других в самых простых жизненных ситуациях. Метод сходства так определяется в литературе [Ивин96]: Если какое-то обстоятельство постоянно предшествует наступлению исследуемому явлению (предмету, процессу - объекту), в то время как иные обстоятельства изменяются и не оказывают видимых воздействий на явление, то это обстоятельство есть причина данного явления. По [Кириллов98] так: В результате сравнения нескольких случаев, в каждом из которых исследуемое явление наступает, все случаи сходны лишь в одном и различны во всех других обстоятельствах. Такова сущность метода нахождения общего в различном. Знание в этом рассуждении состоит в том, что имеется ряд обстоятельств (условно их поименуем как А, Б, В, Г, Д), которые используются для установления явления Х. Например, требуется установить, «школьник является хорошим» (синоним - Х) по признакам: «учится хорошо» (синоним - А), «одет богато» (синоним - Б), «руки всегда вымыты» (синоним - В), «культурно говорит» (синоним - Г), «дружит со всеми детьми» (синоним - Д). Эксперты могут выдвинуть такой тест: А или Б или В или Г или Д.

- по [Кириллов98], используя синонимы:

в условиях одновременности А, В, Г и Д, при отсутствии Б имеет место Х;

в условиях одновременности А, Б, Г и Д, при отсутствии В имеет место Х;

в условиях одновременности А, Б, В и Д, при отсутствии Г имеет место Х;

в условиях одновременности А, Б, В и Г, при отсутствии Д имеет место Х.

Отсюда следует, что А является главным обстоятельством для наступления явления Х.

Формально также можно записать общую истину, используя синонимы:

(А & not Б & В & Г & Д => Х) &

(А & Б & not В & Г & Д => Х) &

(А & Б & В & not Г & Д => Х) &

(А & Б & В & Г & not Д => Х).

Решение этого задания на Интеллсист приводит к следующей записи утверждения:

(А =>Х) \/ БВГД \/ not Б & not В \/ not Б & not Г \/ not Б & not Д \/

not В & not Г \/ not В & not Д..

Отсюда следует главный вывод, что для утверждения о хорошем ученике можно судить по тому как он учится. Для приблизительной оценки этот тест годится. Однако необходимо иметь в виду два ограничения для применения теста: (1) не могут быть все признаки отрицательными и (2) не могут быть любые два признака одновременно ложными. Если при тестировании такими ограничениями пренебречь, то можно быть вполне уверенным вывод: из наличия признака А (учится хорошо) следует факт Х (хороший школьник). Ограничения заставляют задуматься над продолжением исследований по дополнительным признакам. Любые сомнения требуют детального исследования. Достоверное заключение может быть получено по методу сходства лишь, если условия исследования выполнены.

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

4.7.2. Метод различия. В некотором смысле противоположным предыдущему методу является метод различия, который так определяется в литературе [Ивин96]: Если какое-то обстоятельство имеет место, когда наступает рассматриваемое явление (предмет, процесс - объект), и отсутствует, когда этого явления нет, и все другое остается неизменным, то данное обстоятельство и представляет собой, по всей вероятности, причину явления. Опять рассмотрим надуманный пример. Имеются явления: пасмурно (П), ветрено (В), сквозняк (С), душно (Д), которые связаны с обстоятельством хрипоты (Х) следующим образом: при наличии всех явлений присутствует хрипота, а при наличии всех явлений кроме сквозняка, хрипота отсутствует. Эти рассуждения можно формализовать в виде соотношений (или выражений), для простоты записи используются синонимы:

П & В & С & Д => Х;

П & В & not С & Д => not Х.

Решение этого задания на Интеллсист приводит к следующей записи утверждения:

П & В & Д => (С = Х).

Полученное рассуждение можно интерпретировать так: независимо от П, В и Д следует, что С и Х обладают одинаковыми свойствами одновременно быть или не быть.

Конечно же, не все так просто. Побочные результаты таковы, что если хотя бы одно явление из П, В или Д отсутствует, то полученное суждение также может отсутствовать. Это утверждение является ограничением или условием работы метода различия. Сам метод обобщается на любое количество явлений, в примере рассмотрены 4 явления.

Судя по примеру был изучен метод различия, реализующий причинно-следственные связи объектов и обстоятельств. При обнаружении причины С для обстоятельства Х получен логический вывод о совпадении причины и следствия. Действительно, каждый может сделать два заключения: (1) сквозняки могут породить хрипоту и (2) хрипота и сквозняки взаимосвязаны.

4.7.3. Композиция методов сходства и различия. Композиция двух только что рассмотренных методов может принести в изобретениях положительные результаты. В соответствии с публикацией [Ивин96] метод сходства и различия определяется так: Если два и более число случаев при наступлении данного явления (предмета или процесса) сходны только в одном обстоятельстве, в то время как два и более случаев из числа рассматриваемых, когда этого явления нет, различаются только тем, что данное обстоятельство отсутствует, то это обстоятельство и есть, вероятнее всего, причина рассматриваемого явления. Довольно плохо читаемое определение станет ясным при анализе формального изложения соотношений случаев, обстоятельств и явлений. Изложение определения станет еще более ясным, если его формальную запись будем составлять на иллюстративном примере. Пусть обстоятельства А, Б, В, Г и Д связаны с явлением Х в соответствии с четырьмя случаями следующим образом:

в условиях А, Б и В имеет место Х;

в условиях А, Г и Д имеет место Х;

в условиях Б и В отсутствует Х;

в условиях Г и Д отсутствует Х.

Следствием здесь является фраза: вероятно А есть причина Х. На формальном логическом языке эти выражения записываются так:

А & Б & В => Х;

А & Г & Д => Х;

Б & В => not Х;

Г & Д => not Х.

Формально записывается и следствие А => Х.

Но при прогоне записи связи обстоятельств и явления через Интеллсист можно получить такое выражение:

(А => Х) \/ (not(Б \/ В)& not(Г \/ Д)),

что указывает на условия или вероятие следствия, которые помещены после первой операции ";или";.

4.7.4. Метод сопутствующих изменений. Это еще один метод, пригодный для реализации процессов изобретания. Он также взят из книги [Ивин96] и определяется следующей фразой: Если с изменением одного явления изменяется и другое, а остальные обстоятельства остаются неизменными, то между данными явлениями существует, возможно, причинная связь. На ЯПП метод можно проиллюстрировать записью:

в условиях А, Б и В имеет место Х;

в условиях изменения А и постоянстве Б и В имеет место изменение Х.

Следовательно, А есть, вероятно, причина Х. Ситуация встречается часто при анализе новых идей или при поиске знаний.

Привлечение Интеллсист для анализа приведенных высказываний может быть осуществлено в двух вариантах. Первый вариант - анализ двух первых фраз - имеет исходный вид:

А & Б & В => Х; и

not А & Б & В => not Х;

с результатом логического вывода: (А = Х) \/ not(Б & В).

Выражение на ЯПП для результата можно сформулировать так: явление А совпадает с явлением Х при условии, что обстоятельства Б и В действительно не изменяются, их изменение опровергает главное утверждение о совпадении исследуемых явлений. При таком подходе к анализу исходных записей не ставится точного вопроса о причине и следствии, а ставится вопрос о зависимости двух явлений.

Второй вариант - анализ двух первых фраз при следовании из них третьей фразы - имеет исходный вид:

(А & Б & В => Х; и

not А & Б & В => not Х) => (А => Х);

с результатом логического вывода: (А = Х) \/ ((not Б \/ not В) & (А \/ Х)).

Для этой формальной записи можно синтезировать фразу, утверждающую равенство явлений А и Х и оговаривающую условия применения следствия метода сопутствующих изменений о постоянстве сопутствующих обстоятельств.

4.7.5. Метод остатков. Наконец последняя разновидность методов сходства и различий, также взятый из [Ивин96], имеет следующую формулировку: Если сложная причина производит сложный результат и известно, что часть причины вызывает определенную часть этого результата, то оставшаяся часть причины производит остальную часть результата. Метод остатков состоит в дифференциации групп явлений и обстоятельств, его лучше всего проиллюстрировать на примере двух явлений и двух обстоятельств. Для сложных случаев (большого числа явлений и обстоятельств) необходимо привлекать Интеллсист. Для человека явится большой сложность операции с пятью и более явлениями и таким же числом обстоятельств. Заметим, что равенство чисел явлений и обстоятельств не обязательно.

Рассмотрим формальное представления метода и применения Интеллсист для простого случая двух явлений (сложная причина из явлений А и Б) и двух обстоятельств (сложный результат-следствие состоит из результатов Х и У). Исходная формулировка имеет вид:

сложная причина А и Б вызывает сложный результат-следствие Х и У;

явление Б есть причина У.

Значит, причина А вызывает следствие Х.

Транслятор Интеллсист представит эти фразы-знания в следующем виде на языке Лейбниц: (А & Б => (Х & У); Б => У. В результате логического вывода получается решение, которое также здесь представлено фразой:

(А => Х) & (Б => X & У).

На ЯПП результат записывается фразой: Одновременно из причины Б следует результат X и У и из причины А следует результат Х.

Исследование метода остатков завершает рассмотрение группы методов сходства и различия. Можно сказать условно, что Интеллсист (или точнее информатическая логика) подтверждает правомерность рассуждений и определяет условия правомерности каждого метода. Иными словами, Интеллсист находит условия, при которых работает каждый метод. Условия приводят к порождению оговорки в каждом методе, следовательно, решение правомерно сопровождается словами «вероятно» «по всей видимости» или «возможно». Оговорка полезна для любых исследований, поскольку она представляет собой дальнейшие вопросы к самому исследованию. Процесс расследования или следствия не завершается применением методов, но ставит проблемы новых исследований в соответствии с оговорками, что позволяет сформулировать новые вопросы для исследований. Заметим, что комплексное применение всех методов сходства и различия может дать утвердительные результаты. Но комплексное исследование усложняется существенно числом явлений, обстоятельств, причин и следствий. Существенную помощь может оказать Интеллсист, которая одновременно с результатом выводит условия правомерности результата.

4.7.6. Метод аналогий. Самый популярный метод изобретания именуется умозаключением по аналогии. Он хорошо известен всем исследователям. Каждый объект уникален - правильное суждение. Однако, сравнение объектов между собой допускается. Результатом сравнения может быть неожиданным: объекты чем-то похожи друг на друга. Если отвлечься от некоторых в данный момент несущественных свойств объектов, то можно обнаружить определенную степень схожести или аналогичности. Отсюда возникает идея реализации не только схожести, но и применение этой процедуры не для сравнения, а для поиска по аналогии. В соответствии с общим определением: аналогия - это сходство вещей в каком-либо отношении между ними. Но вещь имеется только в воображении. Тогда можно говорить о сравнении нового объекта с имеющимся, а точнее, формирование нового объекта по аналогии с имеющимся. Имеются причины существования аналогий, которые состоят в наличии многих общих признаков, свойств и характеристик вещей, проверяемых на сходство. Причины позволяют переносить информацию об одной вещи (вещи-прототипа) на другую вещь (вещь-модель). Аналогии можно наблюдать всюду, мы используем в изобретании аналогию для построения новой вещи. Рассуждение по аналогии - это индуктивное умозаключение о принадлежности определенного признака объекту на основе того, что сходный с ним другой объект обладает этим же признаком.

Операция ";обладает"; является логической и применяется к объекту О и признаку А. Она обладает свойствами: А обладает О и О обладает А. Эта аксиома записывается так: О => А и А => О, аксиома переписывается еще и так О = А.

Пусть О1 и О2 утверждения о наличии или отсутствии соответствующего объекта. Формальная схема умозаключения, приведенного выше, имеет вид:

объект О1 имеет логические признаки А, Б, В и Г;

объект О2 имеет логические признаки А, Б и В.

Следовательно, объект О2 также имеет, по-видимому, признак Г. Формальная запись на ЯПП после перевода умозаключений будет иметь вид:

А & Б & В & Г => О1; А & Б & В => О2;

Решение Интеллсист примет вид: (Г => О1) & (А & Б & В & Г => О2) \/ А & Б & В => Г. Оно подтверждает определение понятия аналогии, которое по результату должно говорить как следствие из исходных умозаключений, что признак Г действительно имеется у О1 и О2 обладает всеми признаками О1 или признак Г вытекает из признаков А, Б и В (признак Г не должен зависеть от остальных признаков). Операцию ";обладает"; иногда можно заменить на операцию принадлежности: А принадлежит О1. Тогда

О1 = { А, Б, В, Г } и

О2 = { А, Б, В};

следовательно, О1 аналогичен О2 или О2 аналогичен О1

если О2 < О1, то О3 := О2 + (О1/О2);

если О2 > О1, то О3 := О1 + (О2/О1);

получаем множество, которое является исходным + (отличия).

Понятие аналогии является весьма древним, и оно может относиться ко всяким объектам (предметам, явлениям или процессам). Выделяется аналогия по признакам, как наиболее часто используемая, аналогия по свойствам, по отношениям, по формальному контексту, по операциям. Понятие аналогии применяется также для сравнения идей.

Аналогии (как методы) классифицируются по различным признакам. Рассмотрим некоторые из них.

1. Физические аналогии - сходство вещей по физическим величинам.

2. Бионика. Это скорее качественные аналогии.

3. Структурные аналогии - сходство вещей по конструктивным признакам.

4. Литературные аналогии: метафоры, гиперболы, сравнения.

5. Концептуальные аналогии.

6. Личные аналогии - постановка своей индивидуальности на место вещи, вжиться в прототип и наблюдать за собой, что будет.

7. Теоретические аналогии.

8. Математические аналогии - сходство вещей по количественным: отношениям, уравнениям, соотношениям, законам. Прототип и модели описываются.

9. Логические аналогии - по рассуждениям.

10. Функциональные аналогии - по сходству выполняемых функций.

11. Практические аналогии.

12. Прямые аналогии - прямое перенесение свойств с одной вещи на другую, сходство позволяет изучать прототипы и строить модели новых вещей с одинаковыми количественными соотношениями.

13. Технические аналогии.

14. Фантастические аналогии: воображение, нереальные вещи более всего напоминает творчество, творец - он же и фантаст.

15. Смешанные аналогии - комбинации некоторых или всех.

При развитии Интеллсист можно ожидать, что МЛВ настраивается на поиск решений по аналогии, или будет построена БЗ «Поиск по аналогии».

Выше приведен простейший способ формализации аналогии в исчислении высказываний. Более сложная реализация описана в [Приобрзн90]. Там предлагаются операции использования множеств фактов или утверждений, которые пополняются за счет сходства.

4.7.7. Метод споров. Наиболее характерным для человека является его способность иметь свою точку зрения, которая в частностях или существенно отличается от точек зрения других людей. Точка зрения человека определяется его знаниями. Интеллсист имеет свою точку зрения, которая соответствует ее БЗ. Разработка БЗ осуществляется одним человеком или группой людей, которые и определяют точку зрения Интеллсист. Различие в точках зрения или во взглядах порождает споры. Нас будет интересовать с информатической точки зрения спор пользователя с Интеллсист. Искусство спора называется эристикой, которая включает в себя два важных раздела: диалектику (поиск истины) и софистику (достижение победы любой ценой).

Спор в системе человек-ВМ может возникнуть при наличии различий в лексиконах, в БЗ и при отладке знаний или запросов пользователя. Завершение спора наступает при формировании согласия, самоуточнения условий примирения или при фиксации разрыва в споре, когда каждый остается на своей точке зрения. Важно четко представлять основы эристики и понимания условий или требований к спору. Например, в процессе отладки знаний может обнаружиться несогласие с противоречиями, обнаруженными Интеллсист. Условием спора является используемая БЗ, которая может быть заменена или скорректирована.

Прежде всего рассмотрим требования, выдвигаемые к спору. Они определяют метод ведения спора, исходные данные спора и его результат. Требования таковы:

Первое требование. Когда спор необходим, а он начинается вместе с возникновением различных точек зрения, осуществляется поиск контрпримеров для опровержения идеи или для подтверждения ее правильности.

Второе требование. Каждый спор должен иметь свою тему или предмет, которые определены и приняты всеми сторонами. Интеллсист (если она является участником спора) изучает запрос на фоне БЗ и определяет условия истинности высказываний. По сути своей выведенные условия являются контрпримером для подтверждения или опровержения идеи. Это же положение возникает при работе с лексиконом.

Третье требование. Лексикон или БЗ изменяются только после согласия всех сторон спора. Изменение элементов знаний может быть осуществлено одной стороной спора, если дальнейшее использование результатов изменений осуществляется только этой стороной.

Четвертое требование. Предметом спора в информатике могут быть понятия и соответствующие элементы лексикона и элементы БЗ, относящиеся к этому понятию. В качестве аргументов в споре должны выступать литература или специалист. Конечно, если спор касается только лексикона, то либо устраняются противоречащие понятия, либо пополняется один лексикон понятиями другого лексикона.

Пятое требование. У спорщиков в конечном счете должен быть единый базис, один и тот же лексикон и одна и та же БЗ.

Шестое требование. Должны наличествовать организация условий ведения спора и знание логики вывода следствий из исходных положений. Привлечение Интеллсист в споре важен для доказательства правильности положений или для поиска условий правильности положений. Условия ведения споров во многом обеспечиваются моральными кодексами, учетом человеческого фактора (использование ярких примеров и шуток) и обязательным исследованием вариантов представления положений. Положения могут строиться по схемам:

  • А есть то же самое, что и В,

  • из А следует В,

  • А является следствием В,

  • А не есть то же самое, что и В,

  • из А не следует В,

  • А не является следствием В и т.п.

Седьмое требование. Спор предполагает знание лексикона и БЗ, которые как обычно не полны. Необходимо иметь в виду, что спор является средством познания идей, методов и объектов.

Восьмое требование. В споре необходимо стремиться к выявлению истины или условий появления истины и добра или условий достижения истины или добра. Это требование выполняет Интеллсист.

Девятое требование. В споре необходимо проявлять гибкость, выдвигать новые запросы для Интеллсист, проводить эксперименты, пополнять лексикон и БЗ.

Десятое требование. В споре не должны допускаться промахи, пропуски и ошибки. Самозащищенность спора должна быть в обязательном порядке.

Результаты спора состоят в следующем: расширение лексикона и БЗ, появление или добыча новых фактов, которые могут быть не достоверными или вероятными, появление новых проблем, рождение новых исследований и проведение последовательностей проблем и их решений, постепенно устраняющих условия истинности итоговых утверждений.

Главным условием споров следует считать стремление к подробности исследований, выработке рекомендаций и абстрагированию в какой-то степени. Однако следует иметь в виду, что универсализация перечисленных условий может привести к тупиковой ситуации. Тупик или парадокс должны работать на поиск новых проблем, новых решений, построение новых БЗ и серий запросов.

4.8. Метод формирования идеального результата

Идеальный конечный результат - удачное изобретение термина в [Альтшуллер73] - кратко именуется как ИКР. ИКР - это возможно не достижимый результат изобретания, решающий поставленную задачу на отлично и удовлетворяющий всем выдвинутым требованиям и характеристикам, а возможно решающий близкие или побочные задачи. Данное определение ИКР можно уточнить: ИКР удобен, его не замечают, КПД, если можно говорить так о вещи, максимален (близок к 100%), он ничего не весит и нечего не стоит и т. п. Результат действительно является идеальным.

ИКР должен обладать одним или несколькими свойствами из числа следующих:

- сама вещь всегда работает;

- все части вещи работают равномерно;

- вещь потребляет минимальную энергию;

- вещь построена из ничего или почти из ничего;

- при построении вещи не потребовалось ничего;

- максимальная информативность;

- вещь малого объема и веса;

- вещь функционирует сама без дополнительной помощи;

- вещь выполняет больше функций, чем в нее было заложено;

- у вещи нечего улучшать;

- вещь может выполнять функции образца для создания хороших вещей.

ИКР - это воображаемая вещь, которая может быть использована в качестве цели или ориентира для изобретания новой вещи. В связи с этим ИКР может выступать альтернативой формулировки задачи. ИКР - это маяк для сравнения, эталон для исследования и построения новой вещи. ИКР создается и оформляется в соответствии со следующими шагами (ниже перечислены наименования только некоторых из них):

Шаг 1. Анализ исходных данных.

Шаг 2. Прочитать литературные источники.

Шаг 3. Формулировка задачи

Шаг 4. Формулировка ИКР

Шаг 5. Определить пути исследования.

Шаг 6. Выделение главного в исследованиях.

Шаг 7. Учет качественных соотношений.

Шаг 8. Учет количественных соотношений.

Шаг 9. Выделить главное.

Шаг 10. Сравнить, оценить и выбрать нужное.

Шаг 11. Оформить результаты.

Это единственный ";трудовой"; метод, представленный в форме алгоритма. Вообще же, ИКР проектируется по всем правилам создания любой вещи. При этом снимаются все ограничения и требования на вещь. ИКР практически не достижим, но с его помощью можно близко подойти к намеченному идеалу. ИКР, как в любом проектировании, может создаваться многократно и с обратными связями для контроля правильности итогов проектирования. ИКР является информационным проектом, воплощение которого почти невозможно (хотя и не исключается положительное решение).

4.9. Метод проб и ошибок

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

Метод выдвигает требования к исследователю: необходимо иметь значительный багаж знаний в области исследований, эффект озарения занимает при этом существенное место, не помешает упорный труд по реализации новой пробы и по поиску ошибочных решений, помогает внутренняя интуиция. Несмотря на кажущуюся случайность выбора варианта объекта, чаще всего исследователь ориентируется на методики - составные части технологии работы по методу проб и ошибок. Мы рассмотрим несколько методик.

Поиск по методике вектора инерции - это использование привычек и умения находить узкие места в исследуемых делах и чувствовать запросы в своей деятельности. Эти примерные факторы формируют направление (вектор) поиска. Однако со временем становится ощутимым исчерпание инерции и отход от направления поиска из-за частых ошибок. Можно выразиться так: наступил момент, когда решение находится по ту сторону вектора инерции. Наступает момент поворота вектора инерции. Поиск по методике инерции можно продолжить вновь.

Методика поиска во все стороны - это отвлечение от вектора инерции или создание многих векторов инерции. Область поиска идей существенно расширяется при использовании нескольких векторов инерции. В этой методике скоро обнаруживается, что поле поисков становится широким и обширным, в этом поле можно вскоре заблудиться. Большое число векторов и точек на каждом векторе указывает на отсутствие системы или плановости поиска, что существенно затрудняет работу по отбору новых объектов. Случайность хороша только при наличии планомерной работы. Поиск по такой методике становится бесполезным с некоторого времени работы по многим векторам инерции.

Методика поиска при стремлении к идеальному конечному результату - это направленный поиск, требующий придерживаться как можно ближе к идеальной требуемой цели. Главное в этой методике - известность конечного результата и целеустремленность процесса поиска. Каждая методика имеет свои недостатки. Рассматриваемая методика ориентируется на узкую направленность мышления. Творческое начало при работе по методике быстро исчерпывается. Испытанное русло рассуждений всегда может подвести своей косностью.

Методика поиска с абстракцией от тенденции - это начало для систематического подхода к творчеству, переход к поиску новых тенденций в известном поле деятельности. Если некоторая методика указывает пути поиска, то данная методика требует непрерывного отхода от каких-либо путей, каждый раз (при выборе нового объекта) необходимо следить за тем, что не повторяемся ли в новом выборе. Методика напоминает методику случайного направления поиска, но и существенно отличается от нее. Методика наводит на мысль, что самым целесообразным поведением исследователя является сканирование по всем методикам.

Методика сканирования по предыдущим методикам - это подведение итога под рассмотрением методик поиска новых вещей. И действительно, творчеству противостоит выбор одной какой-либо методики. Разумное (в соответствии с привычками или склонностями) чередование методик составляет основу и сущность метода проб и ошибок.

Хорошим подспорьем методу проб и ошибок являются специальные комбинаторные и другие приемы, которые перечисляются ниже. Указанные приемы являются простыми подсказками, использование которых может обеспечить удачу. Итак, рассмотрим следующие комбинаторные приемы:

  • Объединение имеющихся объектов в один объект, который можно считать за новый. Например, в вычислительной математике используется комбинация метода градиента с методом случайного поиска при решении оптимизационных задач.

  • Дробление имеющегося объекта на части, каждая из которых может стать новом объектом. Например, дробление камня приведет к получению песка.

  • Перекомпоновка имеющихся объектов может привести к построению нового объекта, с новым качеством или новыми характеристиками. Например, распределение людей по специальности может привести к повышению производительности труда каждого человека.

  • Использование объекта-посредника среди существующих объектов может образовать новый объект. В химии, например, используются катализаторы, усилители, растворители или затвердители.

  • Вложение одного объекта в другой объект или в группу объектов, а также и наоборот, вынос одного объекта из другого или из группы объектов, может привести к формированию нового объекта.

  • Уменьшение или увеличение числа однородных объектов или устранение всех однородных объект может привести к формированию нового объекта.

К другим приемам относятся приемы улучшения удобства. Укажем лишь три приема. Остальные каждый может изобрести и использовать. Три приема таковы:

  • Использование (или перенос) объекта в новых условиях отличается от рассмотрения по аналогии. Создается при этом некоторый новый объект или новое применение объекта.

  • Приспособление объекта к новым или изменивщимся условиям.

  • Смена состояния объекта, усиление или ослабление условий.

Третья группа приемов связана с целенаправленным изменением качества объекта и получением нового объекта в процессе такого изменения:

  • Изменение формы, режимов использования, алгоритмов работы, признаков, свойств или характеристик объекта.

  • Обмен формами, режимами использования, алгоритмами работы, признаками, свойствами или характеристиками двух объектов. В результате обмена может получиться новый объект.

  • Переоценка старого объекта может привести к новому его использованию.

  • Построение из вещи антиобъекта, обращение формы в антиформу, режима в антирежим, признака в антипризнак или характеристики в антихарактеристику.

  • Построение из объекта его антипода, превращение вреда в пользу, причины в следствие, частного в общее, части в целое, отходы в продукты и т.п.

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

4.10. Методы построения иерархии задач, сведение задачи к подзадачам

Каждая задача после формулировки требует уточнения. Совокупность частей уточнения образует слой или уровень формулировки задачи. Операция расслоения может рассматриваться рекурсивно. В результате мы получим набор слоев (уровней иерархии). В каждом слое обнаруживается совокупность меньших по объему задач, которые обычно именуют подзадачами, а задачи в слое выше именуются - надзадачами. Последовательность расслоения приводит к построению иерархии подзадач. Иерархия завершается после выяснения всех вопросов, всех данных и полного состава операций относительно исходной задачи самого нижнего уровня. При обратном рассмотрении иерархии подзадач мы придем к рассмотрению надзадач с постепенным усложнением каждой надзадачи.

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

Каждые вопросы, задачи или проблемы являются для Интеллсист текстами на языке ЯПП (по СеГ). Для общности будем использовать слово «задача». Каждая крупная задача с одной стороны представляется малообозримым текстом, с другой стороны она не может формулироваться одним исполнителем. Поэтому возникает проблема разбиения проекта (задания) на подпроекты (подзадачи). Методы сведения задачи на подзадачи известны давно [Бенерджи71, Ефимов82, Клир90, Пойа76], они здесь не повторяются, но лишь добавляются к ним методы, имеющие явно информатический уклон. Чаще всего практически используется некоторый интуитивный подход к разрешению проблемы разбиения задач на подзадачи.

Итак, некоторые методы или методики разбиения перечислены ниже:

  • по областям знаний,

  • по специальности или специализации,

  • по совокупности однородных в некотором смысле операций,

  • по языкам реализации,

  • выделение похожих или повторяющихся частей

  • или для обеспечения обозримых частей.

Иерархия подзадач можно называть также просто иерархией задач, поскольку в любом слое или на любом уровне иерархии можно обнаружить самостоятельную задачу решения вопроса по исходным данным.

4.11. Методы классификации

В процессе изобретания нового объекта (предмета, явления или процесса) обычно получают несколько его прототипов или вариантов, которые целесообразно распределить по группам (классам) в соответствии со свойствами сходства или различия. Такое распределение называется классификацией по определенному признаку.

Наиболее ответственная часть работы по классификации объектов состоит в подборе признаков классификации - количественные или качественные свойства всех объектов, свойства, которыми обладают или не обладают объекты. Признаков классификации может быть много (или даже избыточно много). Среди признаков могут быть более или менее информативные. С помощью информативных признаков легче и быстрее можно осуществить выбор данного объекта. Обычно построение классификации завершается после выбора информативных признаков. Заметим, что признаки называются информативными, если распределение вероятностей их появления является равномерным.

Классификация вещей может способствовать установлению порядка подчиненности групп или классов объектов. Обычно классификация бывает иерархической, в которой выделяются уровни со своим значением признака. Признаки бывают искусственными или естественными, свойственными природе классифицируемым объектам. Для процесса изобретания необходимы естественные признаки, способствующие наиболее точному выбору необходимого объекта из всего расклассифицированного ряда объектов.

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

Методы классификации могут быть переданы ВМ для построения автоматической или автоматизированной классификации. Причем ВМ может вырабатывать признаки классификации и выбирать среди признаков самые информативные. Результатом автоматического способа построения признаков получаются решающие правила, позволяющие построить вычислительный процесс над свойствами объектов для определения принадлежности объекта некоторому классу. Машинные методы классификации представляют собой самостоятельный раздел информатики по выработке понятий.

4.12. Общие методы решения задач

Любая задача (вопрос, запрос, проблема) должна всегда рассматриваться творчески, с позиций поиска нового знания. Любая задача находится в развитии. В связи с этим подход к задаче должен быть творческим. Мы рассмотрим в форме перечисления несколько глобальных методов решения задачи до рассмотрения конкретного метода поиска локального решения.

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

Метод обходной задачи. Наряду с прямой задачей следует рассматривать обходную задачу, ставящую побочную цель, прямо не направленную на достижение исходной или противоположной целей.

Метод устранения задачи. На данную задачу необходимо посмотреть сверхкритически: что произойдет, если ее просто снять ее из рассмотрения, может быть со временем отпадет необходимость в постановке исходной задачи.

Метод ухода от постановки задачи. Можно поставить вопрос резче: а может быть лучше обойтись без постановки и решения исходной задачи.

Метод постановки подзадачи. Расчленение задачи на подзадачи важно для относительного упрощения исходной задачи. Иерархия работ всегда упрощает процессы решения исходных задач.

Метод постановки надзадачи. Всякое обобщение способствует продвижению к поставленной цели. Вместо данной задачи часто следует рассматривать более общую задачу, целиком поглощающую данную. Ее решение может включать решение исходной задачи.

Метод постановки постзадачи. Решение данной исходной задачи приводит к достижению поставленной цели, а может привести к постановке другой следующей за первой цели, достижение которой образует или формулирует новую постзадачу. Решение постзадачи до решения исходной может ускорить или полностью решить исходную задачу.

Метод постановки предзадачи. Другой случай связан с предположением о том, что исходная задача решена. Постановке цели исходной задачи предшествовала постановка цели предзадачи, которая может быть решалась, тогда ее необходимо вспомнить для продвижения в исходной задаче, а может быть и не решалась, тогда имеет смысл получение ее решения, чтобы продвинуться в решении исходной задачи.

Методы синтеза объектапо ее параметрам состоит в том, что общая структура объекта является известной, остаются неизвестными параметры структуры. Выбор параметров в результате применения некоторого метода оптимизации приводит к решению задачи или к завершению проектирования вещи. Конечно, сама структура объекта может быть синтезирована. Это может произойти автоматически, например, при обнулении некоторого параметра в процессе оптимизации.

9 методов решения, а точнее сказать - подхода к решению, задач не замкнут, т.е. не исчерпывает всего ассортимента. Перечисленные методы создают прецедент для поиска подходящего метода решения.

4.13. Методы фокального объекта

«При отсутствии фантазии» (кавычки стоят не обосновано или обосновано) можно успешно заниматься изобретательством. Конечно, при этом необходима определенная смелость. Новый объект получается всегда, когда соединяются по крайней мере два объекта в один - новый объект. Этот подход будет лежать в основе метода фокальных объектов (понятие объекта используется так как принято в книге [Альтшуллер72]).

Сущность метода фокальных объектов состоит в следующем. Рассмотрим некоторый объект в качестве исходного. Исходный объект обладает некоторыми свойствами, признаками или характеристиками (для краткости будем говорить только о свойствах). Перечислим все свойства и аккуратно запишем их имена. Теперь возьмем другой объект (объект-результат) и перепишем его свойства. Окончательный результирующий объект построим так: заменим некоторые или все свойства объекта-результата на свойства исходного объекта. В результате получим объект с новыми (комбинированными) свойствами (от исходного и самого результирующего объектов). Точнее можно сказать, что мы получили старый объект с новыми свойствами.

Слово «фокальный» интерпретируется как фокусный или относящийся к фокусу. Фокальный объект - это объект, на котором сфокусировано наше внимание, сфокусированы свойства исходного объекта. Простейшие фантастические примеры:

  • Земля - шар (исходный объект), дом - жилье людей (результирующий объект), шарообразный дом - результат изобретания.

  • Алгоритм - предписание для «вычислений» (в кавычках или без), творчество - озарение, алгоритм озарения - результат творчества.

Метод фокальных объектов можно расширить следующим образом. Припишем объекту-результату свойства многих (более одного) исходных объектов, отбросив некоторые или все свойства результата. При таком подходе число новых объектов существенно увеличится. В конце концов можно рассматривать и более сложные комбинации исходных объектов и их свойств. Например, процесс порождения фокальных объектов можно реализовать рекурсивно: новый фокальный объект может послужить исходным для построения нового фокального объекта.

Если вдуматься в технологию метода фокальных объектов, то можно обнаружить, что сам метод является порождением метода фокальных объектов. Принцип самоприменимости, так важный в любом творчестве, является хорошим критерием правильности результата творчества. Метод фокальных объектов является самым продуктивным из всех методов творчества, поскольку он стимулирует построение новых объектов в любом количестве и с наибольшим многообразием. Трудно указать какие-либо границы фантазии в порождении новых вещей. Метод фокальных объектов является методом непрерывной генерации новых объектов.

Метод фокальных объектов можно распространить далее. Свойства исходных объектов можно рассматривать как исходные объекты, которые могут конструироваться для формирования фокальных свойств, которые в конечном счете приписываются некоторому объекту-результату. Этот подход также можно реализовать рекурсивно: новые фокальные свойства рассматриваются в качестве исходных для построения нового объекта. Комбинация методов фокальных объектов и методов фокальных свойств является вершиной для этого направления автоматизированного творчества (в том случае когда отсутствует фантазия).

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

4.14. Методы морфологических карт

В тех же случаях, когда фантазия (например, в методе фокальных объектов) исчерпана, можно обратиться к методу морфологических карт. Сущность метода в следующем. Прежде всего заметим, что почти все свойства вещей имеют по несколько качественных или количественных значений. Качественные значения (например, много, средне или мало) или количественные значения (например, 2, 4, 7, 23 метра) образуют варианты. Будем рассматривать некоторую исходный объект (может быть некоторый ИКР). Поставим задачу придания этому объекту новых свойств. Для решения задачи рассмотрим все или некоторые его свойства. Чаще всего рассматривают существенные свойства. Изменение несущественных свойств не изменяет объект существенно. Только существенные свойства влияют на качество объекта.

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

Метод морфологических карт чрезвычайно эффективен, это продуктивный генератор новых вещей. Морфологические карты имеют разнообразные формы. Если число свойств два, то целесообразнее строить морфологическую таблицу, по горизонтали которой располагаются варианты первого свойства, а по вертикали - варианты второго свойства. На перекрестках таблицы располагаются варианты новых объектов. Если число свойств исходного объекта три, то можно построить морфологический куб (параллелепипед) так же, как это было сделано при построении морфологической таблицы. Если число свойств исходной вещи увеличивать далее, то будем получать морфологические гиперкубы (гиперпараллелепипеды). Легко понять каким станет число вариантов новых объектов, которые представлены в морфологической карте. Для перебора вариантов новых объектов необходимо использовать ВМ. Морфологические карты необходимо сохранять для последующего анализа, выбора ИКР или окончательного варианта изобретаемого объекта.

4.15. Методы предельных границ

Теперь рассмотрим технический прием построения новых объектов - метод предельных таблиц, который основан на вариации количественных характеристик исходного объекта, он является продолжением метода морфологических карт или его началом. Сущность метода состоит в следующем.

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

Характерными точками диапазона являются: нуль, среднее значение, максимальное и минимальные значения. Эти точки являются ключевыми и предельными. Можно выделить только концы отрезка (предельные границы) и их рассматривать в качестве ключевых. Операцию выделения ключевых точек применим ко всем параметрам. Если для некоторого параметра имеется несколько диапазонов, тогда рассматриваются все ключевые точки всех диапазонов. Назначение ключевых точек осуществляется независимо от реализуемости их в ИКР или нового объекта.

Теперь можно приступить к построению нового объекта. Это делается так. Выбираем значение параметра из числа ключевых или предельных точек в диапазоне. Выбор осуществляем по всем параметрам. Полный набор (для всех параметров) значений образует реализацию, которой соответствует объект (с такими характеристиками). Если произвести перебор ключевых точек каждого параметра, то каждому набору будет соответствовать новый объект - ИКР. Общее число ИКР для объекта с N параметрами и двумя предельными граничными значениями параметров будет равно N**2 или N**3 ключевых точек. Как и раньше все так полученные ИКР целесообразно записать для последующего анализа.

Отбор необходимого ИКР напоминает параметрический синтез системы (объекта).

4.16. Методы коллективного творчества

Творчество коллектива намного сильнее творчества одного человека, если иметь в виду генерацию идей, а не поиск уникальных идей или изобретений. Для коллективного творчества необходима организация процессов генерации технических идей. Мы рассмотрим кратко один подхода в организации коллектива - мозговой штурм (синонимы: мозговая атака или мозговая осада).

Мозговой штурм - это кратковременный мыслительный поиск методами анализа решений поставленной задачи или синтеза решения задачи группой специалистов, желающих найти подходящее (возможно не окончательное) решение. Мозговой штурм организуется в рабочей группе, он сокращает время при создании библиотеки идей.

Рабочая группа - это коллектив специалистов различного направления, объединенных для поиска идей решения задачи или проблемы, работающих под организующим руководством и признающих кодекс равноправия. Рабочая группа формируется из пяти-девяти человек, имеющих высокую квалификацию в данной или в прилегающих областях знаний и желающих бескорыстно генерировать идеи. В процессе мозгового штурма состав группы может меняться, либо увеличиваться, если обнаружено, что квалификация специалистов по данному вопросу недостаточна, либо уменьшаться, если обнаруживаются постоянные нарушители кодекса равноправия. Конечно же количественный и качественный состав определяется характером и сложностью задания, поставленного перед коллективом, глубиной и сложностью решения задания или областью применения результатов решения задания.

Регламент работы группы определяется многими факторами, среди которых укажем основные факторы:

  • сроки, в которые еще необходимо решение задания;

  • возможности оснащения группы оборудованием или помещением;

  • целесообразностью отрыва членов группы от основных работ;

  • комплектность группы специалистами.

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

Обычно перед рабочей группой ставится следующий примерный перечень задач:

  • изучить (или составить свой) и принять кодекс равноправия;

  • осмыслить задание и условия его постановки и решения;

  • формировать наводящие вопросы постановщику задания (поиск дополнительного знания);

  • фиксировать понимание задания всеми членами рабочей группы;

  • вживаться в роль члена рабочей группы для реализации мозгового штурма:

  • изучать условия постановки и применения решения задания;

  • выбрать или формировать методы генерации новых идей;

  • реализовать процесс мозгового штурма;

  • вести протоколы заседаний рабочей группы;

  • подвести итогов работы группы и дать общую оценку результата мозгового штурма.

Организующее руководство группой осуществляет признанный лидер (руководитель), который лучше остальных понимает задание или которого выбирает рабочая группа. Лидер выполняет определенный перечень обязанностей:

  • стимулирование процесса генерации идей или решений задания;

  • контролирование правильности выполнения кодекса равноправия;

  • наведение группы на задание или возврат группы к заданию;

  • ведение принятого всеми рабочего регламента группы;

  • ведение или организация текущего или общего протокола фиксации идей;

  • соблюдение правил выполнения планов работы группы;

  • подведение промежуточных или окончательных итогов работы.

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

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

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

В заключении раздела рассмотрим утверждения, которые могут составить основу типового кодекса равноправия. Сам кодекс равноправия не может укладываться даже в рамки прописных рекомендаций. А вот лозунговые высказывания могут навеять пункты кодекса равноправия. Сам кодекс создает группа мозгового штурма до своих штурмовых заседаний и/или в процессе заседаний. Основные утверждения для кодекса можно представить следующим образом:

  • Входя в рабочую группу забудь о чинах, званиях и возрасте.

  • Помни главное: чем больше идей, тем успешнее будет решено задание.

  • Предлагай, предлагай и предлагай идеи и решения.

  • Развивай идеи независимо от того чья идей.

  • Предлагай идеи методов генерации идей.

  • Если тебя смешит предложенная идея, радует неудача соседа по группе, то лучше будет для задания, если ты уйдешь из группы.

  • Чаще всего придумывай шутливые или дикие идеи.

  • Помни, что абсурдная идея скорее приближает момент получения правильного решения задания.

  • Внимательно (не прерывая) слушай идеи членов группы и записывай свои новые идеи.

  • Ни словесная и ни молчаливая критика недопустима.

  • Не завидуй удачно предложенной идеи, любая идея является и твоей.

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

  • Рабочая группа имеет право на отдых и окончание работы при обнаружении тупика в процессе рождения идей.

  • Документируй, протоколируй и просто записывай идеи и процессы рождения идей.

  • Итог работы группы есть итог каждого в группе.

  • Зазнайству от полученных результатов не место в группе.

  • Угрызениям или стенаниям при получении неудовлетворительных результатов не место в группе.

  • На заседания группы целесообразно приходить с домашними заготовками, с желанием скорейшего доведения до членов группы всех новых идей-домашних заготовок.

  • Всегда должен ощущаться дефицит идей.

  • Нельзя доказывать правоту своих идей или идей своего соседа.

Основным руководством в работе группы должны быть: свободное выражение идей и увеличение объема библиотеки идей. Все остальные положения кодекса равноправия должны подчиняться этим правилам поведения членов группы.

4.17. Методы схем

Использование графов (совокупность множества вершин и множества дуг) продуктивно для представления сущности проблемы, которая представлена для разрешения. Граф отражает связи и зависимости частей или систем, внутренних или внешних взаимодействий. Имеется определенная классификация применений графов, которую мы и рассмотрим в этом разделе. Ориентированный или неориентированный граф будем именовать схемой.

Можно различать следующие графы:

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

Сетевой график - граф, который указывает на порядок выполнения работ над данным объектом. Дуга обозначает окончание одной работы и начало другой работы, а вершина обозначает работу. Сетевой граф может нагружаться функцией, указывающей время и материальные затраты на выполнение работ.

Концептуальная схема - граф, конструирующий определение некоторого понятия, его свойства или характеристики.

Информационная схема - граф, представляющий потоки данных (или информации), с вершинами, которые обозначают источник или приемник данных, и с дугами, которые указывают направление передачи данных. Вершины могут изображаться графически блоками (см. логическая схема).

Логическая схема - граф, вершины которого концентрируют операции или работы объекта, а дуги указывают на последовательность выполнения операций. С вершиной может связываться некоторый алгоритм (блок операций) или часть алгоритма. Логическая схема именуется также блок-схемой. Некоторый блок может выражаться или представляться вновь блок-схемой. Понятие логической схемы является рекурсивным. Блоки (вершины) и дуги могут быть окрашены. Например, каждый блок может выражать состав операций этого блока специальным графическим представлением блока. Блок-схема может обладать ограничениями, например она имеет одну входную дугу и одну выходную дугу.

Функциональная схема - граф, указывающий взаимодействие частей вещи.

Структурная схема - граф, указывающий на условия соединения частей в единый объект.

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

4.18. Методы технических противоречий

Если основу проблемы (вопроса или задачи) составляет противоречие некоторого сорта, то в основе творчества (или его результата) лежит техническое противоречие. Понятие технического противоречия сложно определить, можно создать интуитивное определение, которое скорее вводит нас к курс этого понятия, нежели создает руководство для применений.

Техническое противоречие - это отношение противоположностей объектов или их частей, противоположностей, присущих им и существующих независимо от исследователей. Следовательно, для обнаружения технического противоречия необходимо установить противоположности, внутренне присущие объектам (напомним - предметам, явлениям или процессам). Противоположности в достаточно полном объеме перечислены у Георга Вильгельма Фридриха Гегеля в его «Логике». Ниже указаны пары противоположностей:

материя - сознание

природное - духовное

реальное - идеальное

однородное - разнородное

параллельность - последовательность

низшее - высшее

простое - сложное

качество - количество

причина - следствие

вред - польза

форма - содержание

сущность - явление

возможность - действительность

революция - эволюция

рождение - смерть

старое - новое

движение - покой

тождество - различие

целое - часть

причинность - случайность

действие - противодействие

теория - практика

положительное - отрицательное

абстрактное - конкретное

особенное - всеобщее

бытие - ничто

поле - частица

свет - тень

имя - значение

свое - общее

выделение - поглощение

дорого - дешево

расширение - сжатие

наличие - отсутствие

конечное - бесконечное

момент - вечность

возникновение - исчезновение

отрицание - отрицание отрицания

внешнее - внутреннее

объективное - субъективное

прогресс - регресс

отталкивание - притягивание

мало - много

непрерывное - дискретное

положенное - опосредованное

критика - самокритика

движение - покой

базис - надстройка

жизнь - смерть

начало - конец

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

Обнаружение противоположностей наиболее вероятно приводит к обнаружению технических противоречий, а их обнаружение - основа для решения проблемы, получение нового объекта, открытие, изобретение или рационализация. Сущность разрешения проблемы состоит в поиске метода, методики, способа или пути устранения технического противоречия. Процесс устранения технического противоречия составляет существо творческого процесса, который обычно скрыт в глубинах индивидуального мыслительного процесса. Можно лишь высказать вопросы общего характера, ответы на которые формируются индивидуумом в процессе творчества. Примерами вопросов могут быть:

  • Какие имеются недостатки у вещи?

  • Что мешает объектам иметь хорошие свойства, признаки и характеристики?

  • Почему объект подчиняется законам и закономерностям?

Ответы на такие вопросы могут привести к результату изобретания нового объекта, который может оказаться совсем неожиданным.

4.19. Методы устранения технических противоречий

Теперь мы рассматриваем ИКР или исходный объект, для которого необходимо построить окончательный вариант нового объекта. Проблема завершения выбора нового объекта разрешается после устранения всех внутренних и внешних противоречий. Из всех противоречий мы рассматриваем только технические.

Практически имеется большое число методов устранения технических противоречий [Альтшуллер73, 79]. Их перечисление затруднительно и не обязательно, поскольку каждой отрасли деятельности человека свойственны свои методы, почти не применимые в других отраслях деятельности. Однако, можно выделить образцы или примерные методы устранения технических противоречий в качестве ориентира. Этот участок работы изобретателя самый ответственный и чрезвычайно важный. Процесс устранения технических противоречий - это процесс постепенного формирования нового объекта. Мы рассмотрим только три направления устранения технических противоречий.

4.19.1. Общие подходы. Ими являются следующие приемы.

1. Анализ частей объекта. Каждый объект может быть представлен своими частями. Мысленно с каждой частью объекта можно поступить одним из следующих комбинаторных операций:

  • выделить мешающую часть и удалить ее из объекта;

  • все мешающие части объекта соединить вместе;

  • осуществить перестановку частей объекта местами;

  • рассмотреть различные положения частей;

  • перераспределить функции частей;

  • привлечь для формирования объекта новые части.

В результате перечисленных операций можно сформировать ИКР для последующего анализа и выбора нового объекта.

2. Анализ распределения функций во времени. Каждый объект выполняет определенные функции, их выполнение можно распределить по времени. С функциями объекта можно поступить также как мы только что поступили с частями объекта: удалить некоторые функции, соединить вместе некоторые функции, поменять местами по времени выполнение функций, привлечь новые функции. В результате применения таких операций можно сформировать ИКР для исследования.

3. Анализ распространения вещи. Каждый объект можно перенести в другие условия, устранить некоторые имеющиеся условия и т.п. операции по формированию новых условий существования или применения объекта. В результате получим новый объект для создания ИКР.

4. Анализ окружения объекта. Среда существования или применения каждого объекта имеет свои особенности. Можно применить все операции пунктов 1, 2 и 3 для формирования среды объекта, тогда мы будем получать новые объекты, из которых можно оформить ИКР. Например, объект может существовать только в той среде, для которой он создавался. Изменение среды приведет к изменению самого объекта, что обеспечит построение нового объекта. Прием изменения среды может привести к введению посредника - интересного и сильного средства изменения среды.

5. Анализ плавного изменения характеристик объекта. Если осуществлять плановое изменение каких-либо свойств объекта, то можно получить в итоге новый объект. Например, методы оптимизации по каким-либо параметрам (в самом общем понимании этого слова) реализует именно такой прием формирования нового объекта.

6. Анализ «само». Самоприменимость является фундаментальным приемом получения нового объекта. Кроме самоприменимости обычно рекомендуются приемы самообслуживания, самоконтролирования и т.п. «само...». Широко распространен прием, который реализует принцип лени «подожди и увидишь что получится». Пусть объект функционирует, а через некоторое время будет ясно что с ним станет. Например, изнашивающиеся детали надо делать такими, чтобы износ все время улучшал свойства детали. Другой пример с деталью: подожди ее износа и делай деталь такой, изношенная деталь и есть окончательный вид новой детали.

7. Смешанный анализ. Модно рассматривать комплексность применения приемов анализа объектов. Ориентация на одну методику или один прием быстро приведет к ослаблению творческой активности.

8. Анализ вещи по алгоритму стимулирования творчества. Если к данном объекте применять алгоритмы творчества, то можно сконструировать новый объект. В качестве алгоритма стимулирования можно использовать этап изобретания, который представлен в данной главе и который содержит достаточно подробное описание методов, методик и приемов построения новых объектов (предметов, явлений или процессов).

4.19.2. Переход от одной противоположности к другой. В предыдущем разделе рассмотрен список некоторых противоположностей. Ведение полного списка противоположностей обязательно для того, кто действительно и серьезно занимается изобретательством. В дополнении к идее ведения списка противоположностей надо добавить следующее. Помимо парных противоположностей имеются тройные, четверные и т.д. противоположности. Мы дадим только малое число примеров. Этой иллюстрации достаточно для ведения списка противоположностей.

Примерами тройной противоположностей являются:

непрерывность - дискретность - периодичность

газообразность - жидкость - твердость

Примером четверной противоположности является:

твердое тело - пористое тело - аморфное тело - сыпучее тело

Представляют интерес и более многогранные противоположности. Использование списка противоположностей состоит в том, чтобы найти в списке рассматриваемую характеристику, а потом использовать противоположную характеристику (или одну из возможных сопоставлений данной характеристики). Вместо характеристики может быть свойство, тогда берем антисвойство для формирования новой вещи. Такая замена характеристик или свойств составляет сущность методики устранения технического противоречия.

При построении нового объекта целесообразно рассматривать не одну, а несколько противоположностей. Процедура замены характеристик или свойств на противоположные имеет комбинаторный характер. Имеется большое число комбинаций замен. Каждой комбинации соответствует новый объект.

Продуктивность методики может оказаться слабой. а может предоставить огромную радость изобретателю большим набором новых объектов. Так или иначе, но методика имеет право на существование.

Для построения списков противоположностей производится составление списка характеристик или свойств. Источником характеристик или свойств являются лексиконы наук. Некоторая убежденность в этом возникает при рассмотрении примерного списка указателя лексикона:

ФИЗИКА - физические величины

МАТЕМАТИКА - количественные соотношения

ПРИКЛАДНАЯ МАТЕМАТИКА- точность, оценка устойчивости

ГЕОМЕТРИЯ - формы, ориентации, измерения

ВЕРОЯТНОСТЬ - частота, статистика

ЭКОНОМИКА - стоимость, производительность, польза

КИБЕРНЕТИКА - обратная связь, управление, информация

СИСТЕМОТЕХНИКА - удобство, гибкость, безопасность

ИСКУССТВО - окраска, формы представления

БИОЛОГИЯ - факторы жизни

ГЕОГРАФИЯ - распространенность

ИСТОРИЯ - распределённость во времени

ЛОГИКА - отношения

ХИМИЯ - свойства веществ

ПРАВО - законы в обществе

4.19.3. Приемы устранения противоречий. Можно рассмотреть следующие приемы устранения технических противоречий:

1. Принцип дробления

2. Принцип вынесения мешающей части

3. Принцип местного качества от однородного к неоднородному и наоборот

4. Принцип асимметрии

5. Принцип объединения

6. Принцип универсальности

7. Принцип антивеса

8. Принцип матрешки - один внутри другого

9. Предварительное действия

10. Принцип эквипотенциальности

11. Принцип наоборот

12. Принцип динамичности

13 Переход от одной размерности к большей

14 Использование механических величин

15 Принцип проскока

16. Применение обратной связи

17. Принцип самообслуживания

18. Принцип дешевой недолговечности

19. Принцип изменения свойств

20. Принцип фазовых переходов

Список может продолжаться, применение пунктов ясно из наименований принципов.

4.19.4. Коллективный анализ. Будем рассматривать ИКР или некоторый исходный объект. Анализ исходного объекта должен привести к новому объекту в процессе устранения противоречий. При мозговом штурме работала группа генерации новых объектов (решение проблем). При анализе нового объекта также можно создать группу специалистов для проведения коллективного анализа, если можно так именовать - группу обратного мозгового штурма.

Обратный мозговой штурм организуется на тех же самых принципах что и (прямой) мозговой штурм. Однако, кодекс равноправия заменяется кодексом критики. Конечно, доброжелательность и человеческое внимание к соседу по группе специалистов остается непреложным требованием для всех членов группы. Меняется только стиль отношения ко всем предложениям по формированию нового объекта (предмета, явления или процесса). Группа формируется постановщиком проблемы, возможно из числа членов группы мозгового штурма.

Цель группы обратного мозгового штурма состоит в отборе предложений, которые выработала группа прямого штурма. Новая группа рассматривает все ИКР (объекты, идеи или проекты), разработанные различными методами, приемами и методиками.

Кодекс критики формирует или выбирает сама группа. Мы укажем лишь некоторые лозунги для формирования кодекса:

  • Предлагай контрпримеры и контрпредложения.

  • Опровергай и проверяй свои и соседние идеи.

  • Ищи недостатки у предложенных идей.

  • Находи признаки неосуществимости идей.

  • Критикуй критику.

  • Обменивайся мыслями со всеми членами группы.

  • Находи очевидное у неочевидного и неочевидное у очевидного.

  • Помни, что убедительнее звучат спокойные аргументы.

  • Протоколируй и документируй все предложения.

Это перечисление может служить только образцом для настоящего списка лозунгов или правил поведения группы обратного мозгового штурма. Роль и функции руководителя (лидера группы) совершенно аналогична роли и функциям руководителя группы прямого штурма.

Другой способ формирования рабочей группы обратного мозгового штурма состоит в следующем. Работа коллектива исключает случайный поиск или критику, а реализуется по заведомо упорядоченным правилам. Правила устанавливаются в результате опроса членов группы. Наиболее распространенным способом упорядочивания является следующий. Все члены группы ранжируются по чину и рангу образования. Обсуждение новой идеи начинает младший по чину и рангу член группы. После выслушивания этого члена группы слово передается другому члену группы с более высоким рангом или чином. Процесс выслушивания продолжается до главы группы, который имеет самый высокий чин и самый высокий ранг образования. Он подытоживает все высказанные предложения и предлагает свои варианты идей или окончательное решение по данной проблеме. Надо учитывать то обстоятельство, что процесс обсуждения от низшего чина к более высокому может прерваться и вернуться к самому младшему чину в группе. Причиной прерывания может быть в результате появления новых идей или предложений, новых обстоятельств обсуждения или новых ИКР.

Реализация второго варианта обратного штурма может осуществляться в группе, состоящей из специалистов одинаковых чина и ранга. В этом случае упорядочивание членов группы произойдет постепенно, со временем, по мере анализа высказываний каждого по существу обсуждаемого. Младшим по чину назначается тот член группы, который высказывает меньше всего критических мыслей. Предлагающий новые идеи становится ближе к руководителю группы. Трудно оценить или сравнить оба варианта организации группы обратного мозгового штурма. Заведомо можно считать, что оба варианта важны и продуктивны с равной вероятностью.

В заключение отметим один важный и продуктивный прием оценки новой идеи группой специалистов любого назначения, прием соломенного голосования. Цель приема - выработать тенденцию в отношениях группы к новым объекту или идеи. Если в группе возникли разногласия или противоречивые взгляды, тогда руководитель группы организует соломенное голосование. Голосование является тайным и ранжированным. Ранжирование делается либо в двоичной системе (да-нет), либо по бальной системе (например, от 1 до 5), либо по номеру места, которое отводится каждым членом группы в зависимости от числа вариантов рассматриваемых объектов или идей. В первом случае окончательной оценкой будет наибольшее число собранных голосов «да» (или «за»), во втором случае - наибольший средний балл, в третьем - наибольшая сумма мест. Результаты голосования не являются обязательными, не имеют решающее значение, они указывают на тенденцию мнений и на путь дальнейшего обсуждения. Соломенное голосование может проводиться в несколько туров с отбрасыванием вещей и идей, которые занимают последние места.

4.19.5. Анализ путей исследований. Имеется другой взгляд на методы сбора знаний. Далее можно рассмотреть цепь различных подходов к решению проблем и задач. Все они базируются на совсем принципиальных изменениях путей поиска решений так, что сам подход сводится к поиску нового знания. Итак, следующие пункты косвенно обрисовывают методы сбора знаний (пункты почти полностью заимствованы [А.С. Майданов, Подход к решению проблемы.]).

  1. Переход к другой стороне или к другому аспекту исследуемого явления. Новый подход может дать более информативные и более значимые для решения проблемы данные. Сама проблема при этом получает новый поворот, изменяется ее постановка. Относительно искомой проблемы выдвигаются новые идеи, исследование приобретает иное направление. Это возможно потому, что данная сторона или аспект как раз и могут быть более тесно и непосредственно связаны с сущностью явления. В них она может проявить себя более эффектно и более богато.

  2. Использование других исходных данных, допущений и представлений. Новый подход может опираться на новые общие представления, которых еще не было в период применения прежнего подхода. Поскольку первоначально используемые представления могут оказаться ошибочными, то из этого следует, что необходимо всегда допускать такую возможность.

  3. Поиск новых характеристик исследуемого явления. На их основе формируется существенно новый подход к проблеме, конструируется новый комплекс понятий.

  4. Сужение исследуемых содержания или области. Такой подход сделает поиск более продуктивным и создаст условия для последующего изучения и других сторон. Сужение может осуществляться и в форме отвлечения от какого-либо из планов изучаемого явления, например, от качественного, содержательного, и проводиться в каком-то другом плане - количественном, формальном. Таким путем удается получить новые решения проблемы и притом даже в разных вариантах.

  5. Перевод исследуемых предметов, явлений или процессов в другую предметную область. Такой перевод целесообразно осуществлять тогда, когда данное явление не удается изучить и понять с позиций представлений о первоначально выбранном области. На деле этот выбор может быть ошибочным, и тогда следует применить к исследуемым объектам представления о другой области.

  6. Поиск решения с более общей точки зрения. Необходимость в такой операции возникает тогда, когда первоначальные решения проблемы основывались на менее существенных данных, вследствие чего эти решения носили частичный характер, отвечали лишь на некоторые моменты проблемы. Полученное таким образом решение не только даст объяснение явления в целом, но и определит границы первоначальных решений как ответов на частные вопросы.

  7. Расширение области изучаемого объекта. Этот пункт дополняет предыдущий. Удовлетворительного решения какой-либо проблемы часто не удается достичь из-за того, что она рассматривается в ограниченном поисковом поле. Область ее локализации неоправданно суживается. Она привязывается к какой-нибудь ограниченной сфере явлений, которая не может дать всех необходимых для ее разрешения данных. Анализ проблемы и имеющихся данных может показать, что релевантные сведения могут быть получены и из других предметных областей, что в этих областях имеют место явления, факторы, закономерности, вполне созвучные имеющимся данным. В связи с этим поле исследования значительно расширяется, возникает более широкое видение самой проблемы, искомое решение приобретает более общий характер.

  8. Расширение области приложения того или иного понятия. Проблема может быть решена путем приложения к связанному с нею кругу объектов понятия, ранее имевшего другую и при том более узкую область применения. Тщательный анализ объектов того круга позволяет установить их идентичность с объектами, моделируемыми данным понятием, и тем самым прибегнуть к подходу, базирующемуся на нем.

  9. Новая трактовка объекта. Если какое-либо понятие или представление оказалось неудовлетворительным, то выход из этого состояния ученые находят в выработке нового понимания, новой трактовки природы проблемного явления, его сущности, управляющих им закономерностей. Так, если первоначально какое-либо явление или процесс трактовались как динамические, то затем выясняется, что они имеют вероятностный характер. Если какой-то процесс в живом организме истолковывался как биологический, то потом устанавливается его чисто химическая природа. На основе новых трактовок формируются новые понятия и определяются новые стратегии, направления и цели исследования.

  10. Переоценка значимости объектов их элементов и других характеристик. Важной частью постижения объектов является правильное понимание их роли, статуса, значения в системе других объектов. Это относится также и к элементам и свойствам самих явлений. Оттого, какое явление выбрано в качестве определяющего, системообразующего, базисного и др., зависит характер оценки роли и значимости в других явлениях (соответственно других элементов в явлении), способ представления, подачи явления потребителям знания, способ его интерпретации, отображения в понятиях. И именно выбор того или иного конкретного способа может быть причиной адекватного или неадекватного концептуального образа явления. В случае неадекватного образа исследователь пересматривает значимость явлений или их элементов и, глубже проанализировав всю совокупность соответствующих явлений или все элементы и свойства какого-либо явления, приписывает это качество другим явлениям или элементам и свойствам. Это приводит к преобразованию всей картины соответствующей системы явлений или всего образа отдельного явления. Под влиянием вновь выбранного явления или элемента в качестве более значимого, определяющего происходит перестройка всей концептуальной модели явления или системы явлений.

  11. Изменение основ теории.Когда с позиций существующей теории не удается решить какую-либо проблему или этому не помогают частичные модификации теории, то выходом может быть изменение самих основ теории - ее базисных понятий, положений, допущений. Введение новых понятий и положений осуществляется с учетом новых фактов, новых идей из других релевантных теорий. У преобразованной таким образом теории больше шансов быть адекватным средством решения стоящих перед нею проблем.

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

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

  14. Изменение цели исследования.Целью исследования является то искомое, на достижение которого направлен поиск. Но по мере развития исследовательского процесса может выясниться, что первоначально сформулированное представление об искомом является ошибочным и что такого искомого или вовсе не существует, или оно не является важным и значимым для данной предметной области. И тогда формируется образ нового искомого, а поиск переориентируется на нахождение уже этого искомого.

Итак, автор упомянутой выше публикации перечислил большое количество операций, позволяющих находить новый, адекватный подход к решаемой проблеме. Помимо описанных имеется еще ряд весьма продуктивных операций. Часто суть этих операций вполне ясна из их названия.

4.20. Методы оценки результата

Формированием групп или списков ИКР работа по изобретанию только начинается. Автор ИКР или группа мозгового штурма подготовили исходный материал для поиска окончательного вида нового объекта. Группа обратного мозгового штурма уже приступила к критическому отбору нового объекта. Теперь пора осмыслить методы оценки ИКР или результатов штурма.

Для отбора наилучшего (или просто хорошего) варианта необходим критерий. Критерий должен установить полноту результата творчества, рациональность выбора варианта, логическую непротиворечивость, содержательность, реализуемость, соответствие целям, поставленным перед началом творчества. Известно, что под критерием понимается количественная характеристика степени близости или сходства исследуемого объекта ИКРу, мерило соответствия объекта по показателям удобства, качества, эффективности, стоимости или требуемым закономерностям. Критерием определяется также мера, по которой определяется пригодность объекта для применения, внедрения и производства.

Критерий можно выбрать или назначить всегда, поскольку всегда может быть выбрана мера близости. Мера обладает свойствами:

  • мера различия одного и того же объекта равна нулю,

  • мера различия первого объекта от второго равна мере различия второго объекта от первого,

  • мера различия первого и второго объекта, «сложенная» с мерой различия второго и третьего объекта, больше или равна мере различия первого и третьего объекта.

Указанные свойства меры используются для формирования количественного критерия. В результате отбора можно получить реальный конечный результат (РКР). Он должен реально разрешать поставленную проблему и находиться ближе всех других объектов от ИКР.

Критерий помогает выполнять следующие задачи выбора лучшего варианта объекта, объективного подхода к отбору. Критериев много, можно выбрать, например, один из приведенных ниже:

  • максимальная работоспособность,

  • сквозной проход всей энергии,

  • ритмика частей согласована и является экономной,

  • все изнашиваются равномерно энергетический,

  • наибольшая вычисляемая прибыль,

  • информационная оценка,

  • наибольший объем знаний,

  • эстетическая оценка,

  • практическая оценка,

  • техническая оценка,

  • смысловая оценка.

Критерий выбирается с помощью наводящих вопросов, образцы которых представлены ниже:

  • что же требовалось,

  • какая поставлена цель,

  • что же надо сделать,

  • какие факторы учтены, а какие нет,

  • какой литературой необходимо воспользоваться,

  • как формулируются вопросы об искомой вещи,

  • какие приемы уже использовались, а какие нет,

  • все варианты ИКР рассмотрены,

  • где еще могут использоваться выбранные вещи,

  • как построить новый метод изобретания.

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

4.21. Методы моделирования

Известно, что моделирование чаще всего приносит успех и экономическую выгоду по сравнению с изготовлением экспериментальных образцов. Здесь укажем лишь на обширность методов моделирования, применяемых во всех областях знаний или областях деятельности человека.

Физическое моделирование - построение моделей на тех же принципах и из тех же материалов, что и исследуемый объект, и производство с ними испытаний.

Прямое моделирование - построение реального объекта (опытного образца) и исследование ее свойств и характеристик.

Математическое моделирование - построение математических зависимостей, отображающих все или большинство параметров объекта, и производство математико-логических исследований.

Экспериментальное моделирование - проведение экспериментов с исследуемым объектом для выявления свойств и характеристик в реальных условиях.

Логическое моделирование - формирование рассуждений относительно свойств и характеристик логически описанного объекта, построение логического вывода значений его свойств.

Функциональное моделирование - проверка выполнения функций, заложенных в новом объекте, и установление соответствия их планируемым функциям.

Личное моделирование - выполнение исследователем ролей нового объекта так, как будто бы он является этим объектом.

Мысленное моделирование - проведение умозрительных экспериментов без использования других физических средств.

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

4.22. Человеческий фактор

Подчас человеческий фактор решает судьбу нового объекта. Описать все разносторонние особенности человеческого фактора не представляется возможным. Широко известно одно, что на человеческий фактор следует обращать внимание всегда. Без его учета любая проблема зайдет в тупик в ее разрешении. Можно лишь провести некоторую экспертную оценку фактора и учесть его. Экспертной оценке целесообразно подвергать, например такие факторы:

  • глубокую заинтересованность искателя нового объекта,

  • повышение грамотности (для информатики - компьютерную) и приобретение знаний не только в области деятельности человека, но и в прилегающих областях и в информатике в смысле данного нового определения,

  • соблюдение внутренней дисциплины и самодисциплины,

  • знание того, что не существует универсального решателя задач без создания подходящей БЗ, Интеллсист лишь способствует продвижению вперед и помогает выводить новое знание по уже накопленному знанию,

  • всестороннее использование алгоритма стимулирования творчества (методов информатики) и Интеллсист для выработки новых условий разрешения проблем,

  • интересоваться всем, что способствует продвижению к намеченной цели.

Это не полный перечень позитивных факторов, но лишь путь в изучении их.

Человеческому фактору обычно препятствуют различные обстоятельства. Среди них также отметим лишь часть:

  • глубокая специализация человека мешает и сужает область поисков,

  • то же можно сказать об узкопрактическом подходе, необходима смелость для расширения областей поиска,

  • довольство обычно усыпляет творчество и порождает рутину,

  • сила привычек ослепляет и оказывает отрицательное влияние на процессы творчества,

  • мешает предлог о нехватке интуиции, которая развивается только при осмыслении методов информатики и при их применении,

  • недоверие к принятым (хотя и временным) решениям вредит полету мысли, если оно превалирует перед применением разнообразия методов информатики,

  • желание есть, но за что взяться, с чего начать - извечная проблема начального пути поиска решений,

  • отсутствие знания всегда действует удручающе, а оно должно подавляться любопытством,

  • боязнь риска опасно для творчества в особенности на информатическом уровне,

  • неудачи могут отбить охоту к исследованиям, что исследователь испытывает часто, забывая о других законах творчества, принципах и человеческих факторах,

  • влияние авторитетов является существенным тормозом для творчества, авторитетом может быть лишь опыт и эксперимент,

  • ложные ограничения, заблуждения и предубеждения закрепощают,

  • отсутствие планов исследований как раз и порождают негативные обстоятельства творческого процесса,

  • если идеи не фиксируются, то они теряются в потоках информации,

  • часто приуменьшаются собственные возможности, но и преувеличивать также нецелесообразно.

Для улучшения влияния позитивных сторон человеческого фактора необходимо использовать известные рекомендации:

  • старайтесь приходить к теоретическим обобщениям в соответствии с законами информатики,

  • не довольствуйтесь достигнутым, всегда необходимо продвигаться вперед,

  • отвлекайся от привычек,

  • исследуй все свои идеи, не проходите мимо захудалой,

  • классифицируй и упорядочивай вещи, идеи и методы исследования,

  • заинтересованность обычно приходит во время учебы или творчества,

  • конечный результат - это положительный стимул даже в том случае, если он отрицателен,

  • известно каждому, что риск - благородное дело,

  • неудачи учат, а не отпугивают,

  • гибкость бывает только после тренировки,

  • консультируйся у авторитетов,

  • критика - обратная связь, она в итоге дает положительные результаты.

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

Глава 5. Методы, поддерживающие проектирование

Введение

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

Стандарт (например, США) утверждает, что процесс разработки программ или знаний должен быть описан в плане его разработки и состоять их следующих этапов:

  • Планирование и контроль проекта.

  • Выбор средств разработки программ или знаний.

  • Анализ требований на систему.

  • Проектирование системы.

  • Анализ требований на программы или знания.

  • Проектирование программ или знаний.

  • Реализация программ или знаний и тестирование программных или текстовых единиц.

  • Интеграция и тестирование программных или текстовых единиц.

  • Квалификационное тестирование системы.

  • Подготовка к использованию программ или знаний.

  • Подготовка к передаче программ или знаний.

  • Оценка программного или текстового продукта.

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

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

Знания об объектах, с которыми работаешь, необходимо как можно точнее уяснить с самого начала.

5.1. Методы объектно-ориентированного проектирования

Знание по своей природе является объектно-ориентированным. Главной частью Интеллсист является лексикон, который содержит сведения обо всех объектах, которые используются при формулировке знаний и запросов. Первый шаг в проектировании - выбор объектов и построение предметной области, как части лексикона. Второй шаг в проектировании - выбор операций и построение проблемной области - второй части лексикона. Эти два шага полностью определяют объекты, которые и составляют сущность проектирования. Одни объекты известны полностью, другие известны частично, а третьи полностью являются неизвестными (искомыми).

Метод объектно-ориентированного проектирования определяется по сложившейся здесь традиции: поддержанный синтаксически и семантически способ ввода объектов в знания, программы и запросы в пределах предметной области, с определенными свойствами и характеристиками, атрибутами и операциями над ними по некоторым правилам путем применения абстракции и конкретизации (как представителя абстракции).

Основные объекты задаются именами понятий (терминами) и представления значений или литералами из знаков.

Сводите число различных случаев к минимуму.

5.2. Метод структурного проектирования

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

Объект структурного проектирование - управление. Если управление явно указывается, то рассматривается алгоритм, в противном случае рассматривается запись задания, в котором управление умалчивается.

Причинами появления метода являются:

  • рост размеров и сложности записей объектов,

  • возрастание уровня требований по точности работы знаний и программ,

  • увеличение уровня требований к создаваемым объектам по надежности,

  • рост требований к распознаваемости элементов объектов,

  • рост требований к обозримости,

  • обеспечение методов синтеза объектов.

Рост размеров естествен и связан с ростом возможностей ВМ и расширением сфер их применения. Рост сложности связан с увеличением числа функций, возлагаемых на объекты. Надо учитывать, что в программах общее число ветвлений достигает 30% от длины объекта. Ошибки также являются естественными в больших записях, их поиск и устранение возможны в обозримых объектах. Синтез объектов должен порождать хорошо структурированные объекты, поэтому методы структурирования необходимо находить, изучать и применять. Таково краткое обоснование причин появления метода структурного проектирования.

Сущность метода состоит из выбора малого числа стандартных (проверенных и надёжных) структур и использование их при построении новых структур. Заметим, что конструируемый объект становится доказательным. Для построения хорошо структурированных программ можно использовать такие стандартные структуры, как последовательное выполнение, ветвление и простой цикл по условию. Доказано, что любая, даже плохо структурированная программа, может быть преобразована в хорошо структурированную программу, состоящую из стандартных структур. Эта же утверждение при доказательстве показывает, что любая программа может быть сконструирована из указанных трех стандартных структур. Более того, было установлено, что три стандартные структуры можно свести к одной, которая годится для построения любой программы. Но такая структура теряет наглядность. В последнем абзаце все время упоминается программа. Вместо нее можно подразумевать знаний или запрос. Упоминание программы исторически связано с построением доказательств над программами, лишь затем результаты доказательства были перенесены на знания и запросы.

5.3. Методы проблемного проектирования

Методы проблемного проектирования является более всего орудием математика или проектировщика. Сущность его состоит в применении поддержанных синтаксически и семантически способов описания теорий, проблем и операций для построения БЗ и форм запросов, а также для синтеза программ. Методы ориентированы на решение класса задач и требуют предварительных исследований и решения вспомогательных задач, отладки теорий или доказательства их свойств. Задача может рассматриваться как объект для формирования подзадач или надзадач.

С задачами можно обращаться также, как с алгоритмами и формулами. Манипуляция с задачами может привести к решению конкретной задачи или породить новые задачи, что также важно для исследований. До сих пор рассматривали вопросы построения иерархии задач и вопросы исчисления задач (см. том 5). Методы разрешения таких вопросов относится к методам проблемного программирования.

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

5.4. Методы логического проектирования

Совокупность методов применения логических исчислений для получения программ, знаний и данных составляет методы логического проектирования. Хорошими примерами логического проектирования алгоритмов являются записи на языках ЭС и Пролог. ЯПП целиком обслуживает логическое проектирование. Можно сказать, что запись задания для Интеллсист является логической программой для получения решений или для синтеза программ. Информационно-логическое проектирование программ и систем можно осуществлять в Интеллсист. Заметим, что значительная часть работ по логическому проектированию реализуется автоматически. Цель логического проектирования состоит в создании документации по заданиям на проектирование. Задание передается ВМ для реализации автоматического проектирования. Здесь имеется важное обстоятельство переноса тяжести с процессов кодирования на процессы проектирования, что ускоряет процессы разработки или делает их автоматическими. Это же обеспечивает раннее обнаружение ошибок или ошибочных ситуаций, повышает надежность процессов и объектов проектирования (алгоритмов, программ, знаний, информационных систем).

Наличие логического проектирования обеспечивает получение «бесплатных» программ непосредственно прямым пользователем ВМ с консультацией, но без использования программистов, автоматический вывод методов решения задач (в частности, численных методов вычислений). Имеется много других преимуществ, которые рассматриваются в томе 7.

5.5. Методы декларативного проектирования

ИП с помощью декларативной части ЯПП представляет собой пример метода декларативного проектирования программ. Дело в том, что для получения программы достаточно описания объектов и установления соотношений или отношений между объектами. Декларативное проектирование можно еще именовать описательным проектированием. Последовательность выполнения операций явно не указывается, кроме задания последовательности в формулах, в которых порядок выполнения операций задается рангом операции и скобками. Метод предназначен для описания предметной (набор имен и характеристик объектов) и проблемной (набор отношений объектов) областей и формирование задания или постановки проблемы в этих областях. В томах 2 и 4 даны все способы описания. Заметим, что при описании таких объектов как функции и процедуры могут иметь тела, представленные на командном языке.

Конечно, кроме декларативной части ЯПП содержит и командные части, без которой можно обойтись в особенности при автоматическом проектировании. Корректность и полнота описания проекта или задания устанавливается автоматически с помощью Интеллсист.

Информатика занимается в особенности концептуальным описанием проектов. Как уже не раз говорилось, проект или задание состоит из БЗ и запроса. БЗ включает лексикон (описание терминов с характеристиками) и соотношения терминов, понятия и соотношения понятий, концепций и их взаимодействий. Всё это составляет сущность метода декларативного проектирования.

Проектирование является целенаправленной деятельностью.

5.6. Методы создания проекта

Методология создания проекта - это обширная область деятельности независимо от того, какой объект предстоит создавать (программу, знания, данные) [Базилевич89, Бар88, Боэм85, Брукс79, Гантер81, Льюис79, Системы85, Тамм85, Таунсенд90, Тиори85, Фридмен86, Шоу81]. Интеллсист ориентирован на информационное создание любого проекта. Здесь подчеркнем лишь отдельные и главные черты такой деятельности. Метод важен главным образом для больших проектов. Для малых проектов достаточно искусства специалиста, чтобы быстро и надежно создать проект. В перечисленных выше публикациях можно найти определение проекта некоторого назначения. Например, проект программы - это совокупность документов, планов и замыслов или предварительных текстов программ, обеспечивающая эффективное и надежное создание итоговых программ. Определение проекта опирается на огромный опыт создания проектов технических систем, поэтому проект программы считается уже знакомым.

При проектировании технических систем эффективно используется понятия концепции, технического предложения и эскизного проектирования. В информатике поступают аналогично: составляются концепции, реализуемые в лексиконе описанием терминов, перечни реализуемых функций и прототип записи знаний или программы (как эскизный проект). В информатике предпочтение отдается логическому и информационному проектированию. Этапы проектирования в информатике почти полностью совпадают с этапами создания изделия. Это не означает, что надо пренебрегать процессами проектирования. Дело в том, что реализация этапов проектирования является хорошей подготовкой к реализации этапов создания изделия. В самом лучшем случае прототип может стать окончательным информационным изделием, хотя ориентация на такой исход сулит провальные итоги.

Понятие спецификации распространяется на все этапы проектирования. Кратко. Спецификация цели - это описание на техническом языке основных и вспомогательных функций изделия. Спецификация требований - это набросок руководств будущих пользователей изделия. Спецификация проблемы - это описание исходных данных и результатов работы изделия, формулировка проблемы. Спецификация изделия - это формальное описание имени и параметров изделия (например спецификация модуля, программы или подпрограммы [Джехани88]). Написание спецификаций дает возможность для создания полной документации на проект изделия.

Рассмотрение методов создания проектов должно сопровождаться знакомством с указанной литературой. Это учебники и руководства по проектированию в различных отраслях деятельности человека, конечно, включая информатическую деятельность.

5.7. Методы ведения проекта

Методы ведения проекта связаны со способами формирования объемных (размерных), временных (регламентных), паспортных характеристик (атрибутов) проекта изделия ручным или автоматизированным путем для сбора, хранения, обработки и выдачи этих характеристик. Метод предназначен для определения состояния проекта, автоматической корректировки документов на проект, определение экономических затрат и эффективности, определение производительности труда разработчиков над проектом и контроля над ходом создания проекта.

5.8. Методы управления проектами

О методах управления проектами написано много технической литературы. Среди замечательных книг можно указать на такие [Базилевич89, Бар88, Боэм85, Брукс79, Гантер81, Тамм85]. Проблемы управления проектами затрагиваются в обязательном порядке, поскольку нельзя в современных условиях осуществлять техническое проектирование, чаще всего сложных систем, без управления, поскольку сама система проектирования должна предусматривать средства для реализации управления. Текст этого раздела ограничен таким утверждениями по тем же причинам, указанная литература содержит подробное описание методов управления, повторение уже опубликованного будет лишним.

Управление проектами БЗ, запросов или заданий мало чем отличается от управления проектами программных систем: БЗ - это логическая программа решения класса задач, а запрос - это логическая программа решения конкретной задачи.

Общее определение метода управления проектом таково: способы определения метрик и нормативов логического программирования, обнаружения узких мест, планирование материальных, людских и вычислительных ресурсов и сроков выполнения работ по проекту. Способы предназначены для определения путей повышения эффективности работ и оценки деятельности коллектива проектантов над проектом и его реализации.

Библиотека формул и уравнений должна предшествовать библиотеке программ.

5.9. Методы ведения библиотек

В руководствах по комплексу Интеллсист и частично в томе 7 представлены методы ведения библиотек. Главный принцип методов состоит в обеспечении максимального копирования человеческого поведения в библиотеке и ведения библиотеки книг и документов, собранных в библиотеке. Вводится понятие картотеки и форм карточек, определяется метод доступа к содержимому библиотеки, ее поддержания, чистки и защиты от несанкционированного доступа. В указанных руководствах подробно описаны все макро и микро действия по вводу документов в библиотеку и сопровождению их по времени.

В библиотеке находят приют описания языков и проектов, программные модули, программы общего назначения, системные программы, БЗ, БД, отчеты о работах и др. документация.

Библиотека Интеллсист состоит из девяти стандартных разделов, чуть отличных от разделов в библиотеке для человека:

  1. таблицы символов и шрифтов - файлы, содержащие различные таблицы символов или их представления, которые используются в различных частях Интеллсист;

  2. языки различного назначения - файлы, содержащие машинные представления порождающих или распознающих грамматик, построенных для работы Интеллсист;

  3. лексиконы - файлы, содержащие словари из слов или терминов и предназначенных для построения лексиконов, которые также могут содержаться в этом разделе;

  4. БД – файлы и системы, содержащие различные накопители данных (или фактов): массивы, таблицы или записи;

  5. БЗ - файлы, содержащие знания из различных областей, представленные текстами, в кодах Интеллсист или на формальном языке Лейбниц;

  6. база подпрограмм - файлы, содержащие различные подпрограммы или программные модули на исходном языке или в кодах и используемых при синтезе программ по своему назначению (например, при моделировании);

  7. реализации Интеллсист - файлы, содержащие различные версии и редакции программ Интеллсист и всей сопутствующей информации;

  8. первичные тексты документов - файлы, содержащие различные текстовые документы по Интеллсист или с исходными знаниями, находящихся в работе;

  9. картотека - один или несколько файлов с наборами карточек, описывающих содержимое части библиотеки или её всю целиком; деление на картотеки позволяет разделить огромное количество информации, заключенное в библиотеке; картотеки могут выделяться пользователем (библиотекарем) в зависимости от принципов деления, закладываемых в структуру его библиотеки.

  10. Разделы могут состоять из подразделов, что облегчает упорядоченное хранение документов в библиотеке.

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

В библиотеке Интеллсист можно с помощью пунктов меню выполнять такие операции:

  • просматривать и изменять текущую картотеку – пункт меню «Действие/ Открыть каталог»;

  • добавлять новые каталоги в библиотеку – пункт меню «Действие/Поместить в библиотеку»;

  • просматривать и изменять карточки, а также получить доступ к указываемым ими документам – соответственно пункты меню «Действие/Просмотр» и «Действие/Изменить»;

  • копировать документы из библиотеки – пункт меню «Действие/Копировать»;

  • добавлять новый материал в библиотеку – пункт меню «Действие/Добавить»;

  • удалять документы из библиотеки – пункт меню «Действие/Удалить»;

  • получать обобщенную информацию о библиотеке и активном каталоге – пункт меню «Действие/Статистика»;

  • создавать и изменять картотеки – пункты меню «Файл»: «Создать», «Открыть», «Сохранить».

Параметры, отображаемые в карточке подразделяются на основные и дополнительные. Основными параметрами являются:

  • регистрационный номер карточки, связанный с разделом и вычисляющийся автоматически для каждой новой карточки;

  • авторы документа;

  • наименование документа;

  • параметры защиты (не задействованы в текущей версии);

Дополнительными параметрами карточки являются:

  • фирма-разработчик материала;

  • дата введения материала в библиотеку;

  • аннотация документа;

  • данные по лицензии на приобретение материала;

  • версия документа;

  • место хранения материала в директориях библиотеки;

  • пользователи, работавшие с этим материалом (реализация в следующей версии);

  • владелец материала (по договоренности с автором материала).

В версиях Интеллсист будет предусмотрена защита материала библиотеки. Защита предусматривает различное ограничение пользователей в зависимости от имеющихся у них прав пользования библиотекой. Защита библиотеки Интеллсист организуется подобно защите обычной библиотеки – пользователям Интеллсист сопоставляются при их регистрации учётные записи, где прописаны все их права и ограничения пользования, как непосредственно, так и косвенно (например, принадлежность к рабочим группам).

Для помещения документа в библиотеку нужно воспользоваться пунктом меню «Действие/Добавить». При этом откроется диалог создания карточки, аналогичный диалогу изменения карточки (рис. 6.4.2). Для добавления документа в библиотеку здесь обязательно надо заполнить (выбрать, указать):

раздел библиотеки – выбор из списка;

автор документа – заполнение редактора и/или нажатие кнопки «Авторы»;

название документа – заполнение редактора;

файл – заполнение соответствующей строки таблицы или нажатие кнопки «Файл».

Если есть необходимость, то пользователь может заполнить и другие строки таблицы дополнительных параметров. В версии Интеллсист файл документа не копируется в каталоги библиотеки Интеллсист, в дальнейшем планируется использовать этот механизм пополнения библиотеки.

Удаление карточки производится путём использования пункта меню «Действие/Удалить». Здесь нужно быть осторожным, так как пользователю будет предложено удалить и документ, на который ссылается карточка. Если есть необходимость дальнейшей работы с ним, то надо или отказаться от удаления документа или предварительно скопировать его.

Хоть потерпел герой наш неудачу,

Рыдать не будем с героиней заодно -

Народу нужно что - решать задачу,

А чем - хоть синтезом, хоть лаптем -

все равно!

Народный фольклор

5.10. Методы синтеза программ

Главная ориентация в работе со знаниями (в том числе с алгоритмическими знаниями) состоит в применении логических методов и подходов. Такая ориентация исторически родилась из проблем построения доказательств правильности программ. В решении этих проблем получены хорошие теоретические результаты, но практическое воплощение оказалось весьма трудным делом. Минуя эти проблемы можно достичь больших практических результатов после внедрения методов и средств синтеза программ автоматическими методами. После реализации методов синтеза программ отпадает необходимость в доказательстве правильности программ, но правильность алгоритмов остается. Автоматический синтез обеспечивает (гарантирует) построение правильных программ, но не правильных алгоритмов, если в задании допущена ошибка. Имеется другая сторона проблемы синтеза - проблема соответствия алгоритма и программы физической сущности решаемой задачи. И тогда возникает проблема установления правильности постановки задачи. Технически эта проблема несколько проще проблемы доказательства правильности программы. А теоретически проблема исследования правильности постановки задачи находится в начальной стадии ее формулировки.

Итак, методы синтеза программ решают фундаментальную проблему построения синтезатора программ. Некоторые метода описаны в статьях и препринтах [Красилов02а, 03б, Непейвода78, 82]. Один метод синтеза программ с помощью Интеллсист представлен в томе 7. Многие частности методов представлены в этих публикациях. В руководствах по Интеллсист и томе 7 можно найти метод синтеза пакетов прикладных программ, метод автоматического создания совокупности подпрограмм, объединенных в пакет. Кроме построения программы Интеллсист автоматически формирует документацию на программу так, чтобы пользователь мог при необходимости запустить ее. Некоторые синтезируемые подпрограммы могут пополнять библиотеки подпрограмм для применений в других заданиях, при решении других задач.

Сущность синтеза программ состоит в следующем. Если знания не полны, то решение задачи не может быть получено. Чаще других причин существует причина отсутствия варьируемых исходных данных. Тогда Интеллсист строит программу по «сырому» решению и через запуск программы с вводимыми исходными данными осуществляется проверка истины для всего задания (задачи). Если истина не определяется, то выдаются условия для получения истины. Выводимые условия окончательно определяют решение задачи. Решение при этом выглядит как альтернативы совместных фактов. Каждый факт - имя и полученное значение для понятия с этим именем или имя и выражение, если знания об операциях не полны. Итак, программа реализует динамическое «вычисление» истины (или лжи) или условия, при которых задание будет истинным. Программы продолжает поиск решения задания, но с изменяющимися исходными данными.

Результаты работы программ могут использоваться далее с каким-либо назначением, например, для их анализа. Анализ результатов производится для установления соответствия между физической сущностью проблемы и программной моделью. Анализ может быть связан просто с поиском ошибок в задании.

Результатами работы Интеллсист по запросу пользователя могут быть:

  • решения, представленные альтернативами совместных фактов,

  • решения, представленные альтернативами выражений,

  • отсутствие решения в случае глобального противоречия или доказанной теоремы,

  • программы, синтезируемые по указанию и запросу пользователя,

  • ошибки, обнаруженные в текстах знаний или запросов.

СП является программным представлением решения запроса пользователя и состоит из подпрограмм вычисления фактов, утверждений или их частей, полученных в результате решения запроса на основании введенных знаний. Поэтому СП структурно также состоит из подпрограмм альтернатив совместных фактов. В общем случае здесь каждый совместный факт может быть расчетным, нерасчетным или частично расчетным (при решении запроса каждый факт является всегда нерасчетным). Расчетные части совместных фактов альтернативы формируют альтернативные решения (алгоритм расчета) задания, а нерасчетные – основу альтернативных результатов (печать решения в форме альтернатив). При отсутствии в фактах расчетных частей альтернатива решения отсутствует, а альтернатива результата эквивалентна альтернативе при решении запроса (в этом случае СП ничего по альтернативе не вычисляет, а просто ее печатает). Если же, наоборот, факты состоят только из расчетных частей, то альтернатива результата будет отсутствовать (СП ничего по альтернативе не печатает, но полностью по ней вычисляет).

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

Для примера рассмотрим факт «R=(A+B) смешать с (C-D)». Если все операнды имеют конкретный тип данных, все операции определены для этих типов, и здесь нет неопределенных терминов, то весь факт является расчетным. Допустим теперь, что R – неопределенный термин, а операция «смешать с» не определена для типов выражений в скобках, тогда расчетные части – это «(A+B)» и «(C-D)», а нерасчетные части – это «R=» и «смешать с ». В результате, например, будет напечатано R= 3 смешать с 5. Если же здесь наблюдается полная неопределенность знаний или все участвующие в выражении операнды являются неопределенными, то данный факт является полностью нерасчетным.

Выполнение СП состоит в последовательном расчете всех альтернатив решения. Выполнение альтернативы состоит в расчете ее совместных фактов. Совместный факт всегда является логическим выражением. Если факт имеет значение истины, то рассчитывается следующий факт альтернативы, иначе (когда некоторый факт ложен) вся альтернатива считается ложной (противоречивой), ее выполнение прекращается, и начинается выполнение следующей альтернативы. Как было уже сказано, нерасчетные факты в СП не учитываются. Частично расчетные факты считаются всегда истинными, их расчетные части выполняются, а результаты расчета печатаются в соответствующих местах альтернативы результата. Если рассмотреть предыдущий пример частично расчетного факта и предположить, что A = 5, B = 4, C = 3, D = 2, то в альтернативе результата будет напечатано «R=9 смешать с 1». Если бы здесь операция «смешать с» была определена для целых типов, и допустим, 9 смешать с 1 равно 156, то изменилась бы структура факта, и было бы напечатано «R=156».

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

Поток управления в СП формируется явными операциями: переход на метку, вызов процедуры, катенация выражений, командное ветвление. Поток управления неявно формируется полностью расчетными фактами и операциями: квантор «существует», квантор «для всех», вызов функции, исполнение пользовательской операции. Явное ветвление в программе пользователь может организовать с помощью логической операции «и» с переходом на метку. Для организации циклов можно использовать как кванторные операции, так и явное ветвление.

СП генерируется в виде модулей на каком-либо языке программирования. Также дополнительно могут генерироваться различные вспомогательные файлы как текстовые, так и кодовые, необходимые для работы СП, а также компилятора, преобразующего языковые модули в машинный код.

ГП позволяет создавать СП в одной из трех реализаций.

  1. Программа. Программа – самостоятельная задача, реализуемая в исполняемом файле (EXE). Реализация готова к использованию. Исходные тексты программы находятся в файлах, которые известны по документации на программу, а пользователь-программист может исследовать и изменять их самостоятельно.

  2. Исполняемая подпрограмма. СП в такой реализации выполняет какую-либо отдельную функцию в рамках выполнения большой задачи. Она оформляется в виде экспортной процедуры в файле библиотеки динамической компоновки (DLL-файл). Такая процедура имеет набор входных и выходных параметров, с помощью которых СП обменивается данными с вызывающей программой.

  3. Компонуемая подпрограмма. СП оформляется в виде файлов исходного кода на языке программирования (EXE-файл или DLL-файл). СП в данной реализации также выполняет какую-либо отдельную функцию в рамках выполнения большой задачи и также оформляется в виде доступной процедуры с набором входных и выходных параметров. Однако, здесь СП не готова к использованию, так как необходима компиляция файлов СП в исполняемый код и связывание кода СП с кодом внешней программы, для которой она создается. Такая бесконтекстная реализация представляется более гибкой в использовании, чем исполняемая подпрограмма.

Существуют три возможных варианта создания СП.

  1. Отладочный. Он предназначен для поиска в программе возможных динамических или фундаментальных ошибок в представлении объектов знаний и запроса или в самих записях знаний и запроса. Статическая отладка логики знаний осуществляется в процессе ввода текстов, их трансляции и логического вывода, а использование знаний с конкретными фактами могут привести к ошибкам, порождаемым конкретными значениями понятий. Здесь СП содержит обработчики стандартных ошибок и исключительных ситуаций, например, деление на ноль. Также в тело СП вставляются процедуры определения контекста ее выполнения, что позволяет пользователю относительно быстро найти место возникновения ошибки или исключительной ситуации. Отладочный вариант СП является подготовительной стадией перед использованием СП по остальным вариантам. Для малых задач отладочный вариант может стать и счетным вариантом, если необходим полный контроль влияния исходных данных на результат.

  2. Счетный. Он предназначен для обычного обработки данных в СП по цепочке: ввод пользователем или из файла исходных данных, расчет значений, получение и печать текста результата. Для обеспечения процессов ввода-вывода данных для счетной СП, обязательно используется один из стандартных интерфейсов. Из-за того, что счетная СП не совершает контролирующих процесс выполнения действий, счетный вариант отличается от отладочного с большей оптимизацией, как по размеру СП, так и по времени ее исполнения.В качестве счетного варианта можно использовать отладочный вариант, если, например, окончательная отладка невозможна.

  3. Встраиваемый. Он предназначен в основном для ВМ, встраиваемой в систему управления логическими или физическими объектами. Основное отличие этого варианта СП от других состоит в том, что в ней отсутствуют какие-либо стандартные отладочные действия и обмен информацией по стандартным связям. Здесь эти задачи полностью реализуются пользователем в тексте его запроса через вызов внешних подпрограмм (см. п. 2.4). Таким же способом создаются программы каналов обмена с объектами. Встраиваемая программа в особенности должна подвергаться исследованиям в отладочном или счетном вариантах с моделированием каналов и частот обмена данными программы и элементов физических объектов.

СП получается генерацией файлов с текстом на ФЯ и последующей их компиляцией и связыванием в код. Этот способ получения СП и определяет ее структуру. В общих чертах СП состоит из следующих групп файлов:

  • модули, генерируемые ГП;

  • стандартные модули Интеллсист;

  • библиотечные модули используемого компилятора;

  • внешние модули (как разработчика СП, так и других производителей);

  • файл с исполняемым кодом СП (отсутствует для СП, реализуемых как компонуемые подпрограммы);

  • модули стандартных интерфейсов;

  • документ на программу.

Генерируемые модули СП имеют следующий состав:

модуль типов содержит описания всех пользовательских типов СП;

  • модуль констант содержит описания простых констант с начальным значением (на ФЯ при их описании не требуется указывать тип) и всех констант без начального значения;

  • модуль переменных содержит описания всех переменных СП, сложных констант с начальным значением (на ФЯ при их описании требуется указывать тип), рабочих ячеек СП, отдельных агрегатов в потоке операций (если ФЯ не имеет их встроенной поддержки);

  • модуль внешних подпрограмм содержит требуемые спецификации вызываемых в СП подпрограмм из внешних модулей;

  • модуль подпрограмм содержит описания используемых в СП функций, процедур, пользовательских операций;

  • модули альтернатив содержат альтернативы решения, каждой альтернативе соответствует свой модуль;

  • главный модуль содержит точку входа в СП (здесь проводятся инициализация/деинициализация всех модулей и систем СП, осуществляется вызов процедуры расчета альтернатив решения или производится вход в цикл обработки сообщений стандартного интерфейса), описана процедура установки динамических начальных значений терминов, даны описания служебных величин, зависящих от компилятора (адреса, смещения, размеры);

  • файл бинарных ресурсов содержит служебные величины, не зависящие от компилятора (информация о типах операндов, описания БД и создаваемых СП таблиц в них, описания входных/выходных величин для стандартных интерфейсов).

В зависимости от ФЯ каждый модуль может быть представлен несколькими файлами (с разными расширениями), а также могут дополнительно генерироваться различные служебные файлы, необходимые для успешной компиляции текста на ФЯ в исполняемый код. Для увеличения совместимости с различными компиляторами данного ФЯ в модулях, по возможности используется только ядро языка.

Для уменьшения объема генерируемого кода СП, весь код стандартных данных выведен в стандартные модули Интеллсист. Ими являются:

  • модули стандартных типов и операций Интеллсист, которые содержат операции и типы данных, поддерживаемые Интеллсист, но не имеющие встроенной поддержки в ФЯ, а также ряд системных величин;

  • модуль операций над таблицами, который содержит конкретную реализацию операций над таблицами через какой-нибудь универсальный интерфейс взаимодействия с СУБД (например, BDE, ODBC, ADO) или через собственный интерфейс СУБД (так называемые CLI – Call Level Interfaces);

  • два модуля доступа СП к соответствующим стандартным интерфейсам;

В общем случае СП взаимодействует с СУБД через один из CLI с помощью языка SQL. Интерфейс доступа определяется пользователем перед синтезом СП. В настоящий момент СП может взаимодействовать с СУБД только через Borland Database Engine (BDE). BDE распространяется вместе с пакетом Интеллсист.

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

Создание ППП имеет особенности и накладывает терминологические ограничения по сравнению с созданием одиночной СП, так как программы пакета используют общие термины (см. п. 2.6). Поскольку термины идентифицируются в СП по их номеру в лексиконе БЗ, то необходимо генерировать все СПП пакета при одном и том же содержимом лексикона. Нельзя упускать возможность отладки ППП по его отдельным компонентам. Единственное допустимое изменение лексикона - это его пополнение по мере генерации в пакете новых СПП. Это допустимо, так как при пополнении лексикона новые термины имеют новые идентификаторы (порядковые номера). Прежнее соотношение терминов и идентификаторов может измениться существенно. Автомат назначения идентификаторов не может учитывать историю появления терминов, кроме частных случаев «дописывания» разделов понятий в запросах, а не «вкрапления» новых терминов.

По результатам работы ГП и СП строятся отчеты. Для ГП отчет это текстовый файл, содержащий некоторые данные о СП. Если генерируется СПП в ППП, то строится совместный отчет по СП и в целом по ППП. Для СП это печать альтернатив результатов ее работы (в том числе и противоречивых альтернативы, которые чаще всего не нужны в качестве конечного результата). Результаты работы СП оформляются стандартным образом по определенному формату. Печать результатов производится в стандартных интерфейсах СП. В будущем планируется оформлять результаты работы СП в виде специальных отчетов и с помощью графического представления данных. Отчеты оформляются по шаблонам или с помощью формального языка записи отчетов. Графики оформляются по специальным программам или по запросам пользователя на основе БЗ «Графика отчетов».

В генерируемый отчет для СП входят:

  • имя СП;

  • дата и время создания;

  • сведения об авторе и организации;

  • версия Интеллсист;

  • индекс DLL-процедуры для СПП в реализации исполняемой подпрограммы (если задан);

  • вид СП (реализация, вариант, интерфейс);

  • ФЯ, на котором создана СП;

  • каталог создания СП;

  • список модулей СП с указанием их назначения, числа строчек и размера;

  • список остальных файлов СП с указанием их назначения и размера;

  • список требуемых внешних, системных и интерфейсных модулей;

  • список идентификаторов используемых БД;

  • список таблиц с указанием их идентификаторов, идентификаторов БД, вида использования;

  • статистика по СП: число элементов по разным категориям и приблизительные размеры различных областей памяти, занимаемых СП;

  • список терминов СП с указанием идентификатора и вида использования.

  • В генерируемый отчет по ППП кроме отчета по СПП входит:

  • имя ППП;

  • дата и время последнего изменения;

  • сведения об авторе и организации;

  • версия Интеллсист;

  • вид ППП (реализация и вариант);

  • каталог создания ППП;

  • список имен СПП, входящих в ППП.

Результаты (в том числе и противоречия) автоматически накапливаются в течение сеанса работы с СП. Другими словами, независимо от способа запуска СП на счет (однократный запуск, многократный запуск одного варианта исходных данных, пакетный запуск нескольких вариантов и т.п.) полученные результаты добавляются к уже имеющимся результатам в соответствующем потоке. Для стандартного оконного интерфейса потоком является текстовое окно, для интерфейса командной строки это файл. Сохранение же и накопление результатов между сеансами работы СП должно выполнятся самим пользователем, например, сохранением результатов в разные файлы для разных результатов. В стандартном оконном интерфейсе также имеется возможность ручного редактирования полученных результатов. Содержимое окон в любой момент можно сохранять в произвольных файлах.

Построение программы или базы знаний есть доказательство.

Глава 6. Методы, поддерживающие разработку

Разработка является центральной частью всей деятельности над любыми документами (задания, программы, результаты, отчеты). Система понятий разработка известна давно. Всю совокупность методов охватить почти невозможно. Они полностью переносятся в информатику. Ниже дан обзор некоторых важных методов.

6.1. Метод модульного проектирования разработки

Метод модульного проектирования - это способ представления больших и сверхбольших предметов (в частности, программ, текстов или схем) из обозримых, легко контролируемых и модифицируемых частей - модулей, удовлетворяющих требованиям целостности, функциональной замкнутости, синтаксической и семантической определенности и независимости, слабой зависимости при проектировании, разработке и сопровождении, интерфейсной специфицируемости, сокрытием внутренних данных, операций, объектов и управления, малыми размерами (например лист бумаги или кадр экрана), небольшим числом входов и выходов (по информации), единственным входом и единственным выходом по управлению, наконец, отторгаемости от всего проекта.

Только что данное определение метода требует уточнения. Контролируемость части предмета должна требовать минимального времени на ее обзор и поиск ошибок. Модифицируемость части предмета должна допускать любые изменения части предмета, которые не влияют на другие части или модули. Целостность подразумевает невозможность деления на части, деление на части должно приводить в конечном счете к формированию целостных частей. Функциональная замкнутость подразумевает выполнение частью предмета одной функции или операции. Конечно, понятие одной функции расплывчато и понятно только проектировщику или руководителю проекта. Синтаксическая определенность подразумевает полную формальную самоопределенность любого элемента модуля, а синтаксическая - полную смысловую определенность, связанную с функцией модуля. Независимость модуля перекликается с его модифицируемостью, но подразумевает еще и возможность автономной разработки, отработки и сопровождения. Интерфейсная специфицируемость требует от представления модуля формы знания (пары имя-значение), спецификация модуля - его имя, а сам модуль (часть предмета) - его значение. Сокрытие внутренних данных, операций, объектов и управления обеспечивает обозримость всего предмета и невмешательство других частей предмета в поведение данного модуля; вмешательство в поведение допустимо только через глобальные по отношению к данному модулю объекты и вход-выход модуля. Малый размер обеспечивает обозримость модуля. Отторгаемость модуля предполагает использование его в других проектах или в модификациях данного проекта. Такое доопределение модуля и метода несколько уточняет те процедуры, которые обеспечивают реализацию модуля.

Обычно конструкция или структура модуля формализована. Например, программный модуль формализован в языке программирования. Его формальное определение включает спецификацию, параметры для обмена данными или ссылками на данные, описание собственных объектов, последовательность операторов и факультативные операторы для исправления автоматически обнаруживаемых ошибок в процессе выполнения программы модуля. Спецификация модуля содержит его наименование, параметры модуля вместе с их характеристиками и общие свойства модуля. Конструкции или структуры других проектируемых предметов также формализованы или должны формализоваться для успешной работы в системе человек-ВМ.

Метод модульного проектирования предназначен для организации работы коллектива разработчиков над одним проектом, для обеспечения повторного использования проекта или его частей и для создания банков модулей, самих проектов или спецификаций модулей. Перечень спецификаций модулей является справочником для всех разработчиков проекта, поскольку некоторые из них могут использовать модули для успешного и экономичного проектирования своих модулей. Именно спецификации модулей обеспечивают связь россыпи модулей в единый проект. Большое охватить трудно или сложно. Отдельные модули можно проанализировать, а весь проект охватывается по структуре проекта, который также представляется модулем структуры.

Итак, основным преимуществом метода модульного проектирования является обеспечение работы большого коллектива над одним проектом. Другое преимущество состоит в исключении дублирующих работ, так как метод позволяет осуществлять перенос модулей из одного проекта в другой. Два и более проектов могут использовать одинаковые модули.

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

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

6.1.1. Пояснение требований к модулю. Определение модуля представляет собой довольно сложную проблему. Сложность определения объясняется большим разнообразием требований к понятию модуля. Попробуем рассмотреть их по плану, предложенному в работе [Турский81]. Однако полезно чуть подробнее раскрыть перечисленные выше отдельные требования.

Блочность модуля. Модуль должен обладать свойствами независимого использования, независимого вызова (взаимодействия с другими модулями) для выполнения и допускать его вложенность в другие модули. Независимость исполнения - это обеспечение тиражирования модулей, многократного включения их в другие предметы (программы), автономности отладки или отработки в процессах проектирования, разработки или сопровождения. Для придания таких свойств модулю необходимо оформлять и конструировать его так, чтобы имелась возможность введения собственных (принадлежащих только ему) объектов, операций и/или управления. При этом надо заметить, что для каждого модуля должно соблюдаться требование полноты определений внутренних понятий. Следствием таких требований является возможность вызова данного модуля из любого места и при любых условиях (в том числе рекурсивного вызова). Допущение вложенности - это требование вытекает из того факта, что исполнитель модуля может применять метод модульного проектирования при конструировании своего модуля. Быть блоком модулю - главное требование, обеспечивающее «самостоятельность» и независимость модуля, в особенности, сокрытие данных, объектов, операций и управления - как важная форма обозримости, безопасности и цельности.

Синтаксическая определенность модуля. Это требование означает, что синтаксическая структура модуля не изменяется ни во время вызова, ни после завершения работы модуля, и новое использование не требует восстановления некоторого исходного состояния. В этом смысле модуль является «аппаратурой» с жесткой структурой. Сказанное является действительно требованием, поскольку можно представить такой модуль, который содержит операции «интегрирования» с запоминанием результата, который сохраняется и влияет на последующую работу модуля. Если модуль содержит такой «интегратор», значит он не удовлетворяет обсуждаемому требованию. Интегральный эффект можно толковать и как нарушение требования семантической определенности. Однако чаще всего синтаксис определяет возможность или невозможность интегрального эффекта. Например, в языке программирования Алгол 60 имеются синтаксические конструкции собственных величин. Их толкование допускает возникновение интегрального эффекта.

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

Общность данных. Модуль может обмениваться данными (воздействиями) с другими модулями: вызывать, изменять или выдавать данные. Этот обмен данными происходит либо в момент вызова модуля, либо во время его выполнения, либо после завершения работы модуля. Эта особенность модулей не влияет на другие требования, она обеспечивает связь модулей по данным.

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

Целостность модуля. Каждый модуль является макрооперацией программного процессора, которая выполняет одну функцию или алгоритмическую операцию. Действительно, совокупность модулей интерпретирует программный (или математический) процессор, обеспечивающий решение проблем пользователя. В этом смысле весь предмет (программа без модулей) является программой, состоящей из обращений к модулям (к процессору). С этой точки зрения модуль обладает свойством целостности.

Размер текстового модуля - одна страница. Это требование обеспечивает контролируемость и простое восприятие текста и смысла модуля.

6.1.2. Создание модулей. В общих чертах процедура создания модулей состоит из следующих шагов. Применение метода модульного проектирования начинается на ранних этапах создания предмета. Уже при изобретании предмета необходимо определять состав модулей с учетом имеющихся в библиотеке модулей. При таком подходе можно обеспечить качество и сокращаемые сроки создания предмета. И уж конечно до написания самих модулей на этапе проектирования необходимо утвердиться в составе модулей и написать спецификации каждого модуля. Эти работы определяют первый этап применения метода. В таких случаях работу квалифицируют как модульное проектирование.

Второй этап реализуется в процессе разработки тела модуля автономно от реализации других модулей. Работу этого шага обычно именуют модульным конструированием. Остальные этапы традиционны: написание текстов, проверка правильности, отработка или отладка, оформление документации, передача в комплексную отработку набора модулей или всего создаваемого предмета и комплексная отработка или отладка.

В качестве резюме отметим (возможно повторно) достоинства метода модульного проектирования. Первое из них - организация работы коллектива. Второе достоинство - это возможность построения библиотеки стандартных модулей, которая обеспечивает накопление знаний. Третье - повышение эффективности работ, вытекающее из многих перечисленных требований. Четвертое - повышение эффективности предмета. Пятое - простая сменяемость при сопровождении (замена новым модулем, устранение ошибок). Шестое - защита данных и операций. И седьмое - читаемость частей.

6.2. Метод блочного проектирования разработки

Метод блочного проектирования (МБП) обычно связан с методом модульного проектирования и выдвигает во многом общие с ним требования. Мы подчеркнем только существенные различия этих методов. МБП включает совокупность приемов представления частей - блоков (предмета, задания, программы), обеспечивающих синтаксическую и семантическую определенности, замкнутость в блоке вводимых понятий, которые становятся локальными и определяют область действия, внутреннюю управляемость локальной памяти. Использованные здесь требования описаны выше, а некоторые требуют пояснения.

Приемы, составляющие метод предназначены для скрытия части памяти для внутреннего применения. При входе в блок память резервируется, а при выходе - освобождается. Требование управляемости памяти является главным и характерным. Другие требования являются скорее сопутствующими. Это требование обеспечивает совмещение по памяти, что является средством эффективного использования ее. Фундаментальное определение понятия блока дано в языках программирования Алгол 60 и Алгол 68, язык Ада развил понятие блока с учетом параллельного выполнения модулей. Прием локализации распространяется на все вводимые в блоке понятия: описания операций, объектов и управления. При этом вход в блок по управления и выход из блока единственны, точки управления определяют управление ресурсами памяти на резервирование или освобождение.

Метод блочной разработки преследует такие цели:

  • введение локальных понятий, скрытых и определенных в блоке;

  • совмещение по памяти, выделяемой под значения объектов, описанных в блоке;

  • ограничение доступа из вне блока к данным, локализованным в блоке;

  • использование некоторых важных преимуществ модуля;

  • соблюдение принципа простоты управления «один вход - один выход».

Существенное отличие блока и модуля состоит в том, что модуль может вызываться из вне (или изнутри) модуля, а блок вызывается только при непосредственной передачи управления на блок. Цели указывают и на средства применения метода блочной разработки. Блок чаще всего может быть частью модуля.

Понятие блока строится по рекурсивным правилам. Внутри блока вновь может быть встроен блок со своими локальными понятиями. В таком случае встроенный блок может содержать понятия с такими же именами какие были использованы в охватывающем блоке. Свойства понятий охватывающего блока недоступны, они переопределяются во внутреннем блоке. Область действия внешнего имени прерывается на время выполнения встроенного блока и вновь возобновляется по завершении выполнения вложенного блока. Блок, как и модуль, определяет область действия вновь введенного в блоке понятия. Эта особенность блока важна для повышения уровня абстракции понятий путем скрытия (отвлечения от локального) понятия внутри блока. Эта особенность важна также для защиты части предмета от посягательств на изъятие данных и вмешательство в управление внутри блока. Однако через глобальные понятия и глобальные передачи управления можно осуществлять (с разрешения блока) передачу данных и управления. Управление может прерываться и принудительно более высокими уровнями приоритета выполнения. Из блока можно «увидеть» другие понятия, локализованные вне или в охватывающем блоке.

В ЯПП понятие блока упрощено. Понятие блока не используется самостоятельно. Блоком становится тело процедуры, функции и операции, квантора. Понятие блока возникает там, где необходимо локализовать или скрыть данные, операции и управление.

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

имя блока:

описание -- некоторое зарезервированное слово

раздел описаний локальных понятий -- объявление локальных понятий

начало -- выделение локальной памяти, указанное

-- зарезервированным словом

последовательность действий -- выполнение локальных операций

исключения -- раздел самоконтроля по именам исключений

обработчик исключений -- исправления внутренних ошибок

конец; -- освобождение локальной памяти

Для информатики такая структура соответствует представлению элементарного знания по схеме имя-значение. Явно указывается имя блока и его значение в форме совокупности описаний понятий и их использования, а также некоторых возможных действий, связанных с исправлением обнаруживаемых динамически ошибок. Формальное определение блока обычно дается в языках программирования.

6.3. Метод разработки из готовых блоков

Широко известен метод блочного строительства. Метод по существу является универсальным, он обеспечивает глубокое разделение труда и ускоренную сборку больших конструкций. Его применение в информатике обязательно в силу свойств организации труда при блочном проектировании. Необходимость разделения труда в информатике возникла сразу же при проектировании больших систем и программ. Специализация, например, в математике известна, а информатика занимается передачей ВМ знаний математической науки для решения разнообразных задач. С глубоким разделением труда мы сталкиваемся по всем дисциплинам. Относительно больших конструкций можно высказать аналогичные положения: необходимость их сборки в любой отрасли деятельности требует применения метода блочного строительства. Передача знаний ВМ ставит проблему внедрения метода в информатику. Проблема не нова, она разрешена в программировании во времена разработки первых программ на первых ВМ.

Метод блочной разработки в программировании проявлялся при формировании концепций блока, модуля, стандартной программы, расчленения больших программ на самостоятельные (независимо разрабатываемые и отлаживаемые) части и при создании языков программирования. Последнее в особенности важно, так как при создании языков вычленялись требования к частям программ, которые можно именовать блоками большой программы. Формулировка требований высветила те главные свойства блока, которые определили не только понятие блока, но и сам метод блочной разработки. Метод из программирования распространяется на информатику. В этом разделе под блоком понимается одна из его реализаций в форме блока, модуля или стандартной подпрограммы, о них был разговор выше.

Метод блочной разработки определяется как прием представления частей объекта (модуля или блока), каждая выполняющая определенную подфункцию объекта и удовлеткоряет всем перечисленным выше требованиям (синтаксической и семантической определенности, индентифицируемости, замкнутости используемых в ней понятий, локальности условий использования и управления, управляемости его общими свойствами и др.). Следует дать дополнительные пояснения некоторым требованиям и понятиям. Понятие подфункции условно и может пониматься в зависимости от конкретных условий применения метода. Здесь достаточно интуитивного понимания. Заметим, что идентифицируемость модуля предполагает наличие у модуля необходимых признаков, по которым один модуль отличается от другого. Замкнутость понятий является обязательным требованием разработки модуля для обеспечения уровня независимости его от других модулей. Введенное в модуле понятие должно пониматься в соответствии с его определением в модуле, на его определение не может повлиять другое определение того же понятия, введенное в другом модуле. Локальность условий понимается аналогично вводимому понятию, но относится это требование к вспомогательным средствам модуля. Локальность управления означает, что имеется только один вход (доступ) в модуль и один выход (доступ во вне относительно модуля) из модуля. Внутренние связи скрыты в самом модуле. Наконец, управляемость свойствами возможна либо через входные параметры, либо через глобальные понятия. В действительности, каждый модуль может использовать внешние по отношению к нему понятия с теми значениями, которые имелись к моменту использования модуля.

Метод блочной разработки предназначен для использования накопленного опыта и материала, увеличения самих накоплений и для эффективного использования ресурсов программистов.

6.4. Методы проектирования последовательных вычислений

Это основной метод проектирования для архитектур ВМ, построенных по принципам фон Неймана, и состоит в построении последовательности операций. Среди последовательных операций могут использоваться самые разнообразные операции прерывания выполнения последовательности для определения другой новой или той же самой последовательности операций. Запись последовательности операций хорошо согласуется с выполнением текстов на ЕЯ. Исключение составляет запись формул или выражений, где порядок выполнения операций диктуется старшинством операций или путем расстановки скобок. В языках программирования последовательность операций выражается последовательностью операторов, среди которых около десятка простых операторов и примерно столько же составных операторов. Методы проектирования последовательных вычислений не вносит ничего отличного от привычных действий. Даже в проектировании параллельных вычислений основу составляют последовательные вычисления.

Путь к хорошей конкретизации лежит через максимальное обобщение.

6.5. Метод макропроектирования

Метод макропроектирования - это синтаксически и семантически поддержанный метод разработки параметрически настраиваемых программных или знаниеориентированных модулей, используемых для автоматической генерации различных экземпляров выполняемых программ и подпрограмм. Параметрами настройки могут быть величины, типы данных, подпрограммы и тексты. Примерами макропрограммирования могут служить шаблоны в ЯПП и технологии ИП. По существу метод предназначен для создания шаблонов семейства различных программ. Конкретизация шаблонов задает синтаксический и семантический способ обращения к подпрограммам, которые воплощают укрупненную команду, называемую макрокомандой.

В истории проектирования отмечается строительство объектов из крупных блоков или кирпичей (макрокоманд). Ситуация аналогична тому как это было в строительстве. Строительство из крупных блоков - панелей - архитектурно ограничено, а строительство из кирпичей - мобильно и разнообразно. Строительство программы или знаний также может реализоваться из подпрограмм или из макрокоманд. В любом случае поддерживается производительность и надежность процессов и объектов строительства.

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

Макроописание - это абстрактная программа или абстрактный текст с параметрами настройки на конкретное выполнение. Макрокоманда называется макровызовом, которое задает фактические параметры для выполнения настройки. Все указанные понятия известны в макропрограммировании, они распространяются и на абстрактные тексты знаний. В данном случае под макропроектированием понимается именно макропрограммирование в ПП или ИП.

6.6. Метод проектирования сверху вниз

Этот метод является совокупностью способов разработки больших объектов (БЗ и программ), в которых модули верхнего уровня разрабатываются раньше модулей верхнего уровня так, что образуется дерево зависимостей модулей и управления между модулями. Корневыми элементами дерева являются модули верхнего уровня, а листьями - модули самого нижнего уровня, не вызывающие другие модули.

6.7. Метод проектирования снизу-вверх

Этот метод также является совокупностью способов разработки больших объектов (БЗ и программ) с использованием библиотек готовых подобъектов, составляющих ";кирпичики"; или блоки для создания искомых объектов. Такая разработка полезна, если о проекте в целом нет полного представления. Разработка реализуется по уровням от нижнего до более высокого (от частного к общему). Метод известен инженерам большинства областей деятельности. Подход к применению метода в информатике ничем не отличается от подходов, существующих в других областях.

Метод обладает рядом недостатков, которые целесообразно иметь в виду в процессе его применения. Недостатки таковы:

  • если нижний уровень разработок вносит какие-либо ограничения, которые в дальнейшем необходимо снять, то это потребует пересмотра модулей нижнего уровня;

  • изменения в верхнем уровне предусмотреть весьма сложно, поскольку облик проекта формируется постепенно по мере завершения верхнего уровня;

  • наличие нижнего уровня разработки не обеспечивает информацией о верхнем уровне, что может привести к смысловым, логическим и концептуальным ошибкам;

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

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

Практика применения указанных методов подсказывает необходимость применения способов ";с краев к середине"; или ";от середины к краям";. Они могут оказаться продуктивнее других методов. Также для методов снизу-вверх и сверху вниз имеется общая рекомендация:

  • решение частной проблемы целесообразнее всего реализуется методом сверху вниз;

  • решение класса проблем целесообразнее всего реализуется методом снизу-вверх;

Разработчик сориентируется сам по своему опыту или по своим традициям.

6.8. Заметка о методе пакетов прикладных программ

Методы ведения библиотек, рассмотренный в разд. 5.9, охватывает средства, из которых создаются ППП. Элементы ППП автоматически создаются при синтезе подпрограмм (см. разд. 5.10). Библиотеки информатики подразумевают создание и хранение БД и БЗ. БД - исходный материал для обработки, а БЗ - программы класса заданий или задач. Это новый элемент библиотеки.

Вопросы создания ППП исторически хорошо изучен. Достаточно познакомиться с литературой [Ершов82, Тамм77].

Время - это то, чего всегда не хватает, поэтому его экономят более всего.

6.9. Метод проектирования реального времени

Для программирования реального времени для встроенной в техническую систему ВМ имеются следующие трудности:

  • ограниченное время для выработки реакции системы на внешние воздействия,

  • ограничена память для хранения поступающих извне или внутри данных,

  • необходим метод управления потоками данных, которые могут быть не готовыми для обработки или которые ожидают скорую обработку,

  • необходим метод управления параллельными процессами, которые могут быть не готовыми для работы или которые ожидают скорый запуск,

  • необходима связь с внутренними или астрономическими часами и календарем,

  • необходим метод организации обмена данными между процессами или внешними устройствами,

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

Трудности объясняются наличием в технической системе большого числа устройств генерации данных и восприятия управляющих сигналов.

Обычно система имеет внутренние часы (процедура CLOCK), внешние часы и внутренний или внешний календарь (процедура CALENDAR). Время и часы позволяют точно распределять разнообразные и различные ресурсы ВМ и системы. Для точного управления временем необходим сторож, определяющий моменты начала или конца действий программ, и будильник, определяющий программируемые моменты времени.

Философия программирования реального времени согласуется с известными методами разрешения таких вопросов:

  • Сколько времени вам потребуется на выполнение этой работы?

  • Работа будет выполнена за приемлемое время.

  • А что такое приемлемое время? (ответчик вначале попадает в тупиковую ситуацию, спустя время -)

  • Решение задачи за приемлемое время означает отрезок времени, за который решение задачи будет получено, и это решение будет еще необходимым.

Этот диалог полностью характеризует метод программирования реального времени. Каждое исполнительное устройство технической системы некоторое время ожидает команду от ВМ. Программа реального времени считается хорошей, если ВМ вырабатывает команды (или данные) исполнительным устройствам за приемлемое время.

Реальное время каждого устройства ";запоминается"; в форме диаграммы, на которой отражаются все временные засечки по каждому устройству, каждого датчика и каждого приемника. Такие диаграммы служат исходными данными для построения управления процессами реального времени. Совокупность синтаксически и семантически поддержанных способов и приемов управления по времени процессами, инициирующих выполнение программ и подпрограмм, модулей или программных систем в соответствии с временной диаграммой - такова сущность метода управления, основанная на временных диаграммах.

6.9.1. Определение метода. Каждая ВМ работает либо в связке человек-ВМ, либо в связке объект-ВМ, либо в связке объект-человек-ВМ. В первом случае подразумевается стационарная работа, зависящая от желания и временных свойств человека, ответная реакция ВМ по времени на запрос человека должна удовлетворять свойствам человека воспринимать ответные реакции ВМ. Вопросы быстродействия системы в этом случае не часто беспокоят человека. Реальное время человека обычно обслуживается средствами ВМ удовлетворительно. Во втором случае работа ВМ зависит от частот поступления сигналов от объекта и частоты выдачи сигналов на объект. Быстро протекающие процессы, в которых «живет» объект, требуют от ВМ быстрых реакций, сравнимых по времени с выполнением каждой команды ВМ. В третьем случае мы имеем дело со смесью характеристик объекта, человека и ВМ. Скорее всего более критичные требования исходят от объекта, поэтому реальное время функционирования любой системы зависит от реальных характеристик объекта. В связи с реальным временем будем рассматривать главным образом системы второго сорта.

Существование объекта, обычно состоящего из многих агрегатов (устройств), связано с реальными процессами, проходящими вне объекта. Процессы вне объекта протекают в реальном времени. Объект будет успешно выполнять свои функции, если реакции его агрегатов на внешние воздействия будут своевременны. Эти условия выполнимы и для системы объект-ВМ, если взаимодействие ВМ с объектом реально удовлетворительны, т.е. ВМ подготавливает данные (команды) для объекта за время, которое еще допустимо для агрегатов объекта, чтобы он сформировал ответную реакцию на внешние воздействия. В таком случае можно говорить о программе ВМ, работающей в реальном времени, а процесс составления таких программ обычно называют программированием реального времени. На этом заканчивается подготовительная часть для определения метода программирования реального времени.

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

6.9.2. Характеристика реального времени. Важный исходный тезис состоит в следующем: каждая программа является моделью части реального мира (функционирующего агрегата или взаимодействующей с объектом среды). Даже абстрактная программа является моделью неизвестной части реального мира. Этот тезис служит маяком в оценке правильности программ реального времени. Жизнь устройств характеризуется временной диаграммой и алгоритмами переработки информации. Агрегаты, программы или ВМ живут в соответствии с временной диаграммой, которая указывает на моменты запросов или выдачи информации и диапазонами времени выполнения работы. Образы агрегатов на диаграмме представлены датчиками (или приемниками) информации. Алгоритмы реализованы в виде программ ВМ, работающей в своем временном режиме. Объект запрашивает управляющую информацию по своему режиму. Модель части реального мира будет правильной, если программа обеспечивает своевременные прием и выдачу информации, формируемой с помощью алгоритмов переработки принимаемых данных в выходные данные.

Номер устройства

1

-¦-------¦шшшшш¦--------¦шшш¦---------¦шшш-- объект

2

-|-----¦ШШШШ¦-------¦ШШШ¦--------¦ШШ¦------- датчик А

3

-|--------¦-----------¦ШШ¦-----------¦ШШШШ----- датчик В

4

|+++++++++++++++++++++++++++++++++++++++++++++++--> ВМ

5

-|-----+-----+-----+-----+-----+-----+-----+-----+--- реальное астрономическое время

Рис. 6.1. Временная диаграмма

Рис. 6.1. содержит временную диаграмму ";жизни"; системы ВМ-объект-управление-датчик.

Программа должна обеспечить функционирование ВМ в полном соответствии с временной диаграммой. ВМ, обеспечивающая управление объектом, называется встроенной ВМ (ВВМ). Управление объектом должно осуществляться за приемлемое время, когда результаты выполнения программ еще нужны для агрегатов объекта. Если ВВМ не обеспечивает обработку информации за приемлемое время, тогда пересматриваются алгоритмы, программы, способ управления программными модулями или быстродействие процессора ВМ.

6.9.2. Способы синхронизации процессов. Основная проблема программирования временных диаграмм состоит в выборе способов синхронизации программных модулей по времени, по данным и по управлению таким образом, чтобы обеспечить своевременные прием и выдачу информации.

Синхронизация по времени осуществляется:

  • задержкой на заданное время,

  • будильником,

  • сторожем,

  • сохранением последовательности выполнения программ с определенными временными характеристиками,

  • средствами рандеву двух и большего числа процессов,

  • использованием астрономического календаря.

Для реализации почти каждого средства управления предназначены служба внутреннего времени, использующая внутренние часы, служба внешнего времени, использующая внешние часы, будильник - использование операции задержки или календаря (таймера реального времени) для определения момента возможного продолжения работ, сторож - обнаружение момента времени в заданном временном интервале поступления внешнего для программы сигнала готовности данных или управления для продолжения работ данной программы.

Синхронизация по данным обычно осуществляется методом почтового ящика, методом семафоры с признаками наличия объекта или его готовности, с признаками выполнения программы-поставщика, сохранения последовательности выполнения программ, принимающих и выдающих данные, методы управления по времени, методами рандеву. Аналогично может осуществляться синхронизация по управлению в форме последовательности или параллельности выполнения, по приоритету, по прерыванию, или (опять) методом рандеву,

6.10.3. Технология планирования реального времени должна включать некоторые или все операции или процедуры:

1. Выявление характеристик агрегатов объекта.

2. Составление временной диаграммы поступления и выдачи данных, запуска программных модулей.

3. Планирование средств программирования реального времени.

4. Определение последовательностей выполнения программных модулей.

5. Обоснование порядка выполнения работ и установление соответствия порядка выполнения реальной жизни объекта.

6. Составление программ синхронизации данных, времени и управления.

7. Отладка синхронизации по данным, управлению и времени, комплексная отладка с объектом и корректировка данных, времени и управления.

Последовательность операций или процедур зависит от совокупности всех процессов, управление которыми задействовано.

Время - это то, чего всегда не хватает, потому что его экономят более всего.

6.11. Метод использования астрономического времени

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

6.11.1. Проблемы астрономического времени. Даты в жизни человека играют весьма важную роль. От рождения до смерти каждый из нас окружен датами. Часы на руках указывают часы, минуты, секунды и доли секунд, календарь напоминает нам о текущем дне: число, месяц, год и день недели. Такие данные мы называем астрономическим временем. Множество данных на часах именуется временем (time), а множество данных на календаре мы именуем датой (date). Значения времени и дат обрабатываются для сопоставления друг с другом, для прогнозирования состояния процесса, для выставления временных отметок и отслеживания моментов наступления событий и т.п. ВМ должна выполнять функции обработки таких значений для организации жизни программы в реальном астрономическом времени. Эта главная проблема распадается на многие частные проблемы. Среди них такие: как получить дату через заданное число часов, сколько содержится часов между двумя датами, какими будут показания часов через заданное время. Настоящий раздел посвящен рассмотрению методов разрешения подобных проблем.

6.11.2 Определение метода. Для разрешения подобных проблем выполнения функций на ВМ с данными времени и дат рассматриваются методы программирования астрономического времени. Содержание предыдущего раздела связано с ориентацией программ на временную жизнь некоторого объекта. Здесь мы не связаны с реальной жизнью объекта непосредственно, мы рассматриваем косвенную зависимость жизни объекта во времени, его точную или приближенную историю. Здесь не возникает критического временного режима. Однако нужно иметь в виду, что астрономическое время может использоваться при программировании реального времени. Более того, астрономическое время может определять некоторые режимы реального времени и присутствовать на временной диаграмме для программирования реального времени. Тесная связь двух разделов (программирование реального и астрономического времени) создает предпосылки для эффективного моделирования реальных процессов жизни объектов, управляемых от ВМ.

История объекта или группы объектов, исследование которых ведется в информатике в связи с множествами данных типа время и дата, привязывается к показаниям часов и календаря. Поэтому программирование истории требует наличия в ВМ внутренних часов и календаря, процедур сопоставления времени и дат, выполнения простых арифметических операций с такими данными, визуализации и использование итоговых данных. На можно закончить подготовительную часть для определения метода программирования астрономического времени.

Метод программирования астрономического времени - это совокупность синтаксически и семантически поддержанных способов и приемов автоматического поддержания часов и календаря, составления программ использования значений времени и дат и выполнения операций с такими данными. Данное определение является достаточно кратким и требует пояснений. Прежде всего, метод обслуживает большой класс «исторических» задач. История пишется в событиях, которые привязываются ко времени и дате. Современные ВМ имеют средства моделирования внутренних часов и календаря, которые требуют лишь начальной установки в процессе начальной загрузки и инициализации операционной системы всех версий. Проблема автоматизации поддержки часов и календаря снимается начальной инициализацией или коррекцией их состояний, если обнаруживается расхождение показаний реальных часов и календаря и их моделями в ВМ.

6.11.3. Характеристика астрономического времени. Указанный исходный тезис (каждая программа является моделью части реального мира) верен при рассмотрении астрономического времени. Множества данных на часах и календаре определяются типами время и дата. Структура данных этих множеств поясняется следующими описаниями. Время описывается следующей структурой, скрытой от внешнего вмешательства, кроме случаев начальной инициализации:

тип время = запись

час : 0..24;

минута : 0..59;

секунда: 0..59;

доля секунд : 0(0.02)0.99;

конец.

Календарь также описывается скрытой структурой:

тип дата = запись

день : 1..31;

месяц : 1..12;

год : 1901..2099;

конец.

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

Кроме часов и календаря имеется множество данных для определения продолжительности временного интервала в секундах и долях секунд в пределах суток. Такое множество описывается традиционно:

Программа и ее доказательство должны строиться одновременно с тенденцией опережающей разработки доказательства.

6.12. Метод контроля логической правильности знаний и запросов

Доказательство правильности программы является сложнейшей процедурой. Многие пытались построить инструментарий для реализации этой процедуры. Проверка программ вручную не дает требуемого эффекта из-за слабой надежности процессов проверки. Однако практически полезных результатов конструирования инструментария чрезвычайно мало. Это объясняется сложностью представления алгоритмического знания и необходимостью проверки правильности программ инструментария. Алгоритмическое знание кодирует смысл знания так, что его раскрытие подчас становится вообще невозможным. В такой ситуации следует поступать так. Каждую программу целесообразнее строить автоматически по спецификации, которая кодирует смысл знания не так «глубоко». Аналогичная ситуация уже возникала. Еще на ранней стадии программирования использовалась кодовая запись программ. Их проверка совсем не поддавалась автоматизации. Формирование языков программирования и реализация соответствующих трансляторов исключило проверку правильности кодовых программ - результатов трансляции. Следовательно, доказательство правильности программ должно разрешаться с помощью средств автоматизации построения программ, которое связано с методами синтеза программ. Эта проблема разрешима и имеет практический выход.

Проблему синтеза программ рассмотрена в общих чертах (см. 5.10) по знаниям, представленных на ЯПП с автоматической проверкой спецификации знаний и запросов на решение задач, разрешение проблем и поиска ответов на вопросы. Причем проверка знаний предшествует автоматическому построению программ. Реализация такого плана исключает проверку правильности программ. Однако реальные условия предполагают построение программ и в кодах, и с помощью языков программирования. Поэтому проблема установления правильности программ актуальна, мы рассмотрим в настоящем разделе ее, но достаточно кратко и частично. При этом не рассматривается проблема создания инструментария автоматического доказательства правильности программ. Проблема синтеза программ будет еще рассмотрена в томе 7.

Логика программ определяется как система применения объектов, операций и управления в программе и соответствие ее реальным знаниям, которые заложены в программу. Именно соответствие составляет основу контроля логической правильности программ. Распространение метода контроля логической правильности программ на любые предметы (как того требует информатика) является сложным делом из-за большого разнообразия самих предметов. Реальная проверка правильности предметов осуществляется как практическим их использованием, так и с помощью подходящего инструментария.

Метод контроля логической правильности программ включает способы установления правильности записи и применения объектов, операций и управления в программе. Метод предназначен для автоматизации процесса поиска ошибок в записях программ и основан на приемах синтаксического, семантического, тестового, прагматического, логического, алгоритмического и системного контроля правильности использования исходных посылок программирования, процессов написания программ и применения конструкций языка программирования.

Синтаксический контроль выполняется автоматически в процессе трансляции, при грамматическом разборе текстов (по графу языка). Эта процедура имеется в каждом трансляторе и выполняется автоматически. Имеется проблема автоматизации «исправления» синтаксических ошибок. Абсолютного алгоритма исправления синтаксических ошибок не существует, поскольку ошибочных записей по количеству континуум, а правильных записей счетное число. Слово исправление поставлено в кавычках в силу того, что оно может быть фиктивным. В процессе автоматического исправления могут исключиться последовательности символов, которые значимы для программы. Отсюда последствия - появление порожденных ошибок, отсутствующих в исходном тексте.

Семантический контроль выполняется автоматически транслятором, алгоритмами формирования выходной последовательности символов. Смысл семантического контроля состоит в проверке:

- контекстных условий описания и применения всех объектов и операций;

- проверке области действия объектов и операций;

- выполнении условий совмещения имен по локальному контексту;

- правильности использования операций на данными операндами;

- контроле точности вычислений по заданной точности данных и операций;

- контроле области значений объектов, заданной при их описании.

Тестовый контроль выполняется также автоматически в процессе выполнения программы со специально подобранными исходными данными, возможно не совсем реальными. Общие свойства алгоритма известны до написания программы (иначе не создать текст программы), следовательно, можно выбрать такие исходные данные, результат переработки которых известен. Запуск программы с выбранными исходными данными должен привести к известному результату. Анализ запуска программы покажет общие свойства алгоритма, представленного программой. Кроме этого, тестовый контроль может использоваться для подтверждения правильности программы в процессах передачи программы в эксплуатацию.

Прагматический контроль выполняется автоматически, автоматизируемо или вручную путем динамического или статического просмотра текста программы. Сущность его состоит в исследовании правильности выполнения ограничительных правил применения языка программирования или его отдельных конструкций. Ограничительные правила могут касаться прежде всего количественных соотношений для текстового выражения значений данных, объектов, операций или управления. Например, длина строки не должна превосходить числа 256, количество переменных не должно превосходить числа 512, рекурсия операции не должна быть глубже уровня 128, а число вложенных составных операторов не должно превосходить 64.

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

Алгоритмический контроль устанавливает правильность построения алгоритма и соответствия его физической сущности, решаемой задаче, разрешаемой проблеме или поставленному вопросу.

Системный контроль относится к проверке правильности вложения программы в систему ее выполнения. Этот вид контроля осуществляется автоматически самой системой (средой) выполнения программы либо в процессе ввода программы или данных, либо в процессе ее выполнения, либо после завершения выполнения программы.

На этом завершается рассмотрение проблем разработки проектов программ и знаний. Далеко не все методы представлены в этой главе. Частично такой подход оправдан наличием большого списка литературы по разработке программ. Копирование каких-либо публикаций не может достоверно отобразить содержание того или иного метода разработки. Кроме этого, методы разработки знаний во многом согласуются с методами разработки программ. Часто в описании метода разработки программ можно сделать замену слова ";программа"; на слово ";знание";, в результате получится описание метода разработки знаний.

Глава 7. Методы, поддерживающие сопровождение

Любой объект требует сопровождения для поддержания работоспособности до завершения его жизненного цикла.

Проблема сопровождения программ и знаний (в материальном производстве - сопровождение продукта) возникла при создании больших и сверхбольших программ и в связи с большими затратами на исправление ошибок в программах на этапе их сопровождения (во время эксплуатации). Затраты на сопровождение программ возросли за последнее десятилетие до 50% общих затрат на программное обеспечение. Это обстоятельство определило пристальное внимание к проблеме сопровождения программ, если интересоваться проблемами сопровождения знаний, баз данных и знаний, запросов на решение заданий. Накопленная методика сопровождения программ почти полностью должна восприниматься и переноситься на методы сопровождения знаний.

Сопровождение - это процессы исправления ошибок, внесения изменений и улучшений в программе (знаниях) и документации, адаптации и настройки программ (и знаний) на конкретное применение, создания рекламы и организация маркетинга, ведения документации, внедрения, тиражирования и поставки программ и БЗ пользователям. Сопровождение предполагает определенную совокупность методов, упорядочивающих деятельность исполнителей и сокращающих сроки и издержки процесса. Область знаний, теперь именуемая сопровождением, считается молодой. Тем не менее накоплен богатый арсенал методов, который частично раскрывается в этой главе.

Основной принцип, который извлекается из работы с методами сопровождения программ и знаний, состоит в реализации всех работ по изобретанию, проектированию и разработке предмета (явления или процесса) без переноса части работ на этап сопровождения. Например, отсутствие проекта предмета (чем характерно почти все программирование) приводит к тому, что на этапе сопровождения приходится возвращаться к проектированию по более высокой цене. Обнаружение и исправление ошибки разработки на этапе сопровождения по цене выше соответствующей работы на этапе разработки в 200 и более раз. Принцип раннего выполнения работ гарантирует сокращение общих затрат на создание любого предмета. В этом разрезе проектирование задания или БЗ вместе с автоматическим синтезом программ предполагает самое раннее обнаружение ошибок, а исправление обнаруженных на этапе сопровождения ошибок намного дешевле, когда исправление реализуется на уровне задания.

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

Методы сопровождения должны обеспечить раннее обнаружение неисправностей предмета, следовательно, они должны применяться еще на этапе изобретания, проектирования и разработки. Однако их применение практически всегда запаздывает, поэтому они излагаются в данной части.

Заведомо определяйте для каждой новой

переменной подходящий диапазон изменений.

7.1. Методы контроля

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

1. Наблюдение за процессами обработки данных и знаний должен быть разнообразным и всесторонним.

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

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

4. Важен статистический контроль за параметрами функционирования и получаемыми данными.

5. Важным является логический контроль и самоконтроль в программе и знаниях. Такой контроль должен быть автоматическим.

6. Важны программы, обеспечивающие контроль и автоматическое внесение изменений.

7. Совокупность всех применяемых методов обеспечивают системный контроль.

Дан краткий обзор требований и методов контроля, который для знаний вытекает из естественным образом из понятия экологии знаний (см. том 7).

Программа - это модель части реального мира,

а реальный мир находится в постоянном развития.

7.2. Метод развивающегося программирования

Указанный метод работает чаще всего на этапе перехода изделия от прототипа до коммерческого состояния, можно сказать об этапе самосопровождения. Этот этап поддерживается более всего, поскольку возникает ответственность за созданное изделие.

Любое произведение создается либо «на одном дыхании» по вдохновению, либо «по расчету» в соответствии с методическими правилами конструирования. При создании программ первый прием может применяться для небольших (учебных) программ или при построении прототипа, второй же прием является наиболее распространенным. В процессе сопровождения программ (как и любого предмета) возникает необходимость развития ее функций путем улучшения или расширения. Выполнение подобных запросов связано с организацией особого подхода при конструировании программ, который обеспечил бы процесс развития структуры программы. Мы рассмотрим только один метод, учитывающий продуктивное сопровождение программы. Ведущим методом является метод пошаговой разработки, который может относиться к подборке методов разработки и к методам сопровождения. Поскольку метод занимает пограничное место, мы относим его к подборке методов сопровождения в силу эффективной его работы на развитие программы, необходимость которого возникает на этапе сопровождения. В соответствии с представленным выше принципом метод пошаговой разработки практически целесообразно использовать и на этапе разработки.

Метод пошаговой разработки программ определяется как поддержанный формальными средствами способы, обеспечивающие расширение функций или возможностей программы за счет включения в нее новых операций или модулей без изменения имеющихся структуры и модулей. Метод базируется на применении заведомо заготовленных «пустых мест», заглушек и комментариев. Метод эффективен при его использовании на всех этапах создания программы, его подключение только на этапе сопровождения может привести к излишним затратам времени и средств.

Пошаговая разработка применяется в следующих основных случаях:

  • часть функций программы неизвестна к моменту ее разработки;

  • функции программы известны приблизительно, они уточняются при эксплуатации программы;

  • трудовые ресурсы к моменту разработки программы малы, а сроки ее разработки сокращены;

  • сроки разработки сокращены при достаточных трудовых ресурсах;

  • для оценки проекта работ в целом необходимо создать только прототип программы, в зависимости от свойств прототипа принимается решение о создании рабочей или коммерческой программы;

  • вначале создается модель программы, лишь после пробной эксплуатации создается промышленный продукт.

Перечисленные подходы реальны (перечень не полон), они предполагают непрерывное развивающееся программирование - создание программы по шагам с последовательным увеличением числа реализуемых функций или отдельных операций. Подходы не исключают и простую замену одних функций другими, одних операций другими операциями.

В программировании (это обычно предусматривается в ФЯ) имеются способы, обеспечивающие развитие программы. Мы укажем лишь на три. Первый состоит в применении пустых операторов, вместо которых в последствии будут помещены работающие операторы. Второй - в использовании «пустых» модулей, модулей без операторов (заглушек), вместо которых будут помещены последовательности операторов, реализующих новые или дополнительные функции или операции. Третий - в использовании комментариев, понятных разработчику и указывающих функцию, которая будет реализована вместо комментария. Указанные три способа обычно комбинируются и переплетаются друг с другом. Использование каждого способа должно соответствовать формальным требованиям и не препятствовать эксплуатации реализованных функций и операций. Причем реализация новых функций и операций может вновь применять указанные способы для возможного дальнейшего развития программы. Процесс пошагового развития рекурсивен и не исключает приемов замены одних функций и операций другими.

Метод развивающегося программирования не исключает применения метода пошаговой разработки, эффективного на этапе разработки программ и знаний. Первый метод характерен своей локальностью, второй - глобальностью подхода к созданию нового предмета. Локальность и глобальность подразумевает рассмотрение фрагментов или всего предмета. Использование слова «пошаговый» связано с повременными процессами создания предмета (к данному моменту выполнен шаг создания программы, которая является рабочей, но не по полному объему выполняемых функций).

Конечно, с методом развивающегося программирования связаны определенные предостережения от возможных ошибок. Некоторые из предостережений перечислены ниже.

Выполнение доработок программы может оказаться сложным делом из-за необходимости восстановления в памяти разработчика всех тонкостей программы. Это обстоятельство должно учитываться в процессе пошаговой доработки. Любой способ развития программы не должен требовать изменения уже реализованных и работающих функций и операций. Использование пустых операторов с такой точки зрения порождает сложности несколько большие по сравнению с использованием заглушек или комментариев, которые обладают свойствами глобальности и независимости от работающих функций или операций.

Пошаговая разработка перекликается с повторной разработкой и естественным образом «заимствует» недостатки риюза (см. глава 3). Способы устранения недостатков пошаговой разработки аналогичны способам устранения их в риюзе. Главное предостережение в данном случае состоит в том, чтобы любой шаг развития программы предусматривал такие предполагаемые изменения, которые не вызывали бы изменения готовых работающих частей.

Пошаговая разработка может породить привычку откладывания части функций «на потом», что противоречит принципу раннего выполнения работ. Отлаженное программирование чревато увеличением сроков и затрат разработки или сопровождения. Решение проблемы планирования работ должно предусматривать такую возможность, а точнее сказать, должно предусматривать исключение таких возможностей. Плохая привычка откладывания «на потом» порождает процесс недоработанности изделия.

И последнее. Пошаговая разработка может предполагать, что последнего шага не будет до момента естественного старения программы, замены ее принципиально новой программой или завершения ее эксплуатации. В этом смысле знания обладают отличительными свойствами - знание старее значительно медленнее. С одной стороны такой взгляд на программу является естественным, но с другой стороны использование такого взгляда может уменьшить общее число пользователей из-за непрерывного порождения версий программы, что уменьшает у пользователя степень доверия к продукту.

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

7.3. Методы обеспечения надежности процессов сопровождения

Правильная программа используется без постороннего вмешательства, она называется отторгаемой. Большие программные комплексы требуют вмешательства сопроводителей. Образный пример: гайка может использоваться многократно самим пользователем, но использование автомобиля требует вмешательства станции технического обслуживания при обнаружении неисправностей. Ситуация с эксплуатацией больших программ аналогична - при обнаружении ошибок функционирования (поломок программы) необходимо вмешательства сопроводителя программы. Обеспечение надежности процесса сопровождения состоит в обнаружении, локализации и исправлении ошибок, которые проявляются в программах. Практика сопровождения программ выработала некоторые методы обеспечения надежности процесса сопровождения.

Методы обеспечения надежности процесса сопровождения - это совокупность языковых (синтаксических, семантических и прагматических) и алгоритмических способов и приемов написания программы, обеспечивающих раннее обнаружение, локализацию, идентификацию и исправление ошибок в программе, а также наглядность и читаемость текстов программы для быстрой и безошибочной модификации с целью устранения ошибок или улучшения характеристик программы. Главное требование методов состоит в том, чтобы обеспечить эффективное сопровождение еще в процессе разработки программы соответствующими средствами. Именно они должны способствовать минимизации случайного появления и раннему обнаружению ошибок. Процесс создания программы должен быть таким, чтобы случайно вносимые ошибки в текстах обнаруживались как можно раньше и автоматически. Наиболее важным средством обеспечения надежности процесса создания программы является технология, использующая максимальное число формальных или формализованных методов программирования. Излагаемые концептуально в книге методы служат хорошей иллюстрацией организации надежного программирования.

Рассмотрим совокупность способов и приемов обеспечения надежности процесса создания программы (с некоторыми трудностями они распространяются на процессы создания любого предмета).

1. Просмотровая проверка программы или знаний (как пакета логических программ) обеспечивает повышения уровня надежности путем установления правильности алгоритмического использования конструкций языка написания и выполняемых программой функций, задаваемых при ее проектировании. Проверка может осуществляться вручную или автоматизированными приемами, и она является по существу реализацией повторного программирования без повторного написания текстов программы. Проверка может быть многократной в зависимости от меры ответственности проверяемой программы за правильность функционирования системы, использующей программу. Критическая оценка программы - важный прием обеспечения надежности любого процесса.

2. Отладка программы - необходимый процесс поиска и устранения ошибок в текстах программы. Статическая отладка подразумевает применение методов поиска (и устранения, если это возможно) без запуска программы на выполнение, динамическая отладка - использование процессов выполнения программы. Процесс отладки применяется главным образом на этапе разработки, но в силу необходимости применяется и на этапе сопровождения. Именно пробная или рабочая эксплуатация программы выявляет новые и более тонкие ошибки. В связи с этим отладка программы при сопровождении программы является наиболее актуальной. Отладка программы при сопровождении необходима также из-за внесения улучшений и развития программы.

3. Тестирование программы - процесс выполнения программы на контрольных (заведомо известных) исходных данных (с заведомо известными результатами) для проверки правильности (сохранности) ее функционирования. Тестирование программы - аппарат подтверждения надежности процессов программирования, он является наиболее изученным и чаще других методов используется на практике. Поэтому методы тестирования известны более всего в программистской литературе [].

4. Испытание программы - это совокупность мероприятий по определению пригодности программы для эксплуатации, это рабочий аппарат компетентных органов, обеспечивающих подтверждение правильности разработки. Испытание программы обычно проводится на всех этапах и при реализации многих методов.

5. Аттестация программы - подтверждение надежности программы авторитетными органами - также важный прием обеспечения надежности любых процессов, он поддерживает разработчика на высоком уровне ответственности, указывает заказчику на необходимость более тонкой оценки свойств программы. Авторитетные органы - специально назначаемая комиссия, использующая предписанную программу испытаний.

6. Анализ программы и результатов ее работы - совокупность логических и вычислительных методов обработки данных, текстов программ и результатов ее работы с целью получения общих или конкретных характеристик функций, заложенных в программу, или с целью получения характеристик используемых программой вычислительных ресурсов времени, памяти и средств общения человека с технической системой при функционировании программы.

7. Демонстрация программы - процедура показа некоторых возможностей программы заказчику, экзаменатору, менеджеру или пользователю. Рекламирование программы может повысить уровень надежности процесса ее сопровождения, поскольку могут при демонстрации возникнуть новые запросы на изменение программы или критические замечания по выполнению отдельных функций.

Методы обеспечения надежности программирования зарождаются при критическом отношении к процессу создания предмета. Программирование должно быть защитным. Это приводит к необходимости поддержания некоторых нелицеприятных принципов. Среди них отметим такие:

- необходимо иметь общее недоверие к создаваемому предмету (или тексту программы);

- раннее обнаружение ошибок является необходимым условием обеспечения надежности, хотя в этом заинтересован каждый разработчик, но создание условий раннего обнаружения является весьма сложным делом;

- необходимо добиваться наилучшего изолирования ошибок и предполагать места их появления;

- необходимо помнить, назначение предмета (учебный, показательный или производственный вариант, требующий высокой надежности).

Поскольку сопровождение программы связано в частности с поиском ошибок, целесообразно перечислить некоторые методы, используемые для обнаружения и идентификации ошибок.

7.4. Методы повышения эффективности труда программистов и знаниеведов

Человеческий фактор становится все важнее и ответственнее. О роли человеческого фактора прекрасно изложено в работе [Ершов72а]. О человеческом факторе сказано также в разд. 4.22. Человеческий фактор стал проявляться при работе человека в сложных системах (летная работа или работа с информационными технологиями). Кроме этого следует выделить разделы, по которым сказывается человеческий фактор:

  • Языковые средства общения людей и в системе человек-ВМ. Интерфейс всегда сказывался на эффективности работ как человека, так и программы.

  • Концептуальный подход к формулировки задания, метода решения и анализа результатов.

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

  • Теоретическая подготовка исполнителя.

  • Знание методов программирования и записи знаний, в том числе и логического, и интеллектуального.

Этот перечень не полон. Изучением человеческого фактора должна заниматься специальная наука, например с названием человекология или человекознание. Многие проблемы и задачи человеческого фактора разрешила дисциплина эргономика, которая ориентируется на создание удобства человека. Ясно, что удобства обеспечивают надежность действий человека. Но ведь человеческий фактор проявляется не только в надежности его действий, и не только удобство обеспечивает требуемую надежность. Человеческий фактор может определять успех человека с меньшей надежностью. Эргономика не покрывает задач человеческого фактора, необходима новая наука с названием человекология или человекознание.

Каждая программа имеет по крайней мере одну ошибку, а запись знания - одну лишнюю строчку.

7.5. Методы обеспечения надежности программ

Программа и знания следует считать надежными, если в них не содержится ошибок. Всегда имеется некоторая вероятность наличия ошибок. Поэтому работа с ошибками должна быть формализована. Работа с ошибками включает следующие операции:

  1. Изучение источников ошибок. Это сложная отрасль деятельности человека. Здесь формализм достаточно слабый.

  2. Обнаружение ошибок. По результатам прогона программ можно достаточно точно определить факт наличия ошибки.

  3. Идентификация ошибок. Обычно существуют многие классы ошибок. Задача отнесения ошибки к классу является достаточно сложной.

  4. Локализация ошибок. Работа с текстами при обнаружении ошибки должна привести к месту ее появления.

  5. Определение метода устранения ошибок. Чаще устранения ошибки является легким делом, но не всегда. Ошибка может привести к замене одного задания на другое.

  6. Исправление текстов. Само действие исправления требует новых проверок текстов на правильность исправления.

  7. Изучение последствий исправления текстов. Это сложная теоретическая задача, игнорирования которой может приводить к повторным появлением одних и тех же ошибок.

Важно рассмотреть вопросы чуть шире, чтобы охватить всю область интересов в связи с программами и знаниями. Вот, как кажется, полный перечень проблем контроля этих объектов:

  1. понаблюдать - создать впечатление о правильности работы частей и всей программы (внешний контроль).

  2. определить, понимаем ли язык данных на входе и правилен ли язык данных на выходе (внутренний контроль).

  3. обеспечивается ли концептуальное единство программа, ее структура, поведение и др. (";общефилософский контроль"; - условно так можно называть).

  4. какова статистика всех характеристик программы и ложатся ли ее вероятностные моменты в заданные рамки (вероятностный контроль).

  5. известны выходные ";коды"; при подаче входных ";кодов";, реальный прогон входов дает ли совпадение с эталонами выхода (тестовый контроль).

  6. выполняет ли заданные функции программа по регламенту (функциональный контроль).

  7. согласуется ли поведение программы в среде обитания (системный или
    общесистемный контроль).

Здесь перечислены технические средства обнаружения ошибок.

Не раз уже рассматривались 13 классов ошибок. Ряд практических рекомендаций могут помочь разработчикам знаний, программ и данных. Ниже перечислены не все рекомендации, поскольку они иногда могут иметь зависимость от вида работ и быть свойственны только этому виду работ.

  • Используйте скобочные структуры, обеспечивающие самоконтроль текстов.

  • Используйте окраски фрагментов или слов на экране дисплея.

  • Вводите избыточность в текстах для обеспечения наглядности.

  • Обязательно определяйте понятия полностью, необходимо сообщать все, что известно о нем.

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

  • Старайтесь выполнить требования семантики языка.

  • Вводите имена для каждого значения.

  • Имена понятий выбирайте естественные или легко идентифицируемые.

  • Вводите содержательные имена.

  • Определяйте для каждой новой величины подходящий диапазон изменений.

  • Члените записи знаний и программ на модули размером не более страницы.

  • Осуществляйте автоматический контроль количественных ограничений.

  • Минимизируйте число совмещения имен.

  • Используйте расширенные имена понятий.

  • Используйте контролируемые точности величин для обеспечения сходимости процессов и простоты вычислений.

  • Рисуйте и используйте временные диаграммы.

  • Уменьшайте размерности математических объектов.

  • Внедряйте принцип «Программа - модель части реального мира».

  • Изучайте предметную область программы и сопоставляйте ее с заданной.

  • Изучайте проблемную область программы и сопоставляйте ее с заданной.

  • Максимально применяйте структуры данных.

  • Максимально применяйте структуры управления и исключайте goto.

  • Уменьшайте перебор вариантов.

  • Формализуйте требования к разработке.

  • Делайте полный учет конфигурации системы.

  • Обязательно создавайте проект знаний и программы.

  • Обязательно создавайте документацию о всей работе проекта и его реализации.

  • Обязательно создавайте документацию о всем процессе проектирования.

  • Используйте сокрытие информации.

  • Ведете статистики всякой работы и всяких объектов.

  • Ведите управление разработкой.

  • Как можно полнее используйте методы создания знаний и программ.

  • Анализируйте результаты работы знаний и программы в экстремальных условиях.

Несмотря на неполноту рекомендаций их число велико. Попробуйте пополнить список и подразделить его на кластеры или классифицировать.

Каждая программа имеет по крайней мере одну лишнюю команду.

Программистская мудрость

7.6. Методы обеспечения эффективности программ

Методы обеспечения эффективности программ (МОЭП) - совокупность синтаксических и семантических средств и способов их применения, обеспечивающие максимальное использование выделенных ресурсов ВМ и оптимальное планирование вычислений путем интенсивного применения большей части операций ВМ, уменьшение интерпретаций операций задач, рационального расхода памяти ВМ, устранение повторяющихся вычислений и применение методов оптимизации программ и знаний. Требование эффективности вслед за надежностью программ важно в случаях больших по времени вычислений и при использовании программ в режимах реального времени.

Часто проблема эффективности возникает при наличии противоречия требований заказчика и возможностью реализации этих требований. Разрешение противоречия возможно при следующих обстоятельствах: выбор оптимальных алгоритмов, принятие компромиссных решений при согласовании требований и условий реализации, рациональное управление эффективностью. Эффективность снижается в основном при включении подпрограмм, интерпретирующих операцию, которая отсутствует в ВМ и имеется в задании. Для многих случаев повышения эффективности имеются способы управления эффективностью или лучше сказать - обеспечение управляемости эффективности. Некоторые способы рассматриваются ниже.

Согласуйте средства с целью и возможностями.

7.7. Метод сопряжения языков высокого и низкого уровней

Названный метод - это синтаксически и семантически поддержанный способ включения подпрограмм, написанных на языке ассемблера или в кодах ВМ и обеспечивающих сопряжение их в единую программу и ее частями, написанными на языке высокого уровня, путем указания свойств записей подпрограмм. Метод сопряжения обеспечивает также доступ к ресурсам ВМ. Проблемы сопряжения касаются и представлений знания. Среди записей элементов знания могут включаться подпрограммы, выполненных на различных языках. В ЯПП имеются средства подключения таких подпрограмм. Более того, обычные знания можно сопрягать с алгоритмами и программами с помощью операций катенации алгоритмов (;^ или .^). Вообще же, сопряжение необходимо для:

  • использования накопленных библиотек подпрограмм,

  • использование эффективности отлаженных подпрограмм,

  • проведение моделирования операций машинными кодами.

В ЯПП имеются атрибуты, которые обеспечивают с одной стороны доступ к ресурсам ВМ, с другой стороны - делают знания машинно-независимыми. Об этом чуть-чуть подробнее написано далее. Здесь важно отметить, что эффективное сопряжение языков любого уровня возможно как в программах, так и в знаниях.

Все мы от чего-либо зависим, даже если провозглашаем независимость.

7.8. Методы обеспечения машинной зависимости и независимости

Методы обеспечения машинной зависимости и независимости - это совокупность формализованных способов использования технических, прагматических и логических характеристик ВМ для учета их в знаниях, алгоритмах и программах с целью повышения производительности рабочей программы (если в этом имеется необходимость). В большинстве случаев прямой пользователь предпочитает не использовать какую-либо зависимость. Такое предпочтение допустимо почти во всех случаях, кроме случая использования встроенных ВМ реального времени, когда память и процессорное время ограничены. Следует отметить, что прагматическая зависимость всегда или почти всегда присутствует. Машинная зависимость эффективно используется программистами (профессиональная гордость) в особенности для встроенных в техническую систему ВМ. Машинная зависимость программ чаще всего существует всегда, возможно даже от конкретного экземпляра ВМ. Знания чаще всего являются машинно-независимые.

7.8.1. Метод машинной зависимости. ВМ состоит из процессора, памяти и линий связи. Каждая компонента ВМ имеет ограничения по размерам памяти, скорости обработки или передачи информации, составу логических или математических операций и др. Зависимость программы проявляется при использовании в ней физических адресов памяти, представлений данных, при реализации в программе временных диаграмм реального времени и при оценке точности вычислений с вещественными числами. Решаемые на ВМ задачи чаще всего требуют значительно больших ресурсов, которыми хотелось бы распорядиться. Это одна стороны вопросов, возникающих при реализации программ на ВМ. Другая стороны вопросов возникает при использовании характеристик ВМ для улучшения свойств программы по памяти, быстродействию, способам представления данных или состояниям устройств.

Для некоторых языков программирования характерно сохранение машинной зависимости, программы на этих языках становятся непереносимыми. Некоторые языки учитывают машинную зависимость (например, язык Ада) так, чтобы программа оставалась переносимой на другие ВМ. Хорошим примером учета машинной зависимости является сопряжение языка программирования с языком ассемблера, тогда зависимость становится контролируемой.

Другой (диалектический) способ учета машинной зависимости предусматривает полный доступ к характеристикам ВМ и обеспечение переносимости программ с одной ВМ на другую. Для этого можно использовать атрибуты характеристик ВМ и программных объектов. Значение атрибутов могут осуществить управление в программе в зависимости от значений характеристик.

Для этих же целей можно использовать аппарат подтипов данных, которые зависят от характеристик ВМ. Например, числа с фиксированной или плавающей запятой могут назначаться в соответствии с характеристиками ВМ.

7.8.2. Машинная независимость. Наиболее благоприятным является машинная независимость, обеспечивающая легкую переносимость программ и знаний. Знания, как тексты на ЯПП, всегда зависят только от СеГ и являются переносимыми. Главное и обычное требование к представлениям данных, знаний и программ состоит именно в обеспечении независимости от характеристик ВМ. Только программы исследования характеристик ВМ должны существенно зависеть них самих. Конечно, машинная зависимость проникла всюду. Например, целые числа должны находиться в диапазоне от -32 К до 32 К. Такими зависимостями можно пользоваться, если они не покажутся обременительными. Всегда имеются целые числа, принадлежащие значительно большему диапазону. Таких примеров можно указать множество.

Самый лучший метод сокрытия - полная публикация сделанного.

7.9. Методы сокрытия данных, операций и управления

Три стороны сокрытия данных, управления и операций можно обнаружить в методологии программирования. Первая сторона связана с засекречиванием, обеспечением приватности, защиты от несанкционированного доступа и т.п. Вторая - с обеспечением надежности передачи информации по каналам связи. Третья - с обеспечением эффективного и производительного труда создателя документации или программ. Первая сторона в доступных пределах опубликована достаточно широко [Анин00]. Секретность документов, передаваемых через ВМ, важная часть работ в информатике. Второй стороной занимается кибернетика, использование методов передачи информации по каналам связи в информатике важно в практической работе над программными системами. Третьей стороне мы уделим место в данном параграфе с позиции нового взгляда на информатику.

Разработка данных, управления или операций должна проводиться в условиях полного доступа к сведениям, обеспечивающих эффект и производительность разработки. Однако, наступает момент завершения разработки конкретных данных, управления или операций, тогда мы приступаем к разработкам других объектов, а разработанные объекты будут ";мешать"; новой разработке. Здесь можно усмотреть некоторый общий принцип: каждая разработка должна иметь полный доступ только к необходимым сведениям в данный момент, прочие сведения должны быть сокрытыми. Выполнение принципа обеспечить ожидаемый эффект и производительность.

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

Методы сокрытия данных, управления или операций (МСДУО) основаны на использовании способов абстрагирования и учитываются современными языками программирования высокого уровня так, чтобы обеспечить сокрытие информации на всех этапах процесса создания программы. К методам и методикам относятся, например, следующие приемы:

  • Использование модулей как средства сокрытия данных, операций и частично управления.

  • Использование рекурсивности данных и модулей как сродства сокрытия управления.

  • Использование обозначений констант обеспечивает скрытие данных.

  • Использование формул как средство скрытия промежуточных значений.

  • Использование подпрограмм работает на скрытие как и модуль.

  • Использование локальных переменных в блоках как средство скрытия величин ";друг от друга";.

  • Не использование или борьба с GOTO как средство скрытия управления.

  • Использование пакетов подпрограмм как средство скрытия ";процессора"; от внешнего влияния.

  • Использование функции как средство скрытия передач управления.

  • Использование меню как средства скрытия синтаксиса входного языка.

  • Использование пиктограмм как средства скрытия управления и адресов подпрограмм.

  • Использование синонимов скрывает ";неудобные"; имена.

  • Использование правила вывода концентрирует знания в сжатой форме.

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

7.10. Методы обеспечения читаемости программ текстов

Считается последним достижением - применение стандартов ИСО 9000 версии 2000 года. В них можно найти требования к документации различного технического назначения и требования к их оформлению для обеспечения высокого качества программной продукции:

  • ИСО 9000:2000 ⌠Система менеджмента качества. Основные принципы и словарь■;

  • ИСО 9001:2000 ⌠Система менеджмента качества. Требования■ (устанавливает минимально необходимый набор требований к системам качества и применяется для целей сертификации и аудита);

  • ИСО 9004:2000 ⌠Система менеджмента качества. Руководящие указания по улучшению качества■ (содержит методические указания по созданию систем менеджмента качества, которые ориентированы на высокую эффективность деятельности предприятий);

  • ИСО 19011:2000 ⌠Руководящие указания по проверке системы менеджмента качества и охраны окружающей среды■;

  • ИСО 10012 Обеспечение качества измерительного оборудования.

В отличие от художественной литературы, которая предназначена для общего применения, технические пособия и руководства, а в особенности тексты программ, предназначены для узкого круга специалистов. Поэтому общие требования к способам оформления художественной и научно-технической литературы различны. Тексты программ должны способствовать пониманию алгоритмов для их усовершенствования и эффективного поиска, локализации и исправления ошибок. Можно так суммировать большую часть требований к методам обеспечения читаемости программ (МОЧП).

Некоторые приемы МОЧП перечислены ниже:

  • Идентификаторы выбираются максимально приближенными к словам ЕЯ так же, как термины обеспечивают прямую связь со словами ЕЯ.

  • Легкое вычленение синтаксических, семантических и прагматических конструкций, смысла и ограничений.

  • Правильная расстановка знаков пунктуации ЕЯ или используемого ФЯ.

  • Рациональная расстановка комментариев для читателя.

  • Ведение и сохранение общего единообразного стиля записей.

  • Условное или явное вживление отладочных средств.

  • Применение локальных средств документирования.

  • Полное согласование руководств и текстов программ.

  • Наглядность с использованием рисунков.

  • Смысл должен выявляться по короткому контексту.

  • Каждые идентификатор или термин должны определяться явно.

  • Использование вариантов с оговорками.

  • Логическая обоснованность.

  • Простое раскрытие действий алгоритма.

  • Систематичность в применении способов и приемов.

МОЧП - это совокупность приемов выполнения записей программ и знаний, способствующая передачи первоначальных идей и замыслов, проекта и алгоритма, процесса разработки, упрощению восприятия текстов специалистом, возможной модификации алгоритмов, программ и знаний, поиску и исправлению ошибок.

Общие рекомендации в обеспечение МОЧП:

  • структурированность данных и записей,

  • наглядность записей и использование рисунков,

  • сохранение размера блока (процедуры, функции и модуля) на странице,

  • использование уступов в записи текстов,

  • обеспечение наглядности в скобочном соответствии,

  • использование и применение приоритетности частей текстов,

  • использование вложенности фрагментов текста,

  • обеспечение близости к ЕЯ.

Многие требования и рекомендации выполняются при использование ЯПП как части ЕЯ: вводных слов, эмоциональных выражений, неопределенных слов и терминов, чрезвычайно сложных предложений, все это можно применять в комментариях, не отражающих знания.

Документирование должно предшествовать написанию алгоритмов и знаний.

Мудрость создателя объектов

Говорите на уровне слушателя.

7.11. Методы обеспечения программдокументами

БД, БЗ, Интеллсист и программы, написанные на ЯПП или языке высокого уровня, как часто считают, документируются полностью, поскольку использованы естественные обозначения величин, чисел и операций. Действительно, чтение и понимание программ (и алгоритмов) программистом, участвующим в разработке программной системы, обеспечивается почти полностью. Другие программисты могут не понять программу, а, следовательно и алгоритм. Программа является кодом алгоритма, хотя и делаются минимальные отступления от естественных обозначений. Следует отметить главное, что программа является единственным средством точного документирования алгоритма. Значительно лучше дело обстоит с оформлением документов по БЗ, поскольку в основе лежит ЯПП - часть ЕЯ. Знания записываются также, как они записываются в учебниках. Некоторая сложность может ощущаться при записи формул в виде строчек, а не в форме многоэтажных конструкций. Вопросы документирования важны для понимания специалистом смысла знаний и программ.

Необходимость документирования программ проявляется особенно при выполнении работ по сопровождению программных систем, поэтому процесс документирования должен предшествовать по времени сопровождению, как сказано в эпиграфе. Но этот процесс здесь рассматривается на этапе сопровождения в силу того, что окончательная отработка документации осуществляется именно при сопровождении. При этом осуществляется возврат к текстам программ для внесения изменений или дополнений. Поэтому понимание программ крайне важно: любое изменение текстов может привести к внесению новых ошибок, тогда сопровождение окажется неудачным. Как и ранее в понятие программы вкладывается более широкий смысл, чем смысл программы на ФЯ. Под программой можно понимать некоторый текст действий - знания о процессе получения нового знания. Использование ЕЯ при записи программ может привести к потере части знания, которая подразумевалась по контексту. Использование ЯПП для описания программ будет эффективным, если записи проверялись на ВМ с помощью Интеллсист.

Определим методы обеспечения программ документами (МОПД) как совокупность приемов и правил оформления исходных, промежуточных и кодовых текстов программ или отдельных модулей в форме листингов или билистингов (трилистингов), использующих комментарии к фрагментам программ, компоновку записей и строчное сопоставление различных форм программ, представленных на языках различного уровня. Уровни представления текстов программ зависят от класса решаемых программой задач.

Программа - представление алгоритмического знания, оно должно соответствовать общему пониманию знания как представления пары имени и значения. Имя программы и ее текст - алгоритмическое знание. Это первое требование к МОПД. В качестве имени может использоваться идентификатор процедуры, функции или программы.

Документирование программ обеспечивает скорость поиска места ошибок или изменений, удобство чтения текстов. Обычно для этих целей используются приемы:

  • использование уступов и соответствия ключевых символов,

  • комментарий как дополнительная информация об обозначениях, операциях преобразования и взаимодействия частей текста,

  • использование пробелов, рисунков, демонстрационных примеров,

  • обозначения величин должны соответствовать естественным обозначениям (заметим, что термины ото поддерживают).

В связи с этим уместно отметить, что Интеллсист ориентирована на обычный и терминологический словари и полное сохранение естественных обозначений понятий любой природы. ЯПП обеспечивает наглядность, осмысленность, концептуальность, удобное представление, теоретическую обоснованность, полное соответствие языке записи, простой стандартный алгоритм чтения программы, совокупность или система правил и приемов.

Для документирование важны некоторые принципы: раннее документирование, непрерывное документирование, естественность, указание на то, что делает программа для пользователя и самодокументируемость знаний. Каждый документ имеет вполне определенное назначение при изобретании, проектировании, разработке и сопровождении БД, БЗ и программ (в зависимости от задач каждого технологического этапа).

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

1. Менеджеру - что, как и для чего приобрести программу или знания (БЗ),

2. Программисту - технология генерации приложений,

3. Знаниеведу- как составлять и контролировать БЗ,

4. Лингвисту - как разрабатывается лексикон,

5. Пользователю - технология применения программы или БЗ,

6. Оператору - какие функции выполнять в работе с программами или БЗ,

7. Архивисту - какие библиотеки и как их вести,

8. Администратору - как управлять работами,

9. Специалисту - как выполнить вспомогательные работы.

Каждый документ должен предусматривать описание оборудования, программной среды, порядка поставки, установки и инсталляции, а также защиты всего материала. Сам документ исполняется либо привычным способом на бумаге, либо на машинном носителе (на дисках).

Литература

[Абрамов89] Абрамов С.А., Зима Е.В. Начала информатики М., Наука, 1989. - 256 с.

[Агафонов82] Агафонов В.Н. Типы и абстракции данных в языках программирования. //В кн.: Данные в языках программирования. - М., Мир, 1982

[Агафонов87] Агафонов В.Н. Спецификация программ: понятийные средства и их организация. Новосибирск, Наука, 1987

[Айзерман90] Айзерман М.А., Алескеров Ф.Т. Выбор вариантов. Основы теории. - М., Наука, 1990, - 237 с.

[Айламазян89] Айламазян А.К., Стась Е.В. Информатика и теория развития. - М., Наука, 1989. - 174 с.

[Алгоритмы82] Алгоритмы, математическое обеспечение и архитектура многопроцессорных вычислительных систем. - М., Наука, 1982. - 336 с.

[Алгоритмы90] Алгоритмы и программы решения задач на графах и сетях. - М., Наука, 1990, - 515 с.

[Александров78] Александров В.В., Лапин А.Н. К проблеме построения диалоговых систем хранения знаний. //В кн.: Автоматизация исследований и проектирования. - М., 1978

[Александров75] Александров Е.А. Основы теории эвристических решений. - М., Советское радио, 1975, - 254 с.

[Алексеев68] Алексеев П.М. Частотный словарь английского подъязыка электроники. //В сб.: Статистика речи. - Л., 1968

[Алексеева84] Алексеева З.Я., Стефанюк В.А. Экспертные системы - состояние и перспективы. //Изв. АН СССР, Техническая кибернетика, 1984, N 5

[Алексеева97] Алексеева Т.Н., Алексеев А.В., Гаврилин А.В., Товбис М.Б., Удалов В.А., Яковлева Т.А. О региональном стандарте по информатике (предложение по разработке и внедрению). - М., Информатика и образование, 1997, N 5, с.8-10

[Алиев90] Алиев Р.А., Абдикеев Н.М., Шахназаров М.М. Производственные системы с искусственным интеллектом. - М., Радио и связь, 1990, - 264 с.

[Алиев91] Алиев А.С., Восков Л.С., Ильин В.Н., Матвеев В.И., Садеков А.С., Сыпчук П.П., Чиннова И.И. Интеллектуальные САПР технологических процессов в радиоэлектронике. - М., Радио и связь, 1991, 262 с.

[Альтшуллер73] Альтшуллер Г.С. Алгоритм изобретения. - М., Московский рабочий, 1973. - 296 с.

[Альтшуллер79] Альтшуллер Г.С. Творчество как точная наука. Теория решения изобретательских задач. - М., Сов.радио, 1979, - 176с.

[Амамия93] Амамия М., Танака Ю. Архитектура ЭВМ и искусственный интеллект. - М., Мир, 1993, - 400 с.

[Амосов79] Амосов Н.М. Алгоритмы разума. - Киев, Наукова думка, 1979, -220 с.

[Анализ84] Анализ и оптимальный синтез на ЭВМ систем управления. - М., Наука, 1984

[Анин00] Анин Б.Ю. Защита компьютерной информации. - Санкт-Петербург, 2000, 342 с.

[Анисимов83] Анисимов Б.В., Курганов В.Д., Злобин В.К. Распознавание и цифровая обработка изображений. - М., Высшая школа, 1983, - 295 с.

[Анохин73] Анохин П.К. Философский смысл проблемы естественного и искусственного интеллекта. - М., Вопросы философии, 1973, N 6

[Антонюк86] Антонюк Б.Д. Экспертные системы в программе стратегическойинициативы США. // В кн.: Персональные компьютеры и локальные сети. - Тбилиси, 1986, - с. 9-10.

[Апресян74] Апресян Ю.Л. Лексическая семантика. - М., Наука, 1974

[Арбиб68] Арбиб М. Мозг, машина и математика. - М., Наука, 1968, - 224 с.

[Аристотель] Аристотель. Сочинение. Т.1, - М., Мысль, 1976

[Арсак90] Арсак Ж. Программирование игр и головоломок.- М., Наука,1990, - 224 с.

[Ахо78] Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции. - М., Мир, 1978. Т.1. Синтаксический анализ. - 614с. Т.2. Компиляция. - 488 с.

[Ахо79] Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. - М., Мир, 1979, - 536 с.

[Баженов64] Бежанов Л.Б. О некоторых философских аспектах проблемы моделирования мышления кибернетическими устройствами. //В кн.: Кибернетика, мышление, жизнь. - М., 1964

[Базилевич89] Л.А.Базилевич. Автоматизация организационного проектирования. - Л., Машиностроение ЛО, 1989. - 176 с.

[Бакланов78] Бакланов В.М., Попов Э.В. ";Понимание"; фраз ограниченного русского языка. - М., Изв. АН СССР, Техническая кибернетика, 1978, N 4.

[Бар88] Бар Р. Язык Ада в проектировании систем. - М., Мир, 1988

[Барздинь82] Барздинь Я.М. Некоторые правила индуктивного вывода и их применения. //В сб. Семиотика и информатика, вып. 19, - М., ВИНИТИ, 1982

[Баронец86] Баронец В.Д. Проектирование лингвистических устройств на основе нечеткой логики. //Автоматика и телемеханика, 1986, N 12

[Баррон74] Баррон Д. Рекурсивные методы в программировании. - М., Мир, 1974, - 80 с.

[Батурин] Батурин Ю.М. Проблемы компьютерного права. - М., Юридическая литература, 1991, - 272 с.

[Бауэр76] Бауэр Ф.Л., Гооз Г. Информатика. Вводный курс. - М., Мир, 1976

[Бауэр78] Бауэр Ф.Л., Гнац Р., Хилл У. Информатика. Задачи и решения.- М., Мир, 1978, - 355 с.

[Бектаев69] Бектаев К.Б., Зубов А.В., Ковалевич Е.Ф., Машкина Л.Е., Нехай .А. К исследованию законов распределения лингвистических единиц. //В сб.: Статистика текстов. .Лингвостатистические исследования. - Минск, 1969

[Бектаев71] Бектаев К.Б., Лукьяненко К.Ф. О законах распределения единиц письменной речи. //В сб.: Статистика речи и автоматический анализ текста. - Л., 1971, 1973, 1974

[Бектаев74] Бектаев К.Б., Пиотровский Р.Г., Шабес В.Я. Тезаурусное распознавание смысла документа в АСУ и АИСП. //В сб.: Лингвистическое обеспечение автоматизированных систем управления и информационно-поисковых систем. - Тюмень, 1974

[Белецкая91] Белецкая Л.В., Липницкий С.Ф., Машковская И.П., Млынчик И.И. Словарь по информатике. - Минск, Университетское, 1991, - 160 с.

[Белнап81] Белнап Н., Стил Т. Логика вопросов и ответов.- М., Прогресс,1981.- 287 с.

[Белоногов79] Белоногов Г.Г., Новоселов А.П. Автоматизация процессов накопления, поиска и обобщения информации. - М., Наука, 1979

[Белый10] Белый А. Мысль и язык (философия языка А.А.Полтебни). //В сб.: Логос. - М., 1910

[Беляев86] Беляев И.П. Структурная модель представления знаний. // В кн.: Психологическое обеспечение АСОУ. - Одесса, 1986. - с. 60-65.

[Бенерджи71] Бенерджи Р. Теория решения задач. Подход к созданию искусственного интеллекта. - М., Мир, 1971, - 224 с.

[Берг76] Берг А.И.,Бирюков Б.В.,Геллер Е.С.,Поваров Г.И. Управление, информация, интеллект. - М., 1976

[Берж62] Берж К. Теория графов и ее применения. - М., ИЛ, 1962, - 320с.

[Берзтисс74] Берзтисс А.Т. Структуры данных. - М., Статистика, 1974, - 408 с.

[Бешенков97] Бешенков С.А., Давыдов А.Л., Матвеева Н.В. Гуманитарная информатика в начальном обучении. - М., Информатика и образование, 1997, N 4, с.62-64

[Бидер76] Бидер И.Г., Большаков И.А. Формализация морфологического компонента модели ";смысл-текст";. 1. Постановка проблемы и основные понятия. - М., Изв. АН СССР, Техническая кибернетика, 1976, N 6

[Библиотека81] Библиотека алгоритмов 151б - 200б. Справочное пособие. Вып.4. - М., Радио и связь, 1981

[Бирюков65] Бирюков Б.В. О взглядах Г.Фреге на роль знаков и исчисления в познании. //В сб.: Логическая структура научного знания. - М., 1965

[Блох87] Блох А.Ш. Граф-схемы и алгоритмы. - Минск, Высшая школа, 1987, 144 с.

[Богодист74] Богодист В.И. Измерение смысловой информации лингвистической единицы французского языка. - Л., 1974

[Бойченко85] Бойченко Е.В., Кальфа В., Овчинников В.В. Локальные вычислительные сети. - М., Радио и связь, 1985. - 304 с.

[Бонгард67] Бонгард М.М. Проблема узнавания. - М., Наука, 1967, - 320 с.

[Бондаренко97] Бондаренко Н.В., Северова Т.С., Соколовский М.В., Толстых Г.Д. О концепции обучения информатике в школе. - М., Информатика и образование, 1997, N 1, с.19-22

[Бордовский91] Бордовский Г.А., Извозчиков В.А., Исаев Ю.В., Морозов В.В. Информатика в понятиях и терминах. Книга для учащихся старших классов средней школы. - М., Просвещение, 1991, - 208с.

[Борисов89] Борисов А.Н., Алексеев А.В., Меркурьев Г.В., Слядзь Н.Н., Глушков В.И. Обработка нечеткой информации в системах принятия решений. - М., Радио и связь, 1989. -304с.

[Бохуа82] Бохуа Н.К., Геловани В.А., Ковригин О.В., Смольянов Н.Д. Экспертная система диагностики различных форм артериальной гипертензии. - М., Изв. АН СССР, Техническая кибернетика, 1982, N 6

[Боэм85] Боэм Б.У. Инженерное проектирование программного обеспечения. - М., Радио и связь, 1985, - 511 с.

[Брандон70] Брандон Д.Х. Организация работы на вычислительном центре. - М., Статистика, 1970, - 296 с.

[Братко90] Братко И. Программирование на языке Пролог для искусственного интеллекта. - М., Мир, 1990, - 560 с.

[Братчиков75] Братчиков И.Л. Синтаксис языков программирования. - М., Наука, 1975

[Браун77] Браун П. Микропроцессоры и мобильность программного обеспечения. - М., Мир, 1977, - 255 с.

[Бриллюэн66] Бриллюэн Л. Научная неопределенность и информация. - М., Мир, - 271 с.

[Бритон79] Бритон Д.Б. Новая компьютерная архитектура, основанная на потоке данных. - М., Электроника, 1979, N 9

[Бродская81] Бродская И.М., Камынин С.С. Система машинного видения для анализа сцен. //В кн.: Проблемы машинного видения в робототехнике. ИПМ АН СССР, - М., 1981

[Броуди90] Броуди Л. Начальный курс программирования на языке Форт. - М., Финансы и статистика, 1990, - 352 с.

[Брукс79] Брукс Ф.П. мл. Как проектируются и создаются программные комплексы. Мифический человеко-месяц. Очерки по системному программированию. - М., Наука, 1979, - 152 с.

[Брусницов79] Брусницов Н.П. Микрокомпьютеры. - М., Наука, 1979

[Брябрин81] Брябрин В.М. Ф-язык - формализм для представления знаний в интеллектуальной системе. //В сб.: Прикладная информатика. Вып. 1, Финансы и статистика, - М., 1981

[Брябрин88] Брябрин В.М. Программное обеспечение персональных ЭВМ. - М., Наука, 1988, - 271 с.

[Булос94] Дж.Булос, Р.Джеффри. Вычислимость и логика. - М., Мир, 1994, - 397 с.

[Бусленко78] Бусленко Н.П. Моделирование сложных систем. - М.,Наука,1978, 399 с.

[Вагин86] Вагин В.Н. Параллельная дедукция на семантических сетях. //Изв. АН СССР, Техническая кибернетика, 1986, N 5

[Вагин87] Вагин В.Н., Захаров В.Н., Розенблюм Л.Я. К логическому выводу на сетях Петри. //Изв.АН СССР, Техническая кибернетика, 1987, N 5

[Ван Дейк78] Ван Дейк Т. Вопросы прагматики текста. //В кн.: Новое в лингвистике. Вып. VIII. Лингвистика текста. - М., 1978

[Василеску90] Василеску Ю. Прикладное программирование на языке Ада. - М., Мир, 1990, - 350 с.

[Вегнер83] Вегнер П. Программирование на языке Ада. - М.,Мир,1983,- 240с.

[Вейль89] Вейль Герман. Математическое мышление. - М., Наука,1989,- 400с.

[Велихов86] Велихов Е.П. Информатика - актуальное направление развития советской науки. //Кибернетика. Становление информатики. - М., Наука, 1986, с.10-21

[Вельбицкий80] Вельбицкий И.В., Ходаковский В.Н., Шолмов Л.И. Технологический комплекс производства программ на машинах ЕС ЭВМ и БЭСМ-6. - М., Статистика, 1980, - 263 с.

[Ветров68] Ветров А.А. Семиотика и ее основные проблемы. - М., 1968

[Винер66] Винер Н. Творец и робот. Обсуждение некоторых проблем, в которых кибернетика сталкивается с религией. - М., Прогресс, 1966

[Винер68] Винер Н. Кибернетика или управление и связь в живом и машине. - М., Советское радио, 1968, - 340 с.

[Виноград76] Виноград Т. Программа,понимающаяестественныйязык. -М., Мир, 1976

[Виноградов86] Виноградов В.И. Информационно-вычислительные системы: Распределенные модульные системы автоматизации. - М., Энергоатомиздат, 1986. - 336 с.

[Вирт77а] Вирт Н. Систематическое программирование: Введение. - М., Мир, 1977

[Вирт77б] Вирт Н. Язык программирования Паскаль (Пересмотренное сообщение). //В сб.: Алгоритмы и организация решения экономических задач. вып. 9, - М., Статистика, 1977

[Вирт85] Вирт Н. Алгоритмы + структуры данных = программы. - М., Мир, 1985, - 408 с.

[Власов88] Власов В.К., Королев Л.Н., Сотников А.Н. Элементы информатики. - М., Наука, 1988. - 320 с.

[Воз84] Воз Л. Решение некоторых открытых проблем с помощью программы для автоматического доказательства теорем. //Кибернетический сборник. Вып.21, - М., Мир, 1984, с.235-263

[Воронов90] Воронов Ю.П. Компьютеризация: Шаг в будущее. - Новосибирск: Наука, 1990. - 336 с.

[Восилюс80] Восилюс С.К., Мачераускас В.Ю. Фреймовое представление знаний в системах управления качеством. //В кн.: Представление знаний в системах искусственного интеллекта. - М., 1980

[Вудс76] Вудс В.А. Сетевые грамматики для анализа естественного языка. Кибернетический сборник, вып. 13, - М., Мир, 1976

[Вулф87] Вулф А. Модули на базе однокристального Лисп-процессора для ЭВМ военного назначения. //Электроника, 1987, т.60, N 5, с.27-31

[Высоцкий70] Высоцкий Г.Я., Рудный Б.Н., Трунин-Донской В.Н., Цемель Г.И. Опыт речевого управления вычислительной машиной. Изв. АН СССР, Техническая кибернетика, 1970, N 2

[Выч67] Вычислительные машины и мышление. - М., Мир, 1967, - 552 с.

[Выч78] Вычислительная техника и обработка данных. Терминологический толковый словарь фирмы IBM. - М., Статистика, 1978, - 232 с.

[Гаврилова00] Гаврилова Т.А., Хорошевский В.Ф. Базы знаний интеллектуальных систем (Учебник). Санкт-Петербург, Москва – Харьков – Минск, 2000, - 384 с.

[Гавурин63] Гавурин М.К. О ценности информации. Вестник ЛГУ. Сер. математики, механики и астрономии. N 19, вып. 4, 1963

[Гаек84] Гаек П., Гавранек Т. Автоматическое образование гипотез. Математические основы общей теории. - М., Наука, 1984. - 278 с.

[Гантер81] Гантер Р. Методы проектирования программного обеспечения. - М., Мир, 1981

[Гетманова95] Гетманова А.Д. Логика. Для педагогических учебных заведений. -М., Новая школа, 1995, - 416 с.

[Ги86] Ги К. Введение в локальные вычислительные сети. - М., Радио и связь, 1986. - 176 с.

[Гилой81] Гилой В. Интерактивная машинная графика: структуры данных, алгоритмы, языки. - М., Мир, 1981, - 384 с.

[Гильберт79] Гильберт Д., Бернайс П. Основания математики. Логические исчисления и формализация арифметики. - М., Наука, 1979, - 558с.

[Гильберт82] Гильберт Д., Бернайс П. Основания математики. Теория доказательств. - М., Наука, 1982, - 653 с.

[Гинзбург70] Гинзбург С. Математическая теория контекстно-свободных языков. - М., Мир, 1970, - 327 с.

[Гласс82] Гласс Р. Руководство по надежному программированию. - М., Финансы и статистика, 1982

[Гласс83] Гласс Р., Нуазо Р. Сопровождение программного обеспечения. - М., Мир, 1983, - 156 с.

[Глушков71] Глушков В.М., Гринченко Г.А. АНАЛИТИК. - К., Кибернетика,1971, N 3

[Глушков79] Глушков В.М. Фундаментальные исследования и технология программирования. //В кн.: Технология программирования. - К., ИК АН УССР, 1979

[Глушков82] Глушков В.М. Основы безбумажной информатики. - М., Наука, 1982, - 552 с.

[Глушков90] Глушков В.М. Кибернетика, вычислительная техника, информатика. Избранные труды в трех томах. Т.1. Математические вопросы кибернетики. - 264 с. Т.2. ЭВМ - техническая база кибернетики. - 268 с. Т.3. - Киев, Наукова думка, 1990

[Голендер81] Голендер В.Е. Индуктивная логика и методы обнаружения закономерностей. //В кн.: Машинные методы обнаружения закономерностей. - Рига, 1981

[Головкин80] Головкин Б.А. Параллельные вычислительные системы. - М., Наука, 1980. - 520 с.

[Горстко88] Горстко А.Б. Кочковая С.В. Азбука программирования. (Информатика для всех). - М., Знание, 1988, - 144 с.

[ГОСТ89] ГОСТ 28195-89. Оценка качества программных средств. Общие положения. Государственный комитет СССР по стандартам. - М., Издательство стандартов, 1989, - 38 с.

[Грей89] Грей П. Логика, алгебра и базы данных.- М., Машиностроение,1989,- 368 с.

[Гренандер83] Гренандер У. Лекции по теории образов. - М., Мир. Т.1.Синтез образов. 1979, - 384 с. Т.2. Анализ образов. 1981, - 446 с. Т.3. Регулярные структуры. 1983, - 345 с.

[Грис75] Грис Д. Конструирование компиляторов для цифровых вычислительных машин. - М., Мир, 1975, - 416 с.

[Грис84] Грис Д. Наука программирования. - М., Мир, 1984, - 416 с.

[Гришин82] Гришин Е.А., Билялитдинов А.Х. Структура языка представления знаний KRL. //Техника средств связи. Сер. АСИ, N 1, 1982

[Громов85] Громов Г.Р. Национальные информационные ресурсы: Проблемы промышленной эксплуатации. - М., Наука, 1985, - 237 с.

[Громов87] Громов Г.Р. Игровая компонента персональных ЭВМ: стимулятор творчества, педагогический прием, жанр киноискусства. - М., Микропроцессорные средства и системы, 1987, N 3

[Гросс71] Гросс М., Лантен А. Теория формальных грамматик. - М., Мир, 1971

[Гудман81] Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. - М., Мир, 1981, - 368 с.

[Гудстейн70] Гудстейн Р.Л. Рекурсивный математический анализ. - М., Наука, 1970, - 472 с.

[Гутер75] Гутер Р.Ц., Полунов Ю.Л. От абака до компьютера. - М., Знание, 1975, - 208 с.

[Дал69] Дал У., Мюрхауг Б., Нюгорд К. СИМУЛА 67 - универсальный язык программирования. - М., Мир, 1969

[Дал75] Дал У., Дейкстра Э., Хоор К. Структурное программирование. - М., Мир, 1975, - 248 с.

[Дейкало84] Дейкало Г.Ф., Новиков Б.А., Рухлин А.П., Терехов А.Н. Новые средства программирования на ЕС ЭВМ. Транслятор с языка Алгол 68 и диалоговая система JEС. - М., Финансы и статистика, 1984, - 208 с.

[Дейкстра78] Дейкстра Э. Дисциплина программирования. - М., Мир, 1978, - 277 с.

[Дейт80] Дейт К. Введение в системы базы данных. - М., Наука, 1980

[Дейт88] Дейт К. Руководство по реляционной СУБД DB2. - М.: Финансы и статистика, 1988. - 320 с.

[Дембаускас87] Дембаускас А.П. Финансовая информатика. - М., Финансы и статистика, 1987, 207 с.

[Деметрович89] Деметрович Я., Кнут Е., Радо П. Автоматизированные методы спецификации. - М., Мир, 1989. - 115 с.

[Денинг84] Денинг В., Эссиг Г., Маас С. Диалоговые системы ";человек-ЭВМ";. Адаптация к требованиям пользователя. - М., Мир, 1984

[Джадд75] Джадд Д.Р. Работа с файлами. - М., Мир, 1975

[Джехани88] Джехани Н. Язык Ада. - М., Мир, 1988, - 552 с.

[Джордж63] Джордж Ф. Мозг как вычислительная машина.- М., ИИЛ,1963, - 546 с.

[Добровольский89] ДобровольскийВ.Ю. Текстовый процессор microsoft WORD (для IBM совместимых персональных компьютеров). Версия 4.0, руководство по эксплуатации. - М., 1989, 122 с.

[Доорс90] Доорс Дж., Рейблейн А.Р., Вадера С. ПРОЛОГ - язык программирования будущего. - М., Финансы и статистика, 1990, - 143 с.

[Дородницын85] Дородницын А.А. Информатика: Предмет и задачи. Вестник АН СССР, N 2, 1985, с.85-89

[Дрейфус78] Дрейфус Х. Чего не могут вычислительные машины? Критика искусственного разума. - М., Прогресс, 1978

[Дробушевич78] Дробушевич Г.А. Справочник программиста. - Минск, Вышятная школа, 1978, - 192 с.

[Дуда76] Дуда Р., Харт П. Распознавание образов и анализ сцен. - М., Мир, 1976

[Дэвис82] Дэвис Д., Барбер Д., Прайс У., Соломонидес С. Вычислительные сети и сетевые протоколы. - М., Мир, 1982. - 562 с.

[Дюбуа90] Дюбуа Д., Прад А. Теория возможностей. Приложения к представлению знаний в информатике. - М., Радио и связь, 1990, - 287 с.

[Евстигнеев85] Евстигнеев В.А. Применение теории графов в программировании. - М., Мир, 1985

[Ершов72а] Ершов А.П. О человеческих и эстетических факторах в программировании. - К., Кибернетика, N 5, 1972

[Ершов72б] Ершов А.П. Технология разработки систем программирования. //В кн.: Системное и теоретическое программирование. Новосибирск, ВЦ СО АН СССР, 1972

[Ершов77] Ершов А.П. Введение в теоретическое программирование. Беседы о методе. - М., Наука, 1977, - 288 с.

[Ершов82] Ершов А.П., Ильин В.П. Пакеты программ как методология решения прикладных проблем. //В сб.: Пакеты прикладных программ; проблемы и перспективы. - М., Наука, 1982

[Ершов83] Ершов А.П. Информатика. Предмет и понятие. //Наука в Сибире. - Новосибирск, 1983, N 32

[Ершов85] Ершов А.П. Человек и машина. - М., Знание, 1985

[Ершов86] Ершов А.П., Монахов В.М. и др. Основы информатики и вычислительной техники. Пробное учебное пособие для средних учебных заведений. В двух частях. - М., Просвещение, 1986

[Ефимов77] Ефимов Е.И., Поспелов Д.А. Семиотические модели в задачах планирования для систем искусственного интеллекта. - М., Изв. АН СССР, Техническая кибернетика, 1977, N 5

[Ефимов82] Ефимов Е.И. Решение интеллектуальных задач.- М., Наука,1982,- 320 с.

[Жигарев87] Жигарев А.Н., Макарова Н.В., Путинцева М.А. Основы компьютерной грамоты. - Ленинград, Машиностроение ЛО, 1987, 255 с.

[Заде74] Заде Л.А. Основа нового подхода к анализу сложных систем и процессов принятия решений. //В сб.: Математика сегодня. - М., Знание, 1974

[Зайцев85] Зайцев С.С. Транспортировка данных в сетях ЭВМ. - М., Радио и связь, 1985. - 128 с.

[Закревский85] Закревский А.Д., Баландин Р.К. Задание - опознать (распознавание образов). - М., Наука, 1985

[Зализняк77] Зализняк А.А. Грамматический словарь русского языка. - М., Русский язык, 1977

[Зарипов83] Зарипов Р.Х. Машинный поиск вариантов при моделировании творческого процесса. - М., Наука, 1983. - 232 с.

[Зелковиц82] Зелкович М., Шоу А., Гэннон Дж. Принципы разработки программного обеспечения. - М., Мир, 1982, - 368 с.

[Зикманн84] Зикманн Й., Сабо П. Универсальная унификация и классификация эквациональных теорий. //Кибернетический сборник, вып.21, - М., 1984

[Зиновьев70] Зиновьев А.А. Комплексная логика. - М., Наука, 1970, 204 с.

[Ивашко86] Ивашко В.Г., Финн В.К. Экспертные системы и некоторые проблемы их интеллектуализации. //Семиотика и информатика, вып.27, - М., ВИНИТИ, 1986

[Ивин96] Ивин А.А. Логика. - М., Просвещение, 1996, - 207 с.

[Ивлев92] Ивлев Ю.В. Логика. Изд. МГУ, 1992, - 272 с.

[Изерман84] Изерман Р. Цифровые системы управления. - М., Мир, 1984

[Ильин91] Ильин В.П. Вычислительная информатика: открытие науки. - Новосибирск, Наука СО, 1991, - 198 с.

[Ильинский79] Ильинский Н.И., Кузин Л.Т., Стрижевский В.С. Интеллектуальная система программирования. //В кн.: Вопросы кибернетики, вып. 55, - М., АН СССР, 1979

[Ингерман69] Ингерман П. Синтаксически ориентированный транслятор. - М., Мир, 1969, - 175 с.

[Интелл90] Интеллектуализация программных средств. //Сб. ст. Новосибирск, Наука СО ИВЦ, 1990, - 216 с.

[Информ75] Информационные системы общего назначения (аналитический обзор систем управления базами данных). - М., Статистика, 1975, - 472 с.

[Информ90] Информационный бюллетень. Научно-производственное объединение ";ЦЕНТРПРОГРАММСИСТЕМ";, Государственный испытательный центр программных средств вычислительной техники. Тверь, 1990, - 22 с.

[Информатика1] Информатика. Экспресс-информация. - М., ВИНИТИ, с 1979, 48 раз в год.

[Информатика2] Информатика. Научно-технический сборник, сер. Кадровое обеспечение. Отдельные выпуски с 1990 г. - М., ГК ВТИ СССР

[Информатика3] Информатика и вычислительная техника за рубежом. Информационный сборник статей. По выпускам издается с 1990 г. - М.

[Информатика4] Информатика. Серия Автоматизация проектирования. - М., ВИМИ, издается с 1976 сборником статей.

[Информатика5] Информатика. Еженедельное приложение к газете «Первое сентября». ОАО.ПО «Пресса-1» - М., с 1995, на 32 с.

[Информатика91] Информатика в понятиях м терминах. Книга для учащихся старших классов средней школы. - М., Просвещение, 1991, - 208 с.

[Исихара92] Исихара С. Оптические компьютеры. Новый век науки. - М., Наука, 1992, - 96 с.

[Искусс88] Искусственный интеллект: Применение в химии. //Сб. ст. - М., Мир, 1988. - 430 с.

[Искусс91] Искусственный интеллект: Применение в интегрированных производственных системах. - М., Машиностроение, 1991, 544 с.

[Йодан79] Йодан Э. Структурное программирование и конструирование программ. - М., Мир, 1979

[Калиниченко90] Калиниченко Л.А., Рывкин В.М. Машины баз данных и знаний. - М., 1990, - 296 с.

[Канторович72] Канторович Л.В., Гостко А.Б. Оптимальное решение в экономике. - М., Наука, 1972

[Карри69] Карри Х.Б. Основание математической логики. - М., Мир, 1069, - 568 с.

[Кархо81] Кархо М.И., Калья А.П., Тыугу Э.Х. Инструментальная система программирования ЕС ЭВМ (ПРИЗ). - М., Финансы и статистика, 1981, - 160 с.

[Касаткин81] Касаткин Л.М. Активные семантические сети в системах знаний роботов. - Киев, Знание, 1981

[Касьянов86] Касьянов В.Н., Поттосин И.В. Методы построения трансляторов. - Новосибирск, Наука СО, 1986, - 344 с.

[Кейслер77] Кейслер Г., Чэн Ч.Ч. Теория моделей. - М., Мир, 1977

[Керниган85] Керниган Б., Плоджер Ф. Инструментальные средствапрограммирования на языке Паскаль, - М., Радио и связь, 1985, 313 с.

[Кибернетика79] Кибернетика. Неограниченные возможности и возможные ограничения. Итоги развития. - М., Наука, 1979

[Кибернетика86] Кибернетика. Становление информатики. //Сб. статей. - М., Наука, 1986, - 192 с.

[Кинг91] Кинг Д. Создание эффективного программного обеспечения. - М., Мир, 1991, - 288 с.

[Кириллов98] Кириллов В.И., Старченко А.А. Логика. Учебник для юридических ВУЗов, - М., Юристъ, 1998, - 255 с.

[Кирсанов82] Кирсанов Б.С., Преображенский А.Б. Организация вычислительного процесса на основе системы представления знаний.//В сб.: Прикладные и экспериментальные лингвистические процессоры. Новосибирск, 1982

[Кларк87] Кларк К., Маккейб Ф. Введение в логическое программирование на микро-Прологе. - М., Радио и связь, 1987, - 312 с.

[Классификация80] Классификация и кластер. - М., Мир, 1980, - 391 с.

[Клещев82] Клещев А.С., Черняховский М.Ю. Системы представления проблемно-ориентированных знаний. Изв. АН СССР, Техническая кибернетика, N 5, 1982

[Клини73] Клини С.К. Математическая логика. - М., Мир, 1973. - 480 с.

[Клини78] Клини С., Весли Р. Основания интуиционистской математики с точки зрения теории рекурсивных функций. - М., Наука, 1978, - 272 с.

[Клир90] Клир Дж. Системотология. Автоматизация решения системных задач. - М., Радио и связь, 1990, - 540 с.

[Клоксин87] Клоксин У., Меллиш К. Программирование на языке ПРОЛОГ. - М., Мир, 1987, - 336 с.

[Кнут00] Кнут Д.Э. Искусство программирования. Т.1. Основные алгоритмы.

- М.-СПб-Киев, Мир, 2000, - 713 с. Т.2. Получисленные алгоритмы. - М.-СПб-Киев, Мир, 2000, - 829 с. Т.3. Сортировка и поиск. - М.-СПб-Киев, Мир, 2000, - 823с. Т.4. Комбинаторные алгоритмы. Т.5. Синтаксические алгоритмы. (в печати)

[Ковальски90] Ковальски Р. Логика в решении проблем. - М., Наука, 1990, - 279 с.

[Когаловский92] Когаловский М.Р. Технология баз данных на персональных ЭВМ. - М., Финансы и статистика, 1992, - 224 с.

[Колин75] Колин А. Введение в операционные системы. - М., Мир, 1975, - 116 с.

[Коллинз86] Коллинз Г., Блэй Дж. Структурные методы разработки систем: от стратегического планирования до тестирования. - М., Финансы и статистика, 1986

[Колмогоров65] Колмогоров А.Н. Три подхода к определению понятия ";количество информации";. //В кн.: Проблемы передачи информации, т.1, вып.1, - М., 1965

[Компьютер86] Компьютерная алгебра. Символьные и алгебраические вычисления. //Сб. статей. - М., Мир, 1986, - 392 с.

[Компьютер88] Компьютерные игры. - Л., Лениздат, 1988, - 168 с.

[Компьютер90] Компьютеры и познание: очерки по когнитологии. //Сб. статетй. - М., Наука, 1990, - 128 с.

[Кондаков71] Кондаков Н.И. Логический словарь. - М., Наука, 1971, - 656с.

[Кондратов87] Кондратов А.М. Электронный разум. Очерк исследований по проблеме искусственного интеллекта. - М., Знание, 1987, - 170с.

[Кондрашина79] Кондрашина Е.Ю. Элементы семантического представления локативных связей. //В кн.: Новые задачи в информатике. Новосибирск, 1979

[Кондрашина89] Кондрашина Е.Ю., Литвинцева Л.В., Поспелов Д.А. Представление знаний о времени и пространстве в интеллектуальных системах. - М., Наука, 1989, - 328 с.

[Конторов93] Конторов Д.С., Конторов М.Д., Слока В.К. Радиоинформатика. - М., Радио и связь, 1993, - 296 с.

[Косарев89] Косарев Ю.А. Естественная форма диалога с ЭВМ. - Л., Машиностроение ЛО, 1989. - 144 с.

[КотовВЕ84] Котов В.Е. Сети Петри. - М., Наука, 1984. - 160 с.

[КотовВЕ91] Котов В.Е., Сабельфельд В.К. Теория схем программ. - М., Наука, 1991, - 248 с.

[КотовРГ79] Котов Р.Г., Якушин Б.В. Языки информационных систем. - М., Наука, 1979

[КотовЮВ88] Котов Ю.В. Как рисует машина. - М., Наука, 1988

[Коуги85] Коуги П.М. Архитектура конвейерных ЭВМ. - М., Радио и связь, 1985

[Коутс90] Коутс Р., Влейминк И. Интерфейс ";человек-компьютер";. - М., Мир, 1990, - 501 с.

[Коэн75] Коэн Ф., Милопулос Д., Борджиа А. Некоторые аспекты представления знаний. //Тр. IV МОКИИ, т.2, - М., 1975, т.10.

[Крайзель81] Крайзель Г. Исследования по теории доказательств. - М., Мир, 1981

[Крайзмер68] Крайзмер Л.П., Матюхин С.А., Майоркин С.Г. Память кибернетических систем (основы мнемологии). - Л., 1968

[Крамм89] Крамм Р. Системы управления базами данных dBASEII и dBASEIII для персональных компьютеров. М., Финансы и статистика, 1989, - 384 с.

[Красилов56а] Красилов А., Наголкин А.Н., Князев Б.А., Толстых Е.Т., Кукин В.И. Метод автоматического программирования на автоматической быстродействующей цифровой вычислительной машине. Рукопись МКБ «Стрела», 1956, 51 с.

[Красилов56б] Красилов А., Федосеев В., Закамский В., Воронова А., Ганина А., Гусева. Программа для автоматического программирования задач на машине СТ-2 (Программирующая программа № 1). Рукопись МКБ «Стрела», 1956, 64 с.

[Красилов59] Козлов С.И., Красилов А.А. Электронные вычислительные машины в подготовке производства. //Производственно технический бюллетень, N 10, 1959, - М., Дом техники, с.62-64

[Красилов67] Красилов А.А. Курс программирования на языке АЛГОЛ. Препринт ЦКБ «Алмаз», 1967, - 119 с.

[Красилов68а] Красилов А.А., Ксенофонтов Ю.И., Лейтес В.Л. Система автоматизации программирования для вычислительной машины М-222. Алгоритм-1. Препринт ЦКБ «Алмаз», 1968, - 180 с.

[Красилов 68б] Богомаз Н.А., Красилов А.А. Система команд вычислительной машины М-220. Препринт ЦКБ ";Алмаз";, 1968, - 91 с.

[Красилов70а] Красилов А.А., Дригваль Г.П. Вопросы автоматизации программирования для ЦИМ. Тр. конф. - Таганрог., 1970

[Красилов706] Красилов А.А., Ксенофонтов Ю.И., Лейтес В.Л. Репникова Л.А. Система автоматизации программирования для вычислительной машины М-222. Алгоритм-2. Препринт ЦКБ «Алмаз», 1968, - 116 с.

[Красилов70в] Красилов А.А., Ксенофонтов Ю.И., Лейтес В.Л. Репникова Л.А. Система автоматизации программирования для вычислительной машины М-222. Алгоритм-3. Препринт ЦКБ «Алмаз», 1968, - 24 с.

[Красилов70г] Красилов А.А. ЯМО - язык математического обеспечения. Препринт ЦКБ «Алмаз», - М., 1970, 55 с.

[Красилов71а] Красилов А.А., Ксенофонтов Ю.И., Лейтес В.Л. Реализация на ЭВМ М-220 языка типа Алгол 60. ЖВМиМФ, т.11, N 4, - М., 1971, с. 1075-1078

[Красилов71б] Красилов А.А., Горельков А.Л., Лейтес В.Л., Жданова Н.Л. Алгоритм синтеза тестовых и диагностических таблиц для комбинационных логических схем. Доклад на XVII научной конференции МФТИ, г. Долгопрудный, 1971

[Красилов72] Красилов А.А., Ксенофонтов Ю.И. Система автоматического программирования. Язык базовый Фортран. Препринт ЦКБ «Алмаз», - М., 1972, 87 с.

[Красилов73а] Красилов А.А., Ксенофонтов Ю.И. Библиотека стандартных программ ЭВМ ";РИТМ";. Препринт ЦКБ ";Алмаз";, 1973, - 232 с.

[Красилов73б] Красилов А.А., Герасимов Ю.А. Автоматизация аналитических выкладок на ЭВМ. Доклад на XIX научной конференции МФТИ, г. Долгопрудный, 1973

[Красилов73г] Красилов А.А. Программирование КС-языков. Доклад на XIX научной конференции МФТИ, г. Долгопрудный, 1973

[Красилов74а] Красилов А.А., Лейтес В.Л., Лоскутов В.Г. Использование свойств языка Алгол-68 в автокоде. //Тр. ХIХ Научн.конф. МФТИ, 1973, Сер. Аэромех. и процессы управления - Долгопрудный, 1974, вып.3, с.143-146

[Красилов74б] Красилов А.А., Лейтес В.Л. Формульный автокод ФРАК26 (руководство пользователю). Препринт ЦКБ ";Алмаз";, 1974, - 93с.

[Красилов74в] Красилов А.А. Программирование КС-языка. //Тр. ХIХ Научн. конф. МФТИ, 1973, Сер. Аэромех. и процессы упр. - Долгопрудный, вып.3, 1974, с.135-142

[Красилов74г] Красилов А.А., Петрушкин П.Н. Конструкторпрограмм грамматического разбора. Доклад на XX научной конференции МФТИ, г. Долгопрудный, 1974

[Красилов75а] Красилов А.А. Программирование формальных языков. Препринт ЦКБ ";Алмаз";, 1975, - 242 с.

[Красилов75б] Красилов А.А. Основные результаты и направления в студенческих работах по системному программированию. Доклад на XXI научной конференции МФТИ, г. Долгопрудный, 1975

[Красилов75в] Красилов А.А. Применение машины грамматического разбора в программировании алгоритмов АСУ. Тезисы докл. И сообщ. Семинара «Программное обеспечение задач АСУ и ЭВМ», - М., 1975, с. 14-15

[Красилов77] Красилов А.А. О программировании классов задач. Доклад на XXIII научной конференции МФТИ, г. Долгопрудный, 1977

[Красилов78а] Красилов А.А. Система команд машины грамматического разбора. АН СССР, Программирование, - М., 1978, N 2

[Красилов78б] Красилов А.А. Формульные автокоды - высокоуровневые машинно-ориентированные языки системного программирования. //В сб. Всесоюзного симпозиума, Новосибирск, 1978

[Красилов78в] Броль В.В., Красилов А.А., Маслов А.Н. Язык программирования Алгол 68. Итоги науки и техники. Теория вероятностей. Математическая статистика. Теоретическая кибернетика. Т.15, ВИНИТИ, - М., 1978, с.165-234

[Красилов79а] Красилов А.А., Ксенофонтов Ю.И. Граф языка Алгол-68. Тр. ЦКБ ";Алмаз";, 1979, 24 с.

[Красилов79б] Красилов А.А., Горельков А.Л., Косырев В.Е. Структура математического обеспечения системы управления металлорежущими станками. Доклад на XXV научной конференции МФТИ, г. Долгопрудный, 1979

[Красилов80] Красилов А.А., Технология программирования. Доклад на XXVI научной конференции МФТИ, г. Долгопрудный, 1980

[Красилов81а] Красилов А.А., Горельков А.Л. и др. Структура операционных систем комплекса ЭВМ для управления станками. - Киев, УСиМ, 1981, N 4, с.134-139

[Красилов81б] Красилов А.А., Горельков А.Л., Львов В.М. Система команд машины диалога. Доклад на XXVII научной конференции МФТИ, г. Долгопрудный, 1981

[Красилов 81в] Горельков А.Л., Красилов А.А. и др. Структура операционных систем комплекса ЭВМ для управления станками. - Киев, УСиМ, 1981, N 4

[Красилов 81г] Красилов А.А., Лейтес В.Л. Языки в технологии разработки управляющих ЭВМ АСУ. Обмен опытом в радиопромышленности, - М., 1981

[Красилов83а] Красилов А.А. Язык программирования Ада - основа новой технологии программирования. //Тр. семинара ";Прогрессивная технология программирования";, - М., МДНТП, 1983, с.42-44

[Красилов83б] Красилов А.А., Горельков А.Л. МГР-технология разработки транслирующих систем. //В сб.: Прогрессивная технология программирования. - М., МДНТП, 1983, с.89-91

[Красилов83в] Красилов А.А., Горельков А.Л. АЛМАЗ - язык системы управления многооперационными и многокоординатными станками. Часть 1. Пус - язык программ управления станками. Препринт ЦКБ ";Алмаз";, 1983, - 179 с.

[Красилов83г] Красилов А.А., Леонова В.П., Пронина М.Ф. Англо-русский терминологический словарь по единой системе ЭВМ. Препринт ЦКБ ";Алмаз";, 1977 и 1983, - 215 с.

[Красилов 83д] Красилов А.А. Единый язык программирования. Доклад на XXIX научной конференции МФТИ, г. Долгопрудный, 1983

[Красилов85а] Красилов А.А., Герасимов Ю.А., Громов А.А., Косырева О.Е., Черных А.П., Шатилова С.С. Программирование преобразований программ в системе аналитических выкладок АНАЛИЗ. // Тр. конф.: Синтез программ. Устинов, 1985

[Красилов85б] Красилов А.А. Слово об информатике. Доклад на XXXI научной конференции МФТИ, г. Долгопрудный, 1985

[Красилов85в] Красилов А.А., Милков В.Е. Расширение языка Ада для системы синтеза программ. Доклад на XXXI научной конференции МФТИ, г. Долгопрудный, 1985

[Красилов86а] Красилов А.А., Горельков А.Л. Стили программирования. М., МФТИ, 1986, - 83 с.

[Красилов86б] Красилов А.А., Лейтес В.Л., Фадеева Е.П., Хитров В.А., Чепкасов В.П. Реализация языка Ада на ЭВМ БЭСМ-6. Программирование, - М., 1986, N 3, с.60-70

[Красилов86в] Krassilov A.A., Sukhikh A.J., Milkov V.E. Ada language extension - entrance language for program synthesis system. In:EVT, 1986, no.2, pp.78-87.

[Красилов87а] Красилов А.А. Язык Ада в основах информатики. // Тезицы докл. Применение и реализация языка программирования Ада. РПИ, - Рига, 1987, с.5

[Красилов87б] Красилов А.А., Сухих А.Ю. Расширение языка Ада - входной язык системы синтеза программ. // Тезисы докл. Применение и реализация языка программирования Ада. РПИ, - Рига, 1987, с65

[Красилов87в] Красилов А.А. Краткий терминологический словарь по информатике (с библиографией). Препринт ЦКБ «Алмаз», 1987, 74 с.

[Красилов88а] Красилов А.А. Методы информатики. Препринт ЦКБ ";Алмаз";, 1988, - 276 с.

[Красилов88б] Красилов А.А. Язык программирования Ада в технологии программирования. //В сб.: Программное обеспечение систем автоматизированного проектирования, РПИ, - Рига, 1988, с.23-30

[Красилов88в] Krassilov A.A., Sukhikh A.J., Dialog system of inference theory application in programming. In:EVT, 1988, no.2, pp.3-16.

[Красилов 88г] Богородская Н.Е., Красилов А.А. Применение и реализация языка программирования Ада. - Киев, УСиМ, N 1(93), 1988

[Красилов89а] Красилов А.А., Горельков А.Л. Математические машины в диалоговых системах. //Тезисы докл. на конф. ";Диалог ";человек-ЭВМ";. Часть 2. Теоретические методы построения диалоговых систем. Инструментальные системы. Технологические средства диалога и сети ЭВМ. - Свердловск, 1989, с.29

[Красилов89б] Красилов А.А. Интеллектуализация программирования на базе экспертных систем. Доклад на всесоюзной конф: «Теория и практика построения интеллектуальных интегрированных САПР РЭА и БИС», - Звенигород, 5-7 декабря 1989

[Красилов89в] Красилов А.А. и др. (всего 25 авторов) Язык программирования Ада. ГОСТ 27831-88 (ИСО 8652-87) // разработка и редакция, М., Госком СССР по стандартам, 1989, - 264 с.

[Красилов89u] Красилов А.А., Хитров В.А. Преподавание основ информатики на базе языка Ада в МФТИ. Тезисы докл. //В сб. «Методическое и программное обеспечение обучения языку ада», Рига, 3-6 апреля 1989, с.6.

[Красилов90а] Красилов А.А. Инструмент математической экспертной системы. //В сб.: Освоение и концептуальное проектирование интеллектуальных систем. Тезисы докладов и сообщений. - М., 1990, с.10-11

[Красилов90б] Красилов А.А. Математические экспертные системы. //Вторая всесоюзная школа. Автоматизация создания математического обеспечения и архитектуры систем реального времени. Тезисы докладов. - Иркутск, 1990, с.9

[Красилов90в] Красилов А.А. Математический подход к разработке экспертных систем. //Тезисы докл. Всесоюзной школы-семинара, - М., МАИ, 1990

[Красилов90г] Красилов А.А. Направления информатизации САПР. //Сб. Технология разработки и САПР программного обеспечения. - Рига, РТУ, 1990, с.5 - 13

[Красилов90д] Красилов А.А. Основы информатики. Определение и концепции. // Учебное пособие, МФТИ, - Долгопрудный, 1990, - 80 с.

[Красилов90е] Красилов А.А. Инструмент математической экспертной системы. //Сб. тезисов докладов на Научной конф. «Освоение и концептуальное проектирование интеллектуальных систем» - М., 1990, с 10-11

[Красилов91а] Красилов А.А., Лейтес В.Л. Риюз - повторное использование программ и язык Ада. - Киев, УСиМ, 1991, N 6, с. 57 - 68

[Красилов91б] Красилов А.А. Обзор направлений в информатике. //Материалы семинара: ";Научно-технические средства информатизации, автоматизации и интеллектуализации в народном хозяйстве";, 28 - 29 октября 1991, - М., ЦРДЗ, 1991, с. 14 - 23

[Красилов91в] Красилов А.А. Классификация интеллектуальных систем. //Материалы семинара: ";Научно-технические средства информатизации, автоматизации и интеллектуализации в народном хозяйстве";, 28 - 29 октября 1991, - М., ЦРДЗ, 1991, с. 33 - 43

[Красилов92] Красилов А.А., Лейтес В.Л. Вопросы сертификации баз знаний и интеллектуальных систем. //Тезисы докладов, Всесоюзное совещание-семинар, сентябрь, МИЭМ, - М., 1992, с. 34

[Красилов93] Красилов А.А. Интеллектуальные системы (системы решения проблем). Курс лекций для 5 курса МФТИ ФУПМ, текстовый файл, 1993, 220 с.

[Красилов94а] Красилов А.А. Informatical Logic, Logical Equation Decision and Intellectual (Nonproduction) Systems in CAD. EAST-WEST International Conference ";Information Technology In Design";, Part 1, Moscow, Russia, 5-9 Sept. 1994, pp.196-198

[Красилов94б] Красилов А.А. Информатическая логика, решение логических уравнений и интеллектуальные системы в САПР. Информатика. //В сб: Автоматизация проектирования, вып.2-3, ВНИИМИ, - М., 1994, с.14-26

[Красилов96] Красилов А.А. За горизонтом экспертных систем. Открытые системы, 6, 1996, с 65 - 69

[Красилов97а] Красилов А.А. Интеллектуальное программирование, или Все невозможности возможны. PC WEEK, Russian edition, N 14, 1997, с. 52, Автоматическое построение программ по знаниям. PC WEEK, Russian edition, N 15, 1997, с. 72

[Красилов97б] Красилов А.А. Экология знания и интеллектуальные системы. //Сб: Высокие технологии в промышленности России, -М., Международная академия информатизации, 1997, с. 153-160

[Красилов97в] Красилов А.А. Семантическая грамматика русского языка. //труды конф. Интеллектуальные системы в САПР, ИТК, Минск, 1997, стр. 40-48

[Красилов98] Красилов А.А. Ecology of Knowledge and Intellectual Systems. //XV IFIP World Computer Congress, 31.08-04.09, Vienna-Budapest, 1998

[Красилов99а] Красилов А.А.,Григорьев Р.Д. Технология интеллектуального программирования. //Сб. докл.: Высокие технологии в промышленности России, -М., Международная академия информатизации, 1999, с.; и //Инженерный журнал Справочник, N 10 (31), Машиностроение, 1999, с. 34-37.

[Красилов99б] Красилов А.А.,Григорьев Р.Д. Программный комплекс «INTELLSYST». Основы использования. Руководство пользователя по инструментарию интеллектуального программирования. Система Интелсис. Препринт корп. «Галактика», 1999, 250 с.

[Красилов00а] Красилов А.А. Язык и знание. Семантическая грамматика русского языка. //Научно-техническая информация, серия 2, № 10, ВИНИТИ, 2000, с 21-33.

[Красилов00б] Красилов А.А.,Григорьев Р.Д. Программный комплекс «INTELLSYST». Основы использования. Руководство пользователя синтезированной программой. Система Интелсис. Препринт корп. «Галактика», 2001, 150 с.

[Красилов00в] Albert A. Krasilov. The 21st Century - Century of InformaticsCSIT 2000 p.p. 177-183

[Красилов01] Красилов А.А. 21 век - век информатики, // в сб.: Высокие технологии в промышленности России, -М., Международная академия информатизации, 2001, с. 199-203

[Красилов02а] Красилов А.А., Григорьев Р.Д. Интеллектуальное программирование, синтез программ и интерфейсы. ";Высокие технологии в промышленности России";, материалы VIII Международной научно-технической конференции. 11-13 сентября 2002, - М., ОАО ЦНИТИ ";ТЕХНОМАШ";, с.303-307

[Красилов02б] Krasilov A. A., Grigoriev R.D. Intellectual programming, synthesis of programs and their toolbox. CSIT2002, , 18-20 сент. 2002

[Красилов03а] Красилов А.А.,Григорьев Р.Д. Интеллектуальное программирование и автоматический синтез программ. Новосибирск, 9-11 июля 2003, ИСИ СО РАН им. А.П. Ершова (в представлении)

[Красилов03б] Красилов А.А.,Григорьев Р.Д. Интеллектуальное и автоматическое программирование. Международный форум по информации. - М., ВИНИТИ, том 28, № 2, 2003, с. 30-38

[Красилов03в] Красилов А.А Информация, знание и информатика: концептуальные аспекты. Международный форум по информации. - М., ВИНИТИ, том 28, № 4, 2003, с. 10-26

[Красилов03г] Красилов А.А Экология информации и знаний. в печати. - М., ВИНИТИ, 2004, 35 с.

[Кристиан89] Кристиан К. Руководство по программированию на языке Модула-2. - М., Мир, 1989. - 464 с.

[Кристофидес78] Кристофидес Н. Теория графов.Алгоритмический подход. - М., Мир, 1978, - 432 с.

[Крон78] Крон Г. Тензорный анализ сетей. - М., Советское радио,1978, - 720с.

[Кузнецов80] Кузнецов И.П. Семантические представления М., Наука, 1980. - 295 с.

[Кузнецов97] Кузнецов А.А. Базовый курс информатики. - М., Информатика и образование, 1997, N 1, с.12-17

[Кук90] Кук Д., Бейз Г. Компьютерная математика. - М., Наука, 1990, - 384 с.

[Кулагина79] Кулагина О.С. Исследования по машинному переводу. - М., Наука, 1979

[Куликовский87] Куликовский Л.Ф., Мотов В.В. Теоретические основы информационных процессов. - М., Высшая школа, 1987, - 248 с.

[Курбаков68] Курбаков К.И. Кодирование и поиск информации в автоматическом словаре. - М., 1968

[Кэмпбел-Келли78] Кэмпбел-Келли М. Введение в макросы. - М., Советское радио, 1978, - 152 с.

[Лавров82] Лавров С.С. Синтез программ. - К., Кибернетика, 1982, N 6

[Лазарев84] Лазарев В.Г., Пийль Е.И., Турута Е.Н. Построение программируемых логических устройств. - М.,Энергоатомиздат,1984,-480 с.

[Ларичев89] Ларичев О.И., Мечитов А.И., Мошкович Е.М., Фуремс Е.М. Выявление экспертных знаний. -М.: Наука. 1989. -128с.

[Левин91] Левин Р., Дранг Д., Эделсон Б. Практическое введение в технологию искусственного интеллекта и экспертных систем с иллюстрациями на Бейсике. - М., Финансы и статистика, 1991, - 240 с.

[Левитин89] Левитин К.Е. Прощание с АЛГОЛом. - М., Знание, 1989, - 224 с.

[Ледли61] Ледли Р.С., Ластед Л.Б. Объективные основания диагноза. Роль символической логики, теории вероятностей и теории статистических решений в анализе мышления врача. - М., ИИЛ, Кибернетический сборник, N 2, 1961

[Лейбниц] Лейбниц Г.В. Собрание сочинений. - М., Мысль. Т.1. 1982, - 638с. Т.2. 1983, - 688 с. Т.3. 1984, - 735 с. Т.4. 1989, - 556с.

[Лейчик77] Лейчик В.М., Смирнов И.П., Суслова И.М. Терминология информатики (теоретические и практические вопросы). Итоги науки и техники, сер. Информатика, т.2, ВИНИТИ, - М., 1977

[Лекции93] Лекции лауреатов премии Тьюринга за первые двадцать лет 1966-1985. - М., Мир, 1993, - 560 с.

[Липский88] Липский В. Комбинаторика для программистов. М., Мир,1988, - 216 с.

[Лисков89] Лисков Б., Гатэг Дж. Использование абстракций и спецификаций при разработке программ. - М., Мир, 1989. - 424 с.

[Ловицкий80] Ловицкий В.А. Система, понимающая естественный язык. - Киев, Кибернетика, 1980, N 6

[Логический90] Логический подход к искусственному интеллекту. От классической логики к логическому программированию. - М., Мир, 1990,-531 с.

[Логический98] Логический подход к искусственному интеллекту. От модальной логики к логике баз данных. Перевод с франц., - М., Мир, 1998, 496 с.

[Логическое88] Логическое программирование. //Сб.: - М., Мир,1988,- 368 с.

[Лозовский82] Лозовский В.С. Экстенсиональная база данных на основе семантических сетей. Изв. АН СССР, Техническая кибернетика, 1982, N 2

[Лорьер90] Лорьер Ж.-Л. Системы искусственного интеллекта. - М., Мир, 1990. - 568 с.

[Льюис79] Льюис Ф., Розенкранц Д., Стирнз Р. Теоретические основы проектирования компиляторов. - М., Мир, 1979, 656 с.

[Любарский90] Любарский Ю.Я. Интеллектуальные информационные системы. - М., Наука, 1990. - 232 с.

[Ляпунов63] Ляпунов А.А., Яблонский С.В. Теоретические проблемы кибернетики. //Проблемы кибернетики, 1963, вып.9, с. 5-22

[Майерс80] Майерс Г. Дж. Надежность программного обеспечения. - М., Мир, 1980

[Майерс82] Майерс Г. Искусство тестирования программ. - М., Финансы и статистика, 1982

[Майерс85] Майерс Г. Архитектура современных ЭВМ. В двух томах. - М., Статистика, 1985, 365+310 с.

[Макаровский80] Макаровский Б.Н. Информационные системы и структуры данных. - М., Статистика, 1980

[Маккиман80] Маккиман У., Хорнинг Дж., Уортман Д. Генератор компиляторов. - М., Статистика, 1980, - 528 с.

[Мальковский80] Мальковский М.Г. Словарь системы. //В кн.: Представление знаний в системах искусственного интеллекта. - М., Знание, 1980

[Мальцев86] Мальцев А.И. Алгоритмы и рекурсивные функции. - М., Наука, 1986, - 368 с.

[Мальцев90] Мальцев А.И. Алгебраические системы. - М., Наука, 1990, - 392с.

[Марков84] Марков А.А., Нагорный Н.М. Теория алгорифмов. - М., Наука, 1984, - 432 с.

[Маркус70] Маркус С. Теоретико-множественные модели языков. - М., Наука, 1970, - 332 с.

[Мартин75] Мартин Дж. Сети связи и ЭВМ. Ч.1, 1974. Ч.2, - М., Связь, 1975

[Мартин80] Мартин Дж. Организация баз данных в вычислительных системах.- М., Мир, 1980. - 662 с.

[Мартин84] Мартин Дж. Планирование развития автоматизированных систем. - М., Финансы и статистика, 1984

[Мартин87] Мартин Дж. Видеотекс и информационное обслуживание общества. - М., Радио и связь, 1987, - 183 с.

[Маслов83] Маслов С.Ю. Асимметрия познавательных механизмов и ее следствия. //В кн.: Семиотика и информатика, 1983, т.20

[Маслов86] Маслов С.Ю. Теория дедуктивных систем и ее применения. - М., Радио и связь, 1986, - 134 с.

[Матемвыв67] Математическая теория логического вывода. - М., Наука, 1967

[Матеммод89] Математическое моделирование. Методы описания и исследования сложных систем. - М., Наука, 1989, - 271 с.

[Матемэнц85] Математическая энциклопедия. Т.т.1-5. - М., Советская энциклопедия, 1985

[Маурер80] Маурер У. Введение в программирование на языке ЛИСП. - М., Мир, 1976, - 104 с.

[Машина86] Машинный фонд русского языка: идеи и суждения. - М., Наука, 1986

[Мейер82] Мейер Б., Бодуэн К. Методы программирования. Т.1,2. - М., Мир, 1982, 358+368 с.

[Мейер87] Мейер Д. Теория реляционных баз данных. - М., Мир, 1987, - 608с.

[Минский78] Минский М. Структура для представления знаний. //В кн.: Психология машинного зрения. - М., Мир, 1987

[Минский79] Минский М. Фреймы и представление знаний. - М., Энергия, 1979, - 150 с.

[Минскин87] Минскин Е.М. От игры к знаниям. //Пособие для учителя. - М., Просвещение, 1987

[Михайлов68а] Михайлов А.И., Черный А.И., Гиляревский Р.С. Основы информатики. - М., Наука, 1968, - 756 c.

[Михайлов80б] Михайлов Б.М. Автоматизация процесса ведения и изготовления документации программного обеспечения в АСУ. - М., Советское радио, 1980

[Моисеев79] Моисеев Н.Н. Математика ставит эксперимент М., Наука, 1979,- 223 с.

[Моисеев85] Моисеев Н.Н. Информатика: новые пути познания законов природы и общества. //Вестник АН СССР, 1985, N 5, с.128-135

[Молокова85] Молокова О.С. Формирование индивидуального объяснения в экспертных системах. //Изв. АН СССР, Техническая кибернетика,1985, N 5

[Моль75] Моль А., Фукс В., Касслер М. Искусство и ЭВМ. - М., Мир, 1975, - 558 с.

[Мульти71] Мультипроцессорные вычислительные системы. - М., Энергия, 1971

[Набебин96] Набебин А.А. Логика и Пролог в дискретной математике. - М., МЭИ, 1996, -452 с.

[Налимов74] Налимов В.В. Вероятностные модели языка. - М., Наука, 1974

[Нейлор91] Нейлор К. Как построить свою экспертную систему. - М., Энергоатомиздат, 1991, - 286 с.

[Непейвода78] Непейвода Н.Н. Соотношение между правилами естественного вывода и операторами алгоритмических языков высокого уровня. ДАН СССР, т.239, 1978, N 4

[Непейвода79] Непейвода Н.Н. Устойчивая истинность и вычислимость. // Кн: Исследования по теории алгорифмов и математической логике, - М., Наука, 1979, с 78 - 89

[Непейвода81] Непейвода Н.Н., Свириденко Д.И. Программирование с логической точки зрения. Т.1 и 2, Новосибирск, ИМ СО АН СССР, 1981

[Непейвода82] Непейвода Н.Н., Свириденко Д.И. К теории синтеза программ. //В сб.: Математическая логика и теория алгоритмов М., Наука, 1982

[Нечаев75] Нечаев В.И. Числовые системы. - М., Просвещение, 1975, - 200с.

[Нечеткие86] Нечеткие множества и теория возможностей. - М., Советское радио, 1986, - 406 с.

[Николов89] Николов Р., Сендова Е. Начала информатики. Язык ЛОГО. - М., Наука, 1989. - 176 с.

[Нильсон73а] Нильсон Н.Дж. Искусственный интеллект. Методы поиска решений. - М., Мир, 1973, - 272 с.

[Нильсон73б] Нильсон Н.Дж. Методы поиска решений. - М., Мир, 1973

[Нильсон85] Нильсон Н.Дж. Принципы искусственного интеллекта. - М., Радио и связь, 1985. - 280 с.

[НовостиИИ] Новости искусственного интеллекта. - М., Российская Ассоциация искусственного интеллекта, с 1991 (4 раза в год).

[Ньюмен76] Ньюмен У., Спрулл Р. Основы машинной графики. - М., Мир, 1976, - 573 с.

[Обработка89] Обработка нечеткой информации в системах принятия решений. - М., Радио и связь, 1989. - 304 с.

[Оракл92] Сервер ORACLE7 Справочное руководство по языку SQL.Автор: Брайн Линдер, учетный номер 778-70-1292, декабрь 1992, - 680 с.

[Оре80] Оре О. Теория графов. - М., Наука, 1980, - 336 с.

[Осипов90] Осипов Г.С. Инструментарий для экспертных систем. Технология SIMER + MIR. //Программные продукты и системы, 1990, N3, с.23-32

[Осуга89] Осуга С. Обработка знаний. - М., Мир, 1989. - 293 с.

[Пайл84] Пайл Я. Ада - язык встроенных систем. - М., Финансы и статистика, 1984, - 238 с.

[Пакштас89] Пакштас А. Распределенные программные конфигурации. Анализи разработка. Вильнюс, Мокслас, 1989. - 223 с.

[Перегудов87] Перегудов М.А., Халамайзер А.Я. Бок о бок с компьютером. - М., Высшая школа, 1987

[Першиков91] Першиков В.И., Савинков В.М. Толковый словарь по информатике. Более 10000 терминов. - М., Финансы и статистика,1991,- 543 с.

[Петров67] Петров Ю.А. Логические проблемы абстракций осуществимости. - М., Наука, 1967

[Пиотровский74] Пиотровский Р.Г. Машинная грамматика для АСУ и АИСП. Тюмень, 1974

[Пиотровский75] Пиотровский Р.Г. Текст, машина, человек. - Л., Наука, 1975, - 328 с.

[Питерсон84] Питерсон Дж. Теория сетей Петри и моделирование систем. - М., Мир, 1984. - 264 с.

[Поваляев87] Поваляев С.А. Основы информатики. Справочное пособие. - Минск, изд. Университетское, 1987, - 128 с.

[Пойа76] Пойа Д. Математическое открытие. Решение задач: основные понятия, изучение и преподавание. - М., Наука, 1976, - 448 с.

[Половинкин88] Половинкин А.И. Основы инженерного творчества. - М., Машиностроение, 1988. - 368 с.

[ПоповИ81] Попов И.И., Романенко А.Г. Моделирование информационных систем (теория и приложения). ВИНИТИ, Итоги науки и техники, т.5, - М.,1981

[ПоповЭ82] Попов Э.В. Общение с ЭВМ на естественном языке. - М., Наука, 1982. - 360 с.

[ПоповЮ83] Попов Ю.П., Самарский А.А. Вычислительный эксперимент. //Новое в жизни, науке, технике. Сер. Мат. кибернетика. - М., Знание, 1983, вып.11, с.64

[ПоспеловА81] Поспелов Д.А. Логико-лингвистические модели в управлении. - М., Энергоиздат, 1981

[ПоспеловГ85] Поспелов Г.С., Поспелов Д.А. Искусственный интеллект: прикладные системы. - М., Знание, 1985. - 48 с.

[ПоспеловГ86] Поспелов Г.С. Искусственный интеллект. Новая информационная технология. //Сб: Кибернетика. Становление информатики. -М., Наука, 1986, с.106-120

[Построение87] Построение экспертных систем. - М., Мир, 1987, - 443 с.

[Пратт79] Пратт Т. Языки программирования: Разработка и реализация. - М., Мир, 1979. - 574 с.

[Предстинт80] Представление знаний в системах искусственного интеллекта. //В сб.: Материалы семинаров, МДНТП, - М., 1980

[Предстсис89] Представление знаний и экспертные системы. //Сб. научных трудов. АН СССР, Ленинградский институт информатики и автоматизации. - Л., 1989. - 194 с.

[Приобрзн90] Приобретение знаний. //Под ред. С. Осуги, Ю. Саэки. - М., Мир, 1990. - 304 с.

[Проект97] Проект федерального компонента государственного образовательного стандарта начального общего, основного общего и среднего (полного) образования. Образовательная область «Информатика». - М., Информатика и образование, 1997, N 1, с.3-11

[Простое88] Простое и сложное в программировании. - М., Наука, 1988.- 176с.

[Психология78] Психология машинного зрения. - М., Мир, 1978

[Райан89] Райан Д. Инженерная графика в САПР. - М., Мир, 1989. - 392с.

[Расева72] Расева Е., Сикорский Р. Математика метаматематики. - М., Наука, 1972. - 592 с.

[Рафаэл79] Рафаэл Б. Думающий компьютер. - М., Мир, 1979, - 408 с.

[Речевая89] Речевая информатика. //Сб. ст. - М., Наука, 1989. - 130 с.

[Ржанов83] Ржанов А.В. Требуется уточнить предмет и понятие информатики //Наука в Сибири. 1983, N 35

[Робинсон70] Робинсон Дж. Машинно-ориентированная логика, основанная на принципе резолюции. //Кибернетический сборник. Новая серия.Вып.7, - М., Мир, 1970, с. 194-218

[Роджерс89] Роджерс Д. Алгоритмические основы машинной графики. - М., Мир, 1989. - 512 с.

[Розенфельд72] Розенфельд А. Распознавание и обработка изображений. - М., Мир, 1972

[Рот91] Рот М. Интеллектуальный автомат: компьютер в качестве эксперта. - М., Энергоатомиздат, 1991, - 80 с.

[Рубашкин89] Рубашкин В.Ш. Представление и анализ смысла в интеллектуальных информационных системах. - М., Наука, 1989. - 192 с.

[Рыбина79] Рыбина Г.В., Строганова Н.А. и др. Система представления понятийных знаний с использованием фреймов. //В сб.: Вопросы кибернетики. Интеллектуальные банки данных, - М., 1979

[Сакман73]Сакман Г. Решение задач в системе человек-ЭВМ. -М., Мир, 1973

[Саломаа86] Саломаа А. Жемчужины теории формальных языков. - М., Мир, 1986, 160 с.

[Семантика80] Семантика языков программирования. //Сб. статей. - М., Мир, 1980, - 397 с.

[Сильдмяэ80] Сильдмяэ И.Я. Значение и смысл. АН СССР, - М., 1980

[Сильдмяэ83] Сильдмяэ И.Я. Действительность - текст-знание. //Уч. записки Тарт. ун-та, вып. 621, Тарту, 1983

[Системное67] Системное программирование. //Сб. статей. - М., Советское радио, 1967

[Система92] Система сертификации ГОСТ. Основные положения. Требования к органу по сертификации и порядок его аккредитации. Правила проведения сертификации продукции (общие требования). Требования к испытательной лаборатории и порядке их аккредитации. Правила ведения Государственного Реестра Системы. Государственный комитет Российской Федерации по стандартизации, метрологии и сертификации при президенте Российской Федерации. - М., 1992, - 113 с.

[Системы85] Системы автоматизации проектирования. - М., Мир, 1985

[Скороходько68] Скороходько Э.Ф. и др. Информационно-поисковая система БИТ. - Киев, Наукова думка, 1968

[Скороходько74] Скороходько Э.Ф. Семантические связи в лексике и текстах. //В сб.: Вопросы информационной теории и практики. - М., ВИНИТИ, 1974, N 23

[Скэнлон91] Скэнлон Л. Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера. - М., Радио и связь, 1991, - 336 с.

[Слейгл73] Слейгл Дж. Искусственный интеллект. Подход на основе эвристического программирования. - М., Мир, 1973, - 320 с.

[Смальян81] Смальян Р. Теория формальных систем. - М., Наука, 1981, - 208с.

[Смирнов72] Смирнов В.А. Формальный вывод и логические исчисления.

- М., Наука, 1972, - 272 с.

[Советский89] Советский энциклопедический словарь. - М., Советская энциклопедия, 1989, - 1632 с.

[Современный81] Современный русский язык. В трех частях. //Учебное пособие. - М., Просвещение, 1981.Часть I. - 192с.Часть II. - 372с. Часть III. - 272с.

[Современный86] Современный компьютер. //Сб. научно-популярных статей. - М., Мир, 1986

[Сойер90] Сойер Б., Фостер Д.Л. Программирование экспертных систем на Паскале. - М., Финансы и статистика, 1990, - 192 с.

[Соколов89] Соколов Е.Н., Вайткявичюс Г.Г. Нейроинтеллект: от нейрона к нейрокомпьютеру. - М., Наука, 1989. - 238с.

[Справочная82] Справочная книга по математической логике. - М., Наука. Ч.1. Теория моделей. 1982, - 392 с. Ч.2. Теория множеств. 1982, - 376 с. Ч.3. Теория рекурсий. 1982,- 360 с. Ч.4. Теория доказательств и конструктивная математика. 1983, - 392 с.

[Справочник90] Справочник. Искусственный интеллект. В трех книгах. Кн.1. Системы общения и экспертные системы. - 462 с. Кн.2. Модели и методы. Кн.3. Программные и аппаратные средства. - М., Радио и связь, 1990

[Степанов64] Ю.С. О предпосылках лингвистической теории значения. - М., Вопросы языкознания, 1964, N 5

[Степанов71] Степанов Ю.С. Семиотика. - М., Наука, 1971

[Стерлинг90] Стерлинг Л., Шапиро Э. Искусство программирования на языке Пролог. - М., Мир, 1990, - 235 с.

[Стефик85] Стефик М., Эйкинс Я. и др. Организация экспертных систем. //Кибернетический сборник. Вып.22, - М., Мир, 1985, с.170-220

[Тамм77] Тамм Б.Г., Тыугу Э.Х. Пакеты программ. Изв. АН СССР, Техническая кибернетика, 1977, N 5

[Тамм85] Тамм Б.Г., Тыугу Э.Х. Применение знаний в автоматизированных системах проектирования и управления. //В сб.: Прикладная информатика. Вып. 1(8), - М., Финансы и статистика, 1985

[Таунсенд90] Таунсенд К., Фохт Д. Проектирование и программная реализация экспертных систем на персональных ЭВМ. - М., Финансы и статистика, 1990,- 320 с.

[Теоринф89] Теория телетрафика в системах информатики. //Сб. научных трудов. - М., Наука, 1989

[Термин75] Терминологический словарь по информатике. МЦНИТИ, 1975

[Термин89] Терминологический словарь по автоматике, информатике и вычислительной технике. //Справочное пособие для СПТУ. - М., Высшая школа, 1989, - 192 с.

[Тиори85] Тиори Т., Фрей Дж. Проектирование структур баз данных. - М., Мир, 1985. - 230 с.

[Тихонов79] Тихонов А.Н., Арсенин В.Я. Методы решения некорректных задач.-М., Наука, 1979

[Толковый90] Толковый словарь по вычислительным системам. - М., Машиностроение, 1990

[Тоценко90] Тоценко В.Г., Александров А.В., Парамонов Н.Б. Корректность, устойчивость, точность программного обеспечения. - Киев, Наукова думка, 1990, - 199 с.

[Требования84] Требования и спецификации в разработке программ. //В сб. статей. - М., Мир, 1984

[Ту78] Ту Дж., Гонсалес Р. Принципы распознавания образов. - М., Мир, 1978,- 413c

[Турский81] Турский В. Методология программирования. - М., Мир, 1981, 68 с.

[Тыугу77] Тыугу Э.Х. Формирование модели мира в системах искусственного интеллекта. ВИНИТИ, - М., 1977

[Тыугу84] Тыугу Э.Х. Концептуальное программирование. - М., Наука, 1984. - 256 с.

[Уемов78] Уемов А.И. Системный подход и общая теория систем. - М., Мысль, 1978

[Уинстон80] Уинстон П. Искусственный интеллект. - М., Мир, 1980

[Уистоков68] У истоков классической науки. //Сб. статей. - М., Наука, 1968

[Ульман90] Ульман Дж. Базы данных на Паскале. - М.: Машиностроение, 1990,- 386c.

[Универс68] Универсальный язык программирования ПЛ/1. - М., Мир, 1968,- 352c.

[Уоллер81] Уоллер Л. Специальная машина, работающая на языке ЛИСП. Электроника, 1981, т.54, N 17

[Уолш75] Уолш Д.А. Руководство по созданию документации для математического обеспечения. - М., Наука, 1975, - 128 с.

[Уотермен89] Уотермен Д. Руководство по экспертным системам. - М., Мир, 1989, - 390 с.

[Уэзерелл82] Уэзерелл Ч. Этюды для программистов. - М., Мир, 1982, - 288с.

[Файн82] Файн В.С. Новые аспекты машинного понимания сообщений. АН СССР, Техническая кибернетика, 1982, N 5

[Фант64] Фант Г. Акустическая теория речеобразования. - М., Наука, 1964

[Фаронов92] Фаронов В.В. Турбо Паскаль (в 3-х книгах), Кн.1. Основы ТурбоПаскаля, 1992, 286 с., Кн.2. Библиотека Turbo Vision, 1993, 429 с. - М., МВТУ-ФЕСТО ДИДАКТИК

[Фейс71] Фейс Р. Модальная логика. - М., Наука, 1971, - 520 с.

[Феферман71] Феферман С. Числовые системы. Основания алгебры и анализа. - М., Наука, 1971, - 440 с.

[Фигурнов90] Фигурнов В.Э. IBM PC для пользователя. - М., Финансы и статистика, 1990, - 239 с.

[Фланаган68] Фланаган Дж. Анализ, синтез и восприятие речи. - М., Связь, 1968

[Фокс82] Фокс А., Пратт М. Вычислительная геометрия. Применение в проектировании и на производстве. - М., Мир, 1982, - 304 с.

[Фокс85] Фокс Дж. Программное обеспечение и его разработка. - М., Мир, 1985, - 368 с.

[Фоли85] Фоли Дж., вэн Дэм А. Основы интерактивной машинной графики. кн.1. - 368 с. кн.2. - 368 с. - М., Мир, 1985

[Фостер74] Фостер Дж. Обработка списков. - М., Мир, 1974, - 72 с.

[Фреге77] Фреге Г. Смысл и денотант. //В кн.: Семиотика и информатика. Вып.8, - М., ВИНИТИ, 1977

[Фрейденталь69] Фрейденталь Х. Язык логики. - М., Наука, 1969, - 136 с.

[Фридмен86] Фридмен М., Ивенс Л. Проектирование систем с микрокомпьютерами. - М., Мир, 1986, 405 с.

[Фу77] Фу К. Структурные модели в распознавании образов. - М., Мир,1977,- 320 с.

[Хамбли76] Хамбли Э. Программирование таблиц решений. - М., Мир, 1976, - 86 с.

[Хант78] Хант Э. Искусственный интеллект. - М., Мир, 1978, - 560 с.

[Хао62] Ван Хао. На пути к механической математике. Кибернетический сборник. Вып.5, - М., ИИЛ, 1962, с. 114-165

[Харари73] Харари Ф. Теория графов. - М., Мир, 1973, - 300 с.

[Харкевич60] Харкевич А.А. О ценности информации. Проблемы кибернетики, вып.4, 1960

[Хейес89] Хейес-Рот Ф., Уотерман Д., Ленат Д. Построение экспертных систем. -М., Мир, 1989. -430с.

[Хельбиг80] Хельбиг Г. Семантическое представление знаний в вопросно-ответной системе. //В сб.: Представление знаний и моделирование процессов понимания. Новосибирск, 1980

[Хендерсон83] Хендерсон П. Функциональное программирование. - М., Мир, 1983

[Хендрикс89] Хендрикс Д. Компилятор языка Си для микроЭВМ. - М., Радио и связь, 1989. - 240с.

[Хоар89] Хоар Ч. Взаимодействующие последовательные процессы. - М., Мир, 1989. - 264 с.

[Хоггер88] Хоггер К. Введение в логическое программирование. - М., Мир, 1988, - 348 с.

[Холл75] Холл А.Д. Опыт методологии для системотехники. - М., Советское радио, 1975, - 448 с.

[Холл78] Холл П. Вычислительные структуры. Введение в нечисловое программирование. - М., Мир, 1978, - 216 с.

[Холстед81] Холстед М.Х. Начала науки о программах. - М., Финансы и статистика, 1981, - 128 с.

[Хомский61] Хомский Н. Три модели для описания языка. Кибернетический сборник. Вып.2, - М., ИИЛ, 1961

[Хомский62] Хомский Н. О некоторых формальных свойствах грамматик. Кибернетический сборник. Вып.5, - М., ИИЛ, 1962, с. 279-311

[Хомский96] Хомский Н. Язык и проблема знания (5 Лекций в МГУ). Вестник Московского университета, серия 9, Филология, 4, 1995, с. 130-156; 6, 1995, с. 110-134; 2, 1996, с. 103-121; 4, 1996, с. 133-162, 6, 1996, с. 157-185

[Хопгуд72] Хопгуд Ф. Методы компиляции. - М., Мир, 1972, - 160 с.

[Хорошевский86] Хорошевский В.Ф. Разработка и реализация экспертных систем - инструментальный подход. // Изв.АН СССР, Техническая кибернетика, 1986, N 5

[Хоффман80а] Хоффман Л.Дж. Современные методы защиты информации. - М., Советское радио, 1980, - 264 с.

[Хоффман80б] Хоффман Л.Дж. Структурный подход к программированию. - М., Советское радио, 1980

[Хьюз80] Хьюз ДЖ., Мичтом Дж. Структурный подход к программированию. - М., Мир, 1980, - 280 с.

[Хювенен90] Хювенен Э., Сеппянен Й. Мир Лиспа. Т.1.Введение в язык Лисп и функциональное программирование. - 448 с. Т.2. Методы и системы программирования. - 320 с. - М., Мир, 1990

[Цаленко89] Цаленко М.Ш. Моделирование семантики в базах данных. - М., Наука, 1989. - 288 с.

[Цикритзис85] Цикритзис Д., Лоховский Ф. Модели данных. - М., Финансы и статистика, 1985. - 343 с.

[Цыпкин84] Цыпкин Я.З. Основы информационной теории идентификации. - М., Наука, 1984

[Чень83] Чень Ч., Ли Р. Математическая логика и автоматическое доказательство теорем. - М., Наука, 1983. - 360 с.

[Черный76] Черный А.И., Жданова Г.С., Колобродова Е.С., Мышева И.А., Полушкин В.А., Садырева Р.Н. Терминология информатики (библиографический указатель работ). ВИНИТИ, Итоги науки и техники, сер. Информатика, т.5, - М., 1976

[Черняк02] Черняк Л. Библиотека знаний Cyc. Открытые системы. СУБД. № 11 (79), М., 2002, - с. 18-21.

[Черч60] Черч А. Введение в математическую логику М., ИИЛ,1960, - 486 с.

[Чечкин91] Чечкин А.В. Математическая информатика. - М., Наука, 1991, - 414 с.

[Шанин65] Шанин Н.А., Давыдов Г.В., Маслов С.Ю., Минц Г.Е., Оревков В.В., Слисенко А.О. Алгорифм машинного поиска естественного логического вывода в исчислении высказываний. - М.-Л., Наука, 1965, - 40 с.

[Шанский81] Шанский Н.М., Иванов В.В. Современный русский язык. - М., Просвещение, Часть I. Введение. Лексика. Фразеология. Фонетика. Графика и Орфография. - 192 с. Часть II. Словообразование. Морфология. - 272 с. Часть III. Синтаксис. Пунктуация. - 272 с.

[Шенк80] Шенк Р. Обработка концептуальной информации. - М., Энергия, 1980,-360 с.

[Шенфильд75] Шенфильд Дж. Математическая логика. - М., Наука, 1975, - 528 с.

[Шишмарев78] Шишмарев А.И., Заморин А.П. Англо - русско - немецко - французский толковый словарь по вычислительной технике и обработке данных, 4132 термина. - М., Русский язык, 1978, - 416 с.

[Шоу81] Шоу А. Логическое проектирование операционных систем. - М., Мир, 1981. - 360 с.

[Шураков81] Шураков В.В. Надежность программного обеспечения систем обработки данных. - М., Статистика, 1981, - 216 с.

[Ыйм78] Ыйм Х., Салувеэр М. Фреймы и понимание языка. //Уч. зап. Тартус. ун-та, N 472, 1978

[Ыйм80] Ыйм Х. Язык, значения, знания. //В кн.: Семантика и представление знаний. Уч.зап. Тартусского ун-та, вып.519, - Тарту, 1980

[ЭВМ84] ЭВМ пятого поколения. Концепции, проблемы, перспективы М., Финансы и статистика, 1984, - 110 с.

[Эксперт87] Экспертные системы: принципы работы и примеры. - М., Радио и связь, 1987, - 223 с.

[Эксперт89] Экспертные системы: состояние и перспективы. //Сб. ст. - М., Наука, 1989. - 152 с.

[Эксперт90] Экспертные системы для персональных компьютеров. Методы, средства, реализации. Справочное пособие. - Минск, Вышэйшая школа, 1990, - 198 с.

[Элти87] Элти Дж., Кумбс М. Экспертные системы: концепции и примеры. - М., Радио и связь, 1987, - 191 с.

[Эшби68] Эшби У.Р. Что такое разумная машина? //В сб.: Кибернетика ожидаемая и кибернетика неожиданная. - М., 1968

[Яблонский79] Яблонский С.В. Введение в дискретную математику. - М., Наука, 1979, -384 с.

[Яглом73] Яглом А.М., Яглом И.М. Вероятность и информация. - М., Наука, 1973

[Язык88] Язык Пролог в пятом поколении ЭВМ. //Сб. статей. - М., Мир, 1988

[Якубайтис84] Якубайтис Э.А. Информационно-вычислительные сети. - М., Финансы и статистика, 1984. - 232 с.

[Янов58] Янов Ю.И. О логических схемах алгоритмов. //Проблемы кибернетики. Вып.1, - М., Физматгиз, 1958

[Яхно80] Яхно Т.М. Описание системы, выполняющей аналитические преобразования математических выражений. Новосибирск, 1980

[Gartner99] Gartner Group: Knowledge Management Scenario: Trends and Directions for 1998-2003, 1999

1

Смотреть полностью


Скачать документ

Похожие документы:

  1. Моу «якутский городской лицей» п у б л и ч н ы й о т ч ё т 2009-2010 г г

    Документ
    ... ПОЛНЫЕ СЕМЬИ НЕПОЛНЫЕ СЕМЬИ ОПЕКУНЫ МНОГОДЕТНЫЕ СЕМЬИ 487 ... Гин А. - исследовательские методы в обучении - технология внутриклассной ... Е.Н., учитель информатики Жиркова М.М., учитель информатики Замятина А.В., ... программы ЯГЛ, в том числе и в процессах ...
  2. Образовательная программа (61)

    Основная образовательная программа
    ... (в том числе ЕГЭ ... малообеспеченных семей, для ... и проектный методы, игровые методики ... 3 3 литература 2 2 2 2 2 2 иностранный язык 3 3 3 3 3 3 математика 5 5 5 5 5 5 информатика и ИКТ 1 1 1 1 2 1 история 2 2 2 2 2 2 обществознание 1 1 1 1 1 1 география 2 ...
  3. «создание единого информационного пространства»

    Программа
    ... информатики 1 13 1 1 1 Кабинет информатики 2 13 1 1 1 Кабинет информатики 3 13 1 1 1 Кабинет информатики 4 13 1 1 1 Кабинет информатики 5 11 1 1 1 Кабинет информатики ... исследовательские методы обучения ... незащищенных семей и ... курсов, в том числе с ...
  4. За 2011-2012 учебный год (7)

    Анализ
    ... Информатика 9 82 % Ветрова Т.А. Информатика 8 Б 93 % Ветрова Т.А. Информатика 10 А 100 % Ветрова Т.А. Информатика 10 Б 92 % Ветрова Т.А. Информатика ... методы, используемые для диагностики и определения категорий учащихся и их семей ... благодаря тому ...
  5. А а красилов информатика в семи томах том 1 основы информатики

    Книга
    ... ИНФОРМАТИКА В СЕМИТОМАХТом 1. Основы информатики (Введение в информатику) Москва 1997 - 2003 ИНФОРМАТИКАТом 1. Основы информатики (Введение в информатику) Том 2. Информатика смысла (Машинная лингвистика) Том ...

Другие похожие документы..