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

Применение объектно–ориентированного подхода при проектировании информационной системы (Подходы к проектированию информационной системы)

Содержание:

ВВЕДЕНИЕ

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

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

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

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

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

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

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

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

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

Теоретической и методологической основой исследования выступили труды таких отечественных исследователей вопроса, как Вдовин В. М., Ивасенко А. Г., Вертакова Ю. В. и др.

Глава 1. Подходы к проектированию информационной системы

1.1 Структурный подход

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

Принципиальное различие между двумя рассмотренными подходами является способ декомпозиции системы.

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

Понятие «корректная» по отношению к декомпозиции означает выполнение следующих требований:

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

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

  • каждая часть системы должна инкапсулировать свое содержимое (скрывать его от других подсистем);
  • каждая часть системы должна иметь четко определенный интерфейс и взаимодействие с другими подсистемами [4].

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

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

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

Кроме того, к настоящему времени сформировалась иная классификация принципов, которая представлена ниже:

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

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

  • SADT модели и соответствующие функциональные диаграммы;
  • DFD диаграммы потоков данных;
  • ERD диаграммы «сущность–связь».

Одним из наиболее значительных различий между разновидностями структурного анализа является их функциональность.

Модели SADT (IDEF0) являются самыми удобными для построения функциональных моделей. Они наделены возможностью наглядно отобразить функциональную структуру объекта и все ее составляющие: производимые действия и связи между ними. Благодаря этому возможно четко проследить логику и взаимодействие процессов организации. В качестве главного достоинства нотации можно назвать возможность получить полную информацию о каждой работе или подсистеме, благодаря ее жестко регламентированной структуре. С помощью четко разработанной структуры можно также обнаружить все недостатки, которые касаются как самого процесса, так и того, с помощью чего он реализуется: дублирование функций, отсутствие механизмов, регламентирующих данный процесс, отсутствие контрольных переходов и т.д.

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

IDEF3 хорошо приспособлен для сбора информации, необходимой для проведения анализа системы с точки зрения расхождения между процессами во времени [9].

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

Процессный подход к проектированию информационной системы

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

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

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

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

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

2.1 Сущность объектно–ориентированного подхода

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

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

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

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

Концептуальной основой объектно–ориентированного подхода является объектная модель. Среди ее основных понятий как основные можно выделить понятия объекты и атрибуты, целое и часть, классы и экземпляры [8].

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

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

Класс – это некоторое множество объектов, которые связаны общностью структуры и поведения. Класс инкапсулирует (объединяет) в себе данные (атрибуты) и поведение (операции). Любой объект представляет собой экземпляр класса [2].

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

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

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

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

На стадиях анализа и проектирования будущей информационной системы зачастую применяются так называемые шаблоны (паттерны) проектирования. В данном случае под шаблоном понимается именованная пара «проблема/решение», которая содержит готовое обобщенное решение некоторой типичной проблемы. В большинстве случаев шаблон кроме текстового описания может также включать одну или несколько диаграмм UML (например, диаграммы классов, последовательности и/или коммуникации), которые графически иллюстрируют состав и структуру классов, и, кроме того, особенности их взаимодействия при решении некоторой проблемы. Шаблоны должны быть разработаны опытными профессионалами и являться проверенными, эффективными, оптимальными решениями. Помимо всего прочего, использование шаблонов может многократно уменьшить затраты и повысить качество разработки программного и информационного обеспечения.

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

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

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

Таким образом, объектно–ориентированный подход обеспечивает адекватные подходы к решению следующих проблем:

  • снижение сложности программного обеспечения;
  • увеличение надежности программного обеспечения;
  • обеспечение возможности модификации отдельных составляющих ПО без изменения остальных его компонентов;
  • обеспечение возможности повторного использования отдельных компонентов программного обеспечения [11].

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

2.2 Основные понятия объектно–ориентированного подхода

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

    • абстрагирование (abstraction);
    • инкапсуляция (encapsulation);
    • наследование (inheritance);
    • полиморфизм (polymorphism);
    • модульность (modularity);
    • иерархия (hierarchy).

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

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

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

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

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

Иерархия представляет собой ранжированную или упорядоченную систему абстракций, их некоторое распределение по уровням. Основными видами иерархических структур применительно к сложным системам являются структура классов и структура объектов. Как пример иерархии классов можно привести: простое и множественное наследование (один класс применяет структурную или функциональную часть соответственно одного или нескольких других классов), а иерархии объектов – агрегация [5].

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

    • архитектуры компьютеров (Burroughs 5000, Plessey 250, IBM System/38, Intel 432);
    • объектно–ориентированных операционных систем (Plessey/System 250, Secure UNIX, StarOS, iMax);
    • объектно–ориентированных языков программирования (Simula, Smalltalk, Modula);
    • теории баз данных (модели «сущность–связь»);
    • систем искусственного интеллекта (фреймы) [15].

При разработке программного обеспечения и автоматизированных информационных систем понятие «объект» впервые было введено Оле–Джоаном Далем, Бьорном Мюрхогом и Кристеном Ныгардом из Норвежского вычислительного центра, расположенного в городе Осло. Названные специалисты разработали язык Simula 67, который был создан на основе языка Algol–60 и предназначался для моделирования и описания сложных систем. Однако по–настоящему широкое распространение данной идеи было осуществлено при разработке языка SmallTalk в 1990 г. Аланом Кейем из Исследовательского центра фирмы Xerox (г. Пало–Альто). В SmallTalk применялись исключительно объектно–ориентированные конструкции.

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

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

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

Индивидуальность является таким свойством сущности, при помощи которого она может быть отделена от других. Иначе говоря, имея в виду объект «автомобиль», говорится не обобщенное понятие автомобиль, как что–то, состоящее из деталей и комплектующих, а конкретное транспортное средство определенной марки под определенным номером [9].

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

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

2.3 Преимущества и недостатки применения объектно–ориентированного подхода

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

Объектно–ориентированный подход полезен как с методической точки зрения (две разнородные характеристики предметной области – данные и программы – объединяются в объекты), так и с точки зрения техники проектирования и разработки программных систем (вместо двух технически не связанных, но логически переплетенных веток образуется один надёжный ствол) [10].

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

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

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

2.4 Примеры программных продуктов, которые могут быть применены для реализации объектно–ориентированного подхода

Современными языками объектно–ориентированного программирования являются С++ и Java. С середины 90–х годов многие объектно–ориентированные языки реализуются как системы визуального проектирования, в которых интерфейсная часть программного продукта создается в диалоговом режиме, практически без написания программных операторов. К объектно – ориентированным системам визуального проектирования относятся Visual Basic, Delphi, C++ Builder, Visual C++. Язык VBA (Visual Basic for Applications) – язык приложений Microsoft Office (Excel, Word, Access, Power Point и др).

Подробнее рассмотрим каждую из сред.

C++ – компилируемый, статически типизированный язык программирования общего назначения.

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

C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр). Существует множество реализаций языка C++, как бесплатных, так и коммерческих и для различных платформ. Например, на платформе x86 это GCC, Visual C++, Intel C++ Compiler, Embarcadero (Borland) C++ Builder и другие. C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.

Синтаксис C++ унаследован от языка C. Одним из принципов разработки было сохранение совместимости с C. Тем не менее, C++ не является в строгом смысле надмножеством C; множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико, но не включает все возможные программы на C [3].

Java – сильно типизированный объектно–ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно транслируются в специальный байт–код, поэтому они могут работать на любой компьютерной архитектуре, с помощью виртуальной Java–машины. Дата официального выпуска – 23 мая 1995 года.

Программы на Java транслируются в байт–код Java, выполняемый виртуальной машиной Java (JVM) – программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

Достоинством подобного способа выполнения программ является полная независимость байт–кода от операционной системы и оборудования, что позволяет выполнять Java–приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером), вызывают немедленное прерывание [12].

Часто к недостаткам концепции виртуальной машины относят снижение производительности. Ряд усовершенствований несколько увеличил скорость выполнения программ на Java:

  • применение технологии трансляции байт–кода в машинный код непосредственно во время работы программы (JIT–технология) с возможностью сохранения версий класса в машинном коде,
  • широкое использование платформенно–ориентированного кода (native–код) в стандартных библиотеках,
  • аппаратные средства, обеспечивающие ускоренную обработку байт–кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM) [12].

По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора–два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java–машиной было в 10–30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и бо́льшее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++.

Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине. Эти идеи нашли также выражение в спецификации общеязыковой инфраструктуры CLI, заложенной в основу платформы .NET компанией Microsoft.

Microsoft Visual Basic – язык программирования, а также интегрированная среда разработки программного обеспечения, разрабатываемые корпорацией Microsoft. Язык Visual Basic унаследовал дух, стиль и отчасти синтаксис своего предка – языка BASIC, у которого есть немало диалектов. В то же время Visual Basic сочетает в себе процедуры и элементы объектно–ориентированных и компонентно–ориентированных языков программирования. Интегрированная среда разработки VB включает инструменты для визуального проектирования пользовательского интерфейса, редактор кода с возможностью IntelliSense и подсветкой синтаксиса, а также инструменты для отладки приложений [13].

Visual Basic также является хорошим средством быстрой разработки (RAD) приложений баз данных для операционных систем семейства Microsoft Windows. Множество готовых компонентов, поставляемых вместе со средой, призваны помочь программисту сразу же начать разрабатывать бизнес–логику приложения, не отвлекая его внимание на написание кода запуска программы, подписки на события и других механизмов, которые VB реализует автоматически.

Первое признание серьёзными разработчиками Visual Basic получил после выхода версии 3. Окончательное признание как полноценного средства программирования для Windows – при выходе версии 5. Версия VB6, входящая в состав Microsoft Visual Studio 6.0, стала по–настоящему зрелым и функционально богатым продуктом.

C++ Builder– программный продукт, инструмент быстрой разработки приложений (RAD), интегрированная среда программирования (IDE), система, используемая программистами для разработки программного обеспечения на языке программирования C++.

Изначально разрабатывался компанией Borland Software, а затем её подразделением CodeGear, ныне принадлежащим компании Embarcadero Technologies [14].

C++ Builder объединяет в себе комплекс объектных библиотек (STL, VCL, CLX, MFC и др.), компилятор, отладчик, редактор кода и многие другие компоненты. Цикл разработки аналогичен Delphi. Большинство компонентов, разработанных в Delphi, можно использовать и в C++ Builder без модификации, но обратное утверждение не верно.

C++ Builder содержит инструменты, которые при помощи drag–and–drop действительно делают разработку визуальной, упрощает программирование благодаря встроенному WYSIWYG – редактору интерфейса и пр.

C++Builder первоначально создавалась только для платформы Microsoft Windows. Поздние версии, содержащие кроссплатформенную компонентную библиотеку Borland, поддерживают и Windows, и Linux.

В 2003 году Borland выпустила C++BuilderX (CBX), написанный при помощи той же инфраструктуры, что и JBuilder, который при этом был мало похож на C++ Builder или Delphi. Этот продукт предназначался для разработки больших программ для крупных предприятий, но коммерческого успеха не достиг. В конце 2004 года Borland объявила, что продолжит развитие классического C++ Builder и объединит его со средой разработки Delphi, прекратив, таким образом, разработку C++ BuilderX. Спустя примерно год после этого объявления, Borland выпустила Borland Developer Studio 2006, который включал в себя Borland C++Builder 2006, предлагавший улучшенное управление конфигурацией и отладкой. Borland Developer Studio 2006 – единственный полноценный комплект, содержащий Delphi, C++ Builder и C# Builder.

В 2007 году CodeGear выпустила C++Builder 2007, в котором реализовала полную поддержку API Microsoft Windows Vista, увеличила полноту соответствия стандарту ANSI C++, увеличила скорость компиляции и сборки до 500 %, включила поддержку MSBuild, архитектур баз данных DBX4 и «VCL для Web», поддерживающий AJAX. Поддержка API Microsoft Windows Vista включила в себя приложения, изначально оформленные в стиле Vista, и естественную поддержку VCL для Aero и Vista Desktop. CodeGear RAD Studio 2007 содержит C++Builder 2007 и Delphi. Также в 2007 году CodeGear «воскресила» марку «Turbo» и выпустила две «Turbo» версии C++Builder: Turbo C++ Professional и Turbo C++ Explorer (бесплатный), основанных на Borland C++ Builder 2006.

В конце 2008 года компания CodeGear выпустила новую версию RAD Studio, в которую вошли Delphi 2009 и С++Builder 2009. В 2009 году в составе RAD Studio вышел C++Builder 2010.

Ранее сообщалось, что следующая версия, CodeGear C++ Builder (кодовое имя «Commodore»), будет обладать поддержкой x86–64 и возможностью создавать машинный x86–64 код. Однако в 2010 году в состав RAD Studio XE включена версия C++ Builder XE без этой функциональности.

В 2012 году Embarcadero выпустила C++ Builder XE3, совместимый с Windows 8. В 2013 году был выпущен C++ Builder XE4 [9].

Microsoft Visual C++ (MSVC) – интегрированная среда разработки приложений на языке C++, разработанная корпорацией Microsoft и поставляемая либо как часть комплекта Microsoft Visual Studio, либо отдельно в виде бесплатного функционально ограниченного комплекта Visual C++ Express Edition. Сменила интегрированную среду разработки Microsoft QuickC. Visual C++ поддерживает перечень приложений как на Managed C++ и C++/CLI, так и на обычном C++, и тем самым позволяет генерировать код как для платформы .NET Framework, так и для исполнения в среде «чистой» Windows. В этом отношении Visual C++ является уникальным среди других языковых средств, предоставляемых средой Visual Studio, поскольку ни Visual Basic .NET, ни Visual J# не способны генерировать код для чистого Win32, в отличие от предыдущих версий (Visual Basic и Visual J++ соответственно) [13].

Еще одним очень распространенным инструментом, применяемым для реализации объектно-ориентированного подхода при проектировании информационной системы, является язык программирования Delphi. Концепция Delphi 1 была реализована в конце 1994 года, когда вышла первая версия среды разработки. В основу этого программного продукта легли концепции объектно-ориентированного программирования на базе языка Object Pascal и визуального подхода к построению приложений.

После выхода Delphi 1 все компьютерные издания писали об этой среде, как об «убийце Visual Basic». Появление Delphi 2 (32-разрядной) ознаменовало новую эпоху, – появился доступ к возможностям программных интерфейсов Windows NT и Windows 95. Delphi 2 стала средством разработки полноценных приложений клиент/сервер. Вскоре Delphi 3 предоставила разработчикам средства создания распределенных многоуровневых приложений и полноценный инструментарий проектирования приложений для Internet и Intranet. Появилась полноценная поддержка com – модели объектов, ставшей краеугольным камнем современного программирования. Четвертая версия Delphi позволяет полностью интегрировать ваши разработки с объектами com. Поддержка архитектуры corba (common object request broker architecture) открывает перед приложениями, созданными в delphi для платформы wintel (windows + intel), мир других операционных систем (unix, os/2, wms) [10].

Delphi – это комбинация нескольких важнейших технологий:

  • высокопроизводительный компилятор в машинный код;
  • объектно-ориентированная модель компонент;
  • визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов;
  • масштабируемые средства для построения баз данных.

Компилятор, встроенный в Delphi, обеспечивает высокую производительность, необходимую для построения приложений в архитектуре «клиент-сервер». Он предлагает легкость разработки и быстрое время проверки готового программного блока, характерного для языков четвертого поколения. Кроме того, Delphi обеспечивает быструю разработку без необходимости писать вставки на С или ручного написания кода (хотя это возможно).

В процессе построения приложения разработчик выбирает из палитры компонент готовые компоненты как художник, делающий крупные мазки кистью. Еще до компиляции он видит результаты своей работы – после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде. В этом смысле проектирование в Delphi мало чем отличается от проектирования в интерпретирующей среде, однако после выполнения компиляции мы получаем код, который исполняется в 10-20 раз быстрее, чем то же самое, сделанное при помощи интерпретатора. Кроме того, компилятор компилятору рознь, в Delphi компиляция производится непосредственно в родной машинный код, в то время как существуют компиляторы, превращающие программу в так называемый p-код, который затем интерпретируется виртуальной p-машиной. Это не может не сказаться на фактическом быстродействии готового приложения [11].

Объекты баз данных в Delphi основаны на SQL и включают в себя полную мощь Borland Database Engine. В состав Delphi также включен Borland SQL LINK, поэтому доступ к СУБД Oracle, Sybase, Informix и Interbase происходит с высокой эффективностью. Кроме того, Delphi включает в себя локальный сервер Interbase для того, чтобы можно было разработать расширяемые на любые внешние sql-сервера приложения в офлайновом режиме. Разработчик в среде Delphi, проектирующий информационную систему для локальной машины (к примеру, небольшую систему учета медицинских карточек для одного компьютера), может использовать для хранения информации файлы формата .dbf (как в dbase или clipper) или .db (paradox). Если же он будет использовать локальный interbase for windows (это локальный SQL-сервер, входящий в поставку), то его приложение безо всяких изменений будет работать и в составе большой системы с архитектурой клиент-сервер [11].

ЗАКЛЮЧЕНИЕ

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

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

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

Рассмотрены такие программные продукты как язык объектно-ориентированного программирования Delphi, C++, Java и Visual Basic. Объектно-ориентированный подход к проектированию информационных систем является перспективным направление развития новых технологий, и со временем совершенствуются ранее созданные программные средства, а также разрабатываются новые, более универсальные продукты. В связи с этим проблему нельзя назвать окончательно изученной, и со временем текст работы может быть дополнен актуальными данными по новым программным продуктам.

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

  1. Алиев, В. С. Практикум по бизнес–планированию с использованием программы Project Expert / В. С. Алиев. – М.: Инфра–М, Форум, 2017. – 593 c.
  2. Балдин, К. В. Информационные системы в экономике / К. В. Балдин. – М.: ИНФРА–М, 2018. – 224 c.
  3. Вдовенко, Л. А. Информационная система предприятия: Уч. пос./ Л. А.Вдовенко–2–е изд., пераб. и доп.–М.:Вузовский уч. / Л.А. Вдовенко. – Москва: Машиностроение, 2016. – 143 c.
  4. Вдовин, В. М. Информационные технологии в налогообложении. Практикум / В. М. Вдовин, Л. Е. Суркова. М.: Дашков и Ко, 2017. – 248 c.
  5. Вендров, А. М. Практикум по проектированию программного обеспечения экономических информационных систем / А. М. Вендров. – М.: Финансы и статистика, 2017. – 192 c.
  6. Горелик, О. М. Финансовый анализ с использованием ЭВМ / О. М. Горелик, О. А. Филиппова. – М.: КноРус, 2016. – 270 c.
  7. Есаулова, С. П. Информационные технологии в туристической индустрии / С. П. Есаулова. – М.: Дашков и К°, 2018. – 120 c.
  8. Ивасенко, А. Г. Информационные технологии в экономике и управлении. Учебное пособие / А. Г. Ивасенко. – М.: КноРус, 2017. – 354 c.
  9. Исаев, Г. Н. Информационные системы в экономике / Г. Н. Исаев. – М.: Омега–Л, 2018. – 464 c.
  10. Коробов, Н. А. Информационные технологии в торговле / Н. А. Коробов, А.Ю. Комлев. – М.: Академия, 2016. – 176 c.
  11. Кудрявцев, Е. М. Методы решения организационных задач. Учебник / Е. М. Кудрявцев. – М.: Ассоциация строительных вузов (АСВ), 2015. – 150 c.
  12. Кулемина, Ю. В. Информационные системы в экономике. Краткий курс / Ю. В. Кулемина. – М.: Окей–книга, 2015. – 112 c.
  13. Лихтенштейн, В. Е. Информационные технологии в бизнесе. Практикум / В. Е. Лихтенштейн, Г. В. Росс. – М.: Финансы и статистика, 2017. – 512 c.
  14. Романова Ю. Д. Информационные технологии в менеджменте(управлении). Учебник и практикум для академического бакалавриата / Отв. – Ю. Д. Романова. – М.: Юрайт, 2016. – 478 c.
  15. Сапков, В. В. Информационные технологии и компьютеризация делопроизводства / В. В. Сапков. – М.: Академия, 2017. – 288 c.
  16. Туманов, В. Е. Проектирование хранилищ данных для систем бизнес–аналитики / В. Е. Туманов. – М.: Интернет–университет информационных технологий, Бином. Лаборатория знаний, 2016. – 616 c.
  17. Вертакова, Ю. В. Информационные технологии в менеджменте. Учебник и практикум для СПО / Ю. В. Вертакова. – М.: Юрайт, 2016. – 293 c.