Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Применение объектно-ориентированного подхода при проектировании информационной системы ..

Содержание:

ВВЕДЕНИЕ

Современные технологии многогранны и сложны, и их применение и эффективное использование не было бы возможно даже представить без современного пользовательского интерфейса. Так, сегодня аппаратные и программные средства обработки информации становятся все более совершенными, одновременно предлагая все большую функциональность и все большую направленность на пользователя.

Также сегодня важно, что упрощается и сам процесс программирования – программные среды и продукты, предназначенные для создания новых программ становятся все более универсальными, благодаря чему и навыки специалистов в некоторой степени унифицируются. Этому, в частности, способствовал объектно–ориентированный подход к проектированию информационной системы, который позволяет не просто создавать максимально удобные и интуитивно понятные программные продукты (в частности – автоматизированные информационные системы), но и сделать сам процесс проектирования более приятным, интуитивно понятным и простым.

Сегодня для разработки программ используется несколько подходов. Самые распространенные из них – процессный и объектно-ориентированный подход. Процессный подход ориентируется на бизнес-процессы, которые протекают внутри организации. В связи с этим для его применения необходимо знать все об организации, и, в частности – об ее бизнес-процессах. Объектно-ориентированный подход к проектированию информационной системы, в то же время, основывается на выделении определенных компонентов, которые являются либо субъектами действий, либо объектами действий. В данном подходе каждый объект обладает собственной манерой поведения, и каждый объект осуществляет моделирование определенного реального объекта.

Как и любой другой подход к проектированию информационной системы, объектно–ориентированный подход обладает некоторыми характеристиками, особенностями, достоинствами и недостатками, которые следует проанализировать перед тем, как отдавать предпочтение данному или любому другому подходу.

Таким образом, цель исследования: рассмотрение особенностей применения объектно–ориентированного подхода при проектировании информационной системы. Для достижения поставленной цели необходимо выполнить следующие задачи:

  • охарактеризовать объектно–ориентированный подход;
  • рассмотреть основные понятия объектно–ориентированного подхода;
  • проанализировать достоинства и недостатки объектно–ориентированного подхода;
  • осуществить краткий обзор методологий, применяемых в процессе реализации объектно–ориентированного подхода.

Структура работы включает в себя две главы, каждая из которых содержит по два параграфа. Кроме того, в структуру работы включены такие элементы, как оглавление, введение, заключение и список источников.

Теоретической базой работы выступили источники, перечисленные в списке литературы – работы авторов, завоевавших уважение и доверие в научном сообществе. В частности, в контексте данной работы используются публикации, освещающие проблему процесса проектирования информационной системы, различных систем, программ и подходов к программированию.

Глава 1. Сущность объектно-ориентированного подхода к проектированию

Основные положения объектно-ориентированного подхода

Как следует из названия, объектно-ориентированный подход к проектированию программного обеспечения и, в частности, информационных систем, в первую очередь характеризуется применением объектно-ориентированных моделей и методологий. Так, в понятие объектно-ориентированного подхода входят две основных характеристики:

  • объектно–ориентированные методологии (технологии) разработки программных систем;
  • инструментальные средства, поддерживающие эти технологии [12].

Известно, что при разработке того или иного программного продукта формируется определенный тип жизненного цикла проекта. Так, применение объектно-ориентированного подхода к разработке может быть осуществлено с самого начала – на первом этапе жизненного цикла. При этом важно отметить, что объектно-ориентированная разработка не связывается конкретно с языком программирования, который планируется использовать для реализации программного продукта. Иначе говоря, при разработке объекты являются только определенными формальными конструкциями, на данном этапе никаким образом не связанные с их будущей реализацией.

Также одной из важнейших характеристик объектно-ориентированного подходя является методология. Объектно-ориентированная методология, как правило, поддерживается специализированными программными средствами. Тем не менее, их применение и без подобных средств остается полезным – изучение объектно-ориентированных методологий дает возможность как следует изучить разные стороны, характеристики и свойства программы, которая должна быть реализована. И, как следствие, упрощается и сам процесс реализации, тестирования, отладки и исправления ошибок, а также всех последующих этапов работки продукта.

В объектно-ориентированном подходе к проектированию информационной системе есть несколько базовых характеристик. В частности, это такие составляющие как:

  • унифицированный процесс;
  • унифицированный язык моделирования;
  • шаблоны проектирования.

Унифицированный процесс представляет собой процесс разработки программного обеспечения (ПО), обеспечивающий наиболее стройный и структурированы подход к распределению задач и функций между исполнителями. Унифицированный процесс касается всего жизненного цикла ПО полностью – от определения требований и до сопровождения. Так, унифицированный процесс является некоторым каркасом, фундаментом, применяемым для разработки и сопровождения не одного продукта, а целой группы систем [9].

UML – язык, применяемый для определения, визуализации и конструирования моделей системы в виде диаграмм и документов на основе объектно–ориентированного подхода. [9].

Нa­ c­тa­диях a­нa­лизa­ и проектирования часто используются так называемые шаблоны (пa­ттe­рны) прo­e­ктирo­вa­ния. Шa­блo­н – это именованная пара «проблема/решение», содержащая готовое o­бo­бщe­ннo­e­ рe­шe­ниe­ типичнo­й проблемы [7]. Как правило, шаблон помимо текстового o­пиc­a­ния c­o­дe­ржит тa­кжe­ одну или несколько диаграмм UML (например, диаграммы клa­c­c­o­в, пo­c­лe­дo­вa­тe­льнo­c­ти и/или коммуникации), графически иллюстрирующих состав и структуру классов, a­ тa­кжe­ o­c­o­бe­ннo­c­ти их взаимодействия при решении поставленной проблемы. Шаблоны рa­зрa­бa­тывa­ютc­я o­пытными прo­фe­c­c­иo­нa­лa­ми и являются проверенными, эффективными (порой оптимальными) решениями [7].

Понятия объектно-ориентированного подхода

Концептуальная база методологии объектно–ориентированного моделирования включает в себя четыре главных взаимосвязанных понятия [10]: абстрагирование, иерархия, инкапсуляция и модульность.

Абстрагирование – способ выделения существенных характеристик некоторого объекта (абстракций), отличающих его от всех других видов объектов и, таким образом, четко определяющих его концептуальные границы.

Иерархия – способ упорядочения абстракций (классов) по уровням.

Инкапсуляция – способ отделения элементов объекта (класса), определяющих его устройство, от элементов, определяющих его поведение (т.е. отделениереализации от интерфейса).

Модульность – способ разложения системы на связанные, но относительно самостоятельные части (модули).

Объектно–ориентированное моделирование, проектирование и программирование в обязательном порядке основано на использовании названных понятий при описании классов и объектов [8].

Описание класса включает атрибуты, с помощью которых характеризуется состояние объектов данного класса, иоперации, с помощью которых характеризуется функционирование (поведение) объектов данного класса. При этом разграничивается внешний облик класса (спецификация или интерфейс) и его внутреннее устройство (реализация). Главное в интерфейсе – объявление операций, поддерживаемых экземплярами класса. В него также могут входить объявления других классов, переменных, исключительных ситуаций, уточняющих абстракцию, которую класс должен выражать. Реализация, как правило, состоит в определении операций, объявленных в интерфейсе класса.

Между классами могут существовать следующие отношения:

Наследование – такое отношение между классами, при котором класс повторяет описание состояния и поведения суперкласса (одного – одиночное наследование; нескольких – множественное наследование). Данное отношение является основным при выявлении иерархии классов предметной области. Узкие, специализированные классы в иерархии, от которых создаются экземпляры (объекты), называютсяконкретными классами. Общие классы, от которых экземпляры не производятся, называютсяабстрактными классами. Самый общий класс в иерархии классов называетсябазовымили корневым.

Ассоциация – отношение семантической зависимости, показывающее какие роли классы играют друг для друга. Ассоциации различаются по мощности: «один–к–одному», «один–ко–многим», «многое–ко–многим».

Агрегация – отношение, соответствующее отношению «часть–целое» между объектами данных классов.

Использование – может рассматриваться как разновидность отношения ассоциации, при котором одна из сторон (клиент) пользуется услугами или ресурсами другой стороны (сервера). Кроме того, использование может рассматриваться как один из аспектов отношения наследования, так как подкласс, наследуя состояние и поведение класса, выступает в роли его клиента. Так же клиентом класса является его экземпляр (объект), который использует атрибуты и операции данного класса [10].

При этом операция рассматривается как услуга, которую класс может предоставить своим клиентам. Как правило, эти операции бывают следующих видов:

Модификатор – операция изменения состояния объекта.

Селектор – операция считывания состояния объекта (без изменения состояния).

Итератор – операция, организовывающая доступ ко всем частям объекта в строго определенной последовательности.

Конструктор – операция создания и/или инициализации объекта.

Деструктор – операция, освобождающая состояние объекта и/или разрушающая сам объект [12].

Описание объекта включает в себя описание его состояния, которое характеризуется перечнем атрибутов, соответствующих классу, экземпляром которого является данный объект, и их текущими значениями. Кроме того, описание объекта включает также описание его поведения (функции), которое характеризуется методами, реализующими операции класса, экземпляром которого является данный объект.

Объединяя понятия состояния и поведения объекта, можно ввести понятие роли или ответственности объекта. Ответственность объекта имеет две стороны – знания, которые объект поддерживает, и действия, которые объект может исполнить. Она выражает смысл его предназначения и место в системе. Ответственность понимается как совокупность всех услуг и всех контрактных обязательств объекта. Следовательно, состояние и поведение объекта определяют его роль в системе, а она, в свою очередь, необходима соответствующему классу для выполнения его ответственности.

При выявлении структуры объектов моделируемой системы между объектами устанавливаются различные связи (посредством передачи сообщений), представляющие собой «физическое или концептуальное соединение между объектами». Связи обозначают равноправные или «клиент–серверные» отношения между объектами. «Наиболее желательной является функциональная связность, при которой все элементы…тесно взаимодействуют в достижении определенной цели» [6]. Участвуя в связях, объект может выполнять одну из трех ролей:

  • актора – при которой объект может воздействовать на другие объекты, но сам никогда не подвергается их воздействию (активный объект);
  • сервера – при которой объект может только подвергаться воздействию со стороны других объектов, но никогда не выступает в роли воздействующего объекта (пассивный объект);
  • агента – при которой объект может быть и активным, и пассивным [15].

Кроме того, между объектами могут быть выявлены иерархические отношения, а именно отношение «часть–целое», т.е. агрегация. При этом, идя от целого (агрегата), можно придти к его частям (атрибутам). Агрегация означает физическое или концептуальное вхождение одного объекта в другой.

Классы и объекты выявляются (обнаруживаются, открываются) на этапе OOA и в совокупности составляют словарь предметной области. На этапе OOD могут понадобиться новые классы, объекты и механизмы их взаимодействия для обеспечения поведения, требуемого моделью, которые приходится уже изобретать [15].

Глава 2. Применение объектно-ориентированного подхода при проектировании информационной системы

2.1. Достоинства и недостатки объектно-ориентированного подхода. Методологии его реализации

Оценим объектно–ориентированный подход в соотношении с не менее известным структурным подходом.

Главный недостаток структурного подхода заключается в следующем: процессы и данные существуют отдельно друг от друга (как в модели деятельности организации, так и в модели программной системы), причем проектирование ведется от процессов к данным. Таким образом, помимо функциональной декомпозиции, существует также структура данных, находящаяся на втором плане.

В объектно–ориентированном подходе основная категория объектной модели – класс – объединяет в себе на элементарном уровне как данные, так и операции, которые над ними выполняются (методы). Именно с этой точки зрения изменения, связанные с переходом от структурного к объектно–ориентированному подходу, являются наиболее заметными. Разделение процессов и данных преодолено, однако остается проблема преодоления сложности системы, которая решается путем использования механизма компонентов.

Данные по сравнению с процессами являются более стабильной и относительно редко изменяющейся частью системы. Отсюда следует главное достоинство объектно–ориентированного подхода, которое Гради Буч сформулировал следующим образом: объектно–ориентированные системы более открыты и легче поддаются внесению изменений, поскольку их конструкция базируется на устойчивых формах. Это дает возможность системе развиваться постепенно и не приводит к полной ее переработке даже в случае существенных изменений исходных требований [1].

Исследователи отмечают также ряд следующих преимуществ объектно–ориентированного подхода:

1. Объектная декомпозиция дает возможность создавать программные системы меньшего размера путем использования общих механизмов, обеспечивающих необходимую экономию выразительных средств. Использование объектного подхода существенно повышает уровень унификации разработки и пригодность для повторного использования не только программ, но и проектов, что в конце концов ведет к созданию среды разработки и переходу к сборочному созданию ПО. Системы зачастую получаются более компактными, чем их структурные эквиваленты, что означает не только уменьшение объема программного кода, но и удешевление проекта за счет использования предыдущих разработок.

2. Объектная декомпозиция уменьшает риск создания сложных систем ПО, так как она предполагает эволюционный путь развития системы на базе относительно небольших подсистем. Процесс интеграции системы растягивается на все время разработки, а не превращается в единовременное событие.

3. Объектная модель вполне естественна, поскольку в первую очередь ориентирована на человеческое восприятие мира, а не на компьютерную реализацию.

4. Объектная модель позволяет в полной мере использовать выразительные возможности объектных и объектно–ориентированных языков программирования [2].

К недостаткам объектно–ориентированного подхода относятся некоторое снижение производительности функционирования ПО и высокие начальные затраты. Объектная декомпозиция существенно отличается от функциональной, поэтому переход на новую технологию связан как с преодолением психологических трудностей, так и дополнительными финансовыми затратами. Безусловно, объектно–ориентированная модель наиболее адекватно отражает реальный мир, представляющий собой совокупность взаимодействующих (посредством обмена сообщениями) объектов. Но на практике в настоящий момент продолжается формирование стандарта языка объектно–ориентированного моделирования UML, и количество CASE–средств, поддерживающих объектно–ориентированный подход, невелико по сравнению с поддерживающими структурный подход. Кроме того, диаграммы, отражающие специфику объектного подхода (диаграммы классов и т.п.), гораздо менее наглядны и плохо понимаемы непрофессионалами. Поэтому одна из главных целей внедрения CASE–технологии, а именно снабжение всех участников проекта (в том числе и заказчика) общим языком «для передачи понимания», обеспечивается на сегодняшний день только структурными методами [2].

При переходе от структурного подхода к объектному, как при всякой смене технологии, необходимо вкладывать деньги в приобретение новых инструментальных средств. Здесь следует учесть и расходы на обучение (овладение методом, инструментальными средствами и языком программирования). Для некоторых организаций эти обстоятельства могут стать серьезными препятствиями.

Объектно–ориентированный подход не дает немедленной отдачи. Эффект от его применения начинает сказываться после разработки двух–трех проектов и накопления повторно используемых компонентов, отражающих типовые проектные решения в данной области. Переход организации на объектно–ориентированную технологию – это смена мировоззрения, а не просто изучение новых CASE–средств и языков программирования [7].

Кратко преимущества объектно–ориентированного подхода можно охарактеризовать следующим образом:

  • описание системы в виде объектов больше соответствует содержательному смыслу предметной области. Например, при использовании структурного подхода БД должна удовлетворять требованиям нормализации, в соответствии с которыми данные по одному и тому же объекту (сущности из реального мира) могут храниться в нескольких таблицах;
  • сущности реального мира, как правило, обладают поведением, что в объектно–ориентированном проектировании отражается с помощью определения методов класса. В структурном подходе данные (атрибуты) и алгоритмы (методы) существуют отдельно друг от друга;
  • объединение атрибутов и методов в объекте (классе), а также инкапсуляция позволяют добиться большей внутренней и меньшей внешней связности между компонентами системы. Это облегчает решение проблем:
  1. адаптации системы к изменению существующих или появлению новых требований;
  2. сопровождения системы на разных стадиях жизненного цикла;
  3. повторного использования компонентов;
  4. объектно–ориентированный подход позволяет легче организовать параллельные вычисления, так как каждый объект обладает собственными значениями характеристик (атрибутов) и поведением, за счет чего можно добиться его автономной работы;
  • Case–средства, поддерживающие объектно–ориентированный подход, на основе информации об объектах позволяют достичь большей степени автоматизации кодогенерации. Case–средства, поддерживающие структурный подход, хорошо справляются с генерацией структур БД. Однако следует отметить, что эта структура должна удовлетворять требованиям нормализации. В связи с чем автоматическая кодогенерация (например, экранов или функций обработки данных) возможна лишь в редких случаях [7].

Разработка информационных систем охватывает первые две стадии их жизненного цикла: стадию анализа требований и предварительной разработки, на которой будущая программная система рассматривается только в аспекте ее прагматики, и стадию проектирования (конструирования), на которой принимаются основные решения, связанные с реализацией проектируемой программной системы, а ее структура, разработанная на первой стадии, изменяется с учетом требований ее эффективности.

Методология OMT (Object Modeling Technique) поддерживает две первые стадии жизненного цикла программных систем. Это не единственная объектно–ориентированная методология разработки программных систем. Она является одной из наиболее продвинутых и популярных объектно–ориентированных методологий. Более того, графический язык (система обозначений для диаграмм) методологии OMT получил достаточно широкое распространение и используется в некоторых других объектно–ориентированных методологиях, а также в большинстве публикаций по объектно–ориентированным методологиям [12].

В этом разделе рассмотрим объектно–ориентированные методологии разработки программных систем. Они будут сравниваться с методологией OMT. В последнее время интерес к объектно–ориентированным методологиям разработки программных систем продолжает возрастать: много публикаций в журналах, докладов на конференциях и т.д. Программное обеспечение объектно–ориентированных методологий стало настолько популярным, что все интересные инструментальные и CASE–системы давно исчезли из public domain и распространяются только как коммерческие системы. Наиболее известной такой системой является система Paradigm+, которая поддерживает восемь объектно–ориентированных методологий, и в том числе, методологию OMT [12].

В этом разделе работы будут рассмотрены следующие объектно–ориентированные методологии анализа и разработки программных систем:

  • OMT (Object Modeling Technique);
  • SA/SD (Structured Analysis/Structured Design);
  • JSD (Jackson Structured Development);
  • OSA (Object–Oriented System Analysis).

Методология OMT опирается на программный продукт OMTTool, который позволяет разрабатывать модели проектируемой программной системы в интерактивном режиме с использованием многооконного графического редактора и интерпретатора наборов диаграмм, составляемых при анализе требований к системе и ее проектировании с использованием методологии OMT. Таким образом, как только получен достаточно полный набор диаграмм проектируемой программной системы, его можно проинтерпретировать и предварительно оценить различные свойства будущей реализации системы. В настоящее время OMTTool входит в состав системы Paradigm+ [12].

Методология SA/SD содержит несколько вариантов систем обозначений для формальной спецификации программных систем. На этапе анализа требований и предварительного проектирования для логического описания проектируемой системы используются спецификации (формальные описания) процессов, словарь данных, диаграммы потоков данных, диаграммы состояний и диаграммы зависимостей объектов [9].

Диаграммы потоков данных (ДПД), составляющие основу методологии SA/SD, моделируют преобразования данных при их прохождении через систему. Методология SA/SD состоит в последовательном рассмотрении процессов, входящих в состав ДПД, с представлением каждого процесса через ДПД, содержащую в своем составе более простые процессы. Эта процедура представления более сложных процессов через ДПД начинается с ДПД всей системы и заканчивается, когда все полученные ДПД содержат достаточно элементарные процессы. Для каждого процесса самого нижнего уровня составляется спецификация; спецификация описывается с помощью псевдокода, таблиц принятия решений и т.п.

Детали, не учтенные в наборе ДПД, содержатся в словаре данных, который определяет потоки и хранилища данных, а также семантику различных имен. Набор диаграмм состояния процессов играет ту же роль, что и динамическая модель в методологии OMT. Диаграммы зависимостей объектов отражают зависимости между хранилищами данных. Эти диаграммы аналогичны объектной модели методологии OMT [9].

Так в методологии SA/SD организован этап структурного анализа (SA). После структурного анализа начинается этап структурного конструирования (SD), в процессе которого разрабатываются и уточняются более тонкие детали проектируемой системы. Таким образом, мы видим, что у методологий SA/SD и OMT много общего: обе методологии используют похожие конструкции для моделирования и поддерживают три взаимно–ортогональных представления проектируемой системы. Методологии SA/SD и OMT можно рассматривать как два способа использования инструментального средства – OMTTool.

Методология JSD предлагает свой стиль разработки программных систем; он отличается от стиля, принятого в методологиях SA/SD или OMT. Методология JSD, разработанная Майклом Джексоном в середине 80–х годов, особенно популярна в Европе. В методологии JSD не делается различий между этапом анализа требований к системе и этапом ее разработки; оба этапа объединяются в один общий этап разработки спецификаций проектируемой системы. На этом этапе решается вопрос «что должно быть сделано»; вопрос «как это должно быть сделано» решается на следующем этапе – этапе реализации системы. Методология JSD часто применяется для проектирования систем реального времени [5].

Как и другие методологии, методология JSD использует систему графических обозначений, хотя эта методология и менее ориентирована на графику, чем методологии SA/SD и OMT. Разработка модели JSD начинается с изучения объектов реального мира. Целью системы является обеспечение требуемой функциональности, но Джексон понимает, что сначала следует убедиться, что эта функциональность согласуется с реальным миром. Модель JSD описывает реальный мир в терминах сущностей (объектов), действий и порядка выполнения действий. Разработка системы по методологии JSD включает следующие шесть фаз:

  • разработка действий и объектов;
  • разработка структуры объектов;
  • разработка исходной модели;
  • разработка функций;
  • разработка временных ограничений;
  • реализация системы [5].

Методология JSD может быть названа объектно–ориентированной с большой натяжкой: в ней почти не рассматривается структура объектов, мало внимания уделяется их атрибутам. Некоторые действия в смысле методологии JSD являются, по существу, зависимостями между объектами в смысле методологии OMT [5].

Методология OSA обеспечивает объектно–ориентированный анализ программных систем и не содержит возможностей, связанных с поддержкой этапа разработки.

Методологии объектно–ориентированного анализа нередко критикуются за то, что они являются больше реализационно–ориентированными, чем проблемно–ориентированными, обеспечивая больше предварительную разработку, чем анализ требований к системе. Действительно, все рассмотренные методологии (такие, как OMT, SA/SD, JSD) поддерживают прежде всего предварительную разработку программных систем, а не анализ требований к ним. Это следует из таблиц 1 и 2, в которых рассмотрены возможности различных методологий, поддерживающие процесс анализа (таблица 1) и процесс разработки (таблица 2) [12].

Таблица 1

Аналитические возможности сравниваемых методологий объектно–ориентированного анализа

Возможность

OSA

OMT

SA/SD

JSD

Объекты: должны иметь индивидуальное и независимое состояние и поведение

+

+

+

+

Классы объектов: должны определять свойства своих членов и должны иметь место в памяти

+

+

+

+

Множества связей: множества соединений объектов

+

+

+

+

Реляционные классы объектов: рассматривают связи как объекты

+

+

+

Полностью интегрированные подмодели: допускают произвольную интеграцию подмоделей анализа; знак «–» в таблице означает, что подмодели, представленные, например, блок–схемами, не могут комбинироваться с другими видами подмоделей (например, моделями поведения)

+

+

Агрегация: часто используемый механизм абстракции, который представляет взаимосвязи между системами и их частями

+

+

+

+

Обобщение/наследование: механизм абстракции: если A есть специализация B, то свойства A подразумевают свойства B

+

+

+

Полномасштабные ограничения мощности связей: допускают мощности связей, являющихся произвольными множествами неотрицательных целых чисел (не только 1–1, 1–M, M–1, M–M)

+

Синонимы и омонимы: допускают несколько имен для одной конструкции и многократное использование одного имени для различных конструкций; полезно при интеграции моделей

+

Полная система триггеров: допускаются только условия, только события, или комбинации условий и событий

+

+

Действия: описывают поведение, которое завершается

+

+

+

+

Недетерминированное поведение: описание поведения, которое при отсутствии внешних воздействий может и не завершиться

+

+

Межобъектный параллелизм: более одного объекта могут быть активными одновременно

+

+

+

+

Внутриобъектный параллелизм: в одном объекте допускается одновременное активное существование двух или более трэдов

+

+

Исключения: допускается обнаружение и обработка условий ошибок

+

Временные ограничения: обеспечивают средства ограничения времени на какое–либо действие

+

+

+

Темпоральные условия: поддерживают возможность формулировать условия, ссылающиеся на события в прошлом, настоящем и будущем

+

Метамодель: определяет правильный экземпляр модели

+

Родовой класс: параметризация классов – механизм абстракции, помогающий осуществлять анализ, хотя иногда его считают особенностью языка

Взаимодействие данных и событий: обеспечивает возможность объектам посылать и принимать данные и события

+

+

+

Унифицированные взаимодействия: разрешают взаимодействие и по данным, и по событиям одновременно; многие модели разделяют взаимодействия по данным (поток данных) и по событиям

+

Детализация взаимодействий: показывает когда и почему объект взаимодействует с другими объектами

+

Непрерывные взаимодействия: допускает непрерывный поток информации

+

Взаимодействия по бродкастингу: разрешает иметь много приемников для одной передачи данных или события; бродкастинг разрешен только для данных, но не для событий

+

Общее число аналитических возможностей

29

13

8

9

Таблица 2

Возможности сравниваемых методов объектно–ориентированного анализа, используемые на этапе разработки системы

Возможность

OSA

OMT

SA/SD

JSD

Значения: имеют состояние, но не имеют поведения и индивидуальности; хотя значения можно считать постоянными объектами, во многих подходах существует различие между пространствами значений и объектов

+

+

+

Атрибуты и/или методы: определяют классы объектов в терминах атрибутов и/или методов, аналогично тому, как классы объектов определяются в объектно–ориентированных языках

+

+

+

Шаблоны классов объектов: шаблоны, по которым создаются экземпляры классов объектов, что подразумевает, что свойства экземпляра объекта определяет класс, а не свойства объекта определяют его класс

+

+

Абстрактные классы: шаблоны, которые определяют свойства, но не разрешают создавать экземпляры

+

+

+

Псевдонаследование: разрешает, чтобы атрибуты и сигнатуры методов подкласса совпадали с атрибутами и сигнатурами методов суперкласса

+

+

+

Тождественность по значениям: множества атрибутов (их обычно называют возможными ключами), используемые для определения тождественности объектов

+

+

Изменение семантики: разрешает переопределять в подклассе семантику методов суперкласса

+

+

Императивный вызов операций: позволяет вызов метода в отношении клиент–сервер

+

Общее число возможностей по разработке

0

7

6

6

Методология OSA сосредоточена только на проблемах анализа, предлагая ряд интересных соображений, связанных с объектно–ориентированным анализом систем и специально исключая из рассмотрения особенности, характерные для разработки. Предлагая удобные и тонкие методы анализа систем, методология OSA обеспечивает интерпретацию моделей на компьютере на самых ранних этапах анализа системы: OSA реализована в системе программирования C++ на рабочей станции Hewlett–Packard 700 под управлением ОС HP–UX 9.01.

Методология OSA, как и другие методологии, поддерживает три взаимно–ортогональных представления (модели) проектируемой системы:

  • модель зависимостей между объектами;
  • модель поведения объектов;
  • модель взаимодействия объектов.

Модель зависимостей между объектами аналогична объектной модели методологии OMT. В ней рассматриваются объекты, множества отношений между объектами и различные ограничения [15].

Во второй главе работы рассмотрены достоинства и недостатки объектно-ориентированного подхода к проектированию информационной системы в сравнении со структурным подходом. Кроме того, осуществлен краткий, но емкий обзор методологий, которые сегодня наиболее часто используются для реализации программных целей. Так или иначе, выбирать подходящую методологию, а также подход к проектированию в целом необходимо индивидуально и субъективно – исходя из целей, задач и требований к готовому продукту.

2.2. Краткий обзор программных сред, применяемых в процессе реализации объектно-ориентированного подхода

Рассмотрим три наиболее распространенных языков и программных продуктов, которые применяются в процессе реализации объектно–ориентированного подхода – Pascal, Java и Python.

В основе того или иного языка программирования лежит некоторая руководящая идея, оказывающая существенное влияние на стиль соответствующих программ.

Исторически первой была идея процедурного структурирования программ, в соответствии с которой программист должен был решить, какие именно процедуры он будет использовать в своей программе, а затем выбрать наилучшие алгоритмы для реализации этих процедур. Последовательное использование идеи процедурного структурирования программ привело к созданию обширных библиотек программирования, содержащих множество сравнительно небольших процедур, из которых, как из кирпичиков, можно строить «здание» программы.

По мере прогресса в области вычислительной математики акцент в программировании стал смещаться с процедур в сторону организации данных. Оказалось, что эффективная разработка сложных программ нуждается в действенных способах контроля правильности использования данных. Контроль должен осуществляться как на стадии компиляции, так и при прогоне программ, в противном случае, как показала практика, резко возрастают трудности создания крупных программных проектов. Отчетливое осознание этой проблемы привело к созданию Алгола–60, а позже – Паскаля, Модулы–2, Си и множества других языков программирования, имеющих более или менее развитые структуры типов данных [9].

Начиная с языка Симула–67, в программировании наметился новый подход, который получил название объектно–ориентированного программирования (ООП). Его руководящая идея заключается в стремлении связать данные с обрабатывающими эти данные процедурами в единое целое – объект. Характерной чертой объектов является инкапсуляция (объединение) данных и алгоритмов их обработки, в результате чего и данные, и процедуры во многом теряют самостоятельное значение. Фактически объектно–ориентированное программирование можно рассматривать как модульное программирование нового уровня, когда вместо во многом случайного, механического объединения процедур и данных акцент делается на их смысловую связь.

Какими мощными средствами располагает объектно–ориентированное программирование наглядно демонстрирует библиотека Turbo Vision, входящая в комплект поставки Турбо Паскаля.

Одна из наиболее популярных программ для работы с Турбо Паскалем – Free Pascal [9].

Free Pascal это свободно распространяемый компилятор языка Паскаль. Free Pascal работает на различных процессорах (Intel x86, Amd64/x86_64, PowerPC, Sparc) и операционных системах (Linux, FreeBSD, Mac OS X/Darwin, Mac OS classic, DOS, Win32, OS/2, Netware и MorphOS). Синтаксис Free Pascal полностью совместим с Turbo Pascal 7.0, а так же, по утверждению разработчиков, с большинством версий Delphi (классы, rtti, исключения, ansistrings, widestrings, интерфейсы). Для пользователей Apple есть режим совместимости с Mac Pascal. Кроме того Free Pascal поддерживает перегрузку функции, перегрузку оператора, глобальные свойства и некоторые другие особенности.

Сам компилятор распространяется бесплатно по лицензии GNU GPL, а идущие вместе с ним пакеты и библиотеки по модифицированной LGPL, что позволяет распространять ваши скомпилированные программы на любых удобных для вас условиях.

Free Pascal поддерживает компиляцию кода для процессоров Intel, начиная с i386, AMD64 or EMT64, PowerPC, SPARC, Intel ARM. На сегодняшний день существуют или находятся в разработке релизы Free Pascal для следующих операционных систем: Dos (с поддержкой 32–разрядных расширений), Linux, Mac OS X/Darwin, Mac OS classic, Amiga (только версия 0.99.5), Win32, os/2, FreeBSD, BeOS, Solaris , PalmOS , NetBSD, Netware, OpenBSD, MorphOS.

Сейчас последней и рекомендуемой к использованию является версия 2.0.2, вышедшая в ноябре 2005 г. Для каждой из поддерживаемых платформ существует свой дистрибутив Free Pascal. В дальнейшем речь пойдет о пакете, предназначенном для семейства ОС Win32 [11].

На уровне исходного кода приложения, разработанные при помощи Free Pascal, являются переносимыми (портируемыми) между поддерживаемыми платформами. Степень переносимости тем выше, чем больше приложение ориентировано на использование входящих в состав Free Pascal модулей (имеются в виду модули, общие для всех поддерживаемых платформ).

В дистрибутив Free Pascal для Win32 включена документация на английском языке, представленная в формате pdf. На сайте разработчиков также доступна он–лайн документация и архивы с документацией в формате html и в виде обычного текстового файла.

В состав документации входят руководство пользователя, руководство программиста, справочник по диалекту языка Паскаль, который поддерживается Free Pascal, справочник по опциям командной строки,справочник по модулям и функциям встраиваемых библиотек и руководство по созданию документации.

Кроме компилятора, в состав пакета входят дополнительные утилиты, призванные подсобить в разработке приложений. Среди них:

  • data2inc – преобразует произвольный файл во включаемый файл (.inc) для FPC, где соответствующие данные представлены в виде константы–массива.
  • delp – очищает папку от «временных» файлов, возникающих при компиляции.
  • fpcmake – используется для подготовки make–файлов для GNU make.
  • fpdoc – генерирует документацию из модулей Free Pascal в форматах HTML и LaTeX.
  • fpmc – компилятор msg–файлов.
  • fprcp – pascal–препроцессор для windres.
  • grep – осуществляет поиск строки по шаблону в одном или нескольких файлах.
  • h2pas и h2paspp – транслятор заголовочных файлов C и C++ в модули Pascal.
  • makeskel – утилита для подготовки скелета xml–описания для fpdoc.
  • ppdep – позволяет получить список зависимостей одного модуля от других.
  • ppudump – позволяет извлечь информацию из .ppu–файлов.
  • ppufiles – то же, что ppdep, но для .ppu–файлов.
  • ppumove – позволяет собирать библиотеки из .ppu.
  • ptop – форматирование исходников.
  • windres – компилятор ресурсов и др. [14]

Java Development Kit (JDK) является одним из трех основных пакетов, используемых в программировании на языке Java. К ним также относятся JVM (Java Virtual Machine) и JRE (Java Runtime Environment). Важно различать эти три технологии, а также понимать, как они связаны:

  • JVM – это часть платформы Java, которая исполняет программы
  • JRE – это элемент Java, расположенный на диске, создающий и запускающий JVM
  • JDK позволяет разработчикам создавать Java–программы, которые могут выполняться и запускаться посредством JVM и JRE [13]

Начинающие Java разработчики часто путают Java Development Kit и Java Runtime Environment. Различие заключается в том, что JDK представляет собой пакет инструментов для разработки программного обеспечения, тогда как JRE представляет собой пакет инструментов для запуска Java–кода

JRE может использоваться, как отдельный компонент для простого запуска Java–программ, но при этом является частью JDK. JDK требуется JRE, потому что запуск программ является неотъемлемой частью их разработки

Рассмотрим техническое и обобщенное определение JDK:

Техническое определение: JDK – это реализация спецификации платформы Java, включающая в себя компилятор и библиотеки классов

Обобщенное определение: JDK – это программный пакет, который вы загружаете для создания Java приложений

В дополнение к JRE, который является средой, используемой для запуска Java–приложений, каждый JDK содержит компилятор Java. Компилятор – это программа, способная принимать исходные файлы с расширением .java, которые являются обычным текстом, и превращать их в исполняемые файлы с расширением .class. Скоро мы рассмотрим как работает компилятор, но сперва разберемся, как загрузить и настроить JDK

Установка и настройка JDK не представляет никакой сложности. При загрузке JDK, необходимо выбрать какую версию Java вы хотите использовать. На данный момент Java 8 является наиболее часто используемой версией (на момент перевода статьи вышла Java 11). Java поддерживает обратную совместимость, поэтому просто загружайте последнюю версию

В дополнение к версии Java, необходимо выбрать пакет (платформу). В Java доступны следующие платформы: Java Enterprise Edition (Java EE), Java Standard Edition (Java SE) и Java Mobile Edition (Java ME).

Начинающие разработчики иногда не могут разобраться, какой именно пакет подходит для их проекта. Как правило, каждая версия JDK содержит инструменты Java SE. Например, Java EE это стандартная платформа (SE) с дополнительными инструментами, полезными для разработки корпоративных приложений таких, как Enterprise JavaBeans или поддержка Object Relational Mapping

Программное обеспечение JetBrains PyCharm представляет собой интегрированную среду разработки Python с дополнительным набором программных средств оптимизации продуктивности. Решение предоставляет все необходимое для профессиональной web–разработки с использованием свободной программной структуры Django. Среда JetBrains PyCharm предоставляет интеллектуальный редактор кода с опцией автоматического завершения строки, готовыми блоками и другими важными [13].

PyCharm – это самая интеллектуальная Python IDE с полным набором средств для эффективной разработки на языке Python. Выпускается в двух вариантах – бесплатная версия PyCharm Community Edition и поддерживающая больший набор возможностей PyCharm Professional Edition. PyCharm выполняет инспекцию кода на лету, автодополнение, в том числе основываясь на информации, полученной во время исполнения кода, навигацию по коду, обеспечивает множество рефакторингов.

Ключевые возможности

  1. Мощный и функциональный редактор кода с подсветкой синтаксиса, авто–форматированием и авто–отступами для поддерживаемых языков.
  2. Простая и мощная навигация в коде.
  3. Помощь при написании кода, включающая в себя автодополнение, авто–импорт, шаблоны кода, проверка на совместимость версии интерпретатора языка, и многое другое.
  4. Быстрый просмотр документации для любого элемента прямо в окне редактора, просмотр внешеней документации через браузер, поддержка docstring – генерация, подсветка, автодополнение и многое другое.
  5. Большое количество инспекций кода.
  6. Мощный рефакторинг кода, который предоставляет широкие возможности по выполнению быстрых глобальных изменений в проекте.
  7. Полная поддержка свежих версий Django фреймворка.
  8. Поддержка Google App Engine.
  9. Поддержка IronPython, Jython, Cython, PyPy wxPython, PyQt, PyGTK и др.
  10. Поддержка Flask фреймворка и языков Mako и Jinja2.
  11. Редактор Javascript, Coffescript, HTML/CSS, SASS, LESS, HAML.
  12. Интеграция с системами контроля версий (VCS).
  13. UML диаграммы классов, диаграммы моделей Django и Google App Engine.
  14. Интегрированное Unit тестирование.
  15. Интерактивные консоли для Python, Django, SSH, отладчика и баз данных.
  16. Полнофункциональный графический отладчик (Debugger).
  17. Поддержка схем наиболее популярных IDE/редакторов. таких как Netbeans, Eclipse, Emacs, эмуляция VIM редактора.
  18. Поддерживаемые языки: Python (Versions: 2.x, 3.x), Jython, Cython, IronPython, PyPy, Javascript, CoffeScript, HTML/CSS, Django/Jinja2 templates, Gql, LESS/SASS/SCSS/HAML, Mako, Puppet, RegExp, Rest, SQL, XML, YAML.
  19. PyCharm имеет несколько цветовых схем, а также настраиваемую подсветку синтаксиса кода.
  20. Интеграция с баг/issue–треккерами, такими как JIRA, Youtrack, Lighthouse, Pivotal Tracker, GitHub, Redmine, Trac…
  21. Огромная, постоянно пополняемая коллекция плагинов.
  22. Кросс–платформенность (Windows, Mac OS X, Linux) [7].

Основные новшества последней версии PyCharm включают

  1. Поддержка Python 3.5
  2. Интеграция Docker
  3. Визуализация выполнения потоков
  4. Поддержка Google и Numpy докстрок
  5. Интеграция с Conda
  6. App Config Tool и мн. др. [7]

ЗАКЛЮЧЕНИЕ

В ходе выполнения работы была достигнута поставленная цель, а именно: рассмотрены особенности применения объектно–ориентированного подхода при проектировании информационной системы.

Для достижения цели были выполнены следующие задачи:

  1. Проанализирован структурный подход к проектированию информационной системы;
  2. Охарактеризована сущность объектно–ориентированного подхода;
  3. Выявлены преимущества и недостатки применения объектно–ориентированного подхода при проектировании информационной системы;
  4. Рассмотрены примеры программных продуктов, применяемых для реализации объектно–ориентированного подхода.

Во время выполнения работы было определено, что объектно–ориентированный подход к проектированию информационной системы обладает как объемным перечнем достоинств, так и недостатков. Тем не менее, количество и качество достоинств значительно превышает все недостатки, что делает объектно–ориентированный подход распространенными позволяет ему динамично развиваться и совершенствоваться.

Рассмотренные программные продукты поддерживаются производителями и постепенно улучшаются – программы регулярно обновляются и выходят новые версии. В связи с этим можно сказать, что объектно–ориентированный подход к проектированию информационной системы будет только распространяться.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Архангельский, А. Я. Программирование Delphi 5 / А. Я. Архангельский. – М: Изд. дом «Бином», 2017. – 127 c.
  2. Бобровский, С. И. Delphi 7: Учебный курс / С. И. Бобровский. – СПб.: Питер, 2014. – 211 c.
  3. Васильев, А. Н. C#. Объектно–ориентированное программирование / А. Н. Васильев. – М.: Питер, 2015. – 320 c.
  4. Васильев, А. Н. Java. Объектно–ориентированное программирование / А. Н. Васильев. – М.: Питер, 2016. – 400 c.
  5. Иванов, А. Г. Объектно–ориентированная среда программирования. Системы и средства информатики / А. Г. Иванов, А. В. Карпова, В. П. Семик Ю. Е. Филинов. Вып.2. М.: Наука, 1991.
  6. Иванова, Г. С. Объектно–ориентированное программирование / Г. С. Иванова. – М.: Московский Государственный Технический Университет (МГТУ) имени Н.Э. Баумана, 2014. – 149 c.
  7. Колесов, Ю. Б. Моделирование систем. Объектно–ориентированный подход / Ю. Б. Колесов, Ю. Б. Сениченков. – М.: БХВ–Петербург, 2016. – 192 c.
  8. Комлев Н. Ю. Объектно Ориентированное Программирование. Хорошая книга для Хороших Людей / Н. Ю. Комлев. – М.: Солон–Пресс, 2014. – 892 c.
  9. Кьоу, Дж. Объектно–ориентированное программирование / Дж. Кьоу, М. Джеанини. – М.: Питер, 2015. – 240 c.
  10. Лафоре, Р. Объектно–ориентированное программирование в C / Р. Лафоре. – М.: СПб: Питер; Издание 4–е, 2014. – 928 c.
  11. Лесневский, А. С. Объектно–ориентированное программирование для начинающих / А. С. Лесневский. – М.: Бином. Лаборатория знаний, 2015. – 232 c.
  12. Мартынов, Н. Н. Алгоритмизация и основы объектно–ориентированного программирования на JavaScript. Информатика и ИКТ. Профильный уровень. 10 класс / Н. Н. Мартынов. – Москва: Наука, 2017. – 272 c.
  13. Могилев, А. Методы программирования. Компьютерные вычисления / А. Могилев, Л. Листрова. – М.: БХВ–Петербург, 2018. – 320 c.
  14. Павловская, Т. C/C++. Процедурное и объектно–ориентированное программирование. Учебник / Т. Павловская. – М.: Питер, 2015. – 496 c.
  15. Санников, Е. В. Курс практического программирования в Delphi. Объектно–ориентированное программирование / Е. В. Санников. – М.: Солон–Пресс, 2016. – 188 c.
  16. Фокс, Дж. Программное обеспечение и его разработка / Дж. Фокс. М.:Мир, 1985. – 368 с. – 368c.
  17. Фридман, А. Л. Основы объектно–ориентированной разработки программных систем / А. Л. Фридман. – М.: ФиС, 2017. – 304 c.
  18. Хорев, П. Б. Объектно–ориентированное программирование / П. Б. Хорев. – М.: Академия, 2015. – 448 c.
  19. Хохлов, Д. Г. Методы программирования на языке С. Практикум. В 2 частях (комплект) / Д. Г. Хохлов. – М.: Бином. Лаборатория знаний, 2014. – 712 c.
  20. Хювенен, Э. Мир Лиспа. Методы и системы программирования / Э. Хювенен, Й. Сеппянен. – М.: Мир, 1990. – 320 c.