Файл: Применение объектно-ориентированного подхода при проектировании информационной системы.pdf
Добавлен: 28.03.2023
Просмотров: 470
Скачиваний: 6
СОДЕРЖАНИЕ
Глава 1. Различные подходы к проектированию информационных систем
Глава 2. Объектно–ориентированный подход при проектировании информационной системы
2.1 Характеристика объектно–ориентированного подхода
2.2 Основные понятия объектно–ориентированного подхода
2.3 Преимущества и недостатки объектно–ориентированного подхода
2.4 Программные продукты, используемые для реализации объектно–ориентированного подхода
Соответственно требованиям первого и второго пункта, для грамотного проектирования объектной модели сложной системы, она нуждается в представлении посредством канонического проектирования. Каноническая модель представляет собой совокупность двух иерархий – иерархии классов и иерархии объектов. Как правило, при использовании такого метода имеется в виду, что объектно-ориентированная декомпозиция системы предоставляет возможность обнаружения полной ее архитектуры, включающей структуру классов и объектов.
При этом необходимо иметь в виду, что в случае, если объект, представляя собой экземпляр класса, полностью соответствует некоторому определенному предмету или явлению, имеющему место в пространстве и времени, то класс является воплощением только абстракции чего-то существенного в объекте.
Исходя из вышесказанного, можно вывести следующие определения:
Класс – такое множество объектов, которое объединяет их структуру и поведение.
Объект – конкретный предмет, явление или сущность (реальная или абстрактная), обладающая конкретной формой, функцией и значением в контексте определенной предметной области.
Здесь также важно отметить, что свойства объектов, представляемых экземплярами классов, в объектно-ориентированном подходе определяются соответствующим классом в иерархии классов. Речь идет именно об иерархии классов, которая непосредственно описывает контекстную предметную область. Таким образом, основной задачей первого и второго пункта (OOA и OOD) выступает именно выбор корректного набора абстракций, адекватного в конкретном случае для рассматриваемой предметной области. Этим лишь подтверждается значимость концептуального иерархического моделирования в процессе применения объектно-ориентированного подхода для разработки информационной системы.
Кроме того, раскрывая сущность объектно-ориентированного подхода, необходимо отметить и иметь в виду, что объектно-ориентированная модель не содержит все признаки и характеристики предмета/явления, которое она представляет, а только те, которые являются существенными именно для данной программной системы и именно в контексте изучаемой предметной области. Иначе говоря, готовая объектная модель неизменно проще, чем представляемый ею предмет, зачастую содержит меньше элементов и обладает облегченной структурой.
Для построения объектных моделей также характерен тот факт, что модель представляет собой исключительно формальную конструкцию, и ее формальный характер открывает возможности для определения именно формальных зависимостей между всеми объектами и виды формальных операций, доступных для выполнения с ними. Данный факт значительно облегчает проектирование и дальнейший анализ моделей, а также их непосредственное воплощение в виде программного продукта. Так, благодаря формализации моделей появляется возможность получить формальную модель разрабатываемой программной системы в виде композиции формальных моделей ее компонентов.
Исходя из вышесказанного, можно заключить, что применение объектно-ориентированного подхода при проектировании информационной системы реализовать такие преимущества, как:
- уменьшение сложности программного обеспечения;
- повышение надежности программного обеспечения;
- обеспечение возможности модификации отдельных компонентов программного обеспечения без изменения остальных его компонентов;
- обеспечение возможности повторного использования отдельных компонентов программного обеспечения.
Подводя итог, следует отметить, что при реализации OOA и OOD следует тщательно отнестись к проведению декомпозиции области приложения и самой разрабатываемой информационной системы. Наиболее целесообразными инструментами для оптимизации декомпозиции являются абстрагирование и иерархия, которые, наравне с остальными инструментами объектно-ориентированного подхода, будут рассмотрены далее.
2.2 Основные понятия объектно–ориентированного подхода
Концептуальная база методологии объектно–ориентированного моделирования включает в себя четыре главных взаимосвязанных понятия: абстрагирование, иерархия, инкапсуляция и модульность.
Абстрагирование – способ выделения существенных характеристик некоторого объекта (абстракций), отличающих его от всех других видов объектов и, таким образом, четко определяющих его концептуальные границы.
Иерархия – способ упорядочения абстракций (классов) по уровням.
Инкапсуляция – способ отделения элементов объекта (класса), определяющих его устройство, от элементов, определяющих его поведение (т.е. отделение реализации от интерфейса).
Модульность – способ разложения системы на связанные, но относительно самостоятельные части (модули).
Применение объектно-ориентированного подхода к проектированию информационной системы всегда основывается на применении вышеприведенных категорий при описании классов и объектов модели.
Описание класса включает атрибуты. При помощи атрибутов осуществляется характеристика и описание текущего состояния объектов исследуемого класса. Атрибуты также характеризуют и операции, при помощи которых описывается поведение и дальнейшие действия объектов исследуемого класса. При этом разграничивается внешний облик класса (спецификация или интерфейс) и его внутреннее устройство (реализация). Главное в интерфейсе – объявление операций, поддерживаемых экземплярами класса. В него также могут входить объявления других классов, переменных, исключительных ситуаций, уточняющих абстракцию, которую класс должен выражать. Реализация, как правило, состоит в определении операций, объявленных в интерфейсе класса.
Между классами могут существовать следующие отношения:
Наследование – такое отношение между классами, при котором класс повторяет описание состояния и поведения суперкласса (одного – одиночное наследование; нескольких – множественное наследование). Данное отношение является основным при выявлении иерархии классов предметной области. Узкие, специализированные классы в иерархии, от которых создаются экземпляры (объекты), называются конкретными классами. Общие классы, от которых экземпляры не производятся, называются абстрактными классами. Самый общий класс в иерархии классов называется базовымили корневым.
Ассоциация – отношение семантической зависимости, показывающее какие роли классы играют друг для друга. Ассоциации различаются по мощности: «один–к–одному», «один–ко–многим», «многое–ко–многим».
Агрегация – отношение, соответствующее отношению «часть–целое» между объектами данных классов.
Использование – может рассматриваться как разновидность отношения ассоциации, при котором одна из сторон (клиент) пользуется услугами или ресурсами другой стороны (сервера). Кроме того, использование может рассматриваться как один из аспектов отношения наследования, так как подкласс, наследуя состояние и поведение класса, выступает в роли его клиента. Так же клиентом класса является его экземпляр (объект), который использует атрибуты и операции данного класса.
При этом операция рассматривается как услуга, которую класс может предоставить своим клиентам. Как правило, эти операции бывают следующих видов:
Модификатор – операция изменения состояния объекта.
Селектор – операция считывания состояния объекта (без изменения состояния).
Итератор – операция, организовывающая доступ ко всем частям объекта в строго определенной последовательности.
Конструктор – операция создания и/или инициализации объекта.
Деструктор – операция, освобождающая состояние объекта и/или разрушающая сам объект.
Описание объекта включает в себя описание его состояния, которое характеризуется перечнем атрибутов, соответствующих классу, экземпляром которого является данный объект, и их текущими значениями. Кроме того, описание объекта включает также описание его поведения (функции), которое характеризуется методами, реализующими операции класса, экземпляром которого является данный объект.
Объединяя понятия состояния и поведения объекта, можно ввести понятие роли или ответственности объекта. Ответственность объекта имеет две стороны – знания, которые объект поддерживает, и действия, которые объект может исполнить. Она выражает смысл его предназначения и место в системе. Ответственность понимается как совокупность всех услуг и всех контрактных обязательств объекта. Следовательно, состояние и поведение объекта определяют его роль в системе, а она, в свою очередь, необходима соответствующему классу для выполнения его ответственности.
При выявлении структуры объектов моделируемой системы между объектами устанавливаются различные связи (посредством передачи сообщений), представляющие собой «физическое или концептуальное соединение между объектами». Связи обозначают равноправные или «клиент–серверные» отношения между объектами. «Наиболее желательной является функциональная связность, при которой все элементы тесно взаимодействуют в достижении определенной цели». Участвуя в связях, объект может выполнять одну из трех ролей:
- актора – при которой объект может воздействовать на другие объекты, но сам никогда не подвергается их воздействию (активный объект);
- сервера – при которой объект может только подвергаться воздействию со стороны других объектов, но никогда не выступает в роли воздействующего объекта (пассивный объект);
- агента – при которой объект может быть и активным, и пассивным.
Кроме того, между объектами могут быть выявлены иерархические отношения, а именно отношение «часть–целое», т.е. агрегация. При этом, идя от целого (агрегата), можно придти к его частям (атрибутам). Агрегация означает физическое или концептуальное вхождение одного объекта в другой.
2.3 Преимущества и недостатки объектно–ориентированного подхода
Для наглядности преимущества объектно–ориентированного подхода будут проиллюстрированы посредством сравнения с другими методами проектирования информационных систем.
Так, в функциональных моделях (DFD–диаграммах потоков данных, SADT–диаграммах) главными структурными компонентами являются функции (операции, действия, работы), которые на диаграммах связываются между собой потоками объектов.
Несомненным достоинством функциональных моделей является реализация структурного подхода к проектированию информационных систем по принципу «сверху–вниз», когда каждый функциональный блок может быть декомпозирован на множество подфункций и т.д., выполняя, таким образом, модульное проектирование информационных систем. Для функциональных моделей характерны процедурная строгость декомпозиции информационных систем и наглядность представления.
При функциональном подходе объектные модели данных в виде ER–диаграмм «объект – свойство – связь» разрабатываются отдельно. Для проверки корректности моделирования предметной области между функциональными и объектными моделями устанавливаются взаимно однозначные связи.
Главный недостаток функциональных моделей заключается в том, что процессы и данные существуют отдельно друг от друга – помимо функциональной декомпозиции существует структура данных, находящаяся на втором плане. Кроме того, не ясны условия выполнения процессов обработки информации, которые динамически могут изменяться.
Перечисленные недостатки функциональных моделей снимаются в объектно–ориентированных моделях, в которых главным структурообразующим компонентом выступает класс объектов с набором функций, которые могут обращаться к атрибутам этого класса.
Для классов объектов характерна иерархия обобщения, позволяющая осуществлять наследование не только атрибутов (свойств) объектов от вышестоящего класса объектов к нижестоящему классу, но и функций (методов).
В случае наследования функций можно абстрагироваться от конкретной реализации процедур (абстрактные типы данных), которые отличаются для определенных подклассов ситуаций. Это дает возможность обращаться к подобным программным модулям по общим именам (полиморфизм) и осуществлять повторное использование программного кода при модификации программного обеспечения. Таким образом, адаптивность объектно–ориентированных систем к изменению предметной области по сравнению с функциональным подходом значительно выше.
При объектно–ориентированном подходе изменяется и принцип проектирования информационных систем. Сначала выделяются классы объектов, а далее в зависимости от возможных состояний объектов (жизненного цикла объектов) определяются методы обработки (функциональные процедуры), что обеспечивает наилучшую реализацию динамического поведения информационной системы.
Для объектно–ориентированного подхода разработаны графические методы моделирования предметной области, обобщенные в языке унифицированного моделирования UML. Однако по наглядности представления модели пользователю–заказчику объектно–ориентированные модели явно уступают функциональным моделям.
При выборе методики моделирования предметной области обычно в качестве критерия выступает степень ее динамичности. Для более регламентированных задач больше подходят функциональные модели, для более адаптивных бизнес–процессов (управления рабочими потоками, реализации динамических запросов к информационным хранилищам) – объектно–ориентированные модели. Однако в рамках одной и той же информационной системе для различных классов задач могут требоваться различные виды моделей, описывающих одну и ту же проблемную область. В таком случае должны использоваться комбинированные модели предметной области.