Назад в библиотеку

Организация разработки инструментария для AVEVA PDMS в ООО «ЛУКОЙЛ-Нижегородниинефтепроект»

Автор:Александр Шишкин, Игорь Беседин
Источник: Организация разработки инструментария для AVEVA PDMS в ООО «ЛУКОЙЛ-Нижегородниинефтепроект» // САПР и графика 2015. Вып. 6

Общий обзор

В данной статье описывается опыт ООО «ЛУКОЙЛ-Нижегородниинефтепроект» по организации системы разработки инструментария для автоматизации проектирования с использованием AVEVA PDMS. Автоматизация работы с AVEVA PDMS позволяет расширить и без того большой спектр возможностей этой системы и более точно показать особенности ведения работ в нашей организации, что в совокупности позволяет существенно повысить качество проектирования и уменьшить трудозатраты на решение типовых задач.

Любое программное обеспечение (ПО), которое хотя бы немного крупнее студенческой лабораторной работы, особенно, если оно разрабатывается не одним человеком, а группой специалистов, контролировать вручную сложно. Нужно помнить, кто, что, где, когда сделал, на какой стадии жизненного цикла ПО находится и сколько задач еще необходимо решить. Пользователям AVEVA PDMS нужно постоянно заниматься рутинной работой по установке обновленного ПО, а кроме того, какимто образом осуществлять обратную связь об использовании ПО и ошибках, которые происходят в его работе. Для решения всех этих проблем в ООО «ЛУКОЙЛНижегородниинефтепроект» и была создана система управления разработкой инструментария для AVEVA PDMS.

Система управления разработкой в нашей организации представлена на рис. 1.

Рис. 1 – Схема системы управления разработкой

Рис. 1 – Схема системы управления разработкой.

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

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

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

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

Рис. 2 – Часть истории репозитория PMLLIB

Рис. 2 – Часть истории репозитория PMLLIB .

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

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

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

  1. Сначала появляется идея. Идея может возникнуть у проектировщика на фоне его собственного опыта использования AVEVA PDMS. Идея может исходить от разработчика, который провел анализ функциональности и выявил места для внесения корректировок или улучшений.
  2. РИдея расширяется, дополняется артефактами и превращается в новую задачу. Задача может быть заведена напрямую автором или появиться автоматически на основе данных из системы журналирования.
  3. Ответственное лицо (чаще всего – руководитель разработки) администрирует задачу: уточняет требования и детали реализации функционала и пользовательского интерфейса, определяет ее основные параметры: важность, срок реализации, плановые трудозатраты и ответственного исполнителя, и передает в работу исполнителю.
  4. Из подготовленных задач формируются спринты – этапы разработки, включающие задачи, которые на том или ином этапе необходимо решить. Спринт, принятый в ООО «ЛУКОЙЛНижегородниинефтепроект» длится неделю. Общая оценка времени всех задач спринта немного меньше размера спринта. Спринт имеет запас времени для включения в него критических по сроку выполнения задач.
  5. Исполнитель начинает работать над задачей и реализовывать функционал. Как правило, для любой существенной доработки в системе контроля версий делается отдельная ветка из основной ветки исходного кода ПО. По окончании работы исполнитель объединяет свои наработки с главной веткой, исправляет конфликты, проводит финальное тестирование и публикует свои изменения в главное хранилище (рис. 4).
  6. В отдельных случаях руководитель разработки делает инспекцию кода (code review), изменившегося в задаче (рис. 5). Если при просмотре видны проблемы дальнейшего функционирования, стилистические недочеты или неоптимальность выбора алгоритмов для решения задачи, то он может вернуть задачу на доработку, добавив к ней соответствующий комментарий.
  7. Главное хранилище автоматически производит развертывание актуальной версии ПО на пользователей AVEVA PDMS.
  8. Автор задачи проверяет новую функциональность и закрывает задачу, если она решена, или открывает ее на доработку при выявлении какихлибо проблем.

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

Рис. 3 – Содержимое редакции инструментария

Рис. 3 – Содержимое редакции инструментария.

Развертывание готового инструментария

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

Рис. 4 – Code review двух соседних версий одного файла

Рис. 4 – Code review двух соседних версий одного файла.

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

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

Обратная связь

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

Рис. 5 – Главный журнал работы

Рис. 5 – Главный журнал работы.

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

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

Заключение

Правильный подход к организации процесса автоматизации крайне важен для построения устойчивой, быстро работающей системы проектирования и управления данными при совместной работе нескольких проектных команд. В связи с этим все участники данного процесса в ООО «ЛУКОЙЛНижегородниинефтепроект стараются работать слаженно, качественно и с минимальным привлечением внимания к себе разработчиков, а следовательно, финальный результат удается получить гораздо быстрее.