1. Предисловие
Я работаю системным аналитиком в ИТ-компании СберЗдоровье. В этой статье буду рассматривать вариант реорганизации документации для функционального и конструктивного описания системы. Остальные описания вне рамок текущей статьи.
Приложение: https://play.google.com/store/apps/details?id=com.docdoc.docdoc&hl=ru
2. Постановка задачи
Нам, как разработчикам, необходимо получать более полную информацию о системе за наименьшее количество времени. Для этого будем обращаться к описанию системы, которое будет выдавать информацию. Основные сценарии использования такого описания:
- Легкое получение информации о системе (в том числе о прошлых и будущих версиях). Конкретнее о типах информации:
- Сценарии использования системы (по доменам ролей из предметной области)
- Описание реализации сценариев использования
- Проекты/design
- Легкий поиск информации о системе (в том числе о прошлых и будущих версиях).
- Легкое изменение информации о системе (в том числе о прошлых и будущих версиях)
3. Сценарий использования системы
Систему используют две роли “Врач” и “Пациент”, с ними будет взаимодействовать система. Сценарии будут описаны через Use Case, например так:
Название: Передача показаний давления. Домен пациента.
- Система принимает показания давления от пациента
- Система запоминает показания давления
- Система показывает список последних показаний давления
Здесь не описывается внутреннее устройство системы. Система активна, а роли пассивны - можно наблюдать, что не пациент передает показатели давления в систему, а система принимает показатели давления.
Версионирование:
- Реализованные сценарии имеют “Дату релиза”
- Сценарии, которые вышли из эксплуатации имеют “Дата вывода из эксплуатации”
- Сценарии, которые еще не реализованы системой не имеют ни “Дату релиза”, ни “Дату вывода из эксплуатации”
- Сценарий можно связать с прошлой версией описания этого сценария (прошлая версия будет выведена из эксплуатации) и дополнительно указать комментариями изменения. При разработке прошлая версия будет отражать AS IS, а текущая версия будет отражать TO BE. Комментариями будут указаны изменения, работы, которые нужно будет сделать.
Внутри сценария указываются и “Желаемые характеристики системы”, которые можно измерить количественно, например так:
Желаемые характеристики системы (дополнение к сценариям использования):
- Система принимает 500 показаний давления от Пациентов за 1 минуту
- Система запоминает до 1000000 показаний давления за полгода
4. Описание реализации сценария
Каждый шаг из сценария детализируется до работы системы. Для нашего примера:
- Система принимает показания давления от пациента
- Mobile-UI показывает экран ввода показаний давления пациенту (тут ссылка на описание экрана)
- Mobile-UI принимает показание верхнего давления (w) и показание нижнего давления (e) в соответствующие поля
- У Mobile-UI пациентом нажимается кнопка “Сохранить”
- Система запоминает показания давления
- Mobile-UI отправляет POST /user/{userId}/observation с телом {“systolic”: (w), “diastolic”: (e)} на Backend-API (тут ссылка на описание API)
- Backend-API возвращает ответ в Mobile-UI
- Система показывает список всех измерений
- Mobile-UI отравляет GET /user/{userId}/observation на Backend-API (тут ссылка на описание API)
- Backend-API возвращает ответ в Mobile-UI
- Mobile-UI показывает экран показаний давления пациенту (тут ссылка на описание экрана)
Описание реализации сценария включается в сам сценарий использования, при проектировании реализации используется:
- C2 схема из C4 Model для описания межсервисного взаимодействия
Описание реализации сценариев использования системы имеет аналогичную логику по версионированию.
5. Проект
Проект/design системы описывает устройство системы, описываемые части системы используются в нескольких сценариях использования.
В предыдущем разделе уже были даны ссылки на некоторые проекты:
- UI-Frontend, описывается в figma на основании дизайн-системы
- Backend-API, описывается по спецификации OpenAPI, AsyncAPI
- Схема баз данных, описывается через dbdiagram.io
- …другие проекты…
Проекты имеют аналогичную логику по версионированию.