Для тех, кто предпочитает чтению смотреть и слушать – видео, в котором всё то же самое и чуть больше (20 минут):
Недавно к нам в компанию взяли нового сотрудника на должность программист или разработчик MS Dynamics AX 2012 (для начала выбрали версию 2012, но с перспективой его быстрого переключения на любые версии, включая D365 FO) - стажёр Воякс Иван Иванович (он же Woyax).
Его испытательный срок ещё не окончен, но он уже очень хорошо себя зарекомендовал, поэтому подведем промежуточные итоги, оценим, проверим, что он знает и умеет, и наметим планы на дальнейшее обучение и развитие.
Вот чему он научился:
-
Работа в системах учета задач (Jira, Redmine и т.д)
Воякс может брать в работу задачи, назначенные на него или выбирать их из списка по статусу. После обработки менять статус и переводить на дальнейшего исполнителя. Задать вопросы по задаче.
-
Анализ ТЗ
Воякс делает анализ технического задания (ТЗ) и структурирует его по разделам: модель данных, интерфейсы, алгоритмы. ТЗ могут быть неструктурированными и содержать несистемные названия. Воякс анализирует любые ТЗ и приводит их к структурированному виду. Вот три варианта ТЗ: структурированное с системными именами объектов, неструктурированное с системными именами и неструктурированное с указанием путей в меню или только названиями пунктов меню:

Рис.2 Три варианта ТЗ Каждое из этих описаний Воякс представит в структурированном виде, выделит необходимые названия объектов и укажет, чего может не хватать для однозначного понимания. На Рис.3 — пример работы Воякс с третьим вариантом ТЗ:
Рис. 3 Результат анализа 3-его варианта ТЗ Таким образом консультант может записывать (или диктовать) текст в любом порядке, как ему удобно по развитию его решения, а Воякс разобьёт это на разделы и подпункты (объекты системы).
-
Разбор ТЗ по объектам системы
На основе проведённого анализа делается разбор по объектам системы, чтобы определить их системные названия.

Рис. 4 Разбор (в ТЗ были указаны все системные имена) Явное указание в ТЗ типов объектов и их системных названий позволяет сделать точный разбор и избежать неоднозначных трактовок.
Рис. 5 Разбор (в ТЗ не указаны все системные имена и есть неоднозначные формулировки) В данном примере Воякс решил, что формы Параметров, Заказов на продажу, Журнал накладных и Журнал писем-напоминаний имеют такие же системные названия, как и таблицы, хотя в ТЗ это явно не указано (можно трактовать неоднозначно), но у некоторых форм указаны пути к пунктам меню. Далее при поиске объектов по пунктам меню и дополнительным описаниям он ещё раз это проверит.
-
Поиск объектов по системному меню и дополнительным описаниям
В отдельной форме продемонстрируем, как Воякс ищет и определяет названия по меню и дополнительным описаниям. По контексту ТЗ он понимает какие модули системы задействованы и анализирует все меню этих модулей (актуальные меню приложения, в котором он на данный момент работает) на предмет совпадения с введенным названием. В качестве искомого названия может выступать полный или частичный путь к пункту меню в любом виде и с любыми разделителями или просто название конечного пункта меню.
Рис. 6 Поиск по меню (полный путь) Дополнительный поиск – это поиск по любой дополнительной информации. Например, по описаниям классов из метода description() или какой-либо информации в системе (например, если есть такая практика, что программисты куда-то добавляют описания создаваемой функциональности) или какой-либо сторонней информации (например, файлы с описаниями).
Рис. 7 Поиск по меню и дополнительной информации названия пункта меню Воякс оценивает по 100 бальной шкале совпадение искомого названия и результат. Если при поиске по меню оценка превышает некое допустимое значение (например, 90), то дополнительный поиск не выполняется.
Если дополнительный поиск был выполнен, то Воякс выберет объект с максимальной оценкой.
Рис. 8 Сравнение оценок и выбор объекта по максимальной оценке Если максимальная оценка оказывается ниже некоего допустимого значения (например, 80), то Воякс примет решение о том, что необходимо уточнить и запросить дополнительную информацию по ТЗ.
-
Поиск и верификация объектов по системным названиям в системе
Далее Воякс выполняет поиск объектов, которые он определил по ТЗ в системе и подтверждает их наличие.
Рис. 9 Проверка объектов в системе Добавили в ТЗ что-то непонятное про «Новый год», что не удалось распознать.
Скрытую проверку объектов в системе Воякс уже выполнял на этапе поиска по меню и по дополнительной информации. Тогда он не нашел определенных после Разбора форм CustInvoiceJour и CustCollectionLetterJour (помните про неоднозначность трактовок) и переопределил названия поиском по меню на правильные CustInvoiceJournal и CustCollectionLetterJournal. -
Определение имени проекта
По контексту ТЗ Воякс генерирует системное название проекта: W049_InvoiceResponsibleFields_woy
Рис. 10 Название проекта Название генерируется в соответствии с правилами именования проектов. Правила могут быть разные. В данном случае к основному названию (InvoiceResponsibleFields) добавляется префикс с номером задачи (W049_) и постфикс с кодом разработчика (_woy).
-
Создание проекта
Воякс создаёт проект со всеми определёнными объектами системы и сгенерированным названием.
Рис. 11 Воякс создаёт проект И / ИЛИ задает вопрос в задаче и, например, переводит её на консультанта в определенный статус.
Рис. 12 Задать вопрос по задаче -
Воякс работает
Рис. 13 Воякс приступает к работе Таким образом, выполняя последовательно набор действий в соответствии с настройками (а также работая по расписанию в пакетном режиме), Воякс обрабатывает назначенные на него задачи или задачи в определённом статусе от консультантов. В результате он создаёт проект (подтверждая тем самым проверку ТЗ на определение всех объектов) или запрашивает дополнительную информацию, задав вопросы консультанту.
Рис. 14 Приятно наблюдать за его работой Результат: обработал 4 средних ТЗ, создал 3 проекта (с разными основными названиями по настроению), по одной задаче написал вопрос-уточнение консультанту. Работал 3 минуты 31 секунду.
Рис. 15 Результат работы -
Оказание консультации по работе какой-либо операции или алгоритма
Так как ресурс Ивана Ивановича почти неограничен, а программисты обычно заняты, мы направляем к нему консультантов за разъяснениями по работе различных операций.
Рис. 16 Консультация (общий вопрос) Консультант указывает название операции или путь к пункту меню и задаёт один или несколько вопросов. Воякс определяет по названию системный объект, анализирует код и отвечает на вопросы.
Рис. 17 Консультация по влиянию параметра Также он может консультировать по работе форм. Например, ответить на вопрос: «Почему кнопка неактивна?».
Рис. 18 Пример ответа по работе формы Промежуточные итоги работы и обучения
В целом, даже при пессимистичной и сдержанной оценке, результаты очень хорошие. Если Воякс в процессе работы сталкивается с чем-то новым и не может сразу выдать правильный результат, он обучается этому и далее работает с учётом новых знаний. Все возникающие вопросы решаемы, а специфику любого приложения можно учесть. Всё, что можно однозначно распознать и определить по ТЗ, он делает, получая информацию из системы. Если требуется дополнительная информация — её необходимо предоставить. Для любителей поиграть в «угадайку», полагаясь на «интуицию» и «контекст», есть допустимые пороговые значения совпадений.
В ближайших планах
- Научить Воякс работать с одиночными классами, предлагать решения и вносить изменения согласно ТЗ.
- Научить Воякс работать с формами: создавать/изменять элементы форм, находить и распознавать операции, запускаемые или выполняемые на формах.
- Создавать поля в таблицах согласно ТЗ.
Отдельно отметим, что Воякс может также работать со всеми версиями MS Dynamics AX, включая D365FO (Microsoft Dynamics 365 Finance and Operations) .
Автор: woyax
