- •С.Л. Моругин Проектирование информационных систем
- •Часть 1
- •Содержание
- •1. Введение. Общая характеристика процесса проектирования ис
- •1.1. Информационные системы
- •1.2. Классификация ис
- •1.3. Проектирование ис
- •1.4. Восходящий и нисходящий подходы к проектированию ис
- •2.1.2. Каскадная (водопадная) модель
- •2.1.3. Инкрементная модель
- •2.1.4. Спиральная модель
- •2.1.5. Макетирование
- •2.1.6. Компонентно-ориентированная модель
- •2.2. Этапы жизненного цикла программного обеспечения
- •2.2.1. Этап установления требований
- •2.2.2. Этап спецификации требований
- •2.2.3. Этап проектирования архитектуры
- •2.2.4. Этап детализированного проектирования
- •2.2.5. Этап реализации
- •2.2.6. Этап интеграции
- •2.2.7. Этап сопровождения
- •2.3. Методологии проектирования ис
- •2.3.1. Общие требования к методологии и технологии проектирования
- •2.3.2. Методология структурного анализа и проектирования
- •2.3.2. Объектно-ориентированный подход
- •2.3.2.1. Объектно-ориентированные методологии
- •2.3.2.1.2. Методология omt и другие методологии
- •2.3.3. Методология rad
- •2.4. Стандарты idef
- •2.5. Инструментальные средства моделирования информационных систем
- •3. Этапы разработки ис. Техническое задание
- •3.1. Этапы разработки информационных систем
- •3.2. Проведение обследования деятельности предприятия и построение моделей
- •3.2.1. Сбор информации для исследования и формализации бизнес-процессов деятельности предприятия или организации
- •3.2.2. Обследование деятельности предприятия и сбор данных
- •3.2.3. Построение и анализ моделей деятельности предприятия
- •3.2.4. Этапы (стадии) создания ис
- •3.3. Разработка системного проекта
- •3.4. Разработка предложений по автоматизации и техническое предложение
- •3.5. Разработка технического задания
- •3.5.1. Назначение технического задания и его структура
- •3.5.2. Рекомендации по заполнению разделов технического задания
- •4. Функциональные структурные модели ис
- •4.1 Структурный подход к проектированию ис
- •4.1.1. Сущность структурного подхода
- •4.1.2 Методология функционального моделирования sadt
- •4.2. Моделирование потоков данных
- •4.2.1. Внешние сущности
- •4.2.2. Системы и подсистемы
- •4.2.3. Процессы
- •4.2.4. Накопители данных
- •4.2.5. Потоки данных
- •4.2.6. Построение иерархии диаграмм потоков данных
- •Обозначения и сокращения
- •Библиографический список
- •Проектирование информационных систем
- •607220, Г. Арзамас, Нижегородская обл., ул. К.Маркса, 36
- •607220, Г. Арзамас, Нижегородская обл., ул. К.Маркса, 36
2.3.2. Объектно-ориентированный подход
Начиная с 70-80-х годов ХХ века развитие аппаратных средств существенно опережало развитие систем и средств программирования. Чтобы выправить положение, были предложены различные подходы к увеличению производительности труда программиста. Среди этих попыток выделяется такое популярное направление, как объектно-ориентированный подход (ООП) к конструированию и кодированию программ [3, 16]. Особую роль в популярности этого подхода сыграла как его тесная связь с интерфейсами пользователя (особенно графическими), так и включение элементов этого подхода в популярные реализации языков программирования C++ и Objects Pascal фирмы Borland.
ООП также получил признание в сфере автоматизированного проектирования, как альтернатива структурного подхода в проектировании сложных (в том числе и информационных систем) и реляционной модели данных как основного средства отображения информации о сложных объектах.
Среди типовых задач, для которых ООП является перспективным, можно выделить такие:
проектирование сложных инженерных объектов и систем (таких как комплексы управления летательными аппаратами, АСУП и САПР, управление технологиями, автоматизация эксперимента, робототехника) ;
диспетчеризация, планирование современного производства;
сети коммуникации и связи;
системы искусственного интеллекта, системы поддержки принятия решений, экспертные системы;
операционные системы, системы реального времени;
системы имитации и моделирования, тренажеры и т.д.
Новая методология ориентирована, прежде всего, на создание больших сложных систем, коллективную их разработку, последующее активное сопровождение при эксплуатации и регулярные модификации.
До сих пор большинство сложных систем были построены на принципах структурного подхода, суть которого состоит в декомпозиции системы на ряд модулей, процедур, функций и структур данных, связанных общим алгоритмом функционирования. Но распространение мощных персональных компьютеров создало в 90-х годах основу для широкого применения объектно-ориентированного подхода в практике проектирования и программирования. В последнее время более широко начинают использоваться как языки программирования, созданные в рамках объектно-ориентированной методологии, так и объектно-ориентированные СУБД.
В основе объектно-ориентированной методологии (ООМ) лежит объектный подход, когда прикладная предметная область представляется в виде совокупности объектов, которые взаимодействуют между собой посредством передачи сообщений. Под объектом понимается некоторая сущность (реальная или абстрактная), обладающая состоянием, поведением и индивидуальностью. Состояние объекта характеризуется перечнем всех его возможных (обычно статических) свойств - структурой и значениями каждого из этих свойств. Поведение объекта (или его функциональность) характеризует то, как объект взаимодействует с другими объектами или подвергается взаимодействию других объектов, проявляя свою индивидуальность. Индивидуальность - это такие свойства объекта, которые отличают его ото всех других объектов. Поведение объекта реализуется в виде функций, которые называют методами. При этом структура объекта доступна только через его методы, которые в совокупности формируют интерфейс объекта.
Такой подход позволяет локализовать принимаемые решения рамками объекта, объединяя в нем и структуру и поведение, и, следовательно, снижает сложность описания и реализации объекта. Эта способ объединения структуры и поведения в одном месте и сокрытия всех данных внутри объекта, что делает их невидимыми для всех, за исключением методов самого объекта, называется инкапсуляцией. Это позволяет объектам функционировать совершенно независимо друг от друга, скрывая за интерфейсом детали реализации. Инкапсуляция позволяет рассматривать объекты, как изолированные "черные ящики", которые знают и умеют выполнять определенные действия. С этой точки зрения, внутреннее устройство "черных ящиков" для нас значения не имеет, нам все равно, что происходит внутри. Важно только знать, что надо положить в ящик при обращении к нему и что мы при этом из него получим. Таким образом, объекты - это минимальные единицы инкапсуляции.
Но к объекту может обращаться не только программист, разработчик или администратор, но и любой объект, функционирующий в системе. Для этого нужно только послать интересующему объекту сообщение, которое представляет требование выполнить некоторые действия. И если такое требование может быть выполнено принявшим сообщение объектом, то оно выполняется, а если не может быть выполнено, то пославший требование объект информируется о реакции на полученное сообщение.
Для упрощения описания и управления множеством объектов была введена одна из ключевых концепций объектно-ориентированного программирования - идея группировки объектов в классы, в соответствии с тем как они устроены и действуют. Под классом понимается множество объектов, связанных общностью структуры и поведения. Именно класс вначале описывает переменные и методы объекта, то есть структуру и поведение объекта. Любой конкретный объект представляет собой экземпляр класса. Класс – прототип для создания объектов.
Структура и поведение схожих объектов определяют общий для них класс, так что объект - это экземпляр класса. Классы, как и объекты, не существуют изолированно. Между ними существует 3 вида отношений:
отношение «разновидность-обобщение» отражает степень общности, например «тюльпан - цветок», что означает, что тюльпан есть специализированный подкласс класса цветов;
отношение «составная часть-целое» отражает агрегатирование объектов, например, лепесток – не разновидность цветка, а его составляющая часть;
отношение «ассоциация» – смысловая связь между классами, которые не связаны никакими другими типами отношений, например, роза и ромашка пригодны для декоративного оформления.
Существует еще один механизм, позволяющий определять некоторый порядок среди классов. Достигается это с помощью введения механизма наследования - пожалуй, самого мощного средства в любой объектно-ориентированной системе, поскольку оно позволяет многократно использовать однажды созданное описание. Механизм наследования очень прост: один класс, называемый в рамках этих отношений суперклассом, полностью передает другому классу, который называется подклассом, свою структуру и поведение, то есть все свои переменные и все методы. Что далее делать с этим богатством определяет только подкласс: он может добавить в структуру что-то свое, что-то из наследуемого интерфейса он может использовать без изменений, что-то изменить, и, разумеется, может добавить свои собственные методы. То есть класс с помощью подклассов расширяется, и как результат, создаваемые объекты становятся все более и более специализированными. Классы, расположенные по принципу наследования, начиная с самого общего, базового класса, образуют иерархию классов.
Разумеется, система, реализующая такие принципы построения, предъявляет более жесткие, чем при структурном подходе, требования к производительности вычислительной системы и СУБД.
ООП не является отрицанием или противопоставлением структурному подходу. Эту методологию правильнее представлять как инструмент, позволяющий снизить сложность задачи и подойти к созданию таких систем, поведение которых невозможно представить в виде исчерпывающего набора всех возможных ситуаций и разветвлений алгоритма. Сегодня теоретически обоснована и практически доказана возможность создания на основе ООП проектов высокой степени сложности, включающих миллионы строк кода. Но на характер мышления и дисциплину проектирования новая методология, безусловно, накладывает свой отпечаток, особенно на первых этапах использования ООП.
Итак, объектно-ориентированная методология опирается на объектный подход, который включает четыре основных принципа:
Абстрагирование
Выделение таких существенных характеристик объектов, которые отличают его ото всех других объектов и которые четко определяют особенности данного объекта с точки зрения дальнейшего рассмотрения и анализа. Только существенное для данной задачи и ничего более. Минимальной единицей абстракции в ООМ является класс.
Ограничение доступа
Процесс защиты отдельных элементов объекта, не затрагивающий существенных характеристик объекта, как целого.
Модульность
Свойство системы, связанное с возможностью декомпозиции на ряд тесно связанных частей (модулей). Модульность опирается на дискретное программирование объектов, которые можно модернизировать или заменять, не воздействуя на другие объекты и систему в целом.
Существование иерархий
Ранжирование, упорядочивание по некоторым правилам объектов системы.
Части ООМ
Объектно-ориентированная методология (ООМ) создания автоматизированных систем состоит из следующих частей:
объектно-ориентированный анализ (OOA),
объектно-ориентированное проектирование (OOD),
объектно-ориентированное программирование (OOР).
ООА - методология анализа сущностей реального мира на основе понятий класса и объекта, составляющих словарь предметной области, для понимания и объяснения того, как они (сущности) взаимодействуют между собой.
Рассматривая реальную задачу, аналитик разбивает ее на некоторое число предметных областей. Каждая предметная область - мир, наделенный объектами. В предметной области выделяются классы объектов, которые, если это необходимо, разбиваются на подклассы. Каждый класс и его подкласс анализируются в три этапа: информационное моделирование, моделирование состояний, моделирование процессов.
Модели OOA в дальнейшем преобразуются в объектно-ориентированный проект. OOD - методология проектирования, соединяющая в себе процесс объектной декомпозиции, опирающийся на выделение классов и объектов, и приемы представления моделей, отражающих логическую (структура классов и объектов) и физическую (архитектура моделей и процессов) структуру системы. Следующие понятия являются в OOD фундаментальными.
Инкапсуляция
Концепция сокрытия в как бы "капсуле" всей информации об объекте, то есть объединение в некое целое данных и процедур (методов) их обработки. Единицей инкапсуляции в OOD является объект, в котором содержатся и данные состояния объекта и сообщения, которые объект может обрабатывать.
Наследование
Получение от предшественника - такое соотношение между классами, находящимися в некоторой определенной иерархии, при которой один класс моделирует поведение и свойства другого класса, добавляя свою специфику. Класс поведение которого наследуется называется суперклассом, а класс, который наследует поведение, называется подклассом.
Полиморфизм
Возможность единообразного обращения (посылки объектам одноименных сообщений) при сохранении уникального поведения объектов. Другими словами, поскольку поведение объектов определяется методами, метод, ассоциированный с одним и тем же именем сообщения, допускает различные реализации для разных классов.
Созданный проект превращается в программный продукт в процессе объектно-ориентированного программирования - такой методологии программирования, которая основана на представлении программного продукта в виде совокупности объектов, каждый из которых является слепком (экземпляром) определенного класса, а классы образуют иерархию на принципах наследования. Таким образом, при объектно-ориентированном подходе исчезает понятие исполняемой программы. Решение поставленной задачи сводится к построению необходимых классов, и управлению создаваемыми ими объектами-экземплярами.
Фундаментальная концепция OOP состоит в том, что объекты и классы взаимодействуют друг с другом путем передачи сообщений. Для этого необходимо, чтобы объекты определялись вместе с сообщениями, на которые они реагируют, в отличии от процедурного стиля программирования, когда сначала определяются данные, которые затем передаются в процедуры (функции) как параметры. При этом средством программирования выступает один из объектно-ориентированных языков программирования.
Язык программирования называется объектно-ориентированным, если:
есть поддержка объектов как абстракций данных, имеющих интерфейсную часть в виде поименованных операций, и защищенную область локальных данных;
все объекты относятся к соответствующим типам (классам);
классы могут наследовать от суперклассов.
любые данные хранятся как объекты, размещаемые с автоматическим выделением и освобождением памяти. Объект существует в системе до тех пор, пока его можно именовать.
Последний принцип отличает чистые объектно-ориентированные языки такие как Smalltalk, Actor, от гибридных языков программирования, выросших из ранее существовавших процедурных языков (Object Pascal, C++). Эти подходы - как бы крайности в семействе объектно-ориентированных языков. Ближе к середине лежит новый, полностью построенный на принципах объектно-ориентированной идеологии, но все же нарушающий последний принцип, язык Java.
Для реализации ООП используется язык UML [3]. UML (сокр. от Unified Modeling Language, унифицированный язык моделирования) — язык графического описания для объектного моделирования в области разработки программного обеспечения. UML является языком широкого профиля, это открытый стандарт, использующий графические обозначения для создания абстрактной модели системы, называемой UML моделью. UML был создан для определения, визуализации, проектирования и документирования в основном программных систем. UML не является языком программирования, но в средствах выполнения UML-моделей как интерпретируемого кода возможна кодогенерация.
Использование UML не ограничивается моделированием программного обеспечения. Его также используют для моделирования бизнес-процессов, системного проектирования и отображения организационных структур.
UML позволяет также разработчикам программного обеспечения достигнуть соглашения в графических обозначениях для представления общих понятий (таких как класс, компонент, обобщение (generalization), объединение (aggregation) и поведение), и далее сконцентрироваться на проектировании и архитектуре.
