Как подготовить ТЗ на разработку программного обеспечения. Часть 2.
Введение
- На этой странице вы можете ознакомиться со вторым разделом "Требования к системе в целом"
- Раздел 1. Введение в оформление технического задания
- Раздел 3. Функциональные требования
Читайте статью постепенно или выберите сразу тот раздел, который больше всего вас интересует. Однако я советую читать всю статью последовательно. В статье много ценной информации и примеров. Я более чем уверен, что каждая часть статьи будет полезна для вас.
Краткое содержание 2 части
- В этом разделе нужно зафиксировать все нефункциональные требования. Давайте поделим раздел на следующие пункты:
- Требования к структуре и функционированию системы
- Показатели назначения
- Показатели надёжности
- Системные требования
- Требования к эргономике и технической эстетике
- Требования к транспортабельности для подвижных АС
- Требования к эксплуатации и техническому обслуживанию, ремонту и хранения компонентов системы
- Требования к защите информации от несанкционированного доступа
- Требования по сохранности информации при авариях
- Требования к защите от влияния внешних воздействий
- Требования к патентной чистоте
- Требования к стандартизации и унификации
- Дополнительные требования
- Требования к функциям и задачам системы
- Требования к видам обеспечения
Раздел Требования к системе в целом
В этом разделе нужно зафиксировать все нефункциональные требования. Давайте поделим раздел на следующие пункты:
- Требования к защите от влияния внешних воздействий
- Требования к патентной чистоте
- Требования к стандартизации и унификации
- Дополнительные требования
- Требования к функциям и задачам системы
- Требования к видам обеспечения
Требования к структуре и функционированию системы
В этом разделе опишите структуру (архитектуру) системы. Пишите абстрактно, не вдаваясь в детали, чтобы у исполнителя просто сложилось впечатление, что это за система, из чего она состоит, как модули связаны друг с другом.
Для разработчика важен этот подраздел, потому что такое описание открывает общий вид на систему и её компоненты. Это позволяет лучше оценить фронт предстоящих работ.
Показатели назначения
Ранее мы уже разобрали, что такое назначение. Давайте разберём это простыми словами на примере.
**Пример назначения. **Использование приложения людьми, которые хотят найти вторую половинку или друга, а может просто пообщаться и поиграть на досуге
Пример цели. Вы хотите создать приложение для знакомств, в котором объединить функции классического приложения знакомств с мини-играми и матчмейкингом. Т.е. пользователи смогут знакомиться с другими людьми во время игр.
Цель добавили просто для того, чтобы вы точно не перепутали эти определения. На неё можно не обращать внимание.
Чтобы достичь нашего назначения нам нужно:
- Создать систему регистрации / авторизации, верификации, заполнения профиля
- Создать систему поиска пары
- Разработать и внедрить игры в приложение.
- Разработать систему подбора игроков.
- Добавить функционал общения во время игры.
- Создать систему матчей (совпадение лайков профилей) в игре и вне игры.
- Создать чат
Готово! Теперь представьте, чтобы найти пару в любом нормальном приложении для знакомств у вас должна быть анкета, которая будет участвовать в поиске партнёра, матчах, подборе игр и в переписке.
Выполнив 1 пункт, мы можем создать анкету. Чтобы найти другого человека, а в дальнейшем играть и общаться с ним, нужно выполнить 2 пункт.
Последующая логика такая же. Каждый выполненный пункт — показатель того, насколько система соответствует назначению. Если система соответствует назначению — значит всё работает как надо.
Показатели надёжности
В этом разделе можно встретить следующие формулировки:
- приложение должно выдерживать одновременно более N тысяч пользователей, при этом не тормозить,
- приложение должно хранить данные пользователя в БД на отдельном сервере,
- если система по разным причинам перестала работать (что-то с хост-машиной, либо сбой в системе), то она должна перезапуститься автоматически в течение 10 минут
- система не должна быть нагружена более чем на 80 процентов, при превышении лимита нужно закрывать доступ новым пользователям, чтобы снизить нагрузку;
В общем, здесь рекомендую прописать, какие экстренные аварийные ситуации могут произойти и как система должна отреагировать.
Системные требования
Показатели надёжности и системные требования могут вас запутать. Давайте раз и навсегда разделим эти определения!
К показателям надёжности относится всё, что касается функционирования самого приложения в аварийных, нежелательных ситуациях, а к системным требованиям относится всё, что касается характеристик и способа обслуживания сервера или ПК, на котором будет установлено ваше ПО.
Системные требования охватывают вопросы:
- какие характеристики серверов или ПК должны быть,
- как они должны работать,
- как предотвращать перегрузки,
- как обслуживать эти сервера,
- какая ОС должна быть на сервере и т.д;
Требования к эргономике и технической эстетике
Замудренная формулировка, не правда ли? На самом деле здесь всё просто.
Этот раздел посвящен UX интерфейсу, т.е. как человек должен взаимодействовать с нашим ПО: какие кнопки, поля, ссылки, таблицы будут находиться на странице приложения, и, как они будут работать при взаимодействии пользователя с этими элементами.
На примере страницы регистрации, описание UX выглядит примерно так...
Для начала напишем какие элементы находятся на этой странице.
На странице регистрации будет три обязательных поля и чекбокс, а также две кнопки.
- Поле ввода логина
- Поле ввода емейла
- Поле для ввода пароля
- Чекбокс подтверждения обработки персональных данных.
- Кнопка Зарегистрироваться
- Кнопка Вернуться на главную
Теперь опишем расположение этих элементов...
Все эти поля и кнопки будут появляться в модальном окне. Поля расположены друг под другом (первым идет поле для ввода логина и тд). Чекбокс находится под полем ввода пароля. Кнопка зарегистрироваться центрирована в модальном окне по горизонтали, но находится ниже всех полей и чекбокса. Кнопка вернуться на главную находится в левом верхнем углу модального окна.
В дальнейшем UX описание понадобится дизайнеру для создании макета, а разработчикам для вёрстки.
Требования к транспортабельности для подвижных АС
В разделе указываете способы транспортировки оборудования.
Пример. Нужно разработать ПО для передвижных метеостанций. Тогда в разделе описываем, как метеостанции нужно перевозить, что их нельзя ронять, они должны быть упакованы в специальные чехлы, при какой температуре разрешены перевозки и так далее.
Требования к эксплуатации, техническому обслуживанию, ремонту и хранению компонентов системы
Этот раздел относится к серверам. Часто здесь дают ответы на следующие вопросы:
- кто будет обслуживать сервера,
- как часто их нужно обслуживать,
- каким образом это делать,
- как всё настроить и всё в таком духе;
Этот раздел будет важен для вас, если вы планируете размещать программное обеспечение на ваших серверах или ПК (допустим это десктоп приложение).
Требования к защите информации от несанкционированного доступа
Судя по нашему опыту работы с банками, (а работаем мы преимущественно с фин. организациями) именно они уделяют особое внимание этому разделу. Они наиболее детально описывают:
- кому предоставлены доступы,
- к каким разделам предоставлены доступы,
- кто может изменить все креды,
- как быть, если кто-то извне вошёл в систему,
- как заблокировать подозрительного пользователя,
- кто и при каких условиях может изменять параметры доступа,
- какие требования к аутентификации,
- как запретить вход в систему сторонним лицам, даже при наличии кредов;
Такие требования обусловлены внутренними регламентами и требованиями к безопасности.
Требования по сохранности информации при авариях
Представьте, что сервера, где хранилось ваше приложение — сгорели, при обновлении по неосторожности удалили базу данных или другие неполадки, из-за которых вы потеряете информацию. Как быть тогда? В большинстве случаев это будет катастрофа.
Чтобы такого не произошло пропишите сюда, куда при аварийных ситуациях сохранять информацию, когда и при каких ситуациях следует делать бэкапы. Бэкапы — это откат информации и состояния приложения до последнего стабильного.
Требования к защите от влияния внешних воздействий
Раздел касается серверов. Вы указываете, какими характеристиками должны обладать сервера, чтобы противостоять внешнему воздействию Внешнее воздействие — это процесс, явление или фактор природного или техногенного происхождения.
Например, чем должен обладать сервер, чтобы защититься от температурных влияний, влаги, механических повреждений и тд.
**Пример. **Чтобы защитить сервер от механических повреждений нужен прочный корпус. Чтобы защитить сервер от переохлаждения или перегрева нужен дополнительный контроль температуры с подогревом и охлаждением. Водонепроницаемый корпус нужен, чтобы защитить сервер от влаги и тд
Требования к патентной чистоте
Этот раздел носит юридический характер. Давайте кратко и для общего познания обговорим, что это такое.
Патентная чистота — это исключительные права на ваше приложение, которые еще называются “интеллектуальной собственностью”.
В зависимости от законодательства страны правила о патентном праве могут различаться.
Если вы собираетесь продвигать приложения в разных странах, вам нужно убедиться, что приложение (что касается его целей и назначения, а также использования технологий для его разработки) не противоречит этим правилам.
В случае отсутствия нарушений, вы в полном праве использовать приложение сколько угодно, без нарушения чужих прав (а значит сможете продавать его и тд)
**Пример. **У вас появилась идея сделать веб приложение, связанное с криптовалютой. По сути, это веб платформа, на которой владельцы биткоинов могут сдавать их в аренду, а банки арендовать. В дальнейшем банки могут обращаться с криптовалютой, как с активом.
Ваше веб приложение разработали в РФ, и здесь вы можете оформить патентную чистоту.
В результате продукт выстрелил... Отличный старт! Пора расти. Больше всего популярна криптовалюта за рубежом, поэтому будем продвигать своё приложение на иностранном рынке. Здесь то мы и встречаемся с проблемой.
Оказалось, что в этих странах уже запатентована система сдачи биткоинов в аренду. Вы никак не сможете иметь на приложение исключительные права, и в лучшем случае вам придётся платить процент за использование запатентованной идеи.
Именно юристы составляют требования для оформления патентной чистоты приложения. Если у вас Наполеоновские планы, не забудьте “потыкать” юриста, чтобы он добавил всю необходимую информацию в этот раздел.
Требования к стандартизации и унификации
Если в процессе работы для вас очень важно соблюдать ГОСТ или другие стандарты, тогда зафиксируйте их в этом разделе.
Приведу пару возможных формулировок:
- нужно реализовать систему безопасности в приложении по ГОСТу,
- разработка должна проводиться по методологии waterfall,
- корпоративная система должна быть построена по методологии ERP 2;
Дополнительные требования
В разделе фиксируется всё, что не касается предыдущих и следующих разделов.
Часто сюда прописывают следующие пункты:
- какой уровень владения ПК должен быть у пользователя, чтобы он комфортно мог использовать систему,
- список ролей в системе (сюда можете просто добавить список, а их описание будет в функциональных требованиях к продукту),
- требования к контурам — это техническая информация. Обычно контуры делятся на dev, prod, или dev, test, prod. Кому как удобно;
Требования к функциям и задачам системы
Мы всё ближе к функциональным требованиям! Потерпите ещё чуть-чуть.
В этот раздел заполните общую информацию о том, какие возможности в системе должны быть, но без подробностей.
Пример. В приложении должна быть система регистрации и авторизации, оформление и оплата заказов, функция добавления товаров в корзину, каталог товаров, управление списком товаров и тд.
Сюда же можете записать временные регламенты — когда должна отрабатывать какая-нибудь функция.
Пример. Ваше приложение — маркетплейс. Вам нужно, чтобы с 04:00 до 05:00 утра по МСК обновлялась цена по нижнему уровню стоимости каждого товара, взятая из других маркетплейсов.
Если ваше приложение выполняет множество расчетов, то для каждой функции пропишите алгоритм вычислений.
Если у вас есть пожелание к тому, как должна выглядеть информация в интерфейсе, тогда зафиксируйте логику вывода информации в этот раздел.
Пример. Вам нужно, чтобы расчитанная системой цифра округлялась в большую сторону и конвертировалась сразу во все курсы валют.
Требования к видам обеспечения
Совместный для заполнения исполнителем и заказчиком раздел. В нём фигурируют пункты:
- математическое обеспечение,
- информационное обеспечение,
- лингвистическое обеспечение,
- программное обеспечение системы,
- техническое обеспечение,
- требования к метрологическому обеспечению,
- организационное обеспечение,
- методическое обеспечение,
- требования к численности и квалификации персонал;
Математическое обеспечение системы — это математические модели и алгоритмы, которые исполнитель будет использовать. Здесь могут быть ранее не прописанные вами алгоритмы вычислений, к которым пришёл исполнитель в процессе изучения ТЗ. Это достаточно важный пункт, так как на основе прописанных здесь моделей будут производиться вычисления в системе.
Информационное обеспечение — это то, как информация передается внутри приложения: как работают компоненты между собой, как и в каком виде сохраняется информация внутри приложения, а также, как компоненты связаны с внешними сервисами.
Перечислю всё, что должен написать исполнитель:
- как организовано хранение данных (какую информацию будем сохранять в базу данных и в какие поля её записывать),
- как построена взаимосвязь между компонентами системы (например, после успешного оформления покупки, компонент, отвечающий за оплату, тыкает компонент корзины, что покупка совершена успешна и можно её очистить.),
- как компоненты приложения связаны с внешними сервисами и как они должны обмениваться информацией. Например, после успешной оплаты, отвечающий за это компонент передает информацию во внешний сервис, который занимается рассылкой SMS, чтобы тот в свою очередь выслал код подтверждения обратно в систему и пользователю для получения товара)
Лингвистическое обеспечение — это перечень всех технологий, которые будут использоваться: языки программирования (C#, TypeScript), базы данных (mongoDB, SQL Lite), библиотеки (React, Angular)
Программное обеспечение системы — здесь перечисляются те программы, которые нужны для работы продукта.
Например, для сайтов можно указать перечень браузеров, а для десктопных приложений — операционные системы.
Вот ещё один пример. Вам нужно шифровать данные, тогда укажите ПО, с помощью которого нужно это делать (например, Валидата).
Техническое обеспечение — это требования к серверу или ПК, на котором будет работать ПО
Например, технические характеристики серверов, если это веб-приложение, или технические характеристики компьютера, на котором будет работать десктопное приложение.
Требования к метрологическому обеспечению — пункт, касающийся аппаратной разработки. Здесь указываются те приборы, которыми можем проверить корректность работы ПО.
Пример. Вы автоматизировали шиномонтаж. Когда клиент подъезжает на автомобиле для замены резины, система сама определяет и накачивает шину до нужного атмосферного давления. Проверить корректность работы системы мы можем с помощью манометра, его и нужно указать в разделе.
**Организационное обеспечение **— пункт, в котором вы указываете, кто будет пользоваться приложением и какие права доступа будут у этих пользователей.
Пример. Для вашего отеля разработано мобильное приложение, с помощью которого посетители отеля могут заказывать еду в номер, планировать время уборки номера, наблюдать за растущим счётом за пребывание в отеле и др. Тогда посетитель отеля — пользователь, а персонал — администраторы и модераторы с разными правами доступа.
Для каждой группы пользователей нужно разбить роли и права доступа. Условно, если даже у уборщика и менеджера роль называется “администратор”, то админские права могут отличаться. Уборщик не может забронировать номер для клиента, а менеджер не может отметить, что в номере завершили уборку.
Методическое обеспечение — сюда входит техническая и пользовательская документация. По необходимости может быть создан документ “пользовательские сценарии”.
Техническая документация — это инструкция для разработчиков. В ней содержатся любые технические детали: описание API, комментирование кода, описание архитектуры.
Пользовательская документация (руководство пользователя) — это документ, в котором описано как пользователю начать работать с системой, и какие возможности приложения он может использовать.
Пользовательские сценарии — это описание действий пользователя. Т.е. описывается порядок действий пользователя.
Пример пользовательского сценария. Пользователь зашёл на сайт. На экране появляется модальное окно для входа или регистрации. По умолчанию пользователь в модальном окне видит вкладку с авторизацией Чтобы начать работу в системе, пользователю нужно войти или зарегистрироваться. В зависимости есть у него аккаунт или нет, он выбирает нужную вкладку и вводит свой Email и Пароль.).
Пользовательские сценарии, в отличие от пользовательской документации, нужны не для пользователя, а для разработчика.
Требования к численности и квалификации персонала. В разделе прописываются минимальные требования к умениям пользователя для работы в системе. Например:
- навык владения компьютером (допустим, десктоп приложение на Linux, а пользователь никогда не работал в этой ОС)
- умение работать с Excel (допустим, рекламная система умеет импортировать .csv формат для управления ставками в поисковой рекламной кампании. Для корректного импорта, нужно создать определенные поля с ключевыми словами, где для ключевого слова прописать специальную формулу с помощью которой система поймёт, какую ставку выставить. Пользователь может не знать, как оформлять документ так, чтобы система его поняла.),
- умение администрировать операционную систему (допустим, разработано сложное ПО, для перезапуска которого нужно использовать командную строку);
Если у вас предусмотрен регламент работы пользователей в системе, то зафиксируйте его здесь.
Пример. У вас банковское приложение и вам необходимо, чтобы перед выходом из системы сотрудник загрузил отчёт. Сотрудник по окончанию рабочего дня пытается выйти из системы, но получает оповещение о том, что выход из системы невозможен без загрузки ежедневного отчёта.
Продолжение
Постоянная ссылка