
- •Лекция 1 Введение. Основные понятия и определения Основные задачи теории информационных систем.
- •Краткая историческая справка.
- •Основные понятия теории систем
- •Выбор определения системы.
- •Лекция 2 Основные понятия и определения Основное содержание первой лекции
- •Понятие информации
- •Открытые и закрытые системы
- •Модель и цель системы
- •Управление
- •Информационные динамические системы
- •Классификация и основные свойства единиц информации
- •Системы управления
- •Реляционная модель данных
- •Технические, биологические и др. Системы
- •Детерминированные и стохастические системы
- •Открытые и закрытые системы
- •Хорошо и плохо организованные системы
- •Классификация систем по сложности
- •Модели сложных систем управления
- •Структурная сложность
- •Иерархия
- •Многообразие
- •Уровни взаимодействия
- •Динамическая сложность
- •Случайность в сравнении с детерминизмом и сложностью
- •Шкалы времени
- •Теоретическое решение
- •Модели сложных систем управления (по Вавилову а.А)
- •Лекция 4 Закономерности систем Целостность
- •Интегративность
- •Коммуникативность
- •Иерархичность
- •Эквифинальность
- •Историчность
- •Закон необходимого разнообразия
- •Закономерность осуществимости и потенциальной эффективности систем
- •Закономерность целеобразования
- •Системный подход и системный анализ
- •Лекция 5 Уровни представления информационных систем
- •Методы и модели описания систем
- •Качественные методы описания систем
- •Методы типа мозговой атаки.
- •Методы типа сценариев.
- •Методы экспертных оценок.
- •Методы типа «Дельфи».
- •Методы типа дерева целей.
- •Морфологические методы.
- •Методика системного анализа.
- •Количественные методы описания систем
- •Лекция 6 Кибернетический подход к описанию систем
- •Моделирование систем
- •Лекция 7 Алгоритмы на топологических моделях.
- •Задачи анализа топологии
- •Представление информации о топологии моделей
- •Переборные методы Поиск контуров и путей по матрице смежности
- •Модифицированный алгоритм поиска контуров и путей по матрице смежности
- •Поиск контуров и путей по матрице изоморфности
- •Сравнение алгоритмов топологического анализа
- •Декомпозиция модели на топологическом ранге неопределенности
- •Сортировка модели на топологическом ранге неопределенности
- •Нахождение сильных компонент графа
- •Заключение
- •Лекция 8 Теоретико-множественное описание систем
- •Предположения о характере функционирования систем
- •Система, как отношение на абстрактных множествах
- •Временные, алгебраические и функциональные системы
- •Временные системы в терминах «вход — выход»
- •Лекция 9 Формы представления модели
- •Нормальная форма Коши
- •Системы нелинейных дифференциальных уравнений различных порядков
- •Гиперграфы
- •Лекция 10 Динамическое описание систем
- •Детерминированная система без последствий
- •Детерминированные системы без последствия с входными сигналами двух классов
- •Учет специфики воздействий
- •Детерминированные системы с последствием
- •Стохастические системы
- •Лекция 11 Агрегатное описание систем
- •Лекция 12 Рецепция информации. Свойства бистабильных систем
- •Устойчивость информационных нелинейных систем. Классификация стационарных состояний
- •Обратимые и необратимые операции.
- •Лекция 13 Концепции общей теории информации Общее понятие Информации
- •Эволюция информации
- •1. Неживые формы
- •2. Простейшие формы жизни
- •3. Клеточная форма жизни
- •4. Многоклеточные формы жизни
- •5. Социальные образования
- •Свойства информации и законы ее преобразования
- •1. Прием информационных кодов
- •2. Интерпретация информации
- •3. Структура компонент данных имвс
- •4. Структура компонент шаблонов действий имвс
- •5. Реализация информации
- •7. Навигация данных в структуре имвс
- •Заключение
- •Лекция 14 Новая Сеть
- •Встречайте биоинформатику
- •Лекция 15 Архитектуры и технологии разработки интероперабельных систем Введение
- •Потребности применений
- •Компоненты архитектуры
- •Интеграция corba и www-технологий
- •Семантическая интероперабельность
- •Системный анализ
- •Определение требований
- •Оценка осуществимости
- •Оценка риска
- •Логическая модель
- •Метод прототипа
- •Выяснение проблем заказчика
- •Проектирование
- •Нисходящее проектирование
- •Принципы уровней абстракции:
- •Моделирование данных
- •Реализация
- •Повышение надежности системы
- •Тестирование
- •Принципы тестирования
- •Виды тестирования:
- •Отладка
- •Внедрение
- •Лекция 17 Что Business Intelligence предлагает бизнесу
- •Данные, информация и технологии
- •Лекция 18 Данные vs. Информация
- •Литература
Повышение надежности системы
Защитное программирование. В начале каждой процедуры помещается блок проверки входных данных на правильность и осмысленность. Каждая компонента должна предполагать, что все другие содержат ошибки. Все получаемые данные считаются ошибочными, пока не будет доказано обратное. Самая надежная величина, не требующая никакой проверки, может быть ошибочна. НО: если выполнять все мыслимые проверки, то проверочная часть программы может стать слишком сложной и следовательно в ней самой могут быть ошибки.
Избыточность позволяет по части данных проверить остальную часть. Если избыточности нет, то ее можно ввести.
Изоляция ошибок. Ошибка в части системы, не должна повлиять на другие части. Например, в операционных системах ошибка в одной программе не должна повлиять на другие программы и саму операционную систему.
Основная причина ошибок -- сложность.
Мерой сложности объекта является количество интеллектуальных усилий, необходимых для понимания этого объекта. Ясно, что для каждого человека эта величина разная. Что сложно для одного человека, может быть просто для другого.
Сложность системы зависит от количества и качества связей между ее компонентами и самих компонет.
Простая система |
Сложная система |
|
|
Чтобы уменьшить сложность объекта, вводятся уровни абстракции, иерархическая структура или модульность. В последнем случае проблема (программа) разбивается на части (модули) до тех пор, пока их не удастся решить (запрограммировать).
Тестирование
Тестирование - это поиск ошибок в информационной системе.
Ошибка - это несоответствие того, что есть, тому, что должно быть.
Надежность - это вероятность безотказной работы в течение некоторого периода времени, рассчитанная с учетом стоимости каждого отказа.
Принципы тестирования
Тестирование проводится для того, чтобы найти немногие оставшиеся ошибки в хорошо спроектированной системе и тем самым повысить ее надежность, а следовательно, ценность. С помощью тестирования нельзя добиться хорошей надежности в плохо спроектированной системе.
Если мы тестируем программу, то нам нужно окупить затраты на тестирование, каким-либо образом повысив стоимость программы. Это можно сделать только повысив надежность программы, ради чего тестирование и проводится. Повысить надежность можно только исправлением ошибок, внесенных в процессе разработки.
Удачным считается тест, который обнаружил ошибку. Если ни одна ошибка не была обнаружена, то тест считается неудачным.
Ошибки имеют свойство группироваться. Если в какой-то части программы найдено много ошибок, то там еще много осталось.
Никогда не изменяйте программу, чтобы облегчить ее тестирование.
Следует избегать тестирования программы ее автором. Если программист сделал ошибку при написании программы, то вполне вероятно он сделает ту же самую ошибку при ее тестировании. Программист подсознательно считает свою программу продолжением самого себя и не станет особенно тщательно ее тестировать.
Разработка тестов -- творческий процесс, который требует, в некотором роде, разрушительного склада ума.
Хорош тот тест, для которого высока вероятность обнаружить ошибку.
Необходимо проверять не только, делает ли программа то, для чего она предназначена, но и не делает ли она то, что не должна делать.
Некоторую часть тестов следует выделить в качестве тестов регрессии, которые в будущем должны выполняться после каждого исправления программы, чтобы проверить, не ухудшилась ли система, не произошел ли регресс.
Недостаток комментариев усложняет поиск ошибок, так как при проверке бывает трудно разобраться в сложной программе без небольших пояснений.
Избыток комментариев также усложняет поиск ошибок. Комментарии говорят, что делает программа по мнению автора, а не что она делает на самом деле.
После тестирования нельзя гарантировать отсутствие ошибок, можно лишь говорить о некотором уровне уверенности в правильности работы системы.
Тест - это совокупность входных данных и/или действий пользователя с указанием ожидаемых результатов и/или ответных действий программы.
Невозможно провести полное всеохватывающее тестирование даже простой программы, так как на это не хватит ни времени, ни ресурсов. Поэтому существует несколько видов тестирования, которые предлагают методики для построения тестов с наибольшей вероятностью обнаружения ошибок. Каждая методика дополняет другую и очень хорошо применять сразу несколько видов тестирования.