![](/stc/img/evkova.png)
Применение объектно-ориентированного подхода при проектировании информационной системы
Содержание:
ВВЕДЕНИЕ
На сегодняшний день ситуация такова, что успешность и эффективность деятельности большинства организаций и различных предприятий так или иначе связана с информационными технологиями. Неоднократно подтверждено, что внедрение и эффективное применение информационных систем значительно стимулирует повышение продуктивности деятельности сотрудников, от которых зависит скорость добавления, изменения, обработки и удаления информации. Такой подход дает возможность повысить оперативность труда, а также обеспечить адекватность и достоверность информации.
Методики, применяемые для проектирования программ и их систем, формировались на протяжении длительного времени. Необходимость создания все новых и новых методик обнаруживалась при разработке сложных программных систем в условиях дефицита времени на разработку. Такие инциденты были свойственны крупным промышленным организациям, в частности, оборонного ведомства.
На сегодняшний день наиболее известными и часто встречающимися являются три подхода к проектированию информационной системы: структурный, процессный и объектно–ориентированный. И ситуация обстоит так, что объектно–ориентированный подход предоставляет наиболее наглядную информацию и возможности для проектирования.
Исходя из вышесказанного, определяется цель исследования: рассмотреть особенности применения объектно–ориентированного подхода при проектировании информационной системы.
Для достижения поставленной цели необходимо выполнить следующие задачи:
- Проанализировать структурный подход к проектированию информационных систем;
- Рассмотреть процессный подход к проектированию информационных систем;
- Охарактеризовать объектно–ориентированный подход;
- Проанализировать основные понятия объектно–ориентированного подхода;
- Выявить преимущества и недостатки применения объектно–ориентированного подхода при проектировании информационной системы;
- Рассмотреть примеры программных продуктов, используемых для реализации объектно–ориентированного подхода.
Структура работы включает в себя две главы, первая из которых содержит два параграфа, а вторая – четыре. Кроме того, в структуру работы включены такие элементы, как содержание, введение, заключение и список использованной литературы.
Глава 1. Различные подходы к проектированию информационных систем
Структурный подход
Сегодня ученому миру наиболее известны три основных подхода к проектированию информационных систем различных видов: системный, процессный и объектно-ориентированный. Основное отличие в перечисленных подходах – это методы, которыми производится декомпозиция информационных систем при проектировании. Так, при применении структурного подхода производится функциональная декомпозиция, при которой необходимо произвести описание структуры проектируемой системы в терминах иерархии ее функций и передачи информации между отдельными функциональными элементами. Второй, объектно–ориентированный подход основывается на объектной декомпозиции. При этом структура системы описывается в терминах объектов и связей между ними, а поведение системы описывается в терминах обмена сообщениями между объектами.
Сущность структурного подхода к разработке ИС заключается в ее декомпозиции (разбиении) на автоматизируемые функции: система разбивается на функциональные подсистемы, которые в свою очередь делятся на подфункции, подразделяемые на задачи и так далее. Процесс разбиения продолжается вплоть до конкретных процедур. При этом автоматизируемая система сохраняет целостное представление, в котором все составляющие компоненты взаимоувязаны. При разработке системы «снизу–вверх» от отдельных задач ко всей системе целостность теряется, возникают проблемы при информационной стыковке отдельных компонентов.
Все наиболее распространенные методологии структурного подхода базируются на ряде общих принципов. В качестве двух базовых принципов используются следующие:
- принцип «разделяй и властвуй» – принцип решения сложных проблем путем их разбиения на множество меньших независимых задач, легких для понимания и решения;
- принцип иерархического упорядочивания – принцип организации составных частей проблемы в иерархические древовидные структуры с добавлением новых деталей на каждом уровне.
Выделение двух базовых принципов не означает, что остальные принципы являются второстепенными, поскольку игнорирование любого из них может привести к непредсказуемым последствиям (в том числе и к провалу всего проекта). Основными из этих принципов являются следующие:
- принцип абстрагирования – заключается в выделении существенных аспектов системы и отвлечения от несущественных;
- принцип формализации – заключается в необходимости строгого методического подхода к решению проблемы;
- принцип непротиворечивости – заключается в обоснованности и согласованности элементов;
- принцип структурирования данных – заключается в том, что данные должны быть структурированы и иерархически организованы.
В структурном анализе используются в основном две группы средств, иллюстрирующих функции, выполняемые системой и отношения между данными. Каждой группе средств соответствуют определенные виды моделей (диаграмм), наиболее распространенными среди которых являются следующие:
- SADT (Structured Analysis and Design Technique) модели и соответствующие функциональные диаграммы;
- DFD (Data Flow Diagrams) диаграммы потоков данных;
- ERD (Entity–Relationship Diagrams) диаграммы «сущность–связь».
На стадии проектирования ИС модели расширяются, уточняются и дополняются диаграммами, отражающими структуру программного обеспечения: архитектуру ПО, структурные схемы программ и диаграммы экранных форм.
Перечисленные модели в совокупности дают полное описание информационной системы вне зависимости от того, является ли она существующей или вновь разрабатываемой. Состав диаграмм в каждом конкретном случае зависит от необходимой полноты описания системы.
Подробнее рассмотрим методологию SADT
Методология SADT разработана Дугласом Россом. На ее основе разработана, в частности, известная методология IDEF0 (Icam DEFinition), которая является основной частью программы ICAM (Интеграция компьютерных и промышленных технологий), проводимой по инициативе ВВС США.
Методология SADT представляет собой совокупность методов, правил и процедур, которые предназначены для построения функциональной модели объекта какой–либо предметной области. Функциональная модель SADT отображает функциональную структуру объекта, т.е. производимые им действия и связи между этими действиями. Основные элементы этой методологии основываются на следующих концепциях:
- графическое представление блочного моделирования. Графика блоков и дуг SADT–диаграммы отображает функцию в виде блока, а интерфейсы входа/выхода представляются дугами, соответственно входящими в блок и выходящими из него. Взаимодействие блоков друг с другом описываются посредством интерфейсных дуг, выражающих «ограничения», которые в свою очередь определяют, когда и каким образом функции выполняются и управляются;
- строгость и точность. Выполнение правил SADT требует достаточной строгости и точности, не накладывая в то же время чрезмерных ограничений на действия аналитика. Правила SADT включают:
- ограничение количества блоков на каждом уровне декомпозиции (правило 3–6 блоков);
- связность диаграмм (номера блоков);
- уникальность меток и наименований (отсутствие повторяющихся имен);
- синтаксические правила для графики (блоков и дуг);
- разделение входов и управлений (правило определения роли данных).
- отделение организации от функции, т.е. исключение влияния организационной структуры на функциональную модель.
Методология SADT может быть использована для моделирования широкого круга систем и определения требований и функций, а уже после – непосредственно для разработки системы, которая удовлетворяет ранее разработанным требованиям, а также реализует предполагаемые функции. Для уже существующих систем, SADT может быть использована для анализа функций, выполняемых системой, а также для указания механизмов, посредством которых они осуществляются.
Процессный подход
Для рассмотрения процессного подхода необходимо, в первую очередь, определить, что данный подход направлен именно на бизнес-процессы, которые происходят в организации. Это основное отличие структурного и процессного подходов – первый же ориентирован на организационную структуру организации, а не на бизнес-процессы.
Считается, что изначально любая программная система обладает собственными структурами данных. Данные структуры организованы таким образом, чтобы обеспечить максимальную эффективизацию работы базовых функций системы любой направленности, и, в то же время, всегда предполагается оптимизация под базовые привычные интерфейсы пользователя.
При внедрении уже готовой информационной системы или программного обеспечения необходимо обеспечить поддержку процессов. Такие процессы часто обладают трудно определяемыми объемом и функциональностью, из-за чего нередко возникает ситуация, при которой для эффективной автоматизации возникает необходимость обработки информации, которая не была заложена разработчиком в базовые данные информационной системы. Так, ресурсоемкость построения системы, выполняющей обработку данных и запросы, не установленные первоначальным разработчиком, всегда будет высокой, как со стороны трудоемкости, так и со стороны времени.
Для выхода из сложившейся ситуации пользователю может быть предоставлен открытый механизм, позволяющий осуществлять построение собственных структур информации. При этом это должен быть именно доступ к информации при помощи самих объектов разрабатываемой системы. Таким образом и реализуется процессный подход к проектированию информационных систем.
Глава 2. Объектно–ориентированный подход при проектировании информационной системы
2.1 Характеристика объектно–ориентированного подхода
На настоящий момент более чем распространенным является проектирование информационных систем с применением разнообразных информационных технологий, в частности – программных приложений. Также сами программные приложения могут служить итоговым продуктом, а их разработка и внедрение может происходить классическими методами, применяющими алгоритмы, процедуры и данные. Но в последнее время все более обширно используются и более современные методы – объектно-ориентированные, которые основываются на концептуальном моделировании предметной области. Такое моделирование подразумевает, что использование именно объектно-ориентированного подхода при моделировании предметной области и проектировании информационных систем обеспечивает возможность построения эффективного приложения со сложной, многоярусной иерархической бизнес-логикой.
Одной из ключевых особенностей объектно-ориентированного подхода называют программное описание именно тех сущностей, которые участвуют в процедурах, необходимых для решения той или иной задачи. Это объясняется тем, что процедуры как таковые происходят не сами по себе, а путем конкретного, четко определенного взаимодействия некоторых объектов. При этом также учитываются свойства и характеристики участвующих объектов, и в случае, когда объекты и их характеристики имеют описательный компонент в программе, то все, что нужно сделать для эффективного функционирования – только обеспечить этим объектам взаимодействие друг с другом. А процедуры, выполнение которых необходимо для решения задачи, и будут являться результатом такого взаимодействия.
Как правило, применение объектно-ориентированного подхода при программировании и проектировании информационных систем подразумевает выполнение следующий стадий:
- Объектно–ориентированный анализ (OOA). При данном анализе система моделируемая и система разрабатываемая анализируются со стороны классов и объектов, которые были выявлены при анализе предметной области.
- Объектно–ориентированное проектирование (OOD). При данном проектировании выполняется детальная декомпозиция объектов, благодаря чему происходит создание объектной модели разрабатываемой системы.
- Объектно–ориентированное программирование (OOP). В данную стадию программа принимает вид определенной структурированной совокупности объектов, при этом каждый из таких объектов представляет собой экземпляр определенного класса, а классы, в свою очередь, формируют иерархию наследования.
Соответственно требованиям первого и второго пункта, для грамотного проектирования объектной модели сложной системы, она нуждается в представлении посредством канонического проектирования. Каноническая модель представляет собой совокупность двух иерархий – иерархии классов и иерархии объектов. Как правило, при использовании такого метода имеется в виду, что объектно-ориентированная декомпозиция системы предоставляет возможность обнаружения полной ее архитектуры, включающей структуру классов и объектов.
При этом необходимо иметь в виду, что в случае, если объект, представляя собой экземпляр класса, полностью соответствует некоторому определенному предмету или явлению, имеющему место в пространстве и времени, то класс является воплощением только абстракции чего-то существенного в объекте.
Исходя из вышесказанного, можно вывести следующие определения:
Класс – такое множество объектов, которое объединяет их структуру и поведение.
Объект – конкретный предмет, явление или сущность (реальная или абстрактная), обладающая конкретной формой, функцией и значением в контексте определенной предметной области.
Здесь также важно отметить, что свойства объектов, представляемых экземплярами классов, в объектно-ориентированном подходе определяются соответствующим классом в иерархии классов. Речь идет именно об иерархии классов, которая непосредственно описывает контекстную предметную область. Таким образом, основной задачей первого и второго пункта (OOA и OOD) выступает именно выбор корректного набора абстракций, адекватного в конкретном случае для рассматриваемой предметной области. Этим лишь подтверждается значимость концептуального иерархического моделирования в процессе применения объектно-ориентированного подхода для разработки информационной системы.
Кроме того, раскрывая сущность объектно-ориентированного подхода, необходимо отметить и иметь в виду, что объектно-ориентированная модель не содержит все признаки и характеристики предмета/явления, которое она представляет, а только те, которые являются существенными именно для данной программной системы и именно в контексте изучаемой предметной области. Иначе говоря, готовая объектная модель неизменно проще, чем представляемый ею предмет, зачастую содержит меньше элементов и обладает облегченной структурой.
Для построения объектных моделей также характерен тот факт, что модель представляет собой исключительно формальную конструкцию, и ее формальный характер открывает возможности для определения именно формальных зависимостей между всеми объектами и виды формальных операций, доступных для выполнения с ними. Данный факт значительно облегчает проектирование и дальнейший анализ моделей, а также их непосредственное воплощение в виде программного продукта. Так, благодаря формализации моделей появляется возможность получить формальную модель разрабатываемой программной системы в виде композиции формальных моделей ее компонентов.
Исходя из вышесказанного, можно заключить, что применение объектно-ориентированного подхода при проектировании информационной системы реализовать такие преимущества, как:
- уменьшение сложности программного обеспечения;
- повышение надежности программного обеспечения;
- обеспечение возможности модификации отдельных компонентов программного обеспечения без изменения остальных его компонентов;
- обеспечение возможности повторного использования отдельных компонентов программного обеспечения.
Подводя итог, следует отметить, что при реализации OOA и OOD следует тщательно отнестись к проведению декомпозиции области приложения и самой разрабатываемой информационной системы. Наиболее целесообразными инструментами для оптимизации декомпозиции являются абстрагирование и иерархия, которые, наравне с остальными инструментами объектно-ориентированного подхода, будут рассмотрены далее.
2.2 Основные понятия объектно–ориентированного подхода
Концептуальная база методологии объектно–ориентированного моделирования включает в себя четыре главных взаимосвязанных понятия: абстрагирование, иерархия, инкапсуляция и модульность.
Абстрагирование – способ выделения существенных характеристик некоторого объекта (абстракций), отличающих его от всех других видов объектов и, таким образом, четко определяющих его концептуальные границы.
Иерархия – способ упорядочения абстракций (классов) по уровням.
Инкапсуляция – способ отделения элементов объекта (класса), определяющих его устройство, от элементов, определяющих его поведение (т.е. отделение реализации от интерфейса).
Модульность – способ разложения системы на связанные, но относительно самостоятельные части (модули).
Применение объектно-ориентированного подхода к проектированию информационной системы всегда основывается на применении вышеприведенных категорий при описании классов и объектов модели.
Описание класса включает атрибуты. При помощи атрибутов осуществляется характеристика и описание текущего состояния объектов исследуемого класса. Атрибуты также характеризуют и операции, при помощи которых описывается поведение и дальнейшие действия объектов исследуемого класса. При этом разграничивается внешний облик класса (спецификация или интерфейс) и его внутреннее устройство (реализация). Главное в интерфейсе – объявление операций, поддерживаемых экземплярами класса. В него также могут входить объявления других классов, переменных, исключительных ситуаций, уточняющих абстракцию, которую класс должен выражать. Реализация, как правило, состоит в определении операций, объявленных в интерфейсе класса.
Между классами могут существовать следующие отношения:
Наследование – такое отношение между классами, при котором класс повторяет описание состояния и поведения суперкласса (одного – одиночное наследование; нескольких – множественное наследование). Данное отношение является основным при выявлении иерархии классов предметной области. Узкие, специализированные классы в иерархии, от которых создаются экземпляры (объекты), называются конкретными классами. Общие классы, от которых экземпляры не производятся, называются абстрактными классами. Самый общий класс в иерархии классов называется базовымили корневым.
Ассоциация – отношение семантической зависимости, показывающее какие роли классы играют друг для друга. Ассоциации различаются по мощности: «один–к–одному», «один–ко–многим», «многое–ко–многим».
Агрегация – отношение, соответствующее отношению «часть–целое» между объектами данных классов.
Использование – может рассматриваться как разновидность отношения ассоциации, при котором одна из сторон (клиент) пользуется услугами или ресурсами другой стороны (сервера). Кроме того, использование может рассматриваться как один из аспектов отношения наследования, так как подкласс, наследуя состояние и поведение класса, выступает в роли его клиента. Так же клиентом класса является его экземпляр (объект), который использует атрибуты и операции данного класса.
При этом операция рассматривается как услуга, которую класс может предоставить своим клиентам. Как правило, эти операции бывают следующих видов:
Модификатор – операция изменения состояния объекта.
Селектор – операция считывания состояния объекта (без изменения состояния).
Итератор – операция, организовывающая доступ ко всем частям объекта в строго определенной последовательности.
Конструктор – операция создания и/или инициализации объекта.
Деструктор – операция, освобождающая состояние объекта и/или разрушающая сам объект.
Описание объекта включает в себя описание его состояния, которое характеризуется перечнем атрибутов, соответствующих классу, экземпляром которого является данный объект, и их текущими значениями. Кроме того, описание объекта включает также описание его поведения (функции), которое характеризуется методами, реализующими операции класса, экземпляром которого является данный объект.
Объединяя понятия состояния и поведения объекта, можно ввести понятие роли или ответственности объекта. Ответственность объекта имеет две стороны – знания, которые объект поддерживает, и действия, которые объект может исполнить. Она выражает смысл его предназначения и место в системе. Ответственность понимается как совокупность всех услуг и всех контрактных обязательств объекта. Следовательно, состояние и поведение объекта определяют его роль в системе, а она, в свою очередь, необходима соответствующему классу для выполнения его ответственности.
При выявлении структуры объектов моделируемой системы между объектами устанавливаются различные связи (посредством передачи сообщений), представляющие собой «физическое или концептуальное соединение между объектами». Связи обозначают равноправные или «клиент–серверные» отношения между объектами. «Наиболее желательной является функциональная связность, при которой все элементы тесно взаимодействуют в достижении определенной цели». Участвуя в связях, объект может выполнять одну из трех ролей:
- актора – при которой объект может воздействовать на другие объекты, но сам никогда не подвергается их воздействию (активный объект);
- сервера – при которой объект может только подвергаться воздействию со стороны других объектов, но никогда не выступает в роли воздействующего объекта (пассивный объект);
- агента – при которой объект может быть и активным, и пассивным.
Кроме того, между объектами могут быть выявлены иерархические отношения, а именно отношение «часть–целое», т.е. агрегация. При этом, идя от целого (агрегата), можно придти к его частям (атрибутам). Агрегация означает физическое или концептуальное вхождение одного объекта в другой.
2.3 Преимущества и недостатки объектно–ориентированного подхода
Для наглядности преимущества объектно–ориентированного подхода будут проиллюстрированы посредством сравнения с другими методами проектирования информационных систем.
Так, в функциональных моделях (DFD–диаграммах потоков данных, SADT–диаграммах) главными структурными компонентами являются функции (операции, действия, работы), которые на диаграммах связываются между собой потоками объектов.
Несомненным достоинством функциональных моделей является реализация структурного подхода к проектированию информационных систем по принципу «сверху–вниз», когда каждый функциональный блок может быть декомпозирован на множество подфункций и т.д., выполняя, таким образом, модульное проектирование информационных систем. Для функциональных моделей характерны процедурная строгость декомпозиции информационных систем и наглядность представления.
При функциональном подходе объектные модели данных в виде ER–диаграмм «объект – свойство – связь» разрабатываются отдельно. Для проверки корректности моделирования предметной области между функциональными и объектными моделями устанавливаются взаимно однозначные связи.
Главный недостаток функциональных моделей заключается в том, что процессы и данные существуют отдельно друг от друга – помимо функциональной декомпозиции существует структура данных, находящаяся на втором плане. Кроме того, не ясны условия выполнения процессов обработки информации, которые динамически могут изменяться.
Перечисленные недостатки функциональных моделей снимаются в объектно–ориентированных моделях, в которых главным структурообразующим компонентом выступает класс объектов с набором функций, которые могут обращаться к атрибутам этого класса.
Для классов объектов характерна иерархия обобщения, позволяющая осуществлять наследование не только атрибутов (свойств) объектов от вышестоящего класса объектов к нижестоящему классу, но и функций (методов).
В случае наследования функций можно абстрагироваться от конкретной реализации процедур (абстрактные типы данных), которые отличаются для определенных подклассов ситуаций. Это дает возможность обращаться к подобным программным модулям по общим именам (полиморфизм) и осуществлять повторное использование программного кода при модификации программного обеспечения. Таким образом, адаптивность объектно–ориентированных систем к изменению предметной области по сравнению с функциональным подходом значительно выше.
При объектно–ориентированном подходе изменяется и принцип проектирования информационных систем. Сначала выделяются классы объектов, а далее в зависимости от возможных состояний объектов (жизненного цикла объектов) определяются методы обработки (функциональные процедуры), что обеспечивает наилучшую реализацию динамического поведения информационной системы.
Для объектно–ориентированного подхода разработаны графические методы моделирования предметной области, обобщенные в языке унифицированного моделирования UML. Однако по наглядности представления модели пользователю–заказчику объектно–ориентированные модели явно уступают функциональным моделям.
При выборе методики моделирования предметной области обычно в качестве критерия выступает степень ее динамичности. Для более регламентированных задач больше подходят функциональные модели, для более адаптивных бизнес–процессов (управления рабочими потоками, реализации динамических запросов к информационным хранилищам) – объектно–ориентированные модели. Однако в рамках одной и той же информационной системе для различных классов задач могут требоваться различные виды моделей, описывающих одну и ту же проблемную область. В таком случае должны использоваться комбинированные модели предметной области.
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.
Java – сильно типизированный объектно–ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно транслируются в специальный байт–код, поэтому они могут работать на любой компьютерной архитектуре, с помощью виртуальной Java–машины. Дата официального выпуска – 23 мая 1995 года.
Программы на Java транслируются в байт–код Java, выполняемый виртуальной машиной Java (JVM) – программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.
Достоинством подобного способа выполнения программ является полная независимость байт–кода от операционной системы и оборудования, что позволяет выполнять Java–приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером), вызывают немедленное прерывание.
Часто к недостаткам концепции виртуальной машины относят снижение производительности. Ряд усовершенствований несколько увеличил скорость выполнения программ на Java:
- применение технологии трансляции байт–кода в машинный код непосредственно во время работы программы (JIT–технология) с возможностью сохранения версий класса в машинном коде,
- широкое использование платформенно–ориентированного кода (native–код) в стандартных библиотеках,
- аппаратные средства, обеспечивающие ускоренную обработку байт–кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).
По данным сайта 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 и подсветкой синтаксиса, а также инструменты для отладки приложений.
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.
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.
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++ соответственно).
ЗАКЛЮЧЕНИЕ
В ходе выполнения работы была достигнута поставленная цель, а именно: рассмотрены особенности применения объектно–ориентированного подхода при проектировании информационной системы.
Для достижения цели были выполнены следующие задачи:
- Проанализирован структурный подход к проектированию информационной системы;
- Рассмотрен процессный подход к проектированию информационной системы;
- Охарактеризован объектно–ориентированный подход;
- Проанализированы основные понятия объектно–ориентированного подхода;
- Выявлены преимущества и недостатки применения объектно–ориентированного подхода при проектировании информационной системы;
- Рассмотрены примеры программных продуктов, применяемых для реализации объектно–ориентированного подхода.
Кроме того, при выполнении работы были получены новые теоретические знания, которые будут полезны при дальнейшем изучении дисциплины, а также смежных с ней, а также и в практической профессиональной и повседневной жизни.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
- Мидоу, Ч. Анализ информационных систем: моногр. / Ч. Мидоу. – М.: Прогресс, 2015. – 400 c.
- Раскин Интерфейс: новые направления в проектировании компьютерных систем / Раскин, Джеф. – М.: Символ–плюс, 2017. – 272 c.
- Брейер. М. Автоматизация проектирования вычислительных систем. Языки, моделирование и базы данных // М. Брейер. – М.: Мир, 2015. – 463 c.
- Васильев, А. C#. Объектно–ориентированное программирование // А. Васильев. – М.: Питер, 2017. – 320 c.
- Васильев, А. Н Java. Объектно–ориентированное программирование // А.Н. Васильев. – М.: Питер, 2014. – 400 c
- Вендров, А. М. Практикум по проектированию программного обеспечения экономических информационных систем // А.М. Вендров. – М.: Финансы и статистика, 2017. – 192 c.
- Воройский, Ф. С. Основы проектирования автоматизированных библиотечно–информационных систем // Ф.С. Воройский. – М.: ФИЗМАТЛИТ, 2016. – 384 c.
- Григорьева, А. Л. Процессный подход при проектировании информационной системы ВУЗа // А. Л. Григорьева, Я. Ю. Григорьев, А. Ю. Лошманов – Международный журнал прикладных и фундаментальных исследований. – 2013. – № 5. – С. 168–171;
- Зегжда, Д. П. Основы безопасности информационных систем // Д. П. Зегжда, А. М. Ивашко. – М.: Горячая линия – Телеком, 2017. – 452 c.
- Иванова, Г. С. Объектно–ориентированное программирование // Г.С. Иванова, Т.Н. Ничушкина, Е.К. Пугачев. – М.: МГТУ им. Н. Э. Баумана, 2014. – 368 c.
- Ипатова, Э. Р. Методологии и технологии системного проектирования информационных систем // Э.Р. Ипатова, Ю.В. Ипатов. – М.: Флинта, 2016. – 256 c.
- Комлев, Н. Ю. Объектно Ориентированное Программирование. Хорошая книга для Хороших Людей // Н. Ю. Комлев – М.: Солон–Пресс, 2014. – 892 c.
- Кьоу, Дж. Объектно–ориентированное программирование // Дж. Кьоу, М. Джеанини. – М.: Питер, 2015. – 240 c.
- Мартынов, Н. Н. Алгоритмизация и основы объектно–ориентированного программирования на JavaScript. Информатика и ИКТ. Профильный уровень. 10 класс // Н.Н. Мартынов. – Москва: Высшая школа, 2014. – 272 c.
- Павловская, Т. А. C/C++. Процедурное и объектно–ориентированное программирование. Учебник // Т. А. Павловская. – М.: Питер, 2015. – 496 c.
- Санников, Е. В. Курс практического программирования в Delphi. Объектно–ориентированное программирование // Е.В. Санников. – М.: Солон–Пресс, 2017. – 188 c.
- Слепцов, А. И. Автоматизация проектирования управляющих систем гибких автоматизированных производств // А. И. Слепцов, А. А. Юрасов. – М.: Технiка, 2015. – 110 c.
- Хорев, П. Б. Объектно–ориентированное программирование // П.Б. Хорев. – М.: Academia, 2017. – 448 c.
- Шоу, А. Логическое проектирование операционных систем: моногр. // А. Шоу. – М.: Мир, 2016. – 360 c.
- Ярочкин, В. Безопасность информационных систем // В. Ярочкин. – М.: Ось–89, 2015. – 320 c.
- Особенности инновационного маркетинга. Инновация как средство развития общества. Оценка инновационного бизнеса
- Управление миграционными процессами
- Возникновение права (Теории возникновения права: общая характеристика)
- Понятие и система обязательного медицинского страхования (Социально-экономическая природа медицинского страхования)
- Управление процессом реализации нововведений и изменений
- Психосемантика рекламы
- Прямые налоги и их место в налоговой системе РФ (Понятие и сущность налогов)
- Налоговый учет по налогу на добавленную стоимость (Теоретические основы налога на добавленную стоимость)
- Тенденции развития международной валютной системы(СУЩНОСТЬ И ЭВОЛЮЦИЯ МЕЖДУНАРОДНОЙ ВАЛЮТНОЙ СИСТЕМЫ)
- Корпоративная культура в организации
- Процессы принятия решений в организации
- Обзор языков программирования высокого уровня