Заказчики: Лукойл-Нижегородниинефтепроект Нижний Новгород; Консалтинг, включая управленческий и кадровый Подрядчики: Без привлечения консультанта или нет данных Продукт: Aveva PDMSДата проекта: 2014/06 — 2014/09
|
Содержание |
25 мая 2015 года стало известно о внедрении САПР Aveva PDMS в компании ООО "Лукойл-Нижегородниинефтепроект"[1].
АЗС "Лукойл", 2014
Подготовка инструментов для Aveva PDMS
Автоматизация работы с AVEVA PDMS помогает расширить большой спектр возможностей этой системы и точнее показать особенности ведения работ в организации.
Для решения ряда вопросов и проблем сопровождения системы, в компании ООО «ЛУКОЙЛ-Нижегородниинефтепроект» создали управление разработкой инструментария для AVEVA PDMS.Метавселенная ВДНХ
Система создана на основе свободного, открытого и бесплатного программного обеспечения: 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-моделирования.