Файл: Применение объектно-ориентированного подхода при проектировании информационной системы).pdf
Добавлен: 24.05.2023
Просмотров: 114
Скачиваний: 2
СОДЕРЖАНИЕ
1. Теоретические основы объектно-ориентированного подхода
1.1 Основные понятия и суть подхода в проектировании ИС
Структура Унифицированного языка моделирования
1.2. Понятия, относящиеся к утилитам UML-моделирования
2. Особенности подхода и CASE-средства для проектирования
2.1. CASE-средства реализации объектно-ориентированного подхода
Software Ideas Modeler — это CASE-средство для UML-моделирования словацкого разработчика программного обеспечения Душан Родина (Dušan Rodina), которое поддерживает все 14 типов диаграмм, указанных в UML 2.4. ПО доступно в версии Professional Edition, бесплатной для некоммерческого использования, и версии Ultimate Edition, которая предоставляет больше возможностей. Обеспечивает простую систему создания задачи и возможность назначать конкретных людей этим задачам.
- Лицензия: свободное/проприетарное ПО;
- Языки генерации кода: Java, C#, C++, SQL DDL и т. д;
- Обратное проектирование: Java, C# и Visual Basic .NET;
- Платформы: Windows, Mac OS X, Linux, Solaris, JVM;
- Другие особенности: поддержка MDA, спецификаций UML 2 и XMI; создание документации для созданных моделей в форматах PDF, RTF, HTML, ODT или TXT; экспорт моделей в растровые (JPG, BMP, PNG), векторные (SVG) или другие (XMI, PDF) форматы.
Sparx Systems Enterprise Architect — это инструмент визуального моделирования и проектирования, основанный на OMG UML. Платформа поддерживает проектирование и создание информационных систем, моделирование бизнес-процессов, и моделирование доменов, основанных на технологии. Он используется предприятиями и организациями, чтобы не только моделировать архитектуру своих систем, но и обрабатывать реализацию этих моделей в течение всего жизненного цикла разработки приложений [58][59][60].
- Лицензия: проприетарное ПО;
- Языки генерации кода: ActionScript, C, C #, C ++, Delphi, Java, PHP, Python, Visual Basic, Visual Basic .NET, DDL, EJB, XML Schema, Ada, VHDL, Verilog, WSDL, BPEL, Corba IDL;
- Обратное проектирование: ActionScript, C, C #, C ++, Delphi, Java, PHP, Python, Visual Basic, Visual Basic .NET, DDL, XML Schema, WSDL;
- Платформы: Windows, Linux (через Wine), macOS (через CrossOver);
- Другие особенности: поддержка MDA, спецификаций UML 2 и XMI2.1, интеграция с OSLC, CVS (импорт/экспорт), ArchiMate (импорт/экспорт); интерфейс автоматизации - поддерживает полный интерфейс API для использования на любом языке на основе COM (и Java); среди доступных надстроек есть интерфейсы для VS.Net и Eclipse, Microsoft Office и DOORS.
StarUML — это инструмент UML от MKLab. Программное обеспечение было лицензировано в соответствии с модифицированной версией GNU GPL до 2014 года, когда переработанная версия 2.0.0 была выпущена для бета-тестирования под собственной лицензией. Заявленная цель проекта заключалась в замене более крупных коммерческих приложений, таких как Rational Rose и Borland Together. В конце 2011 года в результате «форка» (новой ветви развития) с версии StarUML 5.0 под названием WhiteStarUML теперь активно развивается в Object Pascal [61][62][63].
- Лицензия: проприетарное ПО (ранее GPL);
- Языки генерации кода: Java, C#, C++;
- Обратное проектирование: Java, C#, C++;
- Платформы: Windows, macOS, Linux;
- Другие особенности: поддержка MDA, спецификаций UML 2 и XMI (импорт моделей); поддержка шаблонов проектирования; интеграция с JavaScript, Node.js, HTML5.
Umbrello UML Modeller это бесплатный инструмент UML-моделирования, поддерживающий все типы диаграмм UML.
- Лицензия: GPLv2 +;
- Языки генерации кода: ActionScript, Ada, C#, C++, D, IDL, Java, JavaScript, Pascal, Perl, PHP, Python, Ruby, SQL, Tcl, Vala, XML Schema;
- Обратное проектирование: C++, IDL, Pascal/Delphi, Ada, Python, Java;
- Платформы: Unix-подобные, Windows (экспериментально через KDE);
- Другие особенности: поддержка MDA, спецификаций UML 2 и XMI (импорт из XMI-файлов, созданных внешними инструментами из PHP или Perl-кода, и экспорт в различные языки программирования); интеграция с KDE; экспорт в PNG и форматы DocBook и XHTML для совместной работы разработчиков (когда члены команды могут не иметь прямого доступа к Umbrello или в случаях, когда содержание модели должно быть опубликовано на веб-сайте) [64][65][66].
UML Designer – это инструмент графического моделирования для UML2 на основе плагина Eclipse UML2 и с открытым исходным кодом, основанный на Sirius и Eclipse. Обеспечивает поддержку основных диаграмм UML и профилей UML.
- Лицензия: EPL;
- Языки генерации кода: Java или C (есть совместимость с инструментами генерации кода Eclipse UMLGenerators или Acceleo);
- Обратное проектирование: Java или C (языки, поддерживаемые генераторами Eclipse UML);
- Платформы: Linux, Mac OS X, Microsoft Windows;
- Другие особенности: поддержка MDA, спецификаций UML 2 и XMI; интеграция с Eclipse (версии «Oxygen»); модули доступны через Eclipse Marketplace, чтобы объединить с SysML или напрямую сгенерировать код (Java или C).
UMLet — это инструмент UML с открытым исходным кодом на основе Java, предназначенный для обучения унифицированному языку моделирования и для быстрого создания диаграмм UML (диаграммы классов, прецедентов, последовательности, состояний, деятельности, развертывания). Его нельзя называть инструментом моделирования, поскольку он не предполагает наличие базового словаря или каталога объектов многократного использования. Имеет простой пользовательский интерфейс, который использует коды форматирования текста для изменения основных фигур. Есть онлайн-реализация под названием UMLetino [67][68][69].
- Лицензия: GPL;
- Языки генерации кода: не поддерживаются;
- Обратное проектирование: не поддерживается;
- Платформы: Windows, Mac OS X, Linux;
- Другие особенности: не поддерживает спецификации UML 2 (но для этого можно использовать функцию настройки); есть возможность экспортировать диаграммы в изображения (eps, jpg), формат чертежа (SVG), формат документов (PDF); буфер обмена можно использовать для копирования-вставки диаграмм в виде изображений в другие приложения; cоздание пользовательских элементов UML, изменение и использование основных объектов чертежа (это требует программирования элементов на Java); интеграция с Eclipse.
UModel — это инструмент UML-моделирования от Altova (создателя XMLSpy), поддерживающий все 14 типов диаграмм UML 2, и добавляющий уникальную диаграмму для моделирования XML-схем в UML.
- Лицензия: проприетарное ПО;
- Языки генерации кода: Java, C#, Visual Basic;
- Обратное проектирование: Java, C#, Visual Basic;
- Платформы: Windows, Mac OS X, Linux;
- Другие особенности: поддержка MDA, спецификаций UML 2 и XMI; поддерживает шаблоны проектирования; интегрируется с системами контроля версий и работает как плагин для интегрированных сред разработки Eclipse и Visual Studio; также поддерживает моделирование бизнес-процессов, SysML и моделирование базы данных.
Umple — является разработанным в Университете Оттавы CASE-инструментом, частично целью которого является приведение UML-моделирования и объектно-ориентированного программирования в соответствие. Название Umple представляет слияние «UML», «ample» («достаточно») и «programming language» («язык программирования»), что указывает на то, что оно предназначено для обеспечения широких возможностей расширения языков программирования с возможностями UML [70][71][72].
- Лицензия: MIT;
- Языки генерации кода: Java, C ++, SQL, Alloy, NuSMV, yUML, USE;
- Обратное проектироване: Java;
- Платформы: кросс-платформенное (JVM/Eclipse);
- Другие особенности: не поддерживает MDA, но поддерживает спецификации XMI и частично UML2 (класс, состояние, композитная структура); поддерживает шаблоны проектирования; импорт/экспорт может осуществляться по диаграмме или текстовой форме; внедряет код действия на Java и другие языки, написанные сами по себе; создание документации, архитектуры плагина для генераторов.
Visual Paradigm (VP-UML) – это инструмент UML от Visual Paradigm International, поддерживающий 13 типов диаграмм (диаграмма классов, прецедентов, последовательности, связи, состояния машины, деятельности, компонентов, развертывания, пакетов, объекта, композитной структуры, профиля, синхронизации, обзора взаимодействия).
- Лицензия: свободное (версия «community»)/проприетарное ПО;
- Языки генерации кода: Java, C #, C ++, PHP, Ada, Action Script (все только в коммерческой версии);
- Обратное проектирование: Java, C# (двоичный), C++, PHP (все только в коммерческой версии);
- Платформы: Windows, MacOS X, Linux , Solaris и других UNIX–системах;
- Другие особенности: поддержка спецификаций UML2, и отчасти XMI (только в коммерческой версии); интеграция с Eclipse, NetBeans, IntelliJ и Visual Studio; есть возможности структурного подхода [73].
2.2 Особенности объектно-ориентированного подхода
Преимущества подхода
Описание системы в виде объектов больше соответствует содержательному смыслу предметной области. Например, при использовании структурного подхода БД должна удовлетворять требованиям нормализации, в соответствии с которыми данные по одному и тому же объекту (сущности из реального мира) могут храниться в нескольких таблицах.
Также сущности реального мира, как правило, обладают поведением, что в объектно-ориентированном проектировании отражается с помощью определения методов класса. В структурном подходе данные (атрибуты) и алгоритмы (методы) существуют отдельно друг от друга;
Объединение атрибутов и методов в объекте (классе), а также инкапсуляция позволяют добиться большей внутренней и меньшей внешней связности между компонентами системы. Это облегчает решение проблем [11][74]:
- адаптации системы к изменению существующих или появлению новых требований;
- сопровождения системы на разных стадиях жизненного цикла;
- повторного использования компонентов.
Объектно-ориентированный подход позволяет легче организовать параллельные вычисления, так как каждый объект обладает собственными значениями характеристик (атрибутов) и поведением, за счет чего можно добиться его автономной работы.
Методы описания результатов анализа и проектирования семантически близки к методам программирования на современных объектно-ориентированных языках.
CASE-средства, поддерживающие объектно-ориентированный подход, на основе информации об объектах позволяют описать систему практически со всех возможных точек зрения и разные аспекты поведения системы, достичь большей степени автоматизации кодогенерации. CASE-средства, поддерживающие структурный подход, хорошо справляются с генерацией структур БД. Однако следует отметить, что эта структура должна удовлетворять требованиям нормализации. В связи с чем полностью автоматическая кодогенерация (например, экранов или функций обработки данных) возможна лишь в редких случаях [11].
Диаграммы UML сравнительно просты для чтения после достаточно быстрого ознакомления с его синтаксисом, а сам UML получил широкое распространение и динамично развивается ещё и потому, что расширяет и позволяет вводить собственные текстовые и графические стереотипы, что способствует его применению не только в сфере программной инженерии [5][74].
Недостатки подхода
Ключевыми недостатками объектно-ориентированного подхода в рамках контекста его применения являются скорее недостатки самого унифицированного языка моделирования. Ведь несмотря на то, что UML — достаточно широко распространённый и используемый стандарт, его часто критикуют из-за ряда недостатков.
К ним можно отнести, во-первых, избыточность языка. UML часто критикуется как неоправданно большой и сложный. Он включает много избыточных или практически неиспользуемых диаграмм и конструкций. Справедливости ради стоит отметить, что чаще это можно услышать в отношении UML 2.0, чем UML 1.0, так как более новые ревизии включают больше «разработанных комитетом» компромиссов [75].
Минусом является и неточная семантика. Так как UML определён комбинацией себя (абстрактный синтаксис), OCL (языком описания ограничений — формальной проверки правильности) и английского (подробная семантика), то он лишен скованности, присущей языкам, точно определённым техниками формального описания. В некоторых случаях абстрактный синтаксис UML, OCL и английский противоречат друг другу, в других случаях они неполные. Неточность описания самого UML одинаково отражается на пользователях и поставщиках инструментов, приводя к несовместимости инструментов из-за уникального трактования спецификаций [75][76].
Также обнаруживаются проблемы при изучении и внедрении. Вышеописанные проблемы делают проблематичным изучение и внедрение UML, особенно когда руководство насильно заставляет использовать UML инженеров при отсутствии у них предварительных навыков.
Только код отражает код. Ещё одно мнение — что важны рабочие системы, а не красивые модели. Как лаконично выразился Джек Ривс, «The code is the design» («Код и есть проект»). В соответствии с этим мнением, существует потребность в лучшем способе написания ПО.
UML ценится при подходах, которые компилируют модели для генерирования исходного или выполнимого кода, однако этого всё же может быть недостаточно, так как UML не имеет свойств полноты по Тьюрингу, и любой сгенерированный код будет ограничен тем, что может разглядеть или предположить интерпретирующий UML инструмент [74].
Кумулятивная нагрузка/Рассогласование нагрузки (англ. «Cumulative Impedance/Impedance mismatch»). Рассогласование нагрузки — термин из теории системного анализа для обозначения неспособности входа одной системы воспринять выход другой. Как в любой системе обозначений, UML может представить одни системы более кратко и эффективно, чем другие. Таким образом, разработчик склоняется к решениям, которые более комфортно подходят к переплетению сильных сторон UML и языков программирования. Проблема становится более очевидной, если язык разработки не придерживается принципов ортодоксальной объектно-ориентированной доктрины (не старается соответствовать традиционным принципам ООП).