- •1.Введение в системный анализ и моделирование
- •1.1.Введение
- •1.2. Предмет системного анализа
- •1.3. Многоаспектность строения и функционирования систем
- •1.4. Цель, задача, структура, система, системность
- •Исходная таблица состояний информационно-логической задачи.
- •1.5. Классификация систем. Большие и сложные системы.
- •1.6. Управление в системе и управление системой.
- •1.7 Выводы
- •Вопросы для самоконтроля
- •2.Теория графов и программно-целевой метод анализа предметных областей
- •2.1. Методы теории множеств в информационных классификациях
- •2.2 Обозначения теории графов
- •2.3. Семантические сети
- •2.4. Пример использования системного анализа предметной области
- •2.5. Программно-целевой подход в системных задачах
- •2.5.1.Этапы и область применения программно-целевого подхода
- •2.5.2.Алгоритм декомпозиции
- •2.5.2.1.Стадии анализа и синтеза
- •2.5.2.2. Метод структурного анализа
- •2.5.2.3. Методы декомпозиции
- •2.5.2.4. Требования, предъявляемые к декомпозиции.
- •2.5.2.5. Алгоритм декомпозиции
- •2.5.3.Агрегирование систем
- •2.5.3.1. Уровни агрегирования
- •2.5.3.2. Типы связей в системе
- •1.Связи взаимодействия (координации):
- •3.Связи преобразования:
- •2.5.3.3. Виды агрегирования
- •2.6. Выводы
- •Вопросы для самоконтроля.
- •7. Алгоритм декомпозиции.
- •3. Структурный подход к моделированию предметной области
- •3.1. Сущность структурного подхода
- •3.2. Методология функционального моделирования sadt
- •3.2.1. Технология структурного анализа и проектирования
- •3.2.2. Функциональная модель и ее состав
- •3.2.3. Иерархическая структура диаграмм.
- •3.2.4. Связи между функциями.
- •Типы связей и относительная их значимость.
- •Перечень типов связей и области применения.
- •3.3. Моделирование потоков данных
- •3.4. Моделирование данных
- •3.4.1. Case-метод Баркера
- •3.4.2. Методология idef1
- •3.5. Образец использования структурного подхода: фильмотека
- •3.5.1. Описание предметной области
- •3.5.2. Фазы проекта
- •Типы событий.
- •Матрица событий.
- •3.6. Выводы
- •Вопросы для самоконтроля
- •5. Моделирование потоков данных.
- •4.Объектно-ориентированная методология анализа и моделирования предметной области
- •4.1.Этапы развития uml и используемые методологии проектирования
- •4.1.1. Основные этапы развития uml.
- •4.1.2. Методология объектно-ориентированного программирования
- •4.1.3. Методология ооап
- •4.1.4. Особенности системного анализа и моделирования при проектировании информационных и программных систем
- •4.2. Базовые элементы языка uml
- •4.2.1. Общие сведения
- •4.2.2. Структура языка uml
- •4.2.3. Пакеты языка uml
- •4.2.4. Основные пакеты метамодели uml
- •4.2.4.1. Пакет «Основные элементы»
- •4.2.4.2. Пакет «Элементы поведения»
- •4.2.4.3. Пакет «Общие механизмы.
- •4.2.5. Особенности описания метамодели uml
- •4.2.6. Особенности изображения диаграмм uml
- •4.2.7. Примеры использования диаграмм
- •Interaction diagram (диаграмма взаимодействия)
- •5. Rational Rose и объектно-ориентированное проектирование
- •5.1. Функциональные особенности Rational Rose
- •5.2. Объектно-ориентированная методология анализа предметной области и моделирование бизнес-процессов
- •5.2.1. Средства и методы моделирования бизнес процессов
- •5.2.2. Пример моделирования предметной области
- •5.3. Выводы
- •Вопросы для самоконтроля.
- •1. Методология объектно-ориентированного программирования.
- •6. Методы анализа предметной области при нечетких условиях выбора решений
- •6.1. Нечеткая логика – математические основы
- •6.2. Основы нечеткого управления
- •Результаты анализа правил установки мощности калорифера.
- •6.3. Системы управления с нечеткой логикой
- •6.4. Выводы
- •Вопросы для самоконтроля
- •Нормативные источники
- •Обязательная литература
- •Рекомендуемая литература
- •Источники интернет
- •1.1.2.2 Осуществлять контроль качества обучения, в том числе посещаемости занятий, сроков их проведения, успеваемости и пр.
- •1.1.2.3 Организовать выполнение и защиту дипломных работ
- •1.1.3 Подвести итоги работ за год
- •1.2.2 Провести учебно–методическую работу в обеспечение выполнения учебного план
- •1.2.3 Выполнить учебный план
4.1.2. Методология объектно-ориентированного программирования
Трудоемкость создания программных приложений на ранних этапах программирования недооценивалась, что вызывало дополнительные расходы и задержки сроков готовности программ. При разработке приложений требования заказчика изменялись, что дополнительно отдаляло окончание работы программирования. Из-за роста размеров программ приходилось увеличивать штат программистов, а это приводило к затратам для организации их согласованной работы.
Изменились также и методы использования компьютеров. Распространение персональных компьютеров привело к приоритету задач обработки и хранения данных над чисто вычислительными проблемами. Методы процедурного программирования неэффективны при росте сложности программ и при повышении их надежности. К исходу 1980-х годов для решения этих проблем было создано объектно-ориентированное программирование (ООП).
Фундаментальные понятия ООП - класс и объект, а объектно-ориентированное программирование – это метод реализации программ, организованных как совокупности взаимодействующих объектов. Программные объекты наделены определенным поведением, реакцией на внешние условия. Они взаимодействуют между собой, выполняют определенные задачи, принимают, передают и обрабатывают данные. Каждый объект - экземпляр некоторого класса, который является членом иерархии классов, объединенной отношением наследования. Сам класс - некоторая абстракция совокупности объектов, имеющих общий набор свойств и одинаковое поведение. Объекты, не имеютщие полностью одинаковых свойств или одинакового поведения к одному классу не относятся. Например, можно электрическую схему телефона рассматривать как класс, а конкретный телефон - как экземпляр этого класса, обеспечивающий функции связи.
Важное свойство классов - возможность создания из них иерархической структуры, что обеспечено реализацией основных принципов ООП: наследования, инкапсуляциия и полиморфизм.
Наследование, связанное с иерархией классов разрешает применять знание о более общей категории для более узкой категории и определяет, какие классы будут наиболее абстрактными и общими по отношению к другим классам. Производный класс (потомок) содержит набор свойств и поведение более общего класса (родительского, предка), возможно изменяя и дополняя эти наборы для отражения своей уникальности полученного таким образом класса. Итак, производный класс наследует свойства и поведение родительского класса. С точки зрения ООП класс - расширение понятия записи (record) или структуры (structure).
Включение в языки С и Pascal классов привело к появлению соответственно C++ и Object Pascal - на сегодня наиболее распространенных языков разработки приложений. Их распространению способствовал выбор языка C++ как базового для инструментария MS Visual C++, а Object Pascal - для средства разработки приложений Borland/Inprise Delphi. Оба средства стали мощными системами разработки программ; их библиотеки стандартных классов включают сотни различных свойств и методов. В среде MS Visual C++ 5/6 такая библиотека называется MFC (Microsoft Foundation Classes, основные классы Microsoft). На рис. 4.1.1. из документации приведен фрагмент иерархии классов MFC. Аналогичная иерархическая библиотека в среде Borland/Inprise Delphi называется VCL (Visual Component Library, библиотека визуальных компонент) – рис. 4.1.2.
Рис. 4.1.1. Часть иерархии классов MFC.
Рис. 4.1.3. Часть иерархии классов VCL.
Инкапсуляция означает сокрытие отдельных деталей внутреннего устройства классов от пользователей и внешних по отношению к нему объектов. Знание особенностей реализации методов класса не нужно для их использования извне и, как правило, недоступно для пользователя. Ряд членов (полей и методов) класса может быть невидим за его пределами; вводятся разные зоны видимости для членов класса.
В ряде языков программирования модули разделены на секции интерфейса и реализации. В секции интерфейса описывают объявления функций и, часто, типов данных, доступных извне модуля, т.е. эти функции суть способы внешнего доступа. Секция реализации содержит программный код, который и определяет способы реализаций объявленных функций.
В интерфейсе дана информация, нужная для взаимодействия с другими объектами, а реализация скрывает от других объектов детали, не относящиеся к процессу взаимодействия объектов (рис. 4.1.3.).
Рис. 4.1.3.Сокрытие внутренних деталей реализации методов классов.
Полиморфизм - свойство объектов принимать различные внешние формы в разных условиях; для ООП полиморфизм значит, что действия одноименных методов могут отличаться в зависимости от класса которому принадлежит метод.
Например, для каждого из разных объектов классов «двигатель автомобила», «электрическое освещение» и «компьютер» есть операция "выключить". Выполняется эта операция для объектов каждого из классов по-разному. Так, для двигателя автомобиля вызов метода «выключить» прекращает подачу топлива; для объекта «комната» метод «выключить», унаследованный от класса «электрическое освещение», вызывается переключением тумблера, а нерегламентированный вызов одноименного метода для компьютера может привести к потере данных.
Полиморфизм в объектно-ориентированных языкахов связан с перегрузкой функций, а расширенные имена методов включают имена соответствующих классов.
Методология ООП повлияла и на разработку программ. Так, процедурная декомпозиция программ сменилась объектной декомпозицей, когда отдельными структурными единицами программы стали классы и объекты со своими свойствами и методами вместо отдельных процедур и функций. При этом программы стали событийно-управляемыми, утратив последовательность действий, предопределенных на этапе кодирования. В современных приложениях программа реализует бесконечный цикл ожидания ряда заранее определенных событий, инициализируемых другими программами или внешними воздействиями. Когда наступает событие (нажатие клавиши, щелчек кнопкой мыши и т.п.), программа прерывает ожидание и адекватно реагирует на событие.
Наиболее существенной в методологии ООП оказалась явилось возможность отделения проектирования структуры программы от написания программного кода. Определение, чем являются классы, происходит до начала программирования классов, их свойств и методов. Выясняется, сколько и каких классы нужно для решения задачи, какие свойства и методы обеспечат их требуемое поведение, каковы взаимосвязи классов.
Все это связано не с написанием кода, а с анализом предметной области, а также с общим анализом требований к будущей программе, из-за чего и появилась специальная методология объектно - ориентированного анализа и проектирования (ООАП).
