Пример ТЗ. Отчёт о доходе пиццерий

Опять попалось задание из вакансии вида "Системный аналитик". Выкладываю сюда свое решение.

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

Задание: Директор по развитию сети пиццерий хочет знать, какой доход имеет каждая пиццерия в сети и сколько зарабатывает вся сеть в целом. Составьте техническое задание на разработку отчёта

Решение:

        1. Первое, что приходит в голову - это пообщаться с директором по развитию, чтобы понять, что он действительно хочет. Зачем эту знать доход пиццерий? Как он хочет и может получать эту информацию? Когда он ее хочет получать, в каком виде? Что он будет делать в том или ином случае? Но HR ответила, что нужно исходить из собственных предположений. Ок! Поэтому считаю следующее:
          1. Директор по развитию живет по московскому времени.
          2. Он хочет видеть отчеты каждый день
          3. Форма отчетов не особенно волнует его. Устроит файл excell на почту.
          4. Ему также нужны сводный месячные и годовой отчет. 
            Если бы это была реальная задача, то тут бы у меня появился список вопросов и после интервью заметки с ответами на них. Очень ценная информация.
        2. Задумываюсь, а что же такое доход и совокупный заработок сети? Я не финансист и тонкостей этих терминов не знаю. Лезу в википедию, в требованиях ввожу раздел "Определения":

Определения

Термин Определение
Доход Полная сумма денежных средств, полученная пиццерией от продажи продукции за определенный период
Заработок сети Сумма доходов всех пиццерий в сети за определенный период
      1. Формулирую цель этого отчета:

        Предоставить возможность директору по развитию следить за изменением выручки отдельных пиццерий и сети в целом, чтобы можно было отмечать эффект (или отсутствие) от внедрения или изъятия услуг, товаров, открытия или закрытия новых пиццерий, улучшений в бизнес-процессах.

      2. Продолжаю размышлять. Пусть отчеты приходят ему каждый день к началу рабочего дня. Для этого, скажем, пусть отчет начинает формироваться в 03:00МСК каждый день.
        А еще хочется не просто отправлять отчеты на почту директору, но еще их где-то хранить. Во-первых, в случае чего, поднять историю отчетов по письмам очень трудно и не гарантировано, что письма не будут удалены. Во-вторых, история отчетов может понадобиться кому-то еще. Решаю, что пусть они будут храниться в общей папке.

Система должна каждый день в 03:00MSK стартовать процесс по формированию  и выкладыванию файла с отчетом в общую папку: \\tada\reports\revenue\%YEAR%\%Month%, где

- %YEAR% - текущий год в формате YYYY. Пример: 2016

- %Month% - текущий месяц в формате MM. Пример: 09

Обращу внимание, именно стартовать - потому что процесс длится какое-то время, отчет формируется не мгновенно

  1. Затем стандартная мысль "А что, если папки нет"?

    Если такой папки нет, система должна ее создавать.

  1. И, конечно же, надо по почте оповестить о выкладке отчета:

    Система должна оповещать по почте о факте выкладки отчета на почтовый адрес: razv.director@tadapizza.com. К тексту письма требований не предъявляется.

  2. Потом задумываюсь: "А сами-то данные как попадут в отчет? И как вообще должны суммироваться данные?". Хм. Что ж, пусть в компании уже будет база, где лежат данные об отдельных продажах. Получаю следующее требование:
  1. Данные для отчета система должна брать из базы SOMEBASEABOUTALL
  2. Система считает доход как сумму всех продаж, занесенных в базу SOMEBASEABOUTALL по пиццерии за указанный период.
  1. Тут вспоминаю про ежемесячный и ежегодный отчет. Полагаю, что для них лучше создать отдельные поддиректории в общей папке. "Какого числа их лучше формировать?" Пусть будет 2-ое, чтобы когда в Москве наступит 03:00 второго числа, отчетный месяц и год гарантированно закончился во всех часовых поясах. Ведь у нас же крупная сеть, пиццерии есть в разных странах. Требования вижу так:
  1. Каждое 2 число месяца система должна дополнительно формировать сводный отчет за предыдущий календарный месяц. \\tada\reports\revenue\%YEAR%\Monthly
  2. Каждое 2ое число нового года система должна дополнительно формировать сводный отчет за предыдущий календарный год. В качестве периода в этом случае берется. Отчет кладется в папку \\tada\reports\revenue\%YEAR%
        1. Так-с, а что же это я не подумал, как должна вести себя система в случае сбоев! Если бы писал сценарии использования, то это называлось бы альтернативными потоками. Решил описать, что делать, если отчет не удается выложить - это всякие сбои прав доступа, недоступность сетевого ресурса.
          В случае ошибки выкладки отчета система должна повторить еще 2 раза. Если все попытки окончились неуспехом, сформировать письмо на Itsupport@tadapizza.com. К тексту письма требований не предъявляется.
      1. А еще решил явно обозначить, что в отчет попадут только те пиццерии, данные по которым есть за период. Чтобы не было ненужных ожиданий :)Система размещает в отчете только те пиццерии, по которым в базе SOMEBASEABOUTALL есть информация за период
      2. Этим закончил свои мысли над функциональными требованиями. И перешел к нефункциональным. Хотя тут, конечно же, рафинированный ход мыслей. На самом деле, все довольно неупорядоченно и мысль постоянно скачет из раздела в раздел - вспомнил нефункциональное требование, прописал его, пришло в голову упущенное функциональное требование, его прописал, дальше пришел в голову термин - и т.д.
      3. Чётко описываю период вычисления для каждого отчета. Считаю, что тут лучше всего подходит табличка:
        Период Отчет
        с 03:00MSK вчерашнего дня по 02:59MSK сегодняшнего дня Для ежедневного отчета
        с 03:00MSK первого числа месяца по 02:59MSK первого числа следующего месяца Для ежемесячного отчета
        с 03:00MSK первого числа года по 02:59MSK первого числа следующего года Для ежегодного отчета
    1. Формально описываю поля самого отчета. Для себя набрасываю их в эксельке. В итогом документе увидете скриншот. Хотя сделан он крайне небрежно, но хоть какая-то наглядность есть. В реальной задаче советую посвятить прототипу гораздо больше времени. Причем, данные должны быть адекватны реальности - адреса точные, порядок сумм как в жизни и т.п.:

      Формат отчета

          1. Заголовок с указанием типа (за день, за месяц, за год)
          2. Должна быть строка началом и окончанием периода (дата+время), за которое формируется отчет.
          3. Далее следует таблица со столбцами
      Поле Описание
      Пиццерия Название пиццерии. Берется из базы SOMEBASEABOUTALL
      Адрес Название пиццерии. Берется из базы SOMEBASEABOUTALL
      Франшиза Факт франшизы. Берется из из базы SOMEBASEABOUTALL
      Доход Сумма всех значений продаж, взятых из базы SOMEBASEABOUTALL за период. Формат xxxx,xx
          1. В конце должна быть строка «Итого», суммирующая все значения доходов для пиццерий в отчете
    2. Формально описываю требования к названию и типу файла:

Формат файла

        1. Файл должен был формата .xls
        2. Название файла
    YYYY-MM-DD_daylyrevenuereport.xls Для ежедневного отчета
    YYYY-MM_monthlyrevenuereport.xls Для ежемесячного отчета
    YYYY_yearrevenuereport.xls Для ежегодного отчета
    1. Вспоминаю про характеристики качества. Вписываю их:

Характеристики качества

  1. Максимальное суммарное время недоступности системы – 2 суток в году
  2. Каждый отдельный эпизод недоступности должен быть устранен не более чем за 1 сутки. Все пропущенные отчеты должны быть сформированы.
  3. Максимальное время формирования одного отчета – 4 ч.
  1. На этом моменте считаю работу сделанной. Однако внимательный читатель наверняка воскликнет "А как же данные в разных валютах!?". Да, действительно, чуть не упустил главный момент. Раз у нас сеть по всему миру, то (хотя база данных и одна, как я предположил), доход указывается у всех разный. С этим вопросом возвращаемся к директору по развитию (мысленно) и получаем от него такой ответ (то есть дополняем предположения):

Пересчет в доллары идет по текущему курсу и тем самым сумма отчетом за каждый день может отличаться от суммы в отчете за месяц и год (из-за изменения курсов).

Возвращаюсь к требованиям о данных в отчете и дописываю:

Доход Сумма всех значений продаж, взятых из базы SOMEBASEABOUTALL за период. В долларах США по текущему курсу. Курс берется из таблице CURTABLE перед началом формирования отчета.
Формат xxxx,xx

Попутно предполагая, что где-то в компании есть табличка с актуальными курсами валют CURTABLE.

  1. Вот на этом успокаиваюсь и отправляю результат на проверку. Буду рад любым комментариям с конструктивной критикой. В конце прикладываю итоговый файл
    ТЗ revreport.pdf

Вам также может понравиться

About the Author: admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Яндекс.Метрика