Для тех, кто предпочитает чтению смотреть и слушать – видео, в котором всё то же самое и чуть больше (20 минут):
Недавно к нам в компанию взяли нового сотрудника на должность программист или разработчик MS Dynamics AX 2012 (для начала выбрали версию 2012, но с перспективой его быстрого переключения на любые версии, включая D365 FO) - стажёр Воякс Иван Иванович (он же Woyax).
Его испытательный срок ещё не окончен, но он уже очень хорошо себя зарекомендовал, поэтому подведем промежуточные итоги, оценим, проверим, что он знает и умеет, и наметим планы на дальнейшее обучение и развитие.
Вот чему он научился:
Работа в системах учета задач (Jira, Redmine и т.д)
Воякс может брать в работу задачи, назначенные на него или выбирать их из списка по статусу. После обработки менять статус и переводить на дальнейшего исполнителя. Задать вопросы по задаче.
Анализ ТЗ
Воякс делает анализ технического задания (ТЗ) и структурирует его по разделам: модель данных, интерфейсы, алгоритмы. ТЗ могут быть неструктурированными и содержать несистемные названия. Воякс анализирует любые ТЗ и приводит их к структурированному виду. Вот три варианта ТЗ: структурированное с системными именами объектов, неструктурированное с системными именами и неструктурированное с указанием путей в меню или только названиями пунктов меню:
Каждое из этих описаний Воякс представит в структурированном виде, выделит необходимые названия объектов и укажет, чего может не хватать для однозначного понимания. На Рис.3 — пример работы Воякс с третьим вариантом ТЗ:
Таким образом консультант может записывать (или диктовать) текст в любом порядке, как ему удобно по развитию его решения, а Воякс разобьёт это на разделы и подпункты (объекты системы).
Разбор ТЗ по объектам системы
На основе проведённого анализа делается разбор по объектам системы, чтобы определить их системные названия.
Явное указание в ТЗ типов объектов и их системных названий позволяет сделать точный разбор и избежать неоднозначных трактовок.
В данном примере Воякс решил, что формы Параметров, Заказов на продажу, Журнал накладных и Журнал писем-напоминаний имеют такие же системные названия, как и таблицы, хотя в ТЗ это явно не указано (можно трактовать неоднозначно), но у некоторых форм указаны пути к пунктам меню. Далее при поиске объектов по пунктам меню и дополнительным описаниям он ещё раз это проверит.
Поиск объектов по системному меню и дополнительным описаниям
В отдельной форме продемонстрируем, как Воякс ищет и определяет названия по меню и дополнительным описаниям. По контексту ТЗ он понимает какие модули системы задействованы и анализирует все меню этих модулей (актуальные меню приложения, в котором он на данный момент работает) на предмет совпадения с введенным названием. В качестве искомого названия может выступать полный или частичный путь к пункту меню в любом виде и с любыми разделителями или просто название конечного пункта меню.
Дополнительный поиск – это поиск по любой дополнительной информации. Например, по описаниям классов из метода description() или какой-либо информации в системе (например, если есть такая практика, что программисты куда-то добавляют описания создаваемой функциональности) или какой-либо сторонней информации (например, файлы с описаниями).
Воякс оценивает по 100 бальной шкале совпадение искомого названия и результат. Если при поиске по меню оценка превышает некое допустимое значение (например, 90), то дополнительный поиск не выполняется.
Если дополнительный поиск был выполнен, то Воякс выберет объект с максимальной оценкой.
Если максимальная оценка оказывается ниже некоего допустимого значения (например, 80), то Воякс примет решение о том, что необходимо уточнить и запросить дополнительную информацию по ТЗ.
Поиск и верификация объектов по системным названиям в системе
Далее Воякс выполняет поиск объектов, которые он определил по ТЗ в системе и подтверждает их наличие.
Добавили в ТЗ что-то непонятное про «Новый год», что не удалось распознать.
Скрытую проверку объектов в системе Воякс уже выполнял на этапе поиска по меню и по дополнительной информации. Тогда он не нашел определенных после Разбора форм CustInvoiceJour и CustCollectionLetterJour (помните про неоднозначность трактовок) и переопределил названия поиском по меню на правильные CustInvoiceJournal и CustCollectionLetterJournal.
Определение имени проекта
По контексту ТЗ Воякс генерирует системное название проекта: W049_InvoiceResponsibleFields_woy
Название генерируется в соответствии с правилами именования проектов. Правила могут быть разные. В данном случае к основному названию (InvoiceResponsibleFields) добавляется префикс с номером задачи (W049_) и постфикс с кодом разработчика (_woy).
Создание проекта
Воякс создаёт проект со всеми определёнными объектами системы и сгенерированным названием.
И / ИЛИ задает вопрос в задаче и, например, переводит её на консультанта в определенный статус.
Воякс работает
Таким образом, выполняя последовательно набор действий в соответствии с настройками (а также работая по расписанию в пакетном режиме), Воякс обрабатывает назначенные на него задачи или задачи в определённом статусе от консультантов. В результате он создаёт проект (подтверждая тем самым проверку ТЗ на определение всех объектов) или запрашивает дополнительную информацию, задав вопросы консультанту.
Результат: обработал 4 средних ТЗ, создал 3 проекта (с разными основными названиями по настроению), по одной задаче написал вопрос-уточнение консультанту. Работал 3 минуты 31 секунду.
Оказание консультации по работе какой-либо операции или алгоритма
Так как ресурс Ивана Ивановича почти неограничен, а программисты обычно заняты, мы направляем к нему консультантов за разъяснениями по работе различных операций.
Консультант указывает название операции или путь к пункту меню и задаёт один или несколько вопросов. Воякс определяет по названию системный объект, анализирует код и отвечает на вопросы.
Также он может консультировать по работе форм. Например, ответить на вопрос: «Почему кнопка неактивна?».
Промежуточные итоги работы и обучения
В целом, даже при пессимистичной и сдержанной оценке, результаты очень хорошие. Если Воякс в процессе работы сталкивается с чем-то новым и не может сразу выдать правильный результат, он обучается этому и далее работает с учётом новых знаний. Все возникающие вопросы решаемы, а специфику любого приложения можно учесть. Всё, что можно однозначно распознать и определить по ТЗ, он делает, получая информацию из системы. Если требуется дополнительная информация — её необходимо предоставить. Для любителей поиграть в «угадайку», полагаясь на «интуицию» и «контекст», есть допустимые пороговые значения совпадений.
В ближайших планах
- Научить Воякс работать с одиночными классами, предлагать решения и вносить изменения согласно ТЗ.
- Научить Воякс работать с формами: создавать/изменять элементы форм, находить и распознавать операции, запускаемые или выполняемые на формах.
- Создавать поля в таблицах согласно ТЗ.
Отдельно отметим, что Воякс может также работать со всеми версиями MS Dynamics AX, включая D365FO (Microsoft Dynamics 365 Finance and Operations) .
Источник


