Все потоки
Поиск
Написать публикацию
Обновить
-2.25

Delphi *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Реальное мобильное приложение в Delphi для систем наблюдения

Время на прочтение10 мин
Количество просмотров19K
Мы не рекламируем и не продвигаем ни компанию Digifort, ни её продукты. Компания указана, чтобы показать — это не «фейк», не «фотошоп», люди/продукты реальные. В данном техническом интервью будет рассмотрена проблема мобильной разработки глазами «классического destkop-программиста» с большой степенью объективности и непредвзятости. Нельзя, к примеру, говорить о проектировании мостов без анализа ключевых проектов, таких как Golden Gates Bridge. Для пользователей Delphi такой проект, несомненно, пионерский, есть смысл ознакомится с обзором.

Данное интервью — переводное. Эрик, будучи техническим специалистом, тем не менее, отвечал в классическом «западном деловом» стиле и формате, когда публично не принято ругать и резко критиковать. Он старался похвалить Embarcadero и всячески выражал благодарность, поэтому нам пришлось добавить «sugar-free» секцию, чтобы сохранить объективность изложения.


Сегодня мы поговорим с представителем компании Digifort, которого зовут Эрик Флеминг Бонила (Eric Fleming Bonilha). Он – разработчик, а его компания недавно выпустила мульти-платформенную мобильную версию системы, о чем писалось здесь. Мы попросили Эрика поподробнее рассказать о том, как, что, зачем он делал (при соблюдении know-how), а также почему именно Delphi for Android/iOS.

Здравствуйте, Эрик! Чтобы мы могли понять техническую составляющую Вашего проекта, расскажите о системе в целом. Каково её назначение? Это – реальный проект?

Здравствуйте. Я представляю «софтверную» компанию. Наш основной продукт решает задачи в области IP-TV-наблюдения на основе TCP/IP передачи закодированных изображений с аналоговых или IP-камер. Предусмотрена запись для последующего анализа. Технологии Digifort могут быть использованы в качестве основы для реализации анализа видео на предмет соответствия заданным шаблонам для идентификации проблемных ситуаций. Например, можно записывать изображения номеров машин, помещать их в базу данных, распознавать случаи угона. Естественно, можно представить себе и ряд других сценариев использования нашей системы. У нас есть масса продуктов, которые могут быть агрегированы в единое решение для создания замкнутых решений проблем безопасности вплоть до корпоративных потребностей.

Читать дальше →

Пользователи Delphi о мобильной разработке под Android

Время на прочтение8 мин
Количество просмотров14K
Валентина, Вы показывали Ваше первое приложение в Delphi for Android. Оно решает какую-то конкретную задачу или это просто – инициативная разработка, «проба пера»? Стоят ли за этим реальные бизнес-потребности?

Первое мобильное приложение, написанное в Delphi for Android, был для меня это неким пробным камушеком в сторону возможности развивать определенные части информационной структуры предприятия на мобильных платформах.

На многих предприятиях (являющихся нашими клиентами) сходу можно найти задачи, которые можно вынести на мобильную платформу. Это, в первую очередь задачи, связанные с персоналом, у которого нет возможности получить доступ к данным информационной системы с обычного компьютера или ноутбука, нет локальной сети и WiFi, только мобильная сеть. Это работники удаленных площадок, на которых нет возможности организовать стационарное рабочее место в силу определенной специфики, например, курьеры или менеджеры на выезде.
Для таких задач планшет на Android с 3G-модулем – хорошее решение. От нас требуется обеспечить связь с базой данных, удобный интерфейс, компактный трафик обмена данными.

По поводу решаемых задач — могу описать задачи, которые мы решаем сейчас, используя мобильную разработку для Android кратко, но без специфики (соблюдая интересы наших клиентов).

Одна из задач: есть специалист, находящийся на удаленной площадке, который должен передать небольшой объем оперативной информации по заказу – текущее состояние проблемы, которую он решает, и некие выходные данные. Данные должны быть переданы в информационную систему оперативно, так как от этого зависит дальнейшее прохождение заказа по цепочке. Кроме того, для решения своих задач, он должен получить дополнительную актуальную информацию, которая вносится в систему другими специалистами, возможно, тоже с мобильного устройства. Использование мобильного устройства, а не ПК под Windows, определяется в основном весовыми характеристиками планшета. «7 дюймов» легко помещаются в большой карман или маленькую сумочку и не ощущаются человеком как дополнительный вес, что позволяет носить эти устройства всегда и везде. Да и работать они могут более 6 часов.

Как решались это проблемы раньше: либо специалист носил с собой ноутбук с возможностью подключаться к сети 3G, либо звонил или посылал SMS диспетчеру. Работа с ноутбуком не всегда возможна, а работа через диспетчера – это потеря оперативности и актуальности данных и, естественно, человеческий фактор.

Читать дальше →

Клонирование компонентов VCL

Время на прочтение4 мин
Количество просмотров6.5K
Embarcadero в FMX заботливо предусмотрело клонирование, которе иногда может приятно упростить жизнь разработчика. VCL же явного инструмента клонирования в run-time не предоставляет.
Читать дальше →

RAD Studio XE5 для эффективного обучения программированию

Время на прочтение10 мин
Количество просмотров32K
Как евангелист Embarcadero я общаюсь с программистами достаточно интенсивно и на пределе физических возможностей. Траффик приблизительно 1000 человек в год. На семинарах ко мне подходят преподаватели, которые используют Delphi и C++Builder в обучении. После знакомства с возможностями RAD Studio XE5 они спрашивают: «Можно ли увидеть список весомых аргументов в пользу Delphi и C++Builder именно для образования?». Вопрос понятен. Люди годами используют эти продукты для обучения программированию, наблюдая, как их воспитанники с нуля достигают хорошего уровня с точки зрения самостоятельной разработки. Но «борьба» между технологиями ведётся и в области образования, а новомодные увлечения и броские продукты с необоснованно раздутым имиджем негативно воздействуют на людей, далёких от учебного процесса, но влияющих на принятие решений. Из уважения к преподавателям, часто за небольшие деньги растящих молодое IT-поколение, привожу такие доводы, подкреплённые личным более чем 15-ти летним опытом (школьники, студенты, аспиранты, преподаватели).

В условиях всё усиливающейся роли обучения программированию на всех этапах – от школьной скамьи до вуза – очень важно выбрать эффективную программную среду. Рассмотрим в этом качестве интегрированную среду разработки IDE и языковой базис на примере RAD Studio XE5, которая состоит из Delphi XE5, C++Builder и HTML5 Builder. Соответственно, языковые средства данного пакетного решения – это Delphi/Pascal, C/C++ и ряд популярных языков и технологий для Web-разработки. Такое сочетание весьма эффективно, если целью обучения программирования является формирование универсальных знаний и навыков, необходимых для создания современного программного обеспечения (ПО), в максимально широком диапазоне учащихся.

Среда и язык программирования для выработки первичных навыков на основе элементарных знаний должны обеспечивать минимально возможный порог вхождения. Здесь речь идёт не только о школьном образовании. Студенты вузов любой специальности обязаны иметь представление о том, как разрабатывается современное ПО. С одной стороны, это важно для подготовки как минимум грамотных пользователей уже созданных систем. С другой – практически любая сфера человеческой деятельности, включая гуманитарные области, при углубленном изучении требует разработки и использование сложного прикладного ПО. Юриспруденция, лингвистика, социология, политические науки и т.д. в современном виде подразумевают умение специалиста за функционалом применяемых систем видеть и понимать алгоритмы, реализованные в программном виде.

Знакомство с языками программирования должно происходить в школе. Но в силу различных причин очень многие студенты начинают обучение в вузах, имея весьма отдалённое представление о программирование, по крайней мере, создавать приложения самостоятельно они не умеют. Не нужно, говоря о массовом IT-образовании в плане изучения программирования, исходить из предположений о наличии каких-либо знаний. Именно поэтому требуется выработать единый подход к обучению программированию и в школе, и в среднеспециальном, и в высшем учебном заведении. Ещё раз отметим, что целью является поднятие всеобщего уровня знаний в области программирования и навыков создания приложений среди всех учащихся в национальных масштабах. Авторские методики и целевые программы развития наиболее одарённых учащихся неприменимы в отношении общего уровня. Используемые языки и программные среды при таком обучении не рассматриваться при формировании образовательных стандартов в школах, среднеспециальных и высших учебных заведениях по направлениям, непосредственно не связанным с разработкой ПО.

Читать дальше →

Эмуляция LINQ for SQL на Delphi

Время на прочтение6 мин
Количество просмотров6.6K
Постановка задачи.
Имеется большой Клиент-Сервер проект. Клиент программно строит динамические SQL запросы для выполнения на SQL сервере. Запросов много, логика построения размазана по всему клиентскому коду. Проект развивается во времени, необходимо модифицировать структуру базы данных. Как заставить компилятор показать все места, где в коде используются уже не существующие поля? Как заставить компилятор проверить, что целочисленному полю не присваивается строковый параметр? При этом паскалевский код должен быть приближен к SQL синтаксису.
Читать дальше →

Разработка кроссплатформенных мобильных приложений в Delphi #5

Время на прочтение3 мин
Количество просмотров10K
Разработка кроссплатформенных мобильных приложений в DelphiЧасть #1
Часть #2
Часть #3
Часть #4

В предыдущей части цикла мы более детально познакомились с принципами работы механизма связывания объектов LiveBinding на основе выражений. Благодаря возможностям подсистемы Visual LiveBinding разработчик избавлен от необходимости программировать эти выражения вручную. Сегодня мы продолжим разработку нашего приложения и познакомимся с новыми приемами работы с базами данных в FireMonkey с использованием FireDAC и LiveBinding.

В модуле данных (DataModule) создадим еще один набор данных с помощью компонента TFDTable. Свяжем его с таблицей tblIngredientes. Назовем его FDTIngredientes. По аналогии с предыдущими наборами данных, создадим список полей. Внесем изменения в процедуру ConnectToDB.

function TDM.ConnectToDB: Boolean;
begin
  try
    FDConnection1.Connected := True; // Устанавливаем соединение
    FDTRecipe.Open; // Открываем таблицу рецептов
    FDTUnits.Open; // Открываем единиц измерения
    FDTFoodstuff.Open; // Открываем продуктов
    FDTIngredientes.Open; // Открываем ингредиентов
  except
// Обработчик исключений....
  end;
  Result := FDConnection1.Connected;
end;
Читать дальше →

Пример использования DataSnap Callback: запрос данных от пользователя во время вызова серверного метода

Время на прочтение3 мин
Количество просмотров10K
Что это и для чего надо:

Работа с Datasnap заключается в запросе от сервера данных и вызове серверных методов, например:
  — Запросить список товаров с сервера (dataset )
  — Создать новый документ
  — Добавить в него позиции
  — Закрыть документ

Иногда при добавлении позиции необходимо сделать дополнительный выбор, например выбрать партию товара или разрез.

    Это можно сделать через возврат кода ошибки (что-то вроде Prepare/Execute), чтобы клиент запросил пользователя, а затем попробовал снова выполнить операцию.
    Или же дать серверу возможность запросить клиента непосредственно во время операции все необходимые ему данные.


Что можно сделать:

Разработка кроссплатформенных мобильных приложений в Delphi #4

Время на прочтение6 мин
Количество просмотров17K
Разработка кроссплатформенных мобильных приложений в DelphiЧасть #1
Часть #2
Часть #3

В четвертой части настоящего цикла мы вновь возвратимся к разработке «настольного» приложения и попытаемся более подробно разобраться с технологией связывания объектов LiveBinding. Данный механизм универсален и подходит как для мобильных, так и настольных приложений. Более того, этот механизм работает и в VCL. Знакомство же с LiveBinding лучше начать именно в классическом проекте.

Прежде всего, нам придется выполнить несколько однотипных задач, работа над которыми может показаться рутинной. Речь идет о создании форм редактирования списков, а именно, списка единиц измерений и списка продуктов. Данные формы будут вызываться из меню главной формы, которое нам также предстоит создать.

Итак, в модуле данных поместим два компонента TFDTable и настроим их на работу с таблицами tblUnit и tblFoodstuff (по аналогии с набором данных для работы с таблицей tblRecipe). Двойным щелчком на компоненте откроем редактор полей, добавим все поля (пункт контекстного меню Add all fields).

Важно понимать, что практически во всех реализациях компоненты наборов данных наследуются от класса TDataSet и работают с некоторым набором полей. Здесь имеются в виду экземпляры классов, наследников TField (TIntegerField, TStringField и т.д.). Набор полей можно создать в режиме проектирования (design-time) и настроить свойства полей с помощью «инспектора объектов». Если рассматривать TFDTable, то помимо полей, соответствующих физическим полям таблицы, можно создать и другие типы полей, например, вычисляемое (Caclulated) или подставляемое (LookUp) поле. Значения этих полей будут вычисляться динамически в ходе работы программы, а не браться из источника данных. Чуть ниже мы рассмотрим пример создания таких полей.

В том же случае, если набор полей не создан в режиме проектирования, при открытии набора данных в процессе работы программы, набор полей будет создан автоматически.

Ниже приведен фрагмент файла формы модуля данных uDM.dfm, содержащий описание одного из наборов данных и связанных с ними полей. Текстовое представление формы можно получить, если в контекстном меню формы выбрать пункт «View as Text». Для того, что бы вернуться в обычный режим представления формы, следует нажать «View as Form».
Читать дальше →

Карта памяти процесса

Время на прочтение38 мин
Количество просмотров47K
Задумывались ли вы над тем, как именно используется память, доступная вашей программе, да и вообще, что именно размещается в этих двух-трех гигабайтах виртуальной памяти, с которыми работает ваше ПО?

Спросите, зачем?
Ну как же, для 32-битного приложения 2-3 гигабайта – это ваш лимит за пределы которого без использования AWE вы выбраться не сможете, а контролировать собственные ресурсы все же желательно. Но даже и без этого просто с целью разобраться…

В прошлых статьях я описывал работу отладчика, где производились модификации памяти приложения, находящегося под отладкой. Эта статья является продолжением данного материала. И хотя к отладчику она не будет иметь отношения, но вот к процессу отладки – самое непосредственное…

Давайте посмотрим, как именно программист работает с памятью при отладке (особенно при отладке стороннего приложения, проще говоря, при реверсе):

1. Как правило, самой частой операцией будет поиск значения в памяти приложения и, к сожалению, данный функционал почему-то не предоставлен в отладчике Delphi (собственно, как и в MS VC++).
2. Модификация системных структур (PEB/TEB/SEHChain/Unwind/директорий PE-файлов etc...) будет происходить гораздо проще, когда поля структур размаплены на занимаемые ими адреса и представлены в читабельном виде.
3. Отслеживание изменений в памяти процесса (практически никем не предоставляемый функционал, реализованный в виде плагинов к популярным отладчикам). Действительно, зачем трассировать до посинения, когда достаточно сравнить два снимка карты памяти, чтобы понять, тут ли происходит нужная нам модификация данных или нет?

Да, собственно, вариантов использования много.

Впрочем, если без лирики, утилит отображающих более-менее вменяемую информацию о карте памяти процесса, которую можно применить для отладки, очень мало.
Читать дальше →

Конкурс «Осенняя мобилизация»

Время на прочтение1 мин
Количество просмотров2.8K


В сентябре мы запустили релиз RAD Studio XE5 с поддержкой Android.
Специально для вас мы организовали конкурс «Осенняя мобилизация», чтобы поощрить разработку под самую популярную мобильную платформу Android и наградить лучших разработчиков. Конкурс стартует 11 ноября, а подводить итоги мы будем в последнюю неделю года, 25 декабря.

Регистрируйтесь на сайте конкурса, создавайте приложения на Delphi XE5 для Android и выигрывайте призы: планшет Asus Nexus 10, планшет Asus Nexus 7, смартфон Nexus 4 или специальный приз от компании Софтлайн – лицензия RAD Studio XE5.
Если вы разрабатываете на Delphi, но только задумываетесь о создании мобильных приложений, это хороший способ попробовать свои силы.
Если вы уже писали приложения под Android, конкурс – отличный повод попробовать новый инструмент разработки.
Если у вас есть опыт и в Delphi и в разработке под Android – ваши шансы на победу выше!
Для участия в конкурсе вам необходимо
Читать дальше →

Разработка кроссплатформенных мобильных приложений в Delphi #3

Время на прочтение6 мин
Количество просмотров31K
Разработка кроссплатформенных мобильных приложений в DelphiЧасть #1
Часть #2

Настройка среды и создание нового мобильного приложения.


В предыдущей части цикла мы определились с задачей и создали простейшее FM приложение, которое отображает список рецептов. При этом мы использовали библиотеку доступа к данным FireDAC и технологию связывания объектов LiveBinding. Также мы условились, что в рамках поставленной задачи будет создано два приложения, использующих единую кодовую базу. И теперь, настало время для, возможно, самой интересной части – создания первого Android приложения.
Читать дальше →

Разработка кроссплатформенных мобильных приложений в Delphi #2

Время на прочтение8 мин
Количество просмотров61K
Delphi for Android

Часть #1

В предыдущей части цикла мы сделали обзор основных возможностей новой RAD Studio XE5. Сегодня же перейдем к практике. Прежде всего, давайте определимся с задачей.

Постановка задачи


Не смотря на некоторую академичность задачи, в качестве примера мы выбрали кулинарную книгу. А для придания оригинальности разрабатываемому приложению, попытаемся расширить обычный для подобных программ функционал несколькими дополнительными функциями:

Пересчет количества требуемых продуктов.

Обычно в рецептах указывается точное количество используемых продуктов. Но если требуется изменить количество порций, то соответственно, необходимо пересчитывать и количество продуктов. В процессе приготовления блюда это не всегда удобно.

Таймер.

Если вы новичок в кулинарии, то, вам следует использовать рецепты, в которых четко указано время той или иной операции. И таймер на планшете, телефоне или нетбуке вполне может стать удобной заменой кухонному таймеру.
Часто бывает, что несколько операций выполняются параллельно. Каждая операция может иметь свой «таймер».
При этом нас интересует, как «настольная», так и мобильная реализация приложения. Мобильное приложение будет использоваться в качестве пособия для визуализации рецепта и сопровождения процесса подготовки. Настольная версия может быть использована в более расширенном функционале для, например, формирования новых рецептов.


Здесь следует оговориться, что в принципе, поваренные книги, как и книги по программированию, могут быть рассчитаны на разный уровень подготовленности читателей. В нашем случае речь идет о «рецептах для чайников», т. е. тех, в которых указывается точное количество продуктов и точное время того или иного действия.

Данное приложение мы реализуем для Windows и для Android. Затем на основе единой базы исходных кодов мы сможем выполнить портирование приложения на MacOS и iOS.
Читать дальше →

Разработка кроссплатформенных мобильных приложений в Delphi #1

Время на прочтение5 мин
Количество просмотров50K
Delphi for AndroidКак вы, наверное, знаете, в сентябре этого года компания Embarcadero Technologies представила очередной релиз RAD Studio, набора средств разработки, включающих в себя Delphi, C++ Builder, HTML5 Builder и ряд сопутствующих продуктов. Основное новшество RAD Studio XE5 состоит в том, что с помощью Delphi стало возможным вести разработку нативных приложений для Android – самой популярной на текущий момент мобильной платформы.

Предыдущие версии Delphi уже поддерживали разработку для Mac OS (XE2, XE3, XE4) и для iOS (XE4). Поэтому сейчас мы не говорим о том, что кроссплатформенная разработка стала «изюминкой» новой версии Delphi. Однако, по отношению к разработчикам приложений, Android по-настоящему демократичная система. Здесь не требуется ни дорогостоящего оборудования (как в случае с iOS), ни покупки сертификатов разработчика (возможность публиковать приложения в GooglePlay стоит всего $25, возможность отладки на своем Android устройстве абсолютно бесплатна).

Таким образом, если вы имеете некоторые навыки работы в Delphi, то именно сейчас у вас появилась прекрасная возможность попробовать себя в мобильной разработке.

Говоря о Delphi, следует упомянуть и C++ Builder. Обычно оба эти продукта развиваются параллельно. Однако, на этот раз Delphi, выражаясь спортивным языком, «немного вырвался вперед» и пользователям C++ Builder приходится некоторое время ожидать пока их средство разработки «подтянется к лидеру».

Многие Delphi разработчики со стажем ассоциируют Delphi с VCL – мощной расширяемой библиотекой классов, предназначенных для создания широчайшего спектра приложений для Windows. Однако, как вы знаете, или успели догадаться, для создания кроссплатформенных приложений используется не VCL, а платформа приложений FM, ранее известная как FireMonkey.
Читать дальше →

Ближайшие события

Мировой тур RAD Studio XE5 во Львове, Уфе, Киеве, Минске

Время на прочтение1 мин
Количество просмотров4.2K


У нас хорошие новости для разработчиков Украины и Белоруссии.

Мы продолжаем мировой тур RAD Studio XE5.

Следующими городами нашего тура станут Львов, в который мы приедем 1 ноября, 5 ноября мы посетим в Минск, далее 12 ноября заедем в Уфу, а закрытие тура будет 21 ноября в Киеве.

Читать дальше →

Трансляция запуска RAD Studio XE5

Время на прочтение2 мин
Количество просмотров6K


Уважаемые разработчики!

Мы уже анонсировали Запуск RAD Studio XE5, который пройдет завтра, 24 сентября в гостинице Бородино.
Не можете вырваться из офиса? Предпочитаете наблюдать выступления с дивана? Нет времени на дорогу? Мы знаем это, поэтому специально для вас будем вести онлайн-трансляцию непосредственно из зала.
Подключайтесь к трансляции завтра, 24 сентября, в 10.00 MCK на сайте softwarepeople.ru/delphiandroid или на нашей странице в Facebook.
Вы сможете задать вопросы выступающим по Twitter, хэш-тэг #delphi_tour
Мы подготовили действительно выдающийся продукт, позволяющей создавать приложения под iOS и Android одновременно. Чтобы вы смогли максимально эффективно приступить к разработки мобильных решений, мы пригласили людей, которые знают о Delphi абсолютно всё!
Евгений Крюков – архитектор Платформы приложений FM (ex FireMonkey). Именно разработки Евгения легли в основу кроссплатформенности проектов Delphi для Android и iOS. История и эволюция, концепция и архитектура, возможности и планы на будущее – исчерпывающе глубоко и максимально подробно.
Читать дальше →

Болт с обратной резьбой для .slip-ого Embarcadero RAD Studuo XE

Время на прочтение2 мин
Количество просмотров18K
Совет, как не превысить число допустимых лицензий на одну зарегистрированную копию Embarcsdero RAD Studio XE. Возможно, будет полезно к прочтению системным администраторам и руководителям проектов, разрабатываемых на Embarcadero RAD Studio XE.
Проверено на Delphi XE3.
Вам интересно

Получаем список графических классов зарегистрированных в TPicture.RegisterFileFormat

Время на прочтение4 мин
Количество просмотров3.5K
В заметке описано, как можно использовать отладочный менеджер памяти в Delphi, чтобы определить все зарегистрированные графические классы.
Читать дальше →

Много тестов не бывает

Время на прочтение6 мин
Количество просмотров13K


Некоторое время назад я принял решение потихоньку внедрять в свою практику автоматизированное тестирование и TDD. Признаюсь честно, получалось все это с переменным успехом. Но то, что жить стало гораздо интереснее – это неоспоримый факт. Со мной стали происходить разные приключения. И, как во всех приключениях, иногда становилось немного страшно. Об одном таком случае я и хочу рассказать.

В проекте, в котором я принимал участие, потребовалась плотная работа с временными интервалами от минуты до года. Плох (или наоборот слишком хорош) программист, не написавший в своей жизни ни одну библиотеку работы с датами. Я не хуже и не лучше других, поэтому решил размять мозги и создать немного кода.
Читать дальше →

Fluent interface и Delphi

Время на прочтение2 мин
Количество просмотров9.5K
Текучий интерфейс (Fluent interface) — совсем молодая методика, даже скорее паттерн проектирования, получивший популярность и широкое распространение среди кодеров Java, C#, PHP.
В большинстве методик «хорошего кода» лежит разряжение текста кода (висячие строки, пробелы, отступы, etc) и это очень здорово, но иногда это превращается в сущий ад. Пробежка скролом по коду, запоминание цепочки вызова метода, вечная дилемма между длинным методом и читабельностью, etc.
Но решение есть — Текучий интерфейс! Теперь и на Delphi!
Читать дальше →

Зачем UML

Время на прочтение23 мин
Количество просмотров23K
Всеволод Леонов – менеджер по продуктам, «Embarcadero».
Александр Люлин – ведущий разработчик, «Гарант»
Максим Крылов – руководитель проекта, «Гарант»

Внимание, информация в следующем абзаце абсолютно не рекламного характера. Никто из авторов не будет обсуждать и даже упоминать какие-либо программные продукты в контексте их свойств, функций, конкурентных преимуществ, эмоционального восприятия, появляющегося в голове от многократного произнесения названий т.д. Ниже будет представлено упоминание продукта и компании для определения квалификации приглашенных экспертов. Проще говоря, кому интересно читать мнение об UML некого «васи пупкина», который разработал программу «бест-ххх-даулоадер-иксплойт»?

Компания «Гарант» известна многим российским IT-специалистам благодаря своему ключевому продукту – системе ИПО ГАРАНТ. Большая часть сотрудников компании заняты производством ПО, а сама система имеет 23-летнюю историю развития и насчитывает десятки миллионов строк кода, написанных на различных языках программирования. При таком масштабе, языковой и технологической неоднородностях, высоких темпах производства, очень жёстких требованиях к стабильности только применение самых передовых технологий может обеспечить качество эволюционирующей системы. UML как средство моделирования, бесспорно, является одним из таких «продвинутых» подходов, применение которого в компании «Гарант» отличается высоким уровнем автоматизации со значительной долей усиления его системной роли. Сегодня своим опытом делятся ведущий разработчик системы ГАРАНТ Александр Люлин и руководитель проекта Максим Крылов.

Доказательство отсутствия рекламы — давайте разберём, что написано выше. Мы только что определили:
  • название компании, сотрудниками которой являются эксперты;
  • сайт компании;
  • профиль компании;
  • какой продукт производит компания;
  • технические параметры продукта (количественные и качественные), позволяющий оценить масштаб разработки;
  • степень «проникновения» UML в процесс производства ПО.


Сайт компании приведён опять же не из рекламных соображений. Так делает даже wikipedia, которая является эталоном «безрекламности». Указанный выше абзац служит для придания публикации а) полноты; б) ответственности перед читателями.

Если вы (в широком смысле — люди, компании, специалисты, эксперты) не согласны с авторами, рады будем увидеть ссылки на ваши публикации по сабжу. Если нужно в этом помочь — обращайтесь vsevolod.leonov@embarcadero.com.


Всеволод: Расскажите, был ли изначально использование UML принято в качестве одной из составляющей процесса разработки?

Максим: Нет, конечно, когда мы пришли в «Гарант», его еще попросту не было. Но, кажется, уже в 97-м году наш молодой и талантливый коллега (хотя в ту пору мы все были молоды) принёс дискету с одним из первых инструментов UML-моделирования. Примерно с этого момента можно считать, что внедрение UML в стенах «Гаранта» началось. Однако, до его использования в основных наших проектах, так сказать в промышленных масштабах, прошли еще годы.

Александр: Более того, использование UML внедрялось долго и в несколько этапов. По мере роста наших разработок и понимания, что без этого инструмента есть риск не справиться с всё усложняющейся структурой кода и внутренней архитектурой проектов.

Всеволод: Не было ли «идеологических разногласий»? Есть разные стили кодирования, не получалось ли так, что «у каждого свой UML»? Или UML «причёсывает всех под одну гребёнку»?

Александр: Конечно, были разногласия. И как раз в идеологической основе внедрения и было стремление все «причесать» и унифицировать имеющиеся подходы.

Максим: К тому моменту, когда использование UML из экспериментов одного-двух энтузиастов перешло в стадию проектного внедрения, у нас уже было довольно четкое понимание что это и зачем и как сделать так, чтобы не было «разных UML-ей».

Всеволод: В какой момент было принято решение посмотреть в сторону UML?

Александр: Когда появилось осознание того, что проекты сложные. Что в них задействовано много людей. Что надо как-то «договариваться». И что надо как-то «видеть» общую архитектуру проектов.

Максим: Долгое время его использование ограничивалось личными набросками для потребления узкой группой «посвященных». В какой-то момент пытались начать генерировать из него CORBA IDL. В итоге, пришли к выводу, что это почти невозможно и написали свой простенький генератор. Собственно, это и было точкой невозврата. После этого UML стал применяться в большинстве проектов, и что главное, переродился в нечто существенно большее, чем просто набор картинок, мы об этом потом чуть подробнее расскажем. Но в начале, да — просто как возможность быстрее и эффективнее договориться.

Читать дальше →

Вклад авторов