Файл: Применение объектно-ориентированного подхода при проектировании информационной системы(SPARX Enterprise Architect).pdf
Добавлен: 05.04.2023
Просмотров: 474
Скачиваний: 7
СОДЕРЖАНИЕ
Глава 1. Обзор программных продуктов
§ 1.1 SPARX Enterprise Architect
Глава 2. Разработка диаграмм UML
§ 2.4 Редактирование и генерация кода
Глава 3. Visual Studio Community Edition
§ 3.1 Разработка в Дизайнере Классов
§ 3.2 Представление проекта в Дизайнере Классов
Глава 4. Проектирование UML приложения
Введение
Разработка программного обеспечения, в частности информационных систем в современном мире не обходится без применения объектно ориентированных методов проектирования. Необходимость изменений, исправлений и сопровождения программных продуктов диктует необходимость понятного, удобного и универсального подхода к их проектированию. Таким подходом стал объектно-ориентированный подход в основе которого лежит структурное объединение данных и алгоритмов в классы(объекты – экземпляры классов) по функциональным и логическим критериям. Важность этого подхода и его понимания в разработке программных продуктов чрезвычайно важна для любого специалиста в отрасли.
Современное объектно-ориентированное программирование, а в применении к программному обеспечению это именно программирование, являет собой совокупность инкапсуляции, наследования и полиморфизма. Современные стандарты программирования считают множественное наследование плохой практикой, впрочем допуская множественное наследование интерфейсов(для языка С++ полностью виртуальных или абстрактных классов).
Для раскрытия темы данной работы и выполнения методических требований представляется целесообразным рассмотреть три разных программных продукта реализующих объектно-ориентированный подход для разработки программных продуктов. И хотя тематика данной работы не предполагает конкретных проектных решений, она, тем не менее, не исключает его. Рассмотреть и проанализировать в достаточной мере преимущества и недостатки не применяя конкретных возможностей на практике автор этой работы считает сомнительным решением, поэтому в данной работе будут рассмотрены два программных продукта реализующих объектно-ориентированный подход и одно решение будет разработано самостоятельно.
Глава 1. Обзор программных продуктов
§ 1.1 SPARX Enterprise Architect
Возможности выбора решений для проведения данной работы ограниченны коммерческой составляющей, часть программных продуктов является платными и использовать их возможности нет. Тем не менее, некоторые производители представляют trial-версии, в частности речь о первом продукте, подлежащем анализу – SPARX Enterprise Architect.
Данный программный продукт достаточно современный, версия 2019 года, имеет хороший интерфейс, развернутую систему онлайн документации. Тот факт, что документация, как и весь интерфейс, доступна только на английском языке сложно оценить однозначно. С одной стороны, некоторые аспекты могут быть непонятны и неочевидны, с другой стороны русский перевод, в зависимости от качества разумеется, может внести еще больше неясности, а в крайнем случае даже полностью сделать материал нечитаемым. Поскольку английский язык де факто является международным языком общения, а в области IT фактически обязательным, а в программировании даже безальтернативным, рассматривать этот языковой момент в качестве недостатка было бы неразумно. Тем не менее кодировка utf-8 поддерживается, что не исключает использования отличных от основанных на латинской письменности языков.
В пакете, доступном, для скачивания также доступен демонстрационный проект с развернутыми комментариями и инструкциями. К отличительным особенностям можно отнести тот факт, что реализовано данное программное решение в нативном исполняемом виде, а генерация кода осуществляется практически на всех ныне применяемых языках программирования, наиболее известные и используемые из которых C++, C#, Java, Delphi.
Рассматриваемое программное обеспечение поддерживает 13 типов диаграмм UML, де-факто стандарта для построения объектно-ориентированного программного обеспечения. В целом можно оценить как серьезный продукт для решения широкого спектра задач проектирования промышленного уровня.
Описать все возможности данного программного продукта в рамках этой работы и данного обзорной главы не представляется возможным, наиболее важные и применяемые для решения задач данной работы будут рассмотрены далее.
§ 1.2 Microsoft Visual Studio
Во избежание повторения описания одинакового функционала и для создания широты обзора в данной работе было принято решение выбрать непохожие решения. Для реализации последней задачи данного исследования, помимо SPARX Enterprise Arhitect будет использована Microsoft Visual Studio Community Edition. Распространяемый бесплатно пакет программного обеспечения для решения широкого спектра задач с поддержкой множества языков программирования, разумеется, реализующий парадигмы ООП в полном объеме. На рынке программного обеспечения, RAD и CASE систем сложно назвать более всеобъемлющее решение.
MS Visual Studio Community Edition также имеет компоненты для проектирования UML «Конструктор классов» эти возможности будут рассмотрены как и решение от SPARX Systems. Также в данной работе будут использованы другие возможности, а именно создание проекта Windows Forms платформы .NET на языке программирования С#. Данный язык программирования реализованный в общеязыковой среде исполнения(CLR – Common Language Runtime) сочетает возможности объектно-ориентированной разработки, реализуя все её парадигмы, визуальный RAD стиль, позволяя в рамках данный работы получить достаточные представления о практических и теоретических аспектов процесса создания программного обеспечения. Язык программирования C# является управляемым, что освобождает от дополнительных сложностей связанных с управлением памятью благодаря Сборщику Мусора(Garbage Collector).
Анализируя остальные возможности MS Visual studio, стоит отметить достаточно проработанные возможности IDE, такие как отладочные механизмы, IntelliSense(система контекстной помощи при написании программного кода), настраиваемость, гибкость.
В целом, решение от Microsoft можно оценить очень высоко, а годы наработок не прошли даром для компании из Редмонда. Недостатком можно считать лишь высокие, для офисного компьютера, системные требования, на процессорах, в зависимости от решаемой задачи, низкого и средне-низкого ценового сегмента использование данного программного продукта может быть затруднено, в некоторых случаях крайне затруднено.
§ 1.3 UML Modeller
Прежде чем перейти непосредственно к решению поставленных задач, было бы разумно конкретизировать и описать последний пункт задачи, а именно разработка собственного решения для проектирования информационных систем с использованием объектно-ориентированного подхода. Данная задача не предусматривает создание всеобъемлющего решения, но должна продемонстрировать основные концепции в ограниченном возможностями данной работы пространстве.
Целью является создание desktop приложения Windows с графическим пользовательским интерфейсом, позволяющим пользователю создавать «мышкой» диаграммы классов.
Название проекта носит условный характер, разрабатывается исключительно в образовательных целях.
§ 1.4 Выводы
Таким образом были обозначены цели и основные этапы данной работы, перечислены программные продукты подлежащие анализу.
Глава 2. Разработка диаграмм UML
Существует 3 способа использования UML – первый, от руки на листе бумаги или маркерно-магнитной доске и применяется для черновиков, набросков и при обсуждениях; второй для разработки проектной документации, предварительной генерации части кода; третий как языка программирования с полной генерацией программного кода.[1]
В данной работе используется второй подход. Диаграммы UML созданные в Sparx Enterprise Architect будут служить иллюстрацией и наглядным представлением возможностей программного продукта, также для предварительной генерации части программного кода на языке C#. В данной части работы разрабатываемые диаграммы классов носят условный характер и не соответствую реальному программному решению.
§ 2.1 Классы и интерфейсы
Если кто-нибудь подойдет к вам в темном переулке и спросит: «Хотите
посмотреть на диаграмму UML?», знайте – скорее всего, речь идет о диаграмме класса.[2]
В данной работе не будут рассмотрены аспекты визуального моделирования кроме тех без которых нельзя обойтись, а такие как последовательность действий и движение по веткам интерфейса меню будут опущены как несущественные.
Основой моделирования диаграммы классов в SPARX Enterprise Architect является Element, который можно настроить для выражения необходимых сущностей. В целях удобства будут последовательно рассмотрены используемые типы элементов.
Элемент, как указывалось выше может быть представлен, например, типом «Class», «Use Case», «Node» или «Component». Именно тип «Class» станет отправной точкой данного исследования.
Элемент типа «Class» был смоделирован как показано на рисунке 1.
Рисунок 1. Диаграмма классов:
класс и реализуемые интерфейсы.
Справа расположен элемент типа «Class», стоит обратить внимание что его название совпадает с именем типа, а слева расположены два элемента типа «Interface».
Отношения между данными элементами выражены стрелками, выражающими тип «Generalization» или обобщение, то есть в терминологии C++ можно сказать что Class является наследником двух полностью виртуальных базовых классов IDraw и IManage. Поскольку в C++ нет интерфейсов, такая возможность реализована именно через виртуальные классы. Но в применяемом для целей данной работы языке C# интерфейсы можно объявлять явно.
Стоит обратить внимание на то что статические свойства и методы класса подчеркиваются. Видимость, согласно стандарту, UML обозначена для PUPLIC и PRIVATE символами «+» и «-» соответственно.
В данном примере показан двусвязный список, управление которым осуществляется через интерфейс IManage и отрисовка класса на форме через интерфейс IDraw.
§ 2.2 Агрегация и Композиция
Выше было уже показан тип ассоциаций «обобщение» для отображения связи класса и его интерфейсов. Следующие типы ассоциаций, рассматриваемые в данной работе – «Агрегация» и «Композиция» изображены на рисунке 2.
Рисунок 2. Ассоциации – обобщение, агрегация, композиция
Вызывает некоторую сложность дифференцирование между двумя этими последними. До появления языка UML вопрос о различии между агрегацией и ком позицией у аналитиков просто не возникал. Осознавалась подобная неопределенность или нет, но свои работы в этом вопросе аналитики совсем не согласовывали между собой. В результате многие разработчики считают агрегацию важной, но по совершенно другой причине.
Язык UML включает агрегацию но семантика ее очень расплывчата.[3]
В разрабатываемой модели экземпляры класса Feature содержатся в контейнере List<Feature>, который является частью Class. Экземпляры класса Feature могут находиться в любом количестве во владении любых других объектов – поэтому применена Агрегация. Однако, перечисления Visability и Type могут быть лишь частью класса Feature поэтому применяется более специализированная Композиция.
§ 2.3 Перечисления
Консорциум OMG определяет Перечисления как тип данных, значения которого перечислены в модели в качестве литералов.[4]
Показанные на рис. 2 перечисления(enumeration) введены в модель для иллюстрации применения Композиции, однако, здесь стоит отметить что для управляемых языков программирования, по крайней мере точно известно про C#, перечисления(Enum) являются классами, соответственно могут быть инстанциированы как экземпляры класса. Допустимо было и на этапе моделирования использовать их как классы.
§ 2.4 Редактирование и генерация кода
В SPARX Enterprise Architect, как уже отмечалось выше есть возможность генерировать программный код для последующего использования.
В данной работе используется подход с частичной генерацией кода, однако, существует возможность добавлять код прямо в интерфейсе программы. На рисунке 3 показано что встроенный редактор кода поддерживает структурированный программный код, имеет подсветку синтаксиса.
Здесь не будут рассмотрены детали реализации, добавленный в редакто программный код имеет условный характер.
Рисунок 3. Добавление программного кода в модель
На рисунке 4 представлен интерфейс создания программного кода.
Рисунок 4. Интерфейс генерации кода.
Сгенерированный код соответствует тому что было спроектировано в программе. Объявленные свойства элемента Class получили следующий программный вид:
public class Class : IManage, IDraw {
private static int count;
private static Class start_instance;
private static Class current_instance;
private int ID;
private Class instance;
private Class next_instance;
private Class prev_instance;
private List<Feature> features;
Как видно из програмного кода, наследование интерфейсов IManage и IDraw также присутствует.