Я только что закончил прототип реализации управляемого алгоритма обучения, автоматически присваивая категориальные теги всем элементам нашей базы данных нашей компании (примерно 5 миллионов элементов).
Результаты выглядят хорошо, и мне было дано право планировать проект по реализации продукции.
Я уже делал такую работу, поэтому я знаю, как функциональные компоненты программного обеспечения. Мне нужна коллекция веб-сканеров для извлечения данных. Мне нужно извлечь функции из обходных документов. Эти документы должны быть разделены на "набор учебных материалов" и "набор классификации", а функциональные векторы должны быть извлечены из каждого документа. Эти векторы признаков самоорганизуются в кластеры, а кластеры проходят через ряд операций по балансировке. Etc и т.д. И т.д. и т.д.
Итак, я собрал план с примерно 30 уникальными задачами разработки/развертывания, каждый из которых имеет временные оценки. Первый этап разработки - игнорирование некоторых продвинутых функций, которые мы хотели бы иметь в долгосрочной перспективе, но не достаточно высокоприоритетных, чтобы сделать это в графике разработки еще - запланировано на двухмесячную работу, (Имейте в виду, что у меня уже есть рабочий прототип, поэтому окончательная реализация значительно проще, чем если бы проект начинался с нуля.)
Мой менеджер сказал, что план выглядит хорошо для него, но он спросил, могу ли я реорганизовать задачи в истории пользователей по нескольким причинам: (1) наше программное обеспечение для управления проектами полностью организовано вокруг пользовательских историй; (2) все наше планирование основано на подгонке целых рассказов пользователей в спринты, а не в индивидуальном планировании задач; (3) другие команды, как и веб-разработчики, отлично использовали гибкие методологии, и им удалось моделировать все функции программного обеспечения в качестве пользовательских историй.
Итак, я создал историю пользователей на верхнем уровне проекта:
Как пользователь системы, я хочу искать элементы по категориям, чтобы я мог легко находить наиболее релевантные элементы в огромной, сложной базе данных.
Или, может быть, лучшая история верхнего уровня для этой функции:
Как редактор контента, я хочу автоматически создавать категориальные обозначения для элементов нашей базы данных, чтобы клиенты могли легко находить высокоценные данные в нашей огромной, сложной базе данных.
Но это не настоящая проблема.
Сложная часть, для меня, заключается в том, как создавать подчиненные истории пользователей для остальной архитектуры машинного обучения.
Случай в точке... Я знаю, что алгоритм требует двух основных архитектурных подразделений: (A) обучения и (B) классификации. И я знаю, что учебная часть архитектуры требует построения кластерного пространства.
Вся литература Agile Development, прочитанная мной, кажется, указывает, что история пользователей должна быть "наименьшей возможной реализацией, которая обеспечивает любую ценность для бизнеса". И это имеет большое значение при разработке части программного обеспечения конечного пользователя. Начните с малого, а затем постепенно добавляйте значение, когда пользователи требуют дополнительных функций.
Но кластерное пространство само по себе обеспечивает нулевое значение для бизнеса. Также не работает сканер или экстрактор. В частичной системе нет коммерческой ценности (а не для конечного пользователя или для любой из ролей, внутренних для компании). Обученное кластерное пространство возможно только с помощью искателя и экстрактора объектов, и только релевантно, если мы также разработаем сопроводительный классификатор.
Я предполагаю, что можно было бы создавать истории пользователей, где подчиненные компоненты системы действуют как пользователи в рассказах:
В качестве процедуры построения кластерного пространства с контролируемым обучением я хочу использовать данные из экстрактора функций, чтобы я мог существовать.
Но это кажется действительно странным. Какую пользу он дает мне, как разработчику (или нашим пользователям, или любым другим заинтересованным сторонам, если на то пошло) моделировать мои истории пользователей, как это?
Хотя основную историю можно легко разделить по границам архитектурных компонентов (искатель, тренер, классификатор и т.д.), я не могу придумать какую-либо полезную декомпозицию с точки зрения пользователя.
Что вы, ребята, думаете? Как вы планируете рассказы пользователей Agile для сложных, неделимых компонентов, не относящихся к пользователю?