Проект

"Лукойл-Нижегородниинефтепроект" завершила настройку Aveva PDMS

Заказчики: Лукойл-Нижегородниинефтепроект

Нижний Новгород; Консалтинг, включая управленческий и кадровый

Продукт: Aveva PDMS

Дата проекта: 2014/06 — 2014/09
Технология: САПР
подрядчики - 127
проекты - 585
системы - 499
вендоры - 193

25 мая 2015 года стало известно о внедрении САПР Aveva PDMS в компании ООО "Лукойл-Нижегородниинефтепроект"[1].

АЗС "Лукойл", 2014

Подготовка инструментов для Aveva PDMS

Автоматизация работы с AVEVA PDMS помогает расширить большой спектр возможностей этой системы и точнее показать особенности ведения работ в организации.

Для решения ряда вопросов и проблем сопровождения системы, в компании ООО «ЛУКОЙЛ-Нижегородниинефтепроект» создали управление разработкой инструментария для AVEVA PDMS.Известный писатель-фантаст Сергей Лукьяненко выступит на TAdviser SummIT 28 ноября. Регистрация 5.7 т

Система создана на основе свободного, открытого и бесплатного программного обеспечения: Git, Redmine, Microsoft SQL Server, NLog. Они связаны между собой в рамках одной системы:

  • Git – система управления версиями исходного кода ПО, она хранит исходный код всех разработок на целом наборе языков программирования – AVEVA PML, C#, Powershell, batch-скрипты;
  • Redmine – система управления проектами и задачами. Позволяет спланировать дорожную карту инструментария, разделить работу на этапы, вести разработку и контролировать процесс сверху. Связана с Git и всегда можно отследить в рамках какой задачи была реализована та или иная часть кода;
  • NLog – платформа для журналирования любых событий в разрабатываемом ПО, от отладочных выводов и до критических ошибок. Автоматически накапливает все сообщения в хранилище: в централизованный файл или, лучше на SQL сервер;
  • Microsoft SQL Server – реляционная СУБД для хранения журналов работы ПО и отчетов по ним.

Схема системы управления разработкой, 2014

Размещение исходного кода

Без системы контроля версий исходного кода всегда возникают вопросы:

  • что поменялось в коде?
  • кто внес изменения?
  • почему он это поменял?
  • как вернуться к старой версии ПО, при необходимости?
  • как правильно построить резервное копирование исходных кодов ПО?
  • как объединить работу нескольких человек?

Эти вопросы решает VCS (Version Control System) – система управления версиями. В "Лукойл-Нижегородниинефтепроект" была выбрана Git. Она не требует постоянного подключения к центральному серверу (как и наличия самого центрального сервера) и каждый разработчик может вести разработку разных элементов функционала полностью локально, лишь изредка выполняя синхронизацию с главным хранилищем. Вся версионируемая и конфигурационная информация хранится в обычных файлах в виде каталога-проекта. При использовании Git можно переключаться с работы над одной функциональностью, на работу с другой, не теряя изменений, т.к. фиксация вариантов реализации производится очень быстро. Git – одна из самых производительных VCS. Все изменения в коде сопровождаются комментариями разработчика, который их внес. Главное хранилище включено в план создания резервных копий. Все это предоставляет полный контроль над деревом исходных кодов ПО.

В разработке инструментария для AVEVA PDMS используются языки программирования:

  • PML – внутренний язык AVEVA PDMS, на нем реализуется весь основной функционал по обработке данных проекта;

  • C# – язык платформы .NET Framework, позволяет решать задачи, когда возможностей PML становится недостаточно.

Подход к версионированию кода на обоих языках одинаков. Всего существует примерно 5-6 централизованных хранилищ, они покрывают весь набор инструментария. Также, на каждый проект приходится по одному хранилищу для индивидуальных инструментов и конфигурации.

Скриншот окна Git, 2014

Планирование и разработка

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

Скриншот окна примера задачи на разработку, 2014

Типичный процесс разработки ПО выглядит следующим образом:

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

  • Идея расширяется, дополняется артефактами и превращается в новую задачу. Задача может быть заведена напрямую автором или может появиться автоматически на основе данных из системы журналирования.

  • Ответственное лицо (чаще всего – руководитель разработки) администрирует задачу: уточняет требования и детали реализации функционала и пользовательского интерфейса, определяет ее основные параметры – важность, срок реализации, плановые трудозатраты и ответственного исполнителя и передает в работу исполнителю.

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

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

  • В отдельных случаях руководитель разработки делает инспекцию кода (code review), изменившегося в задаче. Если при просмотре видны проблемы дальнейшего функционирования, стилистические недочеты или неоптимальность выбора алгоритмов для решения задачи, то он может вернуть задачу на доработку, добавив к ней соответствующий комментарий.

  • Главное хранилище автоматически производит развертывание актуальной версии ПО на пользователей AVEVA PDMS.

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

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

Содержимое редакции инструментария, 2014

Инсталляция готового инструментария

Разворачивание - процесс распространения новой версии ПО на компьютеры пользователей. Т.к. AVEVA PDMS позволяет организовать работу с общим сетевым каталогом инструментария PML, то развертывание в системе выполняет функцию обновления каталога сетевого инструментария актуальной версией ПО из главного хранилища. Параллельно с этим, при развертывании файлы PML защищаются от несанкционированного использования. После выполнения развертывания PML в большинстве случаев пользователь может начинать использовать новую функциональность даже не перезапуская AVEVA PDMS.

Инструментарий, работающий на .NET Framework, устроен иначе и путь его развертывания труднее. При запуске среды проектирования файлы с инструментами блокируются и не могут изменяться, ни пользователем, ни разработчиком. Поэтому развертывание производится в 2 этапа:

  • Разработчик обновляет версию ПО в централизованном хранилище на сервере. На данный момент это производится вручную, а в ближайшей перспективе планируется внедрить сервер автоматической сборки.

  • Пользователь запускает новый экземпляр среды проектирования и этим обновляет копию инструментария, которая хранится у него на локальном компьютере. При этом, ранее запущенные экземпляры AVEVA PDMS продолжают использовать предыдущую версию инструментов до окончания своей работы.

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

Обратная связь в инструментах компании "Лукойл-Нижегородниинефтепроект" организована на основе связки платформы NLog и хранилища Microsoft SQL Server. NLog интегрируется в инструменты C# стандартным образом, для подключения же NLog к инструментам PML был разработан специальный интерфейс. Любой инструмент может в процессе своей работы генерировать сообщения 6 возможных уровней, которые описывают разную важность происходящих событий:

  • Info – обычное информационное сообщение;
  • Trace – сообщение для отслеживания алгоритма выполнения;
  • Debug – сообщения с информацией для отладки;
  • Warning – в инструменте произошло что-то странное;
  • Error – в работе инструмента произошла серьезная ошибка, требуется вмешательство разработчиков;
  • Fatal – самое критическое сообщение, применяется в исключительных случаях, указывает на общую аварию системы.

Сообщения автоматически собираются в базу SQL Server. При наличии настроенных отчетов в службе Reporting Services, разработчик может просмотреть их на странице отчета. Дополнительно, в компании реализована автоматическая ежесуточная рассылка статистики по работе инструментария на основе данных из базы ошибок для всех разработчиков и администраторов AVEVA PDMS. Параллельно с этим улучшается механизм автоматического создания новой задачи на доработку при появлении в базе сообщения с ошибкой (уровни Error и Fatal).

Главный журнал работы, 2014

Итог проекта

На 25 мая 2015 года Aveva PDMS используется в ООО "Лукойл-Нижегородниинефтепроект" в соответствии с планами автоматизации работы отдела проектирования посредством внедрения системы 3D-моделирования.

Примечания