Как грамотно составить ТЗ для программиста. Основы взаимопонимания. Пример технического задания Пример написания технического задания для программиста

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

ТЗ, как правило, прилагается к основному договору на работы по созданию web-ресурса, т. к. включает полный перечень всех работ для обязательного выполнения дабы исключить возможные споры между клиентом и исполнителем, которые как известно все-равно время от времени возникают.

Есть мнение некоторых “побитых” опытом людей, что ТЗ надо писать так, как будто с ним вы будете присутствовать на суде и использовать его в качестве защиты. Может это и крайность, но тем не менее - повод лишний раз задуматься о важности хорошо написанного и детализированного ТЗ .

По своему объему ТЗ может быть достаточно большим документом. Web-компании часто предлагают помощь по составлению ТЗ отдельной услугой, как правило 10-20% от стоимости всей разработки сайта.

Составление ТЗ как правило выполняют руководитель проекта или непосредственно программист при участии заказчика, который предоставляет основную информацию.

Чем детализированнее ТЗ (в разумных пределах конечно), тем лучше для обеих сторон — как для клиента, так и для исполнителя работы. В выигрыше так сказать оба:
— клиент будет уверен, что все задуманное им в проекте четко прописано и должно быть реализовано в соответствии с ТЗ.
— исполнитель – застрахован от множества мелких или крупных корректировок и доработок, опять же опираясь на то самое ТЗ.

Существует мнение, что без ТЗ можно обойтись. Например, один из доводов — задача слишком творческая, что бы уложить ее в рамки ТЗ. Такое мнение, скорее всего, скрывает нехватку опыта и профессионализма в данной области. Считаю такое мнение ошибочным, так как почти все в сайтостроении можно формализовать и представить в ТЗ и составить его – это скорее дело опыта.

  • Простая истина — чем сложнее проект, тем детализирование должно быть ТЗ.
  • Среди возможных вариантов можно назвать ТЗ, описывающее главные страницы интерфейса со всей совокупностью элементов на ней и описанием их поведения. Или же это может быть лаконичное описание нескольких страниц для сайта-визитки и т.п.
  • В ТЗ для программиста не должен упоминаться дизайн элементов или звучать пожелания по дизайну. Задание все-таки для программиста..
  • Описания задач в отдельных частях ТЗ должны быть граничными. Что это значит? Нужно четко обозначать конец конкретного пункта задания. В ТЗ не должно быть абстрактных фраз типа «должна быть удобная навигация». Это все субъективные признаки – одним удобно, другим не удобно и понять выполнен ли данный пункт бывает сложно из-за нечеткости положений ТЗ. Т. е. это необходимо контролировать.
  • Для несложных сайтов, где нужно описать какой-нибудь функциональный модуль, чтобы заново не изобретать велосипед, нужно проанализировать сайты с похожим функционалом, так сказать, провести анализ конкурентов; сохранить гиперссылки на страницы с требуемыми элементами интерфейса и функциями, и включить их в ТЗ с расширенными пояснениями о том, что именно делать. Также необходимо в обязательном порядке снять скриншоты с нужных страниц на случай, если сайт через время будет не доступен. При этом можно ставить свои пометки на изображениях (благо средств сейчас много для этого — Clip2net, Joxi, Awesome Screenshot и прочие).
  • Если дизайна для страниц нету или он не так важен в рамках какого-то проекта, скажем, заказчик решил сэкономить на дизайне админ-панели сайта, в этом случае программист вполне может использовать прототипы.

Справка

Прототип — это графическая схема размещения элементов интерфейса. Грубо говоря, нарисованная в специальной программе страница со всеми элементами.

Существует много софта для прорисовки прототипов, включая как декстопные приложения, так и онлайн-сервисы, а также расширения для браузеров с более скромными возможностями. Софт как с бесплатной лицензией так и с платной.

Из популярных можно выделить:
— среди бесплатных: iPlotz, MockFlow, Mockup Builder, Cacoo;
— среди платных: Creately, ProtoShare, Adobe Fireworks,Axure . Возможностей в общем много - выбирай, осваивай, рисуй…

Общая структура ТЗ. От абстракции к конкретике

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

  1. Общая информация о сайте.
  2. Функциональное назначение сайта.
  3. Понятия и термины
  4. Описание модулей сайта
  5. Функциональные характеристики
  6. Описание страниц.
  7. Резервирование и надежность.
  8. Хостинг для сайта.

1. Общая информация о сайте
Здесь достаточно несколько предложений для того что бы ввести в курс дела, что за сайт или модуль будет разрабатываться и его цель в общем. Пишется вольным стилем.

2. Функциональное назначение сайта
Тут краткий перечень того, какими техническими средствами или инструментами должен обладать сайт, исходя из общей цели. Поясню на примере. Для сайта-визитки это может быть банально, форма обратной связи, перечень основных страниц, например с «о компании», «контакты» и прочие.

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

4. Описание модулей сайта
Этот раздел включает список модулей, которые используются на сайте. Это вполне например может быть упоминаемая выше форма обратной связи (ФОС). Но, что очень важно — нельзя просто писать «Должна присутствовать ФОС». Каждая сущность требует определения своих атрибутов! В данном случае атрибуты могут быть такими:

  • Поле «Ваш имя»;
  • Поле «Ваш е-mail»;
  • Поле «Ваш вопрос»;
  • Поле ввода капчи для защиты от спам-роботов.

И все это должно быть четко прописано, что бы потом не возникло вопросов: «…а где перечень выбора категории вопроса? » или что-то в этом роде.

5. Функциональные характеристики
Сюда можно отнести, например, список браузеров, где сайт должен корректно отображаться и работать. Например, некоторые заказчики могут требовать, что бы их сайт работал корректно и в небезызвестном Internet Explorer 6, что бы не терять хоть и небольшую, но долю возможных посетителей.
Если планируется делать высоконагруженный сайт – это тоже нужно указывать. Высоконагруженный сайт требует другого подхода при разработке и по настройке сервера.

Также в функциональные характеристики входит наличие или отсутствие мобильной версии сайта, но это, как правило, либо уходит в отдельный раздел данного ТЗ либо вообще отдельно пишется.

6. Описание страниц сайта
Это довольно обширный пункт, где прорисовуются все страницы сайта и пишутся комментарии к их работе.
Также может приводиться общая структура страниц сайта. Так называемые «высокоуровневые» прототипы. Например, для простого сайта-каталога это может быть:

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

Остальные страницы

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

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

В конец ТЗ в обязательном порядке нужно внести информацию о том, что все работы, не описанные в настоящем ТЗ, выполняется по усмотрению программиста по очевидным причинам. Это наша «маленькая гарантия» от возможных доработок и переделок, выходящих за рамки ТЗ.

Выводы: Надо сказать, что такая структура разделов ТЗ не претендует на всю полноту (по крайней мере для больших стратегических проектов), но основные моменты все же охватывает.

Надо подчеркнуть, что всё вышеизложенное является только рекомендациями, основанными на опыте людей, работающих в сфере сайтостроения и никак не является жестким требованием, предъявляемым к написанию ТЗ.

Удачных Вам проектов и человеческого взаимопонимания!

Подписаться на рассылку

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

В правильное ТЗ должны входить следующие пункты:

  1. Сроки, все нюансы по смещению дедлайна.
  2. Формы и реквизиты оплаты.
  3. Возможные штрафы и информация о внесении правок после финального показа.
  4. Подробное описание функционала и его работы в вашем представлении.
  5. Техническая информация.
  6. Тестирование.
Первые 3 пункта – это золотой стандарт договоров с любым подрядчиком, мы же поговорим от 3 последних этапах ТЗ, актуальных именно в сфере IT- индустрии.

Подробное описание –> больше деталей –> лучшее понимание –> правильно реализованный проект.

Технические подробности

Немаловажен момент с описанием того, на чём будет работать новый модуль, который вы заказываете у программиста. В настоящее время предпочтение отдается готовым решениям, поэтому проблем интеграции в Битрикс, OpenCart, Wordpress или любую другую систему, обычно не возникает, так как исполнителю сообщают все данные конфигурации сборки.

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

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

Тестирование

Один из самых ответственных этапов, баги ведь никто не отменял. Чем лучше проведён данный этап, тем меньше проблем будет у вас и ваших пользователей (клиентов). Так же на этом этапе выявляются возможные уязвимости системы, которыми могут воспользоваться хакеры. Для крупных проектов нанимается отдельная команда тестировщиков, поскольку этот этап разработки является очень важным. В общем, готовый проект любого масштаба, требует проверки и перепроверки.

Подводя итог

Программирование – наука точная, и чем яснее изложена задача, тем легче её решить в рамках создания алгоритмов, поэтому от качества написанного вами технического задания, или составленного брифа, напрямую зависит качество конечного программного продукта.


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


Чем отличается Проект от Технического задания? Проект - это намерение разработать некий механизм автоматизации учёта или желание получать быстрые и точные отчёты от уже имеющийся системы. Начинается он с назначения руководителя проектом. Им может быть либо сотрудник фирмы заказчика, либо фирмы исполнителя; во втором случае, естественно, все услуги по ведению проекта войдут в его стоимость. Далее, в случае с "1С:Предприятием", выбирают и изучают типовую конфигурацию по вопросам её возможностей и необходимости в доработках. Только после соответствующего анализа руководитель проекта составляет доскональное и точное задание программистам на внесение изменений в конфигурацию. Это задание и называется Техническим заданием , составление которого рассматривается в данном разделе.



Есть ли смысл изменять конфигурацию? Этот вопрос требует серьёзного рассмотрения. Все конфигурации, работающие с бухгалтерской компонентой, в некоторой степени - правовые системы, т.е. кроме функций расчёта и хранения информации от них требуется соответствующее государственным законам ведение учета. Для этих программ фирмой "1С" ежемесячно выпускаются обновления, как форм отчётности, так и самих конфигураций. Но что получится, если Вы измените программу, а после установите обновление? Все Ваши изменения пропадут. Можно каждый раз восстанавливать их, но зачастую это практически то же, что делать работу заново. В данной ситуации самый лучший способ - выполнять все доработки во внешних модулях. Рассмотрим конфигурацию, доработка которой, по мнению пользователей, необходима - "Торговля и Склад".

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


Теперь перейдем к теме. У Вас возникла идея изменить программу или автоматизировать учёт. В своём воплощении любая идея проходит 4 стадии: Проектирование -> Реализация -> Проверка -> Анализ. В перспективных долгоживущих проектах после Анализа снова следует Проектирование, замыкая тем самым "круг"; такой цикл будет существовать на протяжении всего срока эксплуатации программы. Как показывает практика, для воплощения идеи необходимо 3-4 цикла, потом, через какое-то время, возникнет новая идея, но её реализация потребует меньших усилий. Что бы воплотить Ваш проект в жизнь при минимальных финансовых затратах, необходимо найти опытного исполнителя. Но, каким бы опытным не был программист, в первых двух циклах стадии: Проектирования, Проверки и Анализа желательно выполнять своими силами, при соответствующих консультациях исполнителя.


Очень важно не жалеть времени на изучение материала -типовой конфигурации. Писать программу с "нуля" не имеет смысла, так как приобретая "1С:Предприятие" Вы в любом случае в комплекте получите конфигурацию. Как показывает практика, именно на стадии Проектирования возникает до 80% ошибок, особенно при разработке нестандартных решений, из-за неправильно сформулированных требований. Опытному программисту не стоит большого труда воплотить практически любое задание в жизнь, но его работа - это Ваши деньги и время; следовательно, чем точнее и продуманнее задание, тем быстрее и дешевле реализация.

Рассмотрим основные принципы составление технического задания:

    Изучите имеющуюся у Вас программу. Если её нет, попросите исполнителя установить демо-версию. В любом случае, сначала необходимо ознакомится с тем, что вы имеете, чтобы дважды за это не платить. Заполните справочники, создайте несколько документов, проверьте работу отчётов. Если что-то не понятно, проконсультируйтесь у исполнителя. По возможности начните работу в программе и, по мере необходимости, небольшими заданиями её изменяйте. Самое главное: не относитесь к типовой конфигурации как к полуфабрикату - это готовый к использованию программный продукт, написанный большим коллективом разработчиков и отлаживавшийся годами. Не ознакомившись с программой и написав большое задание, Вы практически "выбрасываете деньги на ветер", создавая сложности исполнителю и себе. Вывод: хотите меньше потратить денег на доработку - изучайте программу.


    Ознакомьтесь с интерфейсом программы. В случае, если назначение какого-то элемента Вам не понятно - проконсультируйтесь у исполнителя. Очень часто при разработке технического задания пользователи, которые только начинают использовать "1С:Предприятие", просят убрать не нужные, с их точки зрения, поля, документы или справочники. Не спешите этого делать, так как с одной стороны убрать их, для программиста несколько часов работы, а вернуть их в будущем обратно раза в два больше, и это время Вам придётся оплатить. Что же касается настройки прав доступа и меню - это совсем несложно, здесь нет необходимости приглашать специалиста. Не забывайте только о том, что, если Вы отдали конфигурацию на доработку, подождите, пока её вернут, иначе придётся делать настройки заново. Вывод: старайтесь по минимуму изменять интерфейс, в плане удаления "ненужных" полей или усовершенствования, это дорогой и бесполезный процесс, а настройку прав и меню, проконсультировавшись со специалистом, сделайте своими силами.


    При составлении ПЕРВОГО технического задания помните о том, что это задание, а не весь проект и постарайтесь объяснить программисту, что от него требуется в результате. Снабдите его образцами форм, сделанными в Ms Excel, Ms Word или нарисованными от руки, но в точности такими, какие Вы хотите получить. Постарайтесь не использовать подобных объяснений: "интерфейс должен быть предельно понятным", "документы желательно распечатывать по какой-то форме", "по результатам нужно, чтобы строился какой-то отчёт" или "документы как-то должны попадать в 1С:Бухгалтерию". Если Вы попросите оценить подобное задание, то цена может быть 10-1000 у.е., точнее сказать трудно. Лучше сформулируйте так: "интерфейс документа похож на документ Реализация ТМЦ", "необходимо две печатные формы, образцы прилагаются", "по результатам необходим следующий отчёт, его форма в Excel-файле". Разрабатывать обмен данными между базами лучше после накопления некоторого опыта работы с ними и проведения основных доработок, связанных с изменением структуры программы. Подробнее о нем можно прочитать в разделе "Обмен информацией".
    Вывод: постарайтесь в первом задании как можно подробнее объяснить программисту, что от него требуется. В дальнейшем задания могут иметь более свободную форму, всё зависит от взаимопонимания с исполнителем.


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


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

"1С:Предприятие" пользуется огромной популярностью, и при серьёзном подходе к вопросу проектирования, результат оправдает Ваши ожидания. С помощью программирования возможно реализовать любые схемы учёта, но заказчику необходимо вполне определённо представлять результат, который он хочет получить. Надеемся, что наши советы помогут в решении Ваших задач.


Евгений Кучерявый

Бывает, что сайт уже готов , но нужно добавить на него какую-нибудь программу:

  • онлайн-калькулятор;
  • программу рассылки;
  • анализатор статистики;
  • парсер и так далее.

Или вы хотите создать какой-то уникальный сервис для пользователей.

В таких случая не всегда получается воспользоваться готовыми решениями и приходится нанимать программиста.

Составление вакансии и ТЗ для программиста

Чтобы оставить объявление о поиске программиста-фрилансера, нужно сузить круг поиска. Для этого пишется объявление такого вида:

Требуется программист, чтобы добавить функцию X на готовый сайт на WordPress.

Из объявления фрилансер понимает, что от него требуется и сможет ли он это сделать. Но из него не ясно, какие плагины или наработки уже используются, поэтому нельзя сразу выявить уязвимости.

Когда вы определитесь с выбором исполнителя и обговорите все важные моменты, можно отправлять ТЗ. В нем должно быть:

  1. Сроки, обговоренные с исполнителем, и ситуации, когда дедлайн можно подвинуть.
  2. Способ и вариант оплаты. Например, на банковскую карту после принятия заказа.
  3. Штрафы и правки.
  4. Подробное описание того, как вы видите результат работы.
  5. Техническая информация.
  6. Тестирование

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

Желаемый результат

Чтобы при принятии готовой программы не было разногласий, лучше подробно описать, что вы хотите получить.


Допустим, вам нужен сервис проверки орфографии. Опишите все ваши представления:

  • в какое поле пользователь может вставлять текст;
  • должен ли он проверяться в режиме реального времени;
  • как будут выделяться ошибки;
  • будут ли комментарии к ошибкам;
  • будет ли ограничение на объем или количество попыток.
  • какой объем текста можно проверить за один раз или за один день;
  • как пользователи будут оплачивать дополнительные попытки или объем;
  • какие бонусы будут получать пользователи;
  • нужно ли измерять грамотность текста в баллах;
  • нужно ли сохранять текст в базу данных и так далее.

Такая скрупулезность может показаться муторной или даже излишней, но она обезопасит и вас и программиста.

Техническая информация

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

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

Идентификация сетевых ресурсов является важным подготовительным этапом перед осуществлением взлома. Если хакер знает, что ваш корпоративный портал работает под управлением IIS 7 под управлением Windows Server 2008, то ему необходимо найти уязвимости, которым подвержены данные программные продукты. Для этого проще всего поискать в базах уязвимостей. В случае если найти ничего не удалось, то особо продвинутый взломщик может попытаться самостоятельно найти «лазейку», собрав у себя точную копию взламываемой системы и попытавшись самостоятельно проанализировать код. «Информационная безопасность: защита и нападение», Бирюков А. А.

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

Программа должна отображаться на странице page.php, а исполнительный файл в файле core.php. Взаимодействие между файлами с помощью ajax. Все обработанные данные нужно записывать в таблицу data_table (My_SQL) со столбцами id, name и url.

Нельзя создавать функции и переменные с названиями: generate, crop и analyze. Иначе возможен конфликт.

Стандарты оформления кода

Разные люди по-разному пишут. Хороший пример – наш блог. В нем несколько авторов, у каждого из которых свой стиль. То же самое и с программистами.

Я спросил Ольгу Безматерных , руководителя отдела продаж «Текстерры», что она думает по поводу работы с чужим кодом. Она ответила, что он замедляет выполнение задач, а один раз в ее практике был случай, когда работать с кодом было невозможно – пришлось вернуть деньги.

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

Допустим, нужен код, который будет проверять, равна ли переменная $a единице, и выводить об этом сообщение. Кроме того, что этот код можно по-разному оформить, его можно по-разному реализовать.


Переменные можно называть по-разному: $aB, $ab, $a_b, $A и так далее. Если это незначительно, добавлять комментарии критически важно. Без них в коде тяжело ориентироваться, даже если его писали вы, но отложили на неделю.

Поэтому, чтобы потом эту программу легко мог исправить любой другой программист, нужно чтобы у нее был какой-то стандартизированный вид. Доверить составление стандартов можно первому программисту, с которым вы работали.

Подключение и тестирование

Перед подключением программы лучше проверить код на наличие лазеек – предумышленных или нет. Если их нет, можно подключать. Дальше идет тестирование и открытие доступа для всех пользователей.

Заключение

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

kak-sostavit-tz-dlya-programmista

Похожие статьи