- •Б. Б. Желваков
- •Моделирование систем
- •Учебное пособие
- •Санкт-Петербург
- •Составитель
- •Подготовлено на кафедре
- •230201 – Информационные системы и технологии
- •1. Основные понятия теории моделирования систем 6
- •2. Классификация моделей и методов моделирования 21
- •3. Математические методы моделирования 35
- •4. Имитационное моделирование. 62
- •5. Моделирование организационных систем 116
- •6. Методика и стандарты функционального моделирования 140
- •7. Объектно-ориентированное моделирование 166
- •8. Моделирование бизнес-процессов 221
- •9. Моделирование систем с soa-архитектурой 226
- •10. Модели систем с «облачной» архитектурой 237
- •Введение
- •1. Основные понятия теории моделирования систем
- •1.1. Системный подход и понятие «система»
- •1.2. Системный анализ
- •1.3. Понятия «модель» и «моделирование»
- •1.4. Моделирование систем как процесс формирования знаний.
- •1.5. Моделирование больших и сложных систем.
- •2. Классификация моделей и методов моделирования
- •2.1. Основные типы системных моделей
- •2.2. Классификация методов моделирования сложных систем
- •3. Математические методы моделирования
- •3.1. Принципы и подходы к построению математических моделей
- •3.2. Этапы построения математической модели
- •3.3. Примеры математических моделей
- •3.3.1. Модель целенаправленной системы
- •3.3.2. Модель абстрактной системы с неопределённой структурой
- •3.3.3. Модель целенаправленной системы с управлением.
- •3.3.4. Модель оптимального планирования доставки товаров потребителям
- •3.3.5. Модель в контуре управления экономической системы
- •4. Имитационное моделирование.
- •4.1. Понятие имитационного моделирования
- •4.2. Автоматизация имитационного моделирования
- •4.3. Дискретно-событийное моделирование
- •4.3.1. Системы массового обслуживания
- •4.3.2. Механизмы продвижения времени
- •4.3.3. Обозначения смо-систем
- •4.3.4. Параметры систем массового обслуживания
- •4.3.5. Критерии оценки работы систем массового обслуживания
- •4.3.6. Компоненты дискретно-событийной имитационной модели и их программная организация
- •4.4 Этапы исследования системы с помощью имитационного моделирования
- •4.5. Преимущества, недостатки и ошибки имитационного моделирования
- •4.6. Моделирование по методу Монте-Карло
- •4.7. Программное обеспечение имитационного моделирования
- •4.7.1. Классификация программных средств имитационного моделирования
- •4.7.2. Общие элементы моделирования
- •4.7.3. Универсальные пакеты имитационного моделирования
- •4.7.4. Предметно-ориентированные пакеты имитационного моделирования
- •5. Моделирование организационных систем
- •5.1. Концепции и стандарты организационного моделирования
- •5.2. Метамоделирование
- •5.3. Метамодель общих хранилищ данных (cwm)
- •5.4. Моделирование организационных систем
- •6. Методика и стандарты функционального моделирования
- •6.1. Методика функционального моделирования sadt
- •6.2. Диаграммы «сущность-связь»
- •6.3.Стандарты idef
- •6.3. Система моделирования бизнес-процессов AllFusion Process Modeler
- •7. Объектно-ориентированное моделирование
- •7.1. Принципы и методология объектно-ориентированного подхода.
- •7.2. Унифицированный язык моделирования uml
- •7.2.1. Архитектура uml
- •7.2.2. Диаграммы uml
- •7.2.3. Использование uml при моделировании систем реального времени
- •7.2.4. Преимущества uml
- •7.2.5. Унифицированный Процесс разработки по компании Rational
- •7.3. Архитектура, управляемая моделями
- •7.4. Разработка, управляемая моделями (mdd)
- •7.5. Объектно-ориентированное программирование
- •7.6 Инструментальные средства поддержки оо‑технологий
- •8. Моделирование бизнес-процессов
- •9. Моделирование систем с soa-архитектурой
- •9.1. Композитная структура программ
- •9.2. Концепция soa
- •9.3. Сервис-ориентированное моделирование
- •10. Модели систем с «облачной» архитектурой
- •Заключение
- •Литература
7.1. Принципы и методология объектно-ориентированного подхода.
Начиная с 70-80-ых годов прошлого века развитие аппаратных средств существенно опережало развитие систем и средств программирования. Чтобы выправить положение, были предложены различные подходы к увеличению производительности труда программиста. Среди этих попыток выделяется такое популярное направление, как объектно-ориентированный подход (ООП) к конструированию и кодированию программ. Особую роль в популярности этого подхода сыграло как его тесная связь с графическими интерфейсами пользователя, так и включение элементов этого подхода в реализации объектно-ориентированных языков программирования, таких как C++, C#, Java, Object Pascal и др.
Функциональные (структурные) технологии моделирования информационных систем характеризуются искусственным разделением (часто неоптимальным) системы на подсистемы, а также слабой взаимосвязью процессов и данных. В отличие от них, объектные технологии, ориентированные на тесную взаимосвязь процессов и данных, позволяют создавать более надежные, легко реализуемые и устойчивыми к изменениям программные системы. Кроме того, объектная философия моделирования в большей степени соответствует общим концепциям поведения систем реального мира. При модификации системы объектный подход позволяет легко включать в систему новые объекты и исключать устаревшие без существенного изменения ее структуры и жизнеспособности. Использование построенной модели при модификациях системы дает возможность устранить нежелательные последствия изменений, поскольку они не ломают устоявшейся структуры системы, а только слегка изменяют её в нужном направлении.
OOП базируется на пяти фундаментальных понятиях: объект, класс, инкапсуляция, наследование и изоморфизм, [13].
Объектом в ООП называют программную модель некоторого реального или идеального (прототипного) объекта внешнего мира. Описание такого объекта в общем случае может включать ряд параметров (атрибутов), моделирующих состояние прототипного объекта и набор функций, предназначенных для обработки этих атрибутов (их в ООП называют методами) с целью их изменения. Такая структура программного объекта позволяет моделировать процессы функционирования (поведения) прототипных объектов, т.е. процессы, изменяющие их состояние во времени. ООП, таким образом, позволяет моделировать динамические объекты и системы.
Классом называют набор объектов с одинаковыми атрибутами и методами (поведением), а объекты-члены этого набора – экземплярами класса. Класс, таким образом, определяет тип своих объектов. В соответствии с принципами строгой типизации, в языках объектно-ориентированного программирования определение класса отделяется от определения его экземпляров (объектов).
Инкапсуляция – это концентрация описаний атрибутов и методов всех однотипных объектов внутри описания соответствующего класса. При этом принимаются специальные меры по защите экземпляров класса от непреднамеренного изменения или разрушения в моделирующей программе. Инкапсуляция, таким образом, позволяет:
резко сократить объём основной программы за счёт однократного описания определяемых в программе объектов внутри описания соответствующего класса; описания классов обычно выносится из тела основной программы, и могут храниться в отдельных файлах на дисковых накопителях, поскольку они используются только на этапе компиляции программы;
обеспечит защиту объектов непреднамеренного изменения или удаления.
Наследование. Объекты реального мира обычно связаны друг с другом различными видами отношений. Особым видом отношений является отношение иерархического подчинения «родитель-потомок». Основным свойством этого отношения является наследование потомком характеристик и поведения своего родителя. Реализация этого типа отношений является обязательным требованием при разработке языков объектно-ориентированного программирования. В контексте этих языков принцип наследования формулируется следующим образом: объект-потомок наследует все атрибуты и методы объектов родительского класса. Это означает, что в определении класса потомков атрибуты и методы родительского класса повторять не нужно – они действуют «по умолчанию». Потомок, однако, никогда не является точной и полной копией своих родителей: у него всегда проявляются какие-то индивидуальные свойства и поведение. Поэтому, в определении класса потомков всегда добавляются свои собственные атрибуты и методы, отличающиеся от родительских. Кроме того, состояние объекта-потомка можно менять не только вызовом его собственных, но и родительских методов.
Полиморфизм. Полиморфизм подразумевает, что различные типы объектов, объединенные общим происхождением, могут иметь методы с одинаковыми названиями (именами), но разной реализацией (т.е. с разными алгоритмами обработки данных), так что при их активизации поведение разных объектов будет различным.
Следует отметить два момента:
ООП не является отрицанием или противопоставлением структурному подходу. Его правильнее представлять как расширение структурного подхода, позволяющее снизить сложность задачи и подойти к созданию таких систем, поведение которых невозможно представить в виде исчерпывающего набора всех возможных ситуаций и разветвлений алгоритма. Сегодня теоретически обоснована и практически доказана возможность создания на основе ООП проектов высокой степени сложности, включающих миллионы строк кода. Но на характер мышления и дисциплину проектирования новая методология, безусловно, накладывает свой отпечаток, особенно на первых этапах использования ООП.
Система, реализующая такие принципы построения, предъявляет более жесткие, чем при структурном подходе, требования к производительности вычислительной системы и СУБД.
Объектно-ориентированная методология (ООМ). ООМ ориентирована, прежде всего, на создание больших сложных систем, коллективную их разработку, последующее активное сопровождение при эксплуатации и регулярные модификации (реижиниринг), [14].
ООМ включает следующие части:
объектно-ориентированный анализ (OOA),
объектно-ориентированное проектирование (OOD),
объектно-ориентированное программирование (OOР).
ООА - методология анализа предметных областей реального или идеального мира на основе понятий класса (как типа объектов) и объекта (как экземпляра класса). Такой анализ нацелен на понимание и объяснение того, какие сущности образуют соответствующую предметную область и как они взаимодействуют между собой.
Рассматривая реальную задачу, аналитик разбивает ее на некоторое число предметных областей. Каждая предметная область ‑ мир, наделенный объектами. В предметной области выделяются классы объектов, которые, если это необходимо, разбиваются на подклассы. Каждый класс и его подкласс анализируются в три этапа: информационное моделирование, моделирование состояний, моделирование процессов. В дальнейшем, модели OOA используются для проектировании объектно-ориентированных программных систем.
OOD ‑ это методология проектирования, соединяющая в себе процесс объектной декомпозиции, опирающийся на выделение классов и объектов, и приемы представления моделей, отражающих логическую и физическую структуру системы. Под логической структурой понимают структуру классов и объектов, а под физической ‑ структуру моделей и процессов.
OOP ‑ это технологии, использующие для реализации OOD-проектов языки объектно-ориентированные программирования (ООЯП). Подробности этих технолгий будут описаны в разд. 7.5.