Файл: Объектно-ориентированный подход при проектировании информационной системы.pdf
Добавлен: 22.04.2023
Просмотров: 333
Скачиваний: 1
Объектно-ориентированный подход (objectoriented approach) подразумевает разделение системы на компоненты с разной степенью детализации [16, c. 54]. В основе этой декомпозиции лежат классы объектов. Классы связаны разнообразными отношениями и обмениваются сообщениями, вызывающими операции над объектами.
Несмотря на то, что объектно-ориентированные языки программирования (к примеру, Simula) существовали еще в начале 1970х годов, объектно-ориентированный подход к проектированию систем получил распространение лишь в 1990х годах. Позднее ассоциация производителей программного обеспечения Object Management Group утвердила в качестве стандартного средства моделирования для этого подхода язык UML (Unified Modeling Language — унифицированный язык моделирования).
По сравнению со структурным подходом объектно-ориентированный подход в большей степени ориентирован на данные — он развивается вокруг моделей классов. На этапе анализа для классов не требуется определять операции — только атрибуты. Однако возрастающее значение использования в языке UML прецедентов способствует незначительному смещению акцентов от данных к функциям.
Существует понимание того, что разработчики используют объектный подход благодаря техническим преимуществам объектной парадигмы, таким как абстракция, инкапсуляция, повторное использование, наследование, передача сообщений, полиморфизм и т.д. Эти технические свойства могут привести к более высокому уровню повторного использования программного кода и данных, сокращению времени разработки, росту продуктивности труда программистов, повышению качества программного обеспечения, большей понятности программ и т.д. При всей свой привлекательности эти преимущества объектной технологии до сих пор не нашли своего практического воплощения. Тем не менее, объекты используются сегодня и будут использоваться завтра. Одной из причин этого является необходимость использовать программирование, управляемое событиями (eventdriven), требуемое современными интерактивными графическими интерфейсами.
Другой причиной популярности объектного подхода является возможность удовлетворить требования вновь возникающих типов приложений и находить наилучшие способы борьбы с ростом дефицита ресурсов (application backlog), который проявляет ся либо в недостаточном количестве программ, либо в нарушении сроков поставок в ходе расширения и компоновки существующих систем программного обеспечения. К двум наиболее важным новым категориям приложений, для которых требуется объектная технология, относятся групповые вычисления ( workgroup computing) и мультимедийные системы (multimedia systems). Идея уменьшить дефицит ресурсов посредством концепции упаковки объектов (object wrapping) доказала как свою привлекательность, так и работоспособность.
Объектный подход к разработке систем полностью соответствует требованиям итеративного и поступательного процесса разработки. На этапах анализа, проектирования и реализации разрабатывается единая модель (и единый проектный документ), которая постепенно уточняется, изменяется и усовершенствуется, а выпуски программных модулей с расширенными возможностями поддерживают высокий уровень удовлетворенности пользователей и обеспечивают обратную связь, необходимую для продолжения разработки модулей.
Разработка с помощью последовательной детализации становится возможной благодаря тому, что все создаваемые в ходе разработки модели (анализа, проектирования и реализации) обладают семантическим богатством и базируются на одном и том же “языке” — базовый словарь этих моделей существенно не отличается (классы, атрибуты, методы, наследование, полиморфизм и т.д.). Следует, однако, заметить, что если в основу реализации положена реляционная база данных, то необходимость в сложной и связанной с риском трансформации по-прежнему сохраняется (поскольку базовая семантика реляционной модели сравнительно беднее).
Объектный подход устраняет большинство из наиболее значительных недостатков структурного подхода, однако служит источником некоторых новых проблем:
1) Этап анализа проводится на еще более высоком уровне абстракции, и если реализация сервера предполагает использование реляционной базы данных, то может возникнуть значительный семантический разрыв (semantic gap) между концепцией и ее реализацией. Несмотря на то что анализ и проектирование могут проводиться итеративно и последовательно, в конце концов разработка достигает этапа реализации, на котором решение должно быть воплощено в реляционную базу данных. Если в качестве платформы реализации используется объектная или объектно-реляционная база данных, трансформация проекта проходит значительно легче.
2) Затрудняется управление проектом. Менеджеры измеряют степень продвижения разработки, используя четко определенные структуры декомпозиции, элементы комплекта поставки и календарный план. При объектно-ориентированной разработке с помощью детализации не существует четких границ между этапами, а проектная документация непрерывно уточняется. Приемлемое решение в такой ситуации заключается в разделении проекта на небольшие модули и управлении ходом разработки за счет частого выпуска выполняемых версий этих модулей (некоторые из этих выпусков могут предназначаться для внутреннего применения, а другие — поставляться заказчику).
3) Объектные решения значительно сложнее прежних структурированных систем. Сложность возникает в основном из-за интенсивного обмена сообщениями между объектами и компонентами. Эта проблема усугубляется плохой архитектурой, допускающей неограниченные связи между взаимодействующими объектами. Системы, имеющие такую архитектуру, трудно эксплуатировать и расширять.
Сложности, связанные с объектным подходом, не отменяют тот факт, что, по словам Артура Кларка, “время нельзя повернуть вспять”. Возврата к вызывающему ностальгию процедурному стилю пакетных приложений, например реализованного в языке COBOL, нет. Все участники проектов по созданию информационных систем хорошо знакомы с Интернетом, электронной коммерцией, компьютерными играми и другими интерактивными приложениями.
Разработка новых программных приложений отличается значительно большей сложностью, и структурный подход совершенно не соответствует этой задаче [17, c. 93]. На сегодняшний день объектно-ориентированной подход — единственный известный метод, позволяющий совладать с разработкой нового программного обеспечения, управляемого событиями и отличающегося высоким уровнем интерактивности.
1.3.2 ЭТАПЫ ЖИЗНЕННОГО ЦИКЛА
Жизненный цикл разработки программного обеспечения представляет собой точно определенную хронологическую последовательность действий [20, c. 48]. На укрупненном уровне жизненный цикл может включать пять этапов:
1) Бизнес-анализ.
2) Проектирование системы.
3) Реализация.
4) Компоновка и развертывание.
5) Эксплуатация и сопровождение.
1.4 СРЕДЫ РАЗРАБОТКИ
1.4.1 EMBARCADERO RAD STUDIO
Embarcadero RAD Studio – среда разработки программных систем для операционных систем Windows. Данная среда позволяет быстро разработать программные системы для Windows, Mac, Android, IOS, интернет вещей (IoT) [11, c 54]. Среда позволяет писать приложения на С++ и Object Pascal. Главное окно Embarcadero RAD Studio показано на рисунке 12.
В состав Embarcadero RAD Studio входят Delphi, C++Builder.
Рисунок 12 – Главное окно среды Embarcadero RAD Studio
Embarcadero RAD Studio включает следующие основные новые возможности:
А) Поддержка Windows 10. С помощью Delphi и C++Builder можно разрабатывать VCL и FMX-приложения, которые поддерживают компоненты Windows 10 и API системы, компоненты WinRT\UWP;
Б) Компилятор C++11, основанный на архитектуре CLANG. В C++Builder используется компилятор c++, который основан на CLANG. Компилятор используется для Windows и мобильных платформ. Данный компилятор работает с VCL и кроссплатформенными структурами FMX;
В) Удвоенный размер проектов в IDE. Позволяет увеличить размер проектов, что позволяет разрабатывает большие, комплексные решения;
1.4.2 VISUAL STUDIO
Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода [9, c. 154]. Встроенный отладчик может работать как отладчик уровня исходного кода, так и отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как, например, Subversion и Visual SourceSafe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметноориентированных языках программирования) или инструментов для прочих аспектов процесса разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server)[27, c. 57]. Главное окно Visual Studio показано на рисунке 13.
Рисунок 13 – Главное окно среды Visual Studio
Visual Studio имеет множество возможностей:
-
- Современный C++. Visual Studio позволяет использовать последние стандарты языка С++.
- Создание универсальных программ для Windows. Используя C++ (либо C#, JavaScript или VB), вы можете создать единое универсальное приложение для Windows, способное работать на всех устройствах Windows 10.
- Мощные инструменты программирования. Среда имеет множество средств для редактирования, просмотра и рефакторинга, отладки, диагностики.
1.4.4 MONODEVELOP
MonoDevelop — свободная среда разработки, предназначенная для создания приложений C#, Java, Boo, Nemerle, Visual Basic .NET, Vala, CIL, C и C++. MonoDevelop позволяет разработчикам разрабатывать настольные и веб-приложения на Linux, Windows и Mac OS X. Среда предоставляет возможность .NET программы, сделанные в Visual Studio, портировать на Linux и Mac OS X; при этом сохраняется единый базовый код для всех платформ [26, c. 705]. Главное окно MONODEVELOP показано на рисунке 14.
Рисунок 14 – Главное окно среды MonoDevelop
2 ПРОЕКТНАЯ ЧАСТЬ
2.1 ПОСТАНОВКА ЗАДАЧИ
В ходе практики нужно было спроектировать и разработать программное средство для моделирования работы лифта. Лифт должен работать в многоэтажном доме. Программа отсчитывает время с тактами в одну секунду. Появление пассажира случайно. Также существует таймер отсчета для появления нового пассажира на любом этаже. Пассажир появляется на любом этаже, нажимает кнопку вызова лифта, если лифта на этом же этаже, то он открывает двери лифта. После этого кнопка лифта отжимается, и пассажир заходит в лифт. Далее пассажир нажимает кнопку случайного этажа, и лифт закрывает двери, затем начинает движение к заданному этажу. Когда лифт прибывает на нужный этаж, кнопка этажа отжимается, двери лифта открываются, и пассажир выходит из лифта. Затем лифт закрывает двери, и пассажир уходит.
-
- ИСПОЛЬЗОВАНИЕ UML ДЛЯ РАЗРАБОТКИ ПРОГРАММНОЙ
МОДЕЛИ
UML (Unified Modeling Language) — унифицированный язык моделирования — язык графического описания для объектного моделирования в области разработки программного обеспечения. UML – это мощный инструмент для проектирования программ или программных систем. Он помогает спроектировать полностью рабочие элементы программы. Предоставляет возможность описать работу программы во всех ситуациях. Что помогает выявить слабые и сильные стороны проектируемых компонентов, алгоритмов программы. Построить архитектуру программной системы. UML дает возможность разобраться в работе сложной системы. На рисунке 15 показаны этапы UML проектирования. Язык UML применим не только на стадии проектирования программного средства, но и на всех этапах разработки программы, так как на всех этапах нужен последовательный план действий, который упорядочивает разработку программного средства.
Рисунок 15 – Этапы UML проектирования
UML помогает заложить фундамент в проектировании программы и предоставляет возможность построить структуру классов. UML не зависит от конкретного языка программирования. Это дает возможность при программировании использовать любой язык. Ниже описывается логика разработки программы в нотации UML.
Кнопка Запуск (рисунок 16) запускает главную функцию main. Затем проверяются параметры программы. Если не было ввода параметров, то выставляются параметры по умолчанию. Инициализируются объекты классов. Затем начинается цикл, пока последний пассажир не проедет. Пассажир появляется на первом этаже, затем он нажимает на кнопку лифта. К счетчику времени прибавляется параметр времени нажатия кнопки. На форме программы появляется информация о положении лифта и пассажира. Если лифта на том же этаже, то он открывает двери и к счетчику времени прибавляется параметр времени открытия дверей. Если этаж другой, то лифт начинает движение к пассажиру и к счетчику времени прибавляется параметр времени передвижения лифта. Когда лифт прибывает на этаж с пассажиром, двери лифта открываются и кнопка вызова лифта выключается. К счетчику времени прибавляется время работы кнопки и дверей. Далее, пассажир заходит в лифт и нажимает на кнопку с случайным этажом. К счетчику времени прибавляется время работы кнопки. Двери лифта закрываются. К счетчику времени прибавляется время работы дверей. Лифта поднимается или опускается на заданный этаж. Когда лифт меняет своё положение, цифра над лифтом меняется. Пока лифт не прибудет на нужный этаж, стрелки будут показывать направление лифта. К счетчику времени прибавляется время работы лифта. После прибытия лифта на нужный этаж, кнопка в лифте выключается и двери лифта открываются. К счетчику времени прибавляется время работы кнопки и дверей. Пассажир выход из лифта, и двери лифта закрываются. К счетчику времени прибавляется время на вход/выход пассажира и время работы дверей. Пассажир исчезает. Производится отсчет времени до нового пассажира. Если пассажир был последним, то функция прекращает работу.