Системы, основанные на знаниях Ассоциативные сети и системы фреймов

Информац. системы

Критерии надежности
Задачи
Расчет характеристики
Типовые примеры
Отказы изделия
Аналит. определение
Постоянное резервир.
Резервирование замещением
Расчет надежности
Скользящее резервирование
Расчет показателей
Учебник JAVA
Базовые понятия
Объектно-ориентированное
программирование
Работа со строками и классами
Графические примитивы
Обработка событий в JAVA
Апплеты
Создание сетевых приложений
Сетевые средства в JAVA
Экспертные системы
Учебник Delphi
Компьютерные сети
Топология сетей
Адресация
Структура сети
Сетевые службы
Маршрутизаторы
Технологии ISDN
Протоколы маршрутизации
Модель OSI
Корпоративные сети
Стек протоколов TCP/IP
Коммутация каналов
Коммутация пакетов
Удаленный доступ
Система доменных имен
Моделирование
Основы кодирования
Теория информ. процессов
Обмен информацией
Количество информации
Энтропия
Кодирование
Квантование и дискретизация
Теорема Котельникова
Ошибки дискретизации
Учебник по FrontPage
Информационный подход
SQL язык запросов
Ос новные понятия
Выборка данных

Манипулирование данными

Создание базы данных
Устройство ПК
Архитектура ПК
Классификация элементов
Центральный процессор
Внешние устройства
Программное обеспечение

Что такое экспертная система? Обзор исследований в области искусственного интеллекта

Представление знаний Символические вычисления Существует ли способ переключения с активного инструмента "текст" на инструмент "рука" без клавиши "Spacebar"?

Системы, основанные на знаниях Ассоциативные сети и системы фреймов

Объектно-ориентированное программирование Логическое программирование

Представление неопределенности знаний и данных Приобретение знаний

Эвристическая классификация

Иерархическое построение и проверка гипотез

Решение проблем конструирования

Средства формирования пояснений Инструментальные средства разработки экспертных систем

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

Формирование знаний на основе машинного обучения Сети доверия

Рассуждения, основанные на прецедентах Гибридные системы

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

Преимущества и недостатки объектно-ориентированного подхода
Особенность процесса разработки современных сложных программных систем состоит в том, что центр тяжести смещается от программирования к более ранним этапам - анализу и проектированию, поэтому эффективность принятых методик анализа и проектирования имеет определяющее значение для судьбы проекта.
Достоинствами объектно-ориентированного подхода являются следующие.
Распараллеливание работ. Как отмечалось выше, программирование и тестирование отдельных компонентов системы возможно до завершения проектирования, что экономит время разработки. При программировании может возникнуть необходимость внесения изменений в существующие классы или потребоваться введение новых объектов или классов. В этом случае, вернувшись к этапу проектирования или даже к анализу, можно внести изменения и дополнений, не подвергая проект полной переработке.
Упрощение внесения изменений. В отличие от структурного подхода в объектно-ориентированном внесение изменений в проект имеет более локальный характер. В тех случаях, когда изменение носит характер уточнения, вводятся новые классы, наследующие поведение ранее созданных. Наследование (одно из основных свойств классов ) позволяет в этих случаях не только не пересматривать ранее созданные объекты и классы, но даже обойтись без их повторной трансляции. В более сложных случаях, когда меняются методы, определяющие интерфейс классов, изменения в проекте будут более значительными, но и тогда они будут локализованы, затрагивая лишь классы, использующие эти методы.
Переносимость и гибкость архитектуры. Объектно-ориентированная декомпозиция, в результате которой приложение представляется в виде совокупности классов и объектов, обеспечивает гибкость архитектуры системы. В клиент-серверной системе объекты могут размещаться как на клиентских местах, так и на серверах. В гетерогенных сетях возможна реализация классов на компьютерах разных типов, а фиксированный интерфейс каждого класса, определяемый набором его методов, обеспечит правильность функционирования системы. Изменения конфигурации оборудования не потребуют внесения изменений в проект.
Повторное использование программных компонентов. Разрабатываемые в рамках проекта классы обычно отражают типовые проектные решения, поэтому их использование возможно и в других проектах. Возможность повторного использования программных компонентов - одно из наиболее привлекательных свойств объектно-ориентированного подхода. Библиотеки классов, отражающие программистский опыт в определенной области, позволяют значительно снизить объем программирования при разработке новых проектов. При наличии развитых библиотек классов проектирование и программирование новых приложений будет в основном сводиться к сборке системы из готовых компонентов.
Иерархический характер сложных программных систем позволяет значительно повысить эффективность повторного использования компонентов. При этом чем более высокого уровня объекты можно повторно использовать, тем большего эффекта можно достичь [12]. Для того чтобы повторное использование компонентов приносило свои плоды, разработчики программных систем должны [8]:
o осознавать выгоды такого подхода;
o знать, какие части задачи могут быть решены с применением уже существующих программных средств;
o заниматься поиском подходящих для повторного использования программ;
o стремиться непременно найти такие программы;
o использовать их даже в том случае, если они лишь частично совпадают с тем, что программист написал бы сам.
Следует отметить, что основные свойства классов и объектов -инкапсуляция, наследование и полиморфизм - полностью отвечают задаче повторного использования.
Естественность описания. Объектно-ориентированный подход позволяет описывать как статические, так и динамические отношения между объектами модели. По описанию предметной области, выполненному на естественном языке, легко выделить объекты и статические связи между ними. Объекты соответствуют существительным, а связи - глаголам и отглагольным формам. Например, фраза "фирмы выполняют заказы" позволяет выделить классы объектов "фирма" и "заказ" и отношение "выполнять" между ними типа M:N (многие к многим), так как фирма может выполнять много заказов, а заказ может быть выполнен разными фирмами.
Кроме того, свойства наследования и инкапсуляции позволяют каждому участнику проекта рассматривать модель на удобном для него уровне детализации. Руководители проекта могут работать с верхним уровнем модели, где отражаются только основные классы, объекты и связи. Другие разработчики или эксперты имеют возможность опускаться до более мелких, терминальных объектов, их свойств, связей, методов.
Недостатки объектно-ориентированного подхода лежат в области программирования. Динамическое связывание, предполагающее поиск метода в классе, которому принадлежит получающий сообщение объект, приводит к тому, что обращение к методу занимает в 1,75 -2,5 раза больше времени, чем в обычной подпрограмме [1,11]. Это, конечно, замедляет работу приложения. Однако, как указывает Г.Буч, динамическое связывание при использовании строго типизированных языков применяется примерно в 20% случаев от общего числа вызовов методов. Это позволяет снизить непроизводительные потери времени. В приложениях, где такие потери критичны, приходится прибегать к специальным программистским приемам.
Другой недостаток связан с излишней многочисленностью методов и их вызовов. Он вытекает из того, что для доступа ко многим атрибутам объектов (а к защищенным - всегда) используются отдельные методы Вызов метода высокого уровня абстракции приводит к тому, что в системе происходит каскад вызовов - от методов более высоких уровней иерархии к методам более низких уровней. Если время является ограничивающим фактором, такая ситуация может оказаться неприемлемой. Выходом может служить оптимизация начального варианта системы, связанная с уменьшением числа вызовов. Например, защищенные переменные можно сделать общедоступными и обращаться к ним напрямую, уменьшая тем самым число вызовов.
На компьютерах с сегментированной организацией памяти объектно-ориентированные системы при работе могут осуществлять интенсивный межсегментный обмен, что сказывается на их производительности. Это связано с тем, что классы обычно объявляются в разных файлах и соответственно реализуются в разных сегментах. Решение этой проблемы заключается в перераспределении классов по модулям. При этом логическое описание модели не изменяется.
Для задач реального времени, выполняющихся в высоком темпе, нежелательным является динамическое создание и удаление объектов, что также активно используется в объектно-ориентированных языках. В [1] предлагается выполнять размещение таких объектов априорно, в процессе создания программы, а не во время работы критичных по времени алгоритмов. Преодоление перечисленных затруднений связано с дополнительной работой программистов, но в то же время не требует очень больших усилий. В большинстве случаев действия, которые надо предпринять, достаточно очевидны. Кроме того, подобные проблемы возникают весьма редко. Следует также заметить, что объектно-ориентированные языки включают средства, позволяющие достичь более высокого быстродействия программ по сравнению с традиционными языками [1,11]. Таким образом, следует признать, что недостатки объектно-ориентированного подхода с лихвой компенсируются его достоинствами.
Проблемы, связанные с переходом к объектно-ориентированным технологиям, состоят в следующем.

Математический анализ, лекции по физике Компьютерные сети