Дело в том, что процесс кодирования — важный, но далеко не единственный этап в жизненном цикле ПО. И современному ИТ-специалисту всегда следует помнить о том, что вокруг разработчика есть живые люди, с которыми нужно поддерживать грамотное общение на уровне обсуждаемой проблемы. Причем такое окружение может описывать одну и ту же вещь, пользуясь совершенно разными терминами. И потому масштабные проекты просто немыслимы без схематических описаний (рис. 1).
Сейчас существует коллекция программ, способных самостоятельно формировать исходный программный код, но для этого нужно уметь формулировать идеи, пользуясь стандартными схематическими описаниями.
Если процесс создания исходного кода человек может и не доверить машине, то общаться с коллегами по проекту ему все равно придется. А чтобы процесс взаимодействия был приятным и продуктивным, давно уже придумали унифицированный язык моделирования — UML (Unified Modeling Language). Знать UML и понимать схемы, соответствующие данному стандарту, — такой же плюс для разработчика, как и хорошо владеть английским языком. Всякий раз, когда вам требуется схематически обозначить свои технические идеи, крайне желательно, чтобы вы делали это именно в стандарте UML, и тогда ваши мысли обретут универсальный вид и для машин, и для людей (включая даже начальников).
Компания Sybase имеет в своем списке, пожалуй, самый передовой и популярный в данное время программный продукт, который пригодится на всех этапах разработки, начиная с первичного анализа задач проекта и заканчивая реализацией. Это ПО позволяет наглядно оформлять практически любые концепции — от системы управления крупным предприятием до мелкого программного модуля. Более того, благодаря наличию множества простейших графических элементов, Power Designer вполне способен заменить такие продукты, как Microsoft Visio, и конечно же превосходит по многим статьям утилиты вроде Umbrello.
Программа одинаково успешно работает в Windows XP и Windows 7. Оконный интерфейс приложения прост и интуитивно понятен — основной упор сделан на функциональность.
Для начала давайте составим простую диаграмму деятельности (Activity Diagram) для описания работы междугородного карточного таксофона (рис. 2). Это устройство можно смело отнести к классу встроенных процессорных систем.
Такая диаграмма деятельности напоминает простую блок-схему, ориентированную на динамическое поведение. Здесь очень удобно показывать ветвления различных последовательностей, что гораздо сложнее сделать в диаграмме последовательности (Sequence diagram).
Вообще, пользуясь средствами Sybase Power Designer, несложно создавать схемы, полностью соответствующие правилам UML, но можно и отходить в сторону от стандартов, причем настолько, насколько потребуют конструктивные соображения. Инструмент достаточно гибкий, и ответственность в значительной мере лежит на разработчике.
Рассмотрим другой пример — нарисуем очень простую диаграмму классов для описания структуры данных клиентского звонка, совершенного через таксофон. И в этом случае будем ориентироваться на язык C#. Сначала опишем простой класс TCall для звонка без использования чип-карты — например, бесплатный звонок (структура, подразумевающая дальнейшее усложнение). А потом, дополнив структуру звонка и добавив необходимые поля и методы, создадим класс TPayCall и укажем стрелкой на родительский класс TCall (рис. 3). Теперь во вкладке свойств Preview для класса TPayCall в автоматически сформированном исходном тексте (на языке C#) появится указание на наследование класса TCall. Кроме того, получившийся исходный текст разрешается еще и редактировать.
Создадим и третий класс — TCalls (массив звонков), описывающий пакет клиентских звонков. После чего проверим обратный эффект, добавив в исходный текст этого класса запись:
private TPayCall[] self;
На схеме сама всплывет связь класса TCalls с классом TPayCall, точнее, ассоциация (association), а еще точнее — бинарная ассоциация.
Любопытно, что на вкладке View каждого класса при настройке параметров генерации исходного кода допустимо отдельно указать версию MS Visual Studio 2005 или 2008. На той же странице View при нажатии на кнопку Edit with либо +E запускается MS Visual Studio c текущим рассматриваемым классом внутри временного файла.
А сейчас новое чудо. В пункте главного меню Tools выберем Generate Object Oriented Model и определим любой другой язык, кроме уже использованного C#. Программа создаст внешне полную копию исходной схемы, но при более пристальном рассмотрении легко заметить аккуратную замену типов атрибутов и операций на те, что соответствуют нужной языковой парадигме. Следовательно, и в разделе View любого класса на новой схеме также появится исходный текст на выбранном языке.
Теперь все наши три класса в формате C# вставим в файл Programm.cs и попробуем заново получить схему, прочитав файл из Power Designer и используя пункт меню File • Reverse Engineer. Получится уже знакомая схема, но в более строгом виде.
Работа с базами данных
Исследуемая версия Power Designer позволяет работать с живыми базами данных тремя способами: через ODBC, через JDBC или через родные драйверы. Причем в программе декларирована поддержка многих диалектов реляционных моделей СУБД — список типов СУБД, для которых можно разрабатывать проекты, гораздо длиннее, чем перечень прямых подключений через родные драйверы. Таким образом, даже когда вы работаете через ODBC, есть возможность уточнить ситуацию, указав точный тип СУБД (если вы найдете его в списке), чтобы программа знала, с каким синтаксисом метаданных ей придется иметь дело.
Ясно, что Power Designer позволяет совершать различные превращения в отношении как степени абстракции схем (сравните, к примеру, физическую диаграмму и логическую модель данных), так и языков программирования (C#, C++, Java, Visual Basic, XML). До сих пор мы рассматривали эти чудесные свойства в контексте отдельной программной сущности. А при работе с реляционными базами данных есть возможность проверять Power Designer на живом примере. Выберем готовую тестовую базу данных из одной СУБД и попробуем перенести ее в другую СУБД средствами Power Designer. Для этого создадим ODBC-подключение к тестовой базе данных СУБД FireBirdSQL Server (предварительно установив сам ODBC-драйвер с сайта www.firebirdsql.org).
Определим тип СУБД для того, чтобы программа правильно восприняла наш источник. Вызовем окно настройки File • Reverse Engineer • DataBase и в поле DBMS из длинного списка СУБД выберем нужный вариант — укажем программе, каким именно типом данных мы считаем наш источник. Все равно придется обратиться (в нашем случае) к источнику ODBC, однако нужно уточнить выбор: InterBase 6.x или ODBC 3.0? Забегая вперед, следует отметить, что во втором случае Power Designer не «увидит» триггеры базы данных, поэтому укажем СУБД InterBase. В результате программа выдала 10 ошибок, однако нарисовала все, что смогла, включая процедуры, триггеры и даже один просмотр View
В реальности такого результата бывает вполне достаточно, потому что миграция проекта, как правило, требует дополнительной «работы напильником». Кроме того, много проблем обычно находится где-то на стыке предметной области и синтаксиса. А теперь применим эту физическую модель данных (Physical Data Model) к другой СУБД, например к PostgreSQL 8 (www.postgresql.org.), и посмотрим, что же получится.
Сначала для уже установленной СУБД PostgreSQL создадим новую базу данных с именем test и соответствующее ODBC-соединение, а потом на основе существующей физической модели сделаем новую в формате PostgreSQL (Tools-Generate Physical Data Model… • PostgreSQL 8).
Приступим к генерации базы. Выбираем пункт DataBase • Generate DataBase… и указываем предварительно созданный источник ODBC для PostgreSQL. В результате получается структура с таблицами, просмотрами и индексами. Очевидно, что это далеко не все, что у нас было вначале, к примеру, синтаксис триггеров оказался неподходящим, но все равно это какой-то результат.
Что еще умеет Power Designer
Все типы схем и элементы схем в Power Designer являются слагаемыми общего концептуального подхода, помогающего разработчику аккуратно переносить свои идеи от схемы к схеме.
У каждого компонента можно выделить два важнейших пункта в свойствах меню: Format, с приблизительно одинаковым набором свойств графического отображения элемента, и Properties, где хранится полезная информация, касающаяся прикладной темы элемента. Причем создатели продукта пошли навстречу пользователю и сделали наборы таких «предметных» свойств максимально удобными для редактирования.
Любая область человеческой деятельности может быть описана схемой, и Power Designer — лишнее тому подтверждение
Впрочем, данный продукт не ограничивается набором программно-технических шаблонов для создания программного обеспечения, он позволяет создавать совершенно разные схемы, связанные с любой отраслью. Большинство элементов сами по себе поддерживают плавное масштабирование, позволяют заменять картинку, используемую по умолчанию, на изображение из внешних источников. Но и это не все! В приложении есть своя галерея приятных глянцевых значков, о которой многие так долго мечтали
Творить в Power Designer просто и удобно, а когда дело касается таких абстракций, как программная архитектура, то можно заняться подбором значков и цветов — порой увлекательный процесс творчества занимает много времени, но этого можно и не заметить (рис. 4).
Недостатки
Как и любое ПО, Sybase Power Designer имеет свои недостатки. Так, несколько озадачивает панель компонентов для редактирования текущей схемы — закрыть ее легко щелчком мыши, а вот как открыть, сразу и не сообразишь.
Обидно, что нет версии данной программы для Linux. Впрочем, некоторым пользователям при очень большом желании удавалось запустить ее в этой ОС.
Хотя сама Power Designer и состоит практически целиком из общепринятых стандартов, все же жаль, что отсутствует соответствующая литература на русском языке, помогающая глубже изучить программу, но это вообще характерно для всей линейки продуктов Sybase.
Еще один мелкий недочет — не предусмотрено плавное масштабирование на экране редактируемой схемы. Есть только фиксированный ряд, однако лично меня, например, он не устроил.
А самая главная, на мой взгляд, и весьма странная недоработка — не поддерживается .NET 3.5, а ведь пора бы уже!
Если процесс создания исходного кода человек может и не доверить машине, то общаться с коллегами по проекту ему все равно придется. А чтобы процесс взаимодействия был приятным и продуктивным, давно уже придумали унифицированный язык моделирования — UML (Unified Modeling Language).