Разработку веб приложения или сайта, подобно строительству здания, для того чтобы приступить непосредственно к разработке продукта, нужно определить и составить ряд важных документов к проекту:
MindMap - это диаграмма связей, представляющая собой древовидную схему на которой для каждой роли приложения отображены главые модули и подмодули приложения.
MindMap помогает:
Эта карта необходима при составлении rough estimate проекта.
Проектные требования - это документ, в котором описаны все детали по работе приложения: цели, роли, функциональные и не функциональные требования. Это главный документ на проекте, который используется при разработке, по он всегда должен быть актуальным.
Прототип - документ, что показывает схемы страниц проекта (wireframes), собранные в структуру и частично или полностью имитирующие работу интерактивных элементов и серверной части.
Зачем разрабатывать прототип:
Дизайн - это документ, где содержится визуализация всех страниц приложения с указанием стилей и размеров всем графическим элементам. По этому важно, если клиент предоставляет компании уже готовый дизайн, а не заказывает дизайн вашей команды, проверять этот дизайн на завершенность и соответствие требованиям.
Все перечисленные документы должны быть размещены на корпоративных ресурсах с соответственными доступами к ним. Cейчас это размещение - корпоративный аккаунт на Google Drive папка ‘7. Project files -> current year -> relevant month -> folder for current project).
Кроме выше перечисленного, для каждого проекта, должен быть разработан документ Project Profile Page. В этом документе находятся:
Несколько основных правил:
ЯСНЫЕ ТРЕБОВАНИЯ - ОСНОВА УСПЕХА
Любой опытный архитектор может подтвердить: затея строить дом, без проектной документации - обречена на провал, так и в разработке.
ОПТИМАЛЬНЫЕ СПОСОБЫ РЕАЛИЗАЦИИ
Видя всю картину (логику, связанные модули, цели) легко принять решения о самых оптимальных способах реализации; порой не стоит тратить много ресурса на тот или иной модуль, а лучше направить больше внимания и бюджета на другой, ведь он важнее для бизнеса и не приоритетный для пользователя.
ОЧЕРТАНИЕ НАПРАВЛЕНИЙ РАЗВИТИЯ ПРОЕКТА
Важно понимать, что со временем будет добавляться в проект, чтоб предусмотреть изменения в его архитектуре, это сэкономит время на переделки кода в будущем.
УМЕНЬШЕНИЕ СТОИМОСТИ РАЗРАБОТКИ
Каждый специалист делает именно то, что требуется, не тратя время на эксперименты и правки.
ЛУЧШИЕ ИДЕИ РОЖДАЮТСЯ В СПОРАХ
Совместная работа команды при тестировании требований и составление Aceptance Criteria позволяет улучшить оригинальную идею.
НЕ НУЖНО ДЕРЖАТЬ ВСЁ В ГОЛОВЕ
Не нужно держать всю функциональность проекта в голове. Очень часто обсуждая что-либо устно или в переписках, решения забываются, а переписка теряется, по этому важно иметь актуальные требования в одном документе.
ПРАВИЛЬНЫЕ ПРИОРИТЕТЫ
Фиксирование на бумаге всей функциональности проекта - путь к правильной архитектуре и последовательности разработки.
ОЖИДАНИЯ ПОЛЬЗОВАТЕЛЕЙ
Техническая спецификация четко описывает, как функциональность приложения будет соответствовать ожиданиям пользователей и как они будут взаимодействовать с ним
ФИКСИРОВАНИЕ ЗАТРАТ НА РАЗРАБОТКУ
Проектные требования дают возможность оценить время на разработку каждого модуля определяя итоговый результат приложения (ни больше ни меньше).
СПОКОЙСТВИЕ И ГАРАНТИИ
Спецификация - это юридический документ, приложение к контракту, которая позволяет избегать каких-либо недопониманий между компанией и заказчиком.
Поскольку в основном в нашей компании сбор требований и разработка проходят параллельно, при сборе требования, важно следовать правильной последовательности. Нужно начинать собирать требования с тех же модулей, с которых будет начитаться user flow и двигаться с учетом связей разных модулей.
Рассмотрим простой пример системы:
Представим, что нам нужно разработать систему для ресторана. Описание бизнес-модели и рабочего процесса проекта:
И так у нас будет веб система для админ панели и мобильное приложения для юзера.
Пускай набор модулей для юзера и админа будет следующий:
Роль | Набор модулей |
---|---|
Admin |
|
User |
|
Вариант последовательности сбора требований (и разработки):
Смотрите примеры ниже.
Плохо (link to example doc)
Хорошо (link to example doc)
Подход к созданию и структура Проектных Требований в разных компаниях отличается и зависит от специфики и методологии разработки ПО, длительности проектов и типа проектов, команды разработки.
Название документа в разных компаниях тоже может быть разная: Техническое Задание (ТЗ), Спецификация (Software Requirements Specification, SRS), Terms of Reference (TOR), Требование к ПО, Проектные требования и др.. Но по сути это одно и тоже, в отдельных случаях может отличаться от полноты и детализации требований, появления дополнительных отдельных документов или их составляющих (графиков, таблиц и т. д.).
В нашей компании Проектные требования содержат несколько главных блоков:
Название должно иметь следующий формат:
{номер версии}{имя проекта} - Project Requirements
Мы работаем по гибкой методологии разработки, которая подразумевает также гибкость в сборе проектных требований - поэтапность сбора проектных требований и разработки часто приводят к необходимости внесения изменений в проектные требования; часто изменения запрашивает сам клиент.
Внесение изменений в проектные требования следует производить путем создания новой версии документа с внесенными изменениями.
Change log table - это таблица в которой фиксируются изменения к проектной документации.
Представьте, что вы завершили описание требований скажем модуля авторизации, и дали их команде тестировщиков или разработчиков. Со временем (либо в момент разработки модуля авторизации либо после окончания разработки) возникла необходимость внести какие-то изменения в требования данного модуля. Что происходит в этот момент: вся команда использовала версию, условно, 1.1 проектных требований (Aceptance Creteria, Test Cases, Use cases ссылаются на эту версию), вы внесли изменения в текущие проектные требования, не создав новый документ со следующей версией, и мы получили в итоге - команда разработала НЕ относительно требований. По этому в данном случае важно вносить изменения в новую версию документа.
Смотрите примеры ниже.
Хорошо:
Плохо:
Пример:
Выделение НЕ следует делать:
Этот блок должен содержать следующее данные:
Если есть вопросы по требованиям, которые еще не решены клиентом (например: подписки в приложении будут, но пока клиент не знает какие и как они будут работать), следует добавить отметку об этом.
# | Для мобильного приложения | Для веб системы |
---|---|---|
1 | Приложение должно поддерживать только вертикальный режим или горизонтальный тоже, или частично горизонтальный (например для видео и документов) | - |
2 | Сколько по времени должно приложение сохранять данные после перехода в фоновый режим? | - |
3 | После изменения тайм зоны (при перелетах в другие страны) приложение должно обновить тай зону после перезагрузки страницы или после повторного логина, юзера в систему? | - |
4 | - |
|
5 | Как должны выглядеть 404 и 403 страницы? | Тот же вопрос |
6 | Какое время сессии должно быть для авторизированного пользователя? (с выбранным чекбоксом “remember me” и без - если эта функциональность есть в проложении) | Тот же вопрос |
7 | Какое время должны оставаться активными ссылки в рассылках писем:
|
Тот же вопрос |
8 | Как спиннер должен отображаться в момент подгрузки контента?? | Тот же вопрос |
9 | Будет ли в приложении в каких-то модулях использоваться обновление данных в реальном времени? | Тот же вопрос |
10 | Будут ли в проложении использоваться push уведомления? | Тот же вопрос |
11 | Будут ли в проложении использоваться push уведомления? | Тот же вопрос |
12 | Как должны отображаться сообщения об успехе? | Тот же вопрос |
13 | Реакция системы после прерывания подключения к интернету? | Тот же вопрос |
14 | Кокой формат даты должен использоваться в системе? | Тот же вопрос |
В этом блоке описываются ответы на следующие вопросы:
Правило валидации для отдельного поля следует писать в каждом модуле,так как практика показывает, что таким образом допускается меньше ошибок и это есть более читабельным для команды.
Мы опишем правила описания требований по валидации для самых распространённых полей в этом модуле. Тут же рассмотрим самые частые ошибки.
Рассмотрим правила написания валидации на формах создания/редактирование для самых распространенных полей, стандартный перечень требований и частые ошибки.
Частая ошибка:
Для поля “цена” валидацию на граничные значения указывают в длине символов, а не в численном значении. Поле не полное.
(на примере формы ниже, элемент №6)
В следующем разделе мы рассмотрим самые часто встречаемые модули приложений, что разрабатывает компания, поговорим об часто допускаемых ошибках при оформлении проектной документации, и поговорим о том, как правильно описывать проектные требования для этих модулей.
Для каждого модуля, нужно писать общую информацию по модулю: для чего он предназначен, в каких модулях он будет использоваться, какие данные при открытии сразу будут заполнены (они будут приходить со стороннего АПИ или с предыдущего шага нашей системы или со связанного модуля), возможно, короткий сценарий пользователя по модулю и конечный результат.
Пример (для таблиц с данными)
Хорошо:
Сейчас все чаще используется практика регистрации с использованием социальных аккаунтов: Google, FaceBook, other.
Следующие правила будут полезны в целом при разработке требований регистрации, включая регистрацию с социальными аккаунтами.
1) Верификация email address после регистрации.
2) Connect accounts in Profile Settings.
Если юзер имеет несколько способов регистрации, то можно предложить клиенту функционал привязки доп аккаунтов, после авторизации в систему с выбранным социальным аккаунтом, для удобства пользования (так как практика показывает, что юзер не запоминает каким способом он регистрировался и, при дальнейшем логине в систему, могут возникнуть некоторые трудности).
3) Регистрация с социальными аккаунтами. Правило №1.
4) Регистрация с социальными аккаунтами. Правило №2.
5) Регистрация с социальными аккаунтами. Правило №3.
Если юзер пытается зарегистрироваться с помощью социального аккаунта, при этом этот email в системе уже ЕСТЬ (этот юзер ранее зарегистрировался с использованием другого социального аккаунта): привязываем 2 соц аккаунта к 1 email адресу и авторизуем юзера в систему.
6) Welcome letter.
Следует отправлять всегда юзеру после регистрации (единожды для одного email адреса). При этом в требованиях следует указывать шаблон для письма и следующие данные: отправитель, тема, описание, текст письма с дизайном если нужно.
7) Упущения при описании требований, что влекут за собой ошибки в приложении.
1) Валидация полей
Для авторизации, часто допускаемая ошибка - валидация для полей не будет такая же, как на регистрации, так как мы не создаем значение email и password в базу данных системы, а проверяем наличие этих значений в базе данных системы.
Не правильно
Email: validation = email (must contain @, .[domain name]. Max symbols - 100. Unique. Mandatory.
Password: Mandatory, min 8 characters, max 30 characters, must contain 1 uppercase, 1 lowercase letter, and 1 number.
Правильно
Email and Password: mandatory, email = type ‘email’, should be relevant values of existed user from data base.
2) Правила для логина с социальными аккаунтами
Если в системе используются логин/регистрация с социальными аккаунтами, то:
3) Время активности токена авторизированного пользователя
Для авторизации следует указывать время активности токена авторизированного пользователя в системе. Если используется чекбокс “remember me”, то мы указываем 2 значения (если чекбокс выбран, то время больше).
Какое время устанавливать зависит от приложения. Например, для банковских систем время должно быть очень малым, для систем не использующих важных конфиденциальных данных, время дольше, для админ панелей время, как правило, тоже короче.
Основные правила:
Таблица
Create модуль
Edit модуль
Например
При написании требований для действия удаления, нужно тщательно продумать всю логику, и то, что повлечет за собой это действие. Стандартный набор вопросов, которые нужно решить при написании требований:
Рассмотрим на примере
1) Ссылки на связанные модули при описании модуля.
Нужно добавлять номер раздела в требованиях со ссылкой на этот модуль.
Плохо:
Хорошо:
2) Реакция системы на связанные модули после определенных действий.
Например: изменения подписки админом, если она используется юзером
3) Описание модулей для разных юзер ролей.
Если эти роли используют 1 систему и всего лишь для некоторых ролей ограничен функционал, то следует описывать требования в одном разделе, при этом указав доступы для каждой юзер роли.
Если же для разных юзер ролей похожие модули будут на разных страницах, то и описывать в требованиях их нужно в разных разделах.
Критерии Приемки (Acceptance Criteria, далее АС) - набор проверок, приемочных тестов, которым должны соответствовать задачи Бэклога разрабатываемого Продукта, чтобы работа по ним считалась завершенной.
Есть несколько типов критериев приемки. Наиболее популярны ориентированные на правила (в виде списка) и сценарии (в виде сценариев, иллюстрирующих каждый критерий). В нашей компании мы используем первое.
В каждой компании подход к написанию АС разный, в зависимости от методологии разработки, разрабатываемых продуктов, подходам к разработке и т.д.
В компании Join.To.IT:
В целом в разных компаниях, критерии приемки пишет либо клиент, либо команда разработчиков. Как правило, критерии, написанные владельцем продукта (клиентом), проверяются членом команды разработчиков, чтобы убедиться, что критерии четко указаны и отсутствуют технические ограничения или несоответствия с точки зрения разработки. Такое решение - отличный способ, если владелец продукта имеет некоторый опыт в разработке программного обеспечения. Но все же лучше, если этой задачей занимается аналитик, менеджер проекта или специалист по обеспечению качества (QA), поскольку они знают стек технологий и реализуемость функций.
В нашей компании АС пишет QA отдел (если QA отдел работает на проекте). Либо, если специалиста по обеспечению качества нет на проекте, АС пишет либо менеджер проекта, либо команда разработки, либо клиент - это согласовывается индивидуально и зависит от бюджета проекта (для некоторых проектов АС вообще не составляют и пользуются только Проектными Требованиями).
АС пишутся на основании проектной документации. Именно по этому дополнительного подтверждения АС клиентом не требуется, так как Проектные требования уже подтверждены клиентом.
В нашей компании, при сборе проектных требований и написании АС, используются следующее этапы:
Как видим, перед тем как отдать задачу в разработку, должны быть пройдены все выше указанные этапы. Для того чтобы справится с этой задачей, нужно заранее планировать этапы разработки и подготавливать нужные задачи для передачи их в разработку.
Перед тем как приступить к написанию АС нужно:
Детализация АС зависит от разных факторов:
Какие-то требования нужно более детально покрыть АС, чтобы разработчики не упустили важного правила, а где-то наоборот - меньше, чтобы не ограничивать разработчиков каким именно методом сделать ту или иную реализацию.
Вот несколько общих правил, которые помогут вам решить проблемы с формулировкой критериев приемки.
Пример:
Плохо: Only authorized user will have access to this page.
Хорошо: Only authorized user should have access to this page.
Это правило применяется к большинству проектов разрабатываемых компанией. В ходе разработки, названия элементов могут измениться, по этому лучше не прописывать точные названия элементов, чтобы в АС не оказалось, в конечном итоге, не актуальных данных.
«Нет» означает «ни в коем случае», и поэтому времени не хватит для проверки соблюдения такого условия. Если вы переписываете требование без использования «not», оно будет более четким и, что самое главное, поддающимся проверке.
Пример:
Плохо: Данные на странице не должны обновляться в реальном времени.
Хорошо: Данные на странице должны обновляться после перезагрузки страницы.
Исключение:
В отдельных случаях можно использовать «нет» в AC, чтобы ввести например логическое возражение.
Пишите АС в правильной последовательности, аналогично этапам прохождения сценария пользователя. Это позволит сэкономить время при проверке АС и предоставит большее понимание работы модуля, нежели если АС будут в разброс.
Это поможет менеджеру или отдельному члену команды сосредоточиться на наиболее приоритетной проверкой и увидеть ее статус.
Ниже предоставлены примеры АС для наиболее распространённых модулей приложений. Предоставленные АС имеют высокий уровень детализации.