ИНСТРУМЕНТАРИЙ
Возможность разработки приложений на достаточно высоком абстрактном уровне формальной модели, а не просто в исходных текстах, становится сегодня ведущей темой в программной инженерии. Соответствующее направление Model-Driven Architecture (MDA), группа по выработке объектных стандартов OMG (www.omg.org), которая совершенствует, в частности, унифицированный язык UML и другие нотации моделирования (например, BPMN и исполняемый UML), признала стратегическим, а в последнее время она заинтересовалась даже моделями для робототехники.
В идеальном случае концепция моделирования выглядит так: системные аналитики совместно с представителями заказчика определяют желаемые возможности будущей системы и требования к ней, общаясь на понятном обеим сторонам формальном языке с использованием наглядных визуальных диаграмм (UML и др.). Далее построенная таким образом модель, объединившая в одно целое все требования к системе, уточняется на техническом уровне архитекторами и проектировщиками, к ней добавляются детали реализации, после чего она автоматически транслируется в готовые исходные тексты. Программисты их немного правят, настраивая различные нюансы поведения системы, - и продукт готов.
Ошибок в нем будет гораздо меньше (а может, и не будет вообще), нежели в приложениях, созданных традиционным ручным кодированием, когда каждая команда в коде потенциально может таить ошибку, так как вводится разработчиком в программу без полного учета всех взаимосвязей между объектами программы. Ведь человек способен одновременно манипулировать не более чем 5-9 понятиями, на основе которых он принимает решение, а в крупной программе таких понятий (сущностей) могжет быть тысячи. В модели же взаимосвязи отслеживаются автоматически, поэтому генерация противоречивого кода исключена.
Подобные системы, переводящие UML-диаграммы в исходный код, конечно, существуют. Есть среди них и общедоступные, например ObjectMapper (www.objectmapper.com), выпущенная в ноябре 2005 г. в исходных текстах, или AndroMDA (andromda.org). А недостаток подобных решений заключается прежде всего в том, что они довольно "легкие", то есть не содержат развитых транзакционных средств, не позволяют включать в модель средства взаимодействия с СУБД, не охватывают двунаправленный режим преобразования (модель в код и обратно) и т. д. Другими словами, построить и длительно развивать на их базе корпоративное решение весьма затруднительно.
Дэвид Интерсимон:
"Лучшие MDA-продукты
создаются российскими
программистами отделения
Borland в Санкт-Петербурге"
Довольно масштабная технология ObjectSpaces (средства объектно-реляционных преобразований) была несколько лет назад задумана в корпорации Microsoft (msdn.microsoft.com/data/objectspaces.aspx). На ее основе вполне могла бы быть построена система UML-моделирования и генерации исходного кода с возможностью хранения модельного пространства в СУБД и автоматической синхронизации копий экземпляров модели в БД и ОЗУ. Однако наработки проекта ObjectSpaces обещаны лишь в новой файловой системе WinFS, базирующейся на SQL-сервере и пока даже не включенной в Windows Vista.
На рынке имеются отдельные "тяжелые" решения такого класса, но их цена начинается с десятков тысяч долларов, и при этом необходимо еще докупать лицензии на компиляторы, для которых исходный код генерируется. Но надо отметить, что в нынешнем декабре ситуация в этой нише изменилась. Поступившая в продажу среда разработки Borland Delphi 2006 (десятая по счету версия; первая вышла в феврале 1995-го) включает технологию Enterprise Core Objects (ECO) III, в которой не только имеется поддержка UML-моделирования с двусторонним преобразованием "модель - код на языке Delphi" и средств взаимного объектно-реляционного преобразования, но и добавились средства визуального построения логики работы приложения (с помощью автоматных UML-диаграмм состояний).
По словам вице-президента Borland Дэвида Интерсимона, обладателя почетного титула Chief Evangelist, технология ECO позволяет разрабатывать объемное корпоративное приложение полностью в рамках UML-модели. Впрочем, если вручную внести изменения в сгенерированный на ее основе исходный код, то так называемые Live-средства автоматически отразят изменения в модели. ECO скрывает от разработчика все действия, связанные с отражением объектов модели в реляционную СУБД (поддерживаются SQL Server, Interbase, Oracle и др.) и их восстановлением из БД, позволяя строить полноценное приложение через описание объектов и формирование взаимосвязей между ними. А настраиваемая бизнес-логика задается выражениями языка объектных ограничений OCL. Достигнуто это за счет глубокого встраивания в среду системы моделирования Together (в будущем возможности Together будут расширены и на входящие теперь в Delphi средства программирования на С++). Таким образом, пользователь Delphi, содержащей десятки различных технологий, дополнительно получает развитые механизмы модельного построения систем, ранее существовавшие в виде отдельного продукта, а также всевозможные средства сбора метрик проекта и анализа качества исходного кода по десяткам параметров, использования шаблонов проектирования, автоматической генерации документации и т. д. Конечно, при желании можно применять в разработке ПО и хорошо известные классические компоненты, вручную кодируя сложную и оригинальную логику.
Delphi 2006 стала самым объемным релизом за всю историю этого продукта, объединив поддержку платформ Win32 и .NET, различные технологии создания приложений, работающих с СУБД, средства построения ASP.NET-программ и Web-служб и т. д. Важно, что непосредственно в Delphi встроены клиенты системы управления требованиями Caliber RM (которая, кстати, применяется в ряде крупных российских фирм для решения проектных задач и вне ИТ-сферы) и системы групповой работы, управления изменениями и версионного контроля StarTeam.
В Delphi 2006 также реализована поддержка процесса разработки на C# для .NET и С++ для Win32 - на основе единого набора компонентов линейки VCL, которая портирована на .NET. Библиотека визуальных компонентов VCL остается стратегическим направлением развития Delphi, что обеспечивает высокую сохранность инвестиций и позволяет переносить приложения без модификации исходных текстов с Win32 на .NET, а в перспективе и на другие платформы. Так, на следующий год запланирован выпуск Delphi (предварительное название Highlander) для платформ .NET 2.0 и .NET Compact Framework (компилятор командной строки для Compact Framework уже включен в Delphi 2006). В 2007 г. выйдет Delphi для Windows Vista, в 2008-м - Delphi для 64-разрядных платформ. И все они будут включать совместимые версии библиотеки VCL.
По словам г-на Интерсимона, интерес разработчиков к Delphi 2006 в значительной степени зависит от особенностей региона. В США огромную роль при выборе технологии программирования играют маркетинговые аспекты, а самой "раскрученной" однозначно считается Java, которая во множестве корпораций стала стандартом. А вот в странах Западной и Восточной Европы, Латинской Америки, России, Индии и Китае ситуация другая - выбор у разработчиков гораздо шире, поэтому рост интереса к Delphi продолжается. Предполагается, что он усилится, как только массово распространятся Windows Vista и платформа .NET 2.0. Важно, конечно, что при этом можно не волноваться за сложность адаптации существующих наработок к новым архитектурам: достаточно сегодня основать свою программу на компонентах VCL, а еще лучше - на модели ECO, и в будущем при необходимости получить нужную версию для .NET 2.0 или Vista минутной перекомпиляцией исходных текстов.