Системный сдвиг – Telegram
Системный сдвиг
10.1K subscribers
270 photos
8 videos
20 files
272 links
Авторский канал Юрия Куприянова. Обучаю системных аналитиков. Пишу про нетривиальные темы в анализе, проектировании систем, управлении и обучении.

Программный директор WAW, член ПК Flow, ЛАФ.

Контакты: @YuryKupriyanov

Курсы: https://systems.education
Download Telegram
Все вокруг балуются с chatGPT, я тоже решил поиграться. Сначала я попросил её сгенерировать мне бэклог на школьную систему обучения (LMS). Получилось очень неплохо (роль администратора не забыта, как это часто бывает!). Я попросил добавить пользовательские истории для родителя, вот ответ нейросети:

Вот несколько дополнительных пользовательских историй, которые можно добавить в бэклог продукта, чтобы поддержать родителей учащихся:

Родительские аккаунты:
Как родитель, я хочу иметь возможность создать учетную запись, чтобы иметь доступ к LMS и просматривать информацию о курсах и оценках моего ребенка.
Как администратор, я хочу иметь возможность связать родительскую учетную запись с учетной записью учащегося, чтобы родители могли получать доступ к LMS от имени своих детей.

Уведомления для родителей:
Как родитель, я хочу иметь возможность получать уведомления об успехах моего ребенка в LMS, например, когда он получает новые оценки или записывается на новые курсы.
Как администратор, я хочу иметь возможность настраивать типы уведомлений, которые могут получать родители.

Вовлечение родителей:
Как родитель, я хочу иметь возможность просматривать учебные материалы и задания моего ребенка, чтобы поддерживать его обучение.
Как родитель, я хочу иметь возможность общаться с учителями моего ребенка через LMS, чтобы быть в курсе их успехов и оказывать поддержку.

Родительский контроль:
Как родитель, я хочу иметь возможность устанавливать ограничения на использование LMS моим ребенком, например, количество времени, которое они могут проводить на платформе каждый день.
Как администратор, я хочу иметь возможность предоставить родителям инструменты, которые помогут им отслеживать и управлять использованием LMS их детьми.

Отчеты для родителя:
Как родитель, я хочу иметь возможность просматривать отчеты об успеваемости моего ребенка в системе управления обучением, такие как его оценки и процент завершения курса.
Как администратор, я хочу иметь возможность создавать и настраивать отчеты для просмотра родителями.

Потом она мне составила список объектов с приблизительным составом полей и связями:

Пользователь
: Объект пользователя представляет человека, имеющего учетную запись в LMS. Пользовательский объект будет иметь такие свойства, как имя пользователя, пароль, имя и изображение профиля.
Курс: Объект курса представляет собой курс, доступный в LMS. Объект курса будет иметь такие свойства, как имя, описание, дата начала и дата окончания.
Зачисление: объект зачисления представляет зачисление пользователя на курс. Объект регистрации будет иметь ссылку на объект пользователя и объект курса.
Материал курса: Объект материала курса представляет часть содержимого, связанного с курсом, например конспект лекции или задание. Объект материала курса будет иметь такие свойства, как имя, тип и файл.
Оценка: объект оценки представляет оценку пользователя за курс. Объект оценки будет иметь такие свойства, как оценка и обратная связь.
Уведомление. Объект уведомления представляет собой сообщение, отправляемое пользователю. Объект уведомления будет иметь такие свойства, как тип, сообщение и дата.
Дискуссионный форум. Объект дискуссионного форума представляет собой форум для курса, где пользователи могут публиковать сообщения и отвечать друг другу. Объект дискуссионного форума будет иметь ссылку на объект курса и список сообщений.
Сообщение: Объект сообщения представляет собой сообщение, опубликованное на дискуссионном форуме. Объект сообщения будет иметь такие свойства, как текст, дата и пользователь.
Достижение: объект достижения представляет собой значок или сертификат, который может получить пользователь. Объект достижения будет иметь такие свойства, как имя, описание и изображение.

Объекты данных будут иметь следующие отношения:
Пользователь имеет много зачислений.
Курс имеет много зачислений.
В курсе много учебных материалов.
Зачисление имеет одну оценку.
У пользователя много уведомлений.
Курс имеет один дискуссионный форум.
Дискуссионный форум имеет много сообщений.
У пользователя много достижений.
🔥10👍2👏2🕊1
После я попросил нейросеть составить список экранов, нефункциональные требования и расписать пару юскейсов. Вот, например, простановка оценки учителем:

1. Учитель входит в LMS и переходит на страницу курса для класса, который он преподает.
2. Учитель выбирает задание, представленное учащимся, из списка заданий.
3. Учитель просматривает представление учащегося и просматривает содержимое, чтобы определить оценку учащегося.
4. Учитель вводит оценку в соответствующее поле и добавляет отзывы или комментарии для учащегося.
5. Учитель выставляет оценку, и она автоматически сохраняется в LMS.
6. Учащийся получает уведомление о том, что он получил новую оценку за задание.
7. Учащийся входит в LMS и переходит на страницу своих оценок, чтобы просмотреть новую оценку.
8. Учащийся просматривает отзывы и комментарии, предоставленные учителем, и думает, как они могут улучшить свою работу в будущем.

Этот вариант использования демонстрирует, как можно использовать LMS для поддержки процесса оценивания и своевременного предоставления учащимся отзывов о своей работе.

А вот альтернативные шаги к нему:

Альтернативный вариант
: если учитель не может оценить задание из-за технической проблемы, он может обратиться в службу поддержки LMS для решения проблемы.
Альтернативный вариант: если учитель не может оценить задание из-за того, что оно неполное или не соответствует требованиям к заданию, он может вернуть задание учащемуся на доработку.
Исключение: если учащийся не сдал задание, учитель не сможет его оценить. В этом случае учитель может связаться со учащимся, чтобы напомнить ему о необходимости представить свою работу.
Исключение: если материалы, отправленные учащимся, содержат неприемлемый или оскорбительный контент, учителю может потребоваться принять меры по удалению такого контента и уведомить об этом соответствующие органы.
Исключение: если LMS перестает работать или возникает другая техническая проблема, учитель может не получить доступ к заданию или отправить оценку. В этом случае учителю, возможно, придется подождать, пока проблема не будет решена, прежде чем продолжить.

(Всё публикую без правки, как сгенерировала нейросеть).

И напоследок я попросил её сформулировать какие-нибудь продуктовые метрики:

Вот некоторые возможные метрики продукта, которые можно использовать для измерения производительности и успеха LMS:
Активные пользователи: количество пользователей, которые активно используют LMS на регулярной основе.
Коэффициент завершения курса: процент пользователей, завершивших каждый курс, на который они записались.
Вовлеченность пользователей: среднее количество времени, которое пользователи проводят в LMS за сеанс, и количество действий, которые они совершают при использовании платформы.
Рейтинги курсов: средняя оценка, которую пользователи ставят пройденным курсам, а также количество полученных оценок.
Уведомления: количество отправленных уведомлений и процент ответов на эти уведомления.
Дискуссионные форумы: количество сообщений, размещенных на дискуссионных форумах, и уровень участия в этих форумах.
Уровень завершения достижений: процент пользователей, которые выполнили все достижения, доступные в LMS.
Технические характеристики: Время безотказной работы и время отклика LMS, а также количество ошибок и исключений.
Удовлетворенность пользователей: средняя оценка, которую пользователи ставят LMS, а также количество полученных оценок.
Уровень рефералов: процент пользователей, которые направляют других в LMS.

Вся эта генерация заняла у меня минут 5-7 (причем в основном я думал, какой вопрос задать следующим). Для сравнения, я этот пост писал минут 15 ;)

В общем, кажется, способы составления требований и ТЗ в ближайшее время сильно изменятся :)))
🔥9👍7
Да, спецификацию API она тоже умеет генерировать, хоть REST, хоть GraphQL, хоть IDL
🔥91
Ладно, что мы всё о работе. Вот почитайте стихи про требования от ИИ:

>Write a poem about software requirements

In fields of code and screens so bright
Lies a land of endless possibilities
Where software requirements lay in wait
To guide the way and pave the path

With clear and concise language they speak
Outlining all that must be done
From the smallest of details to the grand design
Software requirements make it all real

They lay the groundwork for what's to come
Guiding developers on their way
Ensuring that the end result will be
A product that works without a glitch

So here's to the unsung heroes of the digital age
The software requirements that guide us all
May they continue to help us build
The future that we can't yet see.
👏9🤔6🤨3👍2🔥1
Системный сдвиг pinned «Записал видео: https://www.youtube.com/watch?v=HkRAtRCXGbU»
Продолжаем эксперименты с ChatGPT. Если попросить её придумать истории, а потом список этих историй записать в виде CSV, а потом этот CSV загрузить в Postman, то можно все истории превратить в карточки на доске, например, Trello. (Впрочем, можно и без postman, а просто импортировать CSV одним из плагинов). Также, можно просить ChatGPT выдавать данные в виде таблицы в разметке markdown — она будет рисовать таблицу сразу в выдаче.
🔥18😱9👍1
Довольно часто поднимается тема собеседования системных аналитиков. Ну вот как понять, что человек соображает? Программисту можно прямо на собеседовании дать небольшую задачку, какой-нибудь fizz-buzz или сортировку, или ещё что-то бесполезное, что потом в работе никогда не встретится :) С аналитиками ещё хуже — ну что кандидату такое дать, чтобы быстро понять, как он думает? Не просить же написать ТЗ, это долго (можно дать такое тестовое заранее, если, конечно, человек готов делать тестовое. В результирующем документе нужно, в первую очередь, проверить — есть ли заголовок, дата составления и версия; а потом — есть ли структура и заголовки разделов. Ну, то есть, если человек не соблюдает базовую гигиену, это уже звоночек). Но вот чтобы прямо на собеседовании проверить — таких методов нанимающие обычно не знают. Отсюда разные приемы, когда просят порассуждать о понятиях: а что такое требование, а что такое модель, а как выглядит процесс сбора требований... Ну, это как нанимать жонглёра в цирк, и попросить его порассуждать о техниках жонглирования и биомеханике. Вам методист-теоретик нужен? Вы посмотреть не хотите на то, как он жонглирует?..
Я собеседовал не меньше сотни аналитиков на разных проектах, и вывел для себя отличное задание: вот вам текст (1-2 абзаца), оформите его, как таблицу. Это очень простое задание, его можно быстро сделать, и оно очень показательное — сразу многое понятно про кандидата. Удивительно, но многие люди в принципе не способны его выполнить! То есть, простая категоризация и структуризация текста не выходит. Можно и другие варианты вопросов задать: построить модель объектов предметной области, которую описывает этот текст. Или модель процесса. Выписать действующих лиц, их основные действия и результаты этих действий. Очень просто.
Сложность у меня обычно возникает с подбором заданий: чтобы и текст был коротким, и хватало материала для работы. Но вот в группе Анализ и проектирование ИТ-систем (не реклама!) Алексей Краснов сформулировал очень классный текст, который подходит по всем критериям: короткий и содержит много информации. Текст про процесс выработки требований к информационной безопасности, как раз на один абзац:
"Первым шагом надо определить перечень информации, конфиденциальность которой вы хотите (или вам надо) обеспечить. Затем надо построить контекстную диаграмму системы (DFD), затем отметить те элементы, где передаётся, хранится или обрабатывается информацию, конфиденциальность которой вы хотите обеспечить. Далее для каждого элемента контекстной диаграммы, где хранится, обрабатывается или передаётся конфиденциальная информация, необходимо рассмотреть все угрозы, относящиеся к раскрытию информации и за счёт каких уязвимостей. Затем вам необходимо описать требования для закрытия выявленных уязвимостей. Иногда до описания требований ко всем уязвимостям оценивают риски по каждой паре угроза-уязвимость. Для этого надо оценить простоту реализации уязвимости, степень влияния на бизнес, возможности предполагаемых нарушителей, их мотивация, и исходя из всего этого получите оценку риска по каждой угрозе и уязвимости."
Это текст отличный — в нём есть описание процесса, описание понятий и артефактов. Можно вполне оформлять это в таблицу, даже в несколько разных. Тут я, кстати, обычно не подсказываю сначала кандидату — пусть сам попробует понять, про что текст и что в нём можно подчеркнуть при помощи структурирования. Следующий шаг — составить таблицу, в которой есть пропуски, чтобы можно задать дополнительные вопросы. Это — идеальный результат работы, на самом деле. Аналитик на то и нужен, чтобы задавать вопросы и прояснять неясное.
👍12🔥41
Ну и вишенка на торте — я попробовал задать этот текст и эту задачу ChatGPT. Ожидаемо, она смогла. Возможно, не так хорошо, как я бы ожидал от идеального кандидата; с наводящими вопросами и подсказками, но лучше многих, честно скажем.
👍13😁1😢1
Про макетирование интерфейсов силами ChatGPT. Конечно, самый любимый способ оценки решения заказчиком — осмотр прототипа интерфейса :) Приемка методом осмотра, так сказать. "I know it when I see it", как говорят в американских судах :) В общем, лучше один раз увидеть. Проверить таким образом ничего невозможно, но простая эвристика "визуально мне это понравилось" заменяет сложную механику разработки и анализа сценариев использования и тестирования этих сценариев. В общем, было бы интересно этот процесс тоже отдать на откуп машинке. ChatGPT всячески отнекивается и отказывается рисовать — я, говорит, большая текстовая модель, а не какой-нибудь вам генератор картинок! Поэтому приходится просить описать экран в текстовом формате. Я попробовал SALT от PlantUML (ИИ его не знает, пришлось заодно объяснить ему синтаксис языка). Результат норм, но непонятно, как в расположить элементы друг за другом. Как будто выразительных средств SALT не хватает. С горя я попросил ИИ изобразить макет интерфейса в ASCII.
🔥12
Да, ASCII это вообще класс, практически FAR или там MC :) все воспоминания всколыхнулись )) Дальше я некоторое время был в ступоре, а потом подумал — зачем эти промежуточные шаги? Ведь HTML — это тоже язык разметки. Пусть пишет сразу на нём. И таки да, это получилось лучше всего! Причем можно попросить писать сразу на Bootstrap'е, например. (Все тексты и элементы управления ИИ придумал сам, я только написал, что это окно просмотра курса). Не нужны промежуточные этапы, надо сразу на целевом языке код генерировать! :)
🔥132👍1
Всех с наступившими праздниками! 🎄Позитивных сдвигов в новом году!
В качестве небольшого новогоднего подарка коллеги из школы Systems.Education подготовили подборку ссылок на материалы по интеграциям информационных систем, curated content :) Ссылок много, получилась целая wiki. Enjoy! 🎅
👍11
Мы с коллегами-добровольцами подготовили для вас
Базу ссылок на полезные материалы по системной интеграции
для аналитиков и проектировщиков.

В базе собраны ссылки на русскоязычные и англоязычные статьи, видео, книги, сервисы и курсы.

Что в неё сейчас вошло:

Основы интеграции информационных систем
- Постановка задачи и общий обзор
- Способы классификации интеграций

Форматы представления данных
- Форматы JSON и YAML
- Форматы XML и XSD

Сетевые протоколы и транспорт
- Протоколы HTTP, HTTPS
- Протокол WebSocket

Сценарии взаимодействия, Sequence, Plant UML

Web Serviсes / RPC
- Проектирование API
- REST-like сервисы. Стиль REST
- Протокол SOAP и форматы XML, XSD, WSDL
- Технология GraphQL
- Технология gRPC

Обмен сообщениями
- Паттерны обмена сообщениями
- Apache Kafka
- Брокер Rabbit MQ

Файловый обмен

Интеграция через общую БД

Архитектурные паттерны интеграции систем
- Интеграционные шины, Enterprise Service Bus (ESB)
- API Gateway, Backend For Frontend
- Оркестрация и хореография
- Circuit breaker

Дальше готовим другие подборки по темам:

- Базы данных и анализ данных
- Бизнес-анализ и моделирование
- Архитектура программного обеспечения и Systems Design
🔥28👍12
На курсе по микросервисной архитектуре встретил чеканную формулировку: микросервисная архитектура нужна для снижения lead time в крупных системах. Lead time — время прохождения через цепочку производства отдельной новой функции. Можно сказать, снижение Time-to-market отдельной фичи. И если после перехода на микросервисы — а на микросервисы почему-то всегда переходят, никто не начинает с микросервисов :)) — эта метрика должна упасть. Если растет, в не падает — значит, вы делаете что-то не так. Это очень простое объяснение, ценное для бизнеса.

Agile, кстати, обещает то же самое. Джефф Сазерленд вообще так и назвал свою книгу: как делать вдвое больше работы за половину времени. То есть, пообещал ускорение аж в 4 раза. Это название даже на русский испугались перевести. И всё, у всех теперь SCRUM :) Ну ещё бы, кто же не захочет ускорить работу программистов в 4 раза.

И я задумался: есть ли такое же объяснение для практики системного анализа? Какую одну главную метрику, очевидно ценную для бизнеса, улучшает системный анализ? TTM он как раз скорее снижает — ведь в процесс добавляются дополнительные действия. А вот что улучшает? Как системный анализ продать бизнесу?
🤔5👍1