В СППР немного объектов метаданных, и все вращается вокруг двух основных объектов – это «Проект» и «Тех. проект».
-
Обычно, проект – это нечто, что имеет окончание, имеет определенные этапы, но в СППР это не так. В терминах СППР проект – это конфигурация, с которой вы работаете. На каждую конфигурацию нужно открывать отдельный проект.
-
Тех.проект – это изменения конфигурации, либо какая-то выполняемая задача. К тех. проекту могут быть прикреплены ошибки и задачи. В терминах СППР задача – это некоторое задание исполнителю в рамках тех. проекта или в рамках какого-то объекта метаданных.
Проект определяет, где лежит база данных, какие у нее настройки метаданных. Есть очень интересная возможность – интегрировать проект с рабочей базой, и у пользователя прямо в интерфейсе будет отображаться модель, которая реализована в СППР. Это позволит сделать для пользователя удобный сервис, который будет ему помогать. Я чуть позже покажу, как это выглядит, и чем это может быть полезным именно в работе внутри компании.
Внутри проекта есть модели. СППР поддерживает две модели – модель процессов и модель функций:
-
Модель процессов описывается просто в текстовом формате;
-
А модель функций реализуется в нотации IDEF0.
Требование в СППР – это классическое требование, описание характеристики будущей системы. Требования могут входить в тех. проект, могут исходить из тех. проекта. Также, требования могут работать как напоминания, как заметки – вы что-то сделали, поняли, что это нужно доделать, и сделали себе заметку на будущую работу.
И есть специализированная функциональность, которую я в практике коммерческих внедрений не видел, чтобы она где-то применялась:
-
Возможность генерации справки – вы можете в процессе работы над тех. проектом, сразу писать справку к объектам, и система будет генерировать ее в HTML-формате. И потом эту справку можно централизованно загрузить в конфигурацию.
-
Механизмы проверки IDEF-моделей на соблюдение стандартов IDEF.
-
И еще одна интересная возможность – можно автоматизированно генерировать шаблоны прав.
Процесс работы с СППР. Продвижение тех. проектов по контрольным точкам
Когда я лет 7 назад в первый раз открыл СППР, я его сразу закрыл и забыл, потому что не понял, чем она может мне помочь. Это было связано с тем, что механизмы контроля в СППР не так очевидны, как в других системах поддержки разработки. Сейчас, когда я понял философию СППР, у меня совершенно другое мнение, я убежден, что СППР – это отличный управленческий инструмент. Программисты его не любят, но для управленца он отличный.
Почему? В саму СППР заложен очень интересный процесс – это продвижение тех. проектов по контрольным точкам. Он простой, но эффективный. Он позволяет всегда понимать, на какой стадии находится ваш тех. проект. Стадия = контрольная точка. Внутри определенной стадии тех. проекта рождаются какие-то задачи, ошибки. И тех. проект переходит со стадии на стадию. Например, на первой стадии мы назначили задачи, выполняем их, отмечаем, что этот этап согласован, и тех. проект таким образом продвигается.
Очень удобно, что в тех. проект можно прикрепить файлы, и таким образом у вас все будет в одном месте.
Давайте посмотрим, как это выглядит на практике.
Обратите внимание, что СППР рассчитан на то, что вы работаете с одной конфигурацией, поэтому, пока вы на начальной странице не отметите текущий проект, у вас все списки будут пустыми, потому что во всех списках установлен жесткий отбор по одному текущему проекту.
Итак, мы выбрали на начальной странице некоторый проект, и теперь список тех. проектов относится именно к этому проекту.
Помните, я рассказывал про контроль этапов? Внутри карточки тех. проекта показаны контрольные точки, которые настраиваются для каждой конкретной конфигурации.
Например, если вы работаете с бухгалтерией, у вас может быть этап «Верификация требований главного бухгалтера», под который требуется отдельное согласование. А если вы работаете с УТ, то там вы, возможно, работаете просто по заявкам, без дополнительных согласований.
Вот эти контрольные точки нужно очень хорошо продумывать, позже я объясню на примере, что имеется в виду.
Каким образом ведется работа? Например, пользователь считает, что к этой работе можно приступать. Он вручную ставит здесь статус «Готово к согласованию». И тех. проект приходит ответственному пользователю, за которым закреплена эта контрольная точка.
Дальше – я у себя на главной странице в «Текущих делах» вижу, что тех. проект пришел ко мне на согласование (гиперссылка «Согласовать»).
Я точно так же вручную открываю тех. проект, и проставляю статус контрольной точки «Согласовано». Активизируется следующая контрольная точка. Пользователь в рамках этой контрольной точки что-то выполняет, опять же ставит «Согласовано».
Механизм очень простой, без каких-то процессов, сложных схем. Но эффективный. Именно он позволяет всегда четко понимать, на каком этапе сейчас находится работа, на каком этапе выполнения вы находитесь.
Структура этапов работы с тех. проектом
У нас это выглядит таким образом – у нас четыре этапа.
Первый этап – это аудит системы бюджетирования. В рамках этого этапа мы не меняем конфигурацию – никакой разработки не ведется. Мы на него открываем отдельный технический проект, но в этом тех. проекте ставим для контрольных точек, которые касаются разработки, статус «Пропущена». На всю конфигурацию список контрольных точек фиксированный. Он всегда один. И на тех. проекте первого этапа мы контрольные точки, которые касаются разработки, пропускаем. Оставляем только точки «Открытие проекта» и «Закрытие работ». Таким образом на первый этап нашего проекта – один тех. проект.
А на второй этап нашего проекта, когда идет уже настройка бюджетов, мы открываем два-три тех. проекта (насколько мы параллелим этот процесс).
Ну и дальше, на обучение пользователей мы открываем отдельный тех. проект, в котором фиксируем какие-то материалы.
Работа внутри тех. проекта, внутри этапа строится таким образом – у нас там всегда есть две роли.
-
Один человек, который отвечает за тех. проект, и хочет его продвинуть дальше.
-
И второй человек, который проверяет, что работы выполнены правильно – ответственный.
Но при этом внутри стадий возможна работа с помощью подзадач. Опять же, в ручном режиме. То есть, мы открываем тех. проект и просто назначаем задачу, кому хотим на основе организационных правил. И таким образом, можно параллелить работу и давать поручения.
Давайте посмотрим, как выглядят задачи. Справа есть маленькая неприметная кнопка «Добавить задачу по контрольной точке» – именно эта кнопка добавляет задачу пользователю по какому-то этапу. Я сейчас нахожусь на этапе согласования требований. Добавляю задачу и могу кому-то что-то поручить таким образом в рамках обрабатываемой контрольной точки.
Здесь есть протокол переписки – можно внутри СППР вести мини-переписку по задаче – друг другу перенаправлять задачу с какими-то комментариями.
У вас появляется задача внутри этапа. Но опять же, еще раз подчеркиваю, это – ручной режим. У вас есть контрольные точки, как состояние технического проекта, основное состояние, которое определяет, где проект сейчас находится.
Внутри контрольных точек возможен обмен заданиями. Мы видим, что здесь появилась наша задача – «Поручение 1» и можно по определенной контрольной точке отобрать все поручения.
Проектирование в СППР
Что касается проектирования в СППР:
-
Фирма 1С, как вендор, представляет вам модель для ERP, причем, не секрет, что УТ и КА из ERP просто вырезаются. Следовательно, эта же модель может служить и для анализа КА и УТ. Я в этом примере взял модель от ERP и подключил ее к КА – работает прекрасно.
-
Процессы и шаги – это просто текстовое описание ваших процессов. Их можно связать между собой.
-
А функции – это уже описание с помощью IDEF0, это уже действительно моделирование.
Самое интересное в том, что, когда вы выполняете тех. проект, вы можете привязать его к определенной функции или процессу.
-
Например, вас в компании просят автоматизировать процесс учета заказов – вы открываете первый тех. проект, связываете его с процессом «Учет заказов».
-
Дальше, когда вы опять приходите в эту же компанию– они просят в учет заказов добавить штрихкодирование. Вы открываете еще один тех. проект и связываете его с этим же процессом.
И таким образом, вы сможете по процессу понять, как он менялся, кто отвечал за изменение этого процесса.
Общая идея всего этого:
-
У вас есть модель, которая является упрощенным представлением вашего предприятия, ваших процессов.
-
Тех. проекты эту модель изменяют. Каждый тех. проект вносит какое-то изменение в процессы, и это же изменение вы также отражаете в модели.
-
А на входе этих тех. проектов требования, также требования могут появляться как результат выполнения тех.проектов как новые пожелания
Давайте посмотрим, как у нас устроено моделирование. У нас есть отдельный раздел «Моделирование системы».
Тут есть процессы. Они сделаны очень просто, никакой графической нотации здесь нет. У процесса есть:
-
предшествующие процессы;
-
шаги процесса;
-
также непосредственно из нашего процесса мы можем понять все технические проекты, которые этот процесс изменяли.
Работа с интегрированной моделью системы
А вот с моделью системы уже намного интереснее.
Если мы переключимся на типовой проект «УП(ERP)», модель которого была сюда предварительно загружена, то в разделе «Функции» мы увидим полную модель нашего предприятия.
Здесь мы видим все составляющие, все функции, которые выполняет подсистема и объекты данных.
Причем, отсюда сразу можно провалиться более детально – переходом по гиперссылке в разделе/функции.
Можно путешествовать по модели и смотреть, какие объекты в нее входят и какие данные. Мы в основном бюджетированием занимаемся. На практике, модель бюджетирования мы фактически пользователям не показываем, потому что в ERP и в КА бюджетирование – это конструктор. И здесь модель отражает, что этот конструктор нужно настроить – для пользователей это никакого смысла не несет. Но другие подсистемы вполне можно использовать для обучения пользователей.
Если посмотреть на блок продаж, там модель уже действительно очень интересная, которая позволяет дать представление пользователям о том, что подсистема может, какие объекты в нее входят. Тут и объектов побольше, и видно, как заказы между собой взаимосвязаны, что есть на входе и что на выходе.
После того, как мы в СППР модель настроим, она становится доступна в КА и в ERP. Просто публикуете СППР на веб-сервере, указываете в КА адрес опубликованного веб-сервиса и у вас для каждого разделе появляется команда «Функциональная модель», по которой можно ее прямо отсюда открыть.
Чем это может вам помочь? Когда у вас есть ERP или КА, вы можете в СППР для пользователей прямо здесь, в этой модели делать какие-то подсказки.
Например, вы поставили у себя ERP, поставили СППР, загрузили эту модель, и, например, смотрите – вы можете прямо в модели пользователя написать какие-то сценарии работы, какие-то подсказки, объяснения и т.д.
Им будет удобно – открыли в КА экземпляр бюджетов, а к нему появилась кнопка, показывающая, что в этой модели.
В схемах функций вы можете разместить для пользователя важные подсказки – правила работы, инструкции или еще что-то. Поскольку все эти инструкции у вас хранятся в одном месте, это удобно и вам, и пользователям – вам поддерживать в актуальном состоянии удобно, а пользователям удобно, что инструкции интегрированы прямо в интерфейс.
Технология разветвленной разработки в СППР
Теперь – самое интересное. СППР рассчитана на технологию разветвленной разработки. Эта технология описана на ИТС, но почему-то, по опыту собеседований, про нее мало кто знает. У меня на предыдущем месте работы было свыше 50-ти сотрудников, я собеседовал очень много людей, и мне только два раза смогли сказать, что эту технологию знают. Технология хорошая и простая. Идея вот в чем:
-
Есть главное хранилище. В главном хранилище никто не работает, туда изменения заливаются.
-
Есть хранилище тех. проекта. Причем, СППР даже умеет создавать эти хранилища автоматически, может их генерировать – из основного хранилища конфигурацию забирать, класть в хранилище тех. проекта и т.д.
При начале работы, когда исполнитель получил задание на выполнение тех. проекта, он:
-
Из главного хранилища создает файл поставки.
-
На основании файла поставки создает свое хранилище тех. проекта.
-
Изначально у него все объекты на замках – он точечно снимает замки с тех объектов, которые планирует изменять, и вносит изменения,
-
В случае, если конфигурация в главном хранилище изменилась, разработчик стандартно обновляет файлом поставки хранилище тех. проекта – получается, что конфигурация тех. проекта отличается от конфигурации главного хранилища только на внесенные изменения.
-
А для переноса изменений тех. проекта в главное хранилище, разработчик, использует сравнение/объединение. При этом он видит только свои небольшие изменения, которые он внес в рамках тех. проекта,
-
Чтобы автоматизировать учет изменений в метаданных, он может сгенерировать отчет по сравнению конфигураций и загрузить его в СППР. Это позволяет сразу видеть в тех. проекте, какие объекты метаданных были изменены и что в них было изменено в рамках этого тех. проекта.
Давайте посмотрим, как это работает. Может, на словах кажется, что это сложно, но пройдя этот путь один раз, вы поймете, что там все элементарно.
Это –наше основное хранилище. Здесь нет замков, это – база, которую мы сейчас разрабатываем. Переходим в меню: «Конфигурация» – «Поставка» – «Создать файл поставки».
Теперь идем в базу разработки и делаем в ней загрузку конфигурации из файла поставки.
Смотрите, вся наша конфигурация встала на замок.
Теперь мы точечно снимаем все объекты, которые хотим изменять. Почему мы точечно снимаем? Чтобы при втором обновлении из хранилища у нас эти объекты уже не сравнивались, чтобы они автоматически заменились на то, что лежит в хранилище актуальное.
Давайте добавим документ «Покупка» и добавим реквизит в документ «Продажа».
Мы внесли наши изменения в рамках нашего тех. проекта и теперь переносим их в основное хранилище.
Вот, о чем речь – получаем отчет о сравнении конфигураций в текстовом виде.
И идем в СППР, идем в наш тех. проект, в рамках которого мы эти изменения вносим.
Заходим в «Проектные решения» – «Объекты метаданных» – «Заполнить по файлу сравнения конфигураций» – «Добавить с диска» – «Загрузить».
Смотрите, у нас все объекты с тех. проектом связались, система разобрала файл сравнения, написала, что с этим объектом случилось.
В поле «Изменение справки» запишем, что будем делать со справкой - в нашем случае отметим, что изменения не требуются.
Записав изменения, мы отметили, что этим тех. проектом мы изменили эти объекты метаданных.
Далее может встать вопрос – кто в последний раз что-то менял – наш справочник, документ или другой объект. Мы идем в раздел «Разработка» – «Объекты метаданных».
Тут у вас отображается полное дерево. Вот наши объекты.
И уже внутри объекта мы можем получить список тех. проектов, которые изменяли этот объект, и что в нем изменилось. Несложная технология, правда?
Вопросы:
-
Зачем усложнять схему разработки, применяя промежуточные выгрузки в файлы?
-
ERP – очень большая конфигурация и пока вы вносите в своей разработческой базе какие-то изменения, другие программисты тоже не дремлют, они меняют другие объекты. Чтобы не разбираться – есть у вас пересечения или нет, вы создаете файл поставки и те объекты, которые вы гарантированно не изменяли (а вы знаете, какие объекты вы не изменяли, потому что вы не сняли с них замки), обновятся автоматически. И вам нужно разобраться только с теми пересечениями, которые изменились и у вас, и у других программистов – где они что-то изменили. Благодаря этой системе «замков» мы отсекаем от сравнения те изменения, те объекты, которые вы не меняли, чтобы не все объекты сравнивать глазами при сравнении-объединении, а чтобы они обновились автоматически.
-
Если мы меняем приходник и меняем расходник – это разные тех. проекты?
-
Я для себя вывел такое правило. Тех. проект – это работа не более двух недель. От недели до двух – наиболее эффективно. В таком случае, у вас не может быть столько мелких задач, что изменения рождаются и там, и там. То, о чем вы сейчас говорите – у вас, наверное, тех. проект заведен по заявке. Агрегируйте. Пришло три заявки на улучшение приходника и расходника. Вы создаете тех. проект «Развитие документов приходный и расходный ордер» и обрабатываете в его рамках три заявки.
Смотрите – как я уже говорил, сотрудников у меня было много, а любивших СППР почти не наблюдалось, потому что СППР по сравнению с какими-то более привычными web-системами может показаться неудобным. Но, как я уже сказал – это отличный управленческий инструмент. Это инструмент для управленца, а не для программиста.
Как я ломал сопротивление? Я требовал отчеты, которые нельзя получить в Jira, но очень удобно сделать в 1С:
-
сколько объектов метаданных ты изменил на этой неделе;
-
сколько ты потратил трудозатрат;
-
сколько закрыл задач.
Три колонки и по дням их расписать. В 1С это делается несложно. Например, у меня был отчет из 8 колонок – прошлая неделя, эта неделя, трудозатраты по дням и куда они пошли.
Трудозатраты отмечаются в задаче.
У меня есть тех. проект, к которому привязана задача «Поручение 1». Пользователь может отметить в задаче, сколько часов запланировано, сколько согласовано. Это считается трудозатратами. Трудозатраты ведутся только по задачам. Если вы хотите указать свои трудозатраты в целом по проекту, вы можете сделать одну верхнюю задачу и по ней поставить общий срок. Потому что в самом тех. проекте можно указать не срок, а календарное время – начало и конец периода. Срока там нет, он есть только в задачах.
Про ошибки я даже показывать не буду, там все совсем просто. Идея такая же, как в задаче – что можно друг-другу сообщения по ошибкам отправлять, и полный протокол переписки сохраняется. Ошибка похожа на задачу. Механизм очень простой, но нам хватает – от багтрекера много не надо.
Ошибки могут входить в тех. проект – накопили пул некритичных ошибок, потом создали на базе этих ошибок тех. проект, и все эти ошибки исправляете одним тех. проектом.
И наоборот, при тестировании тех. проекта у вас могут быть исходящие ошибки из тех. проекта – пока вы тестировали тех. проект, у вас появились такие ошибки.
В тех. проекте регистрируете ошибку по работе с программой.
Пишете наименование, описание, в каком хранилище ошибка обнаружена и кому назначена.
-
Можно ли использовать СППР в качестве багтрекера?
-
Да, конечно. Нарисуйте простой интерфейс, дайте пользователям к права к списку ошибок – пусть они их хоть через веб-доступ регистрируют. Тем более, что объект метаданных «Ошибка» может быть не привязан ни к каким проектам/тех. проектам.
На слайде показана наша карта покрытия функциональности. Мы в основном в СППР используем следующие блоки:
-
активно используем проекты, тех. проекты, задачи и ошибки;
-
требования, модели – практически не используем. Для требований я использую Sparx Enterprise Architect.
Еще очень удобно делать такое разграничение по проектам:
-
если вы работаете внутри, у вас проект – это конфигурация,
-
а если вы работаете на внешнего заказчика – то у вас под проектом будет подразумеваться и конфигурация, и клиент. Для каждого клиента будет свой проект.
А чтобы отделить управление работ друг от друга, можно использовать целевые задачи. В СППР есть объект «Целевая задача» – используйте их, чтобы дополнительно категоризировать, разбить на какие-то этапы работ.
-
Вы сказали, что проект – это конфигурация. А если у нас в рамках проекта две конфигурации? Допустим, проект по синхронизации между двумя системами?
-
Значит, два проекта заводите. Я решал эту задачу так – есть целевая задача в СППР, она может быть привязана к разным разделам проекта. Я связь по владельцу удалил, и в целевую задачу вводил разделы от двух разных проектов, чтобы описать, например, синхронизацию между двумя системами. Тех. проекты для этих двух систем тоже разные, но они связаны одной целевой задачей. Проводя аналогию, целевая задача – это, по сути, и есть проект в принятом для коммерческих внедрений понимании.
-
А есть возможность в системе автоматически уведомлять заинтересованных лиц по изменениям?
-
В системе есть уведомления по задачам, по ошибкам – это настраивается в проекте. Они не рассчитаны на пользователя. Они рассчитаны на уведомление тех, кто с этой системой работает. Но есть стандартная БСП-шная рассылка отчетов – система автоматически собирает описание к релизу, делаете рассылку этого отчета, и она автоматически его рассылает.
-
Что при описании в нотации IDEF0 считать функцией и описывать кубиками IDEF0, а что считать процессом и описывать по шагам?
-
Модель процессов и модель функций – это две параллельные модели, описывающие одно и то же. У вас может быть процесс продажи, который включает в себя доставку. А на верхнем уровне у вас может быть две функции, связанные между собой – продажа и доставка. И дальше это уже декомпозируется до объектов. Это две разные модели.
-
Правильно ли я понял процесс работы с СППР – требование порождает тех. проект. Разработчик в рамках тех. проекта порождает изменения в конфигурации – изменяет или создает новые объекты, они потом загружаются в СППР. После загрузки, каким образом будет синхронизироваться модель функций и модель процессов? Правильно ли я понял, что синхронизация моделей должна происходить вручную на основании тех действий, которые делает разработчик.
-
По классике, сначала мы должны внести изменения в модель, а потом только открыть тех. проект на изменение.
-
Если мы идем по классике, мы сперва проектируем систему, рисуем функции, и потом на основе этих функций формируем структуру объектов. И желательно, чтобы это происходило в СППР. Но при этом на основе этой структуры, которую мы создали, мы не можем создать объекты в автоматизированном режиме. Мы все равно должны вручную создать. И потом, когда мы загружаем, наши объекты, созданные вручную, помечаются на удаление. Это создает дополнительную трудоемкость. И в этом противоречие
-
На этапе проектирования не нужно углубляться в структуру объектов метаданных – в модели проектируются только объекты данных, а потом уже разработчик сам связывает объекты данных с объектами метаданных. Но эта стыковка действительно делается вручную, их нужно заполнить.
-
На последнем партнерском семинаре анонсировали, что в СППР будет включена Vanessa – не видели еще?
-
В СППР сейчас есть интеграция с системой проверки АПК (автоматизированная проверка конфигураций). А про Vanessa – должны выпустить новый релиз, там будем пробовать.
-
Можно подробнее про документацию – там было поле «Изменение справки», где нужно было проставить признак – надо это документировать или не надо. Это – задание для писателей?
-
Да, есть отчет, который называется «Проверка выгрузки справки», в котором можно увидеть те объекты метаданных, по которым требуется изменения справки.
-
Получается, что технический писатель должен писать в СППР?
-
Да, из карточки объекта метаданных можно перейти к элементам справки и заполнить их здесь. А дальше справка генерится и загружается в конфигурацию.
Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2018 EDUCATION.