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

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

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

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

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

Рассмотрим основные принципы составления ТЗ :

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

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

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

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

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

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

1) Общие сведения, назначение и цели доработки
Необходимо сформулировать цели доработки и для чего в конечном итоге она предназначается. Данный пункт должен быть уточнен глобальными целями .
2) Характеристика объектов автоматизации.
Нужно указать, что именно мы будем разрабатывать в терминах платформы «1С». Какие объекты метаднных будут добавлены к конфигурации, какие изменены и в какой части. Данный пункт Постановщик составляет совместно с Исполнителем по результатам работы с Заказчиком
3) Требования к системе.
Заказчик излагает свои требования в виде списка. Определяются критерии оценки эффективности выполнения требований.
4) Состав и содержание работ по созданию системы.
Исполнителем составляется план работ, который утверждается Заказчиком.
5) Порядок контроля и приемки системы.
Заказчик назначает ответственных специалистов по тестированию доработок, определяются порядок и сроки тестирования, согласовываются с Исполнителем.
6) Требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие.
Заказчик предоставляет требования по начальным корректировкам ИБ, осуществляемым через пакетный ввод данных.
7) Требования к документированию.
Постановщик и Исполнитель утверждают содержание документации по доработке.

Надеемся, что наши советы помогут в составлении ТЗ и решении Ваших задач.

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

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

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


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

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

Вводная

Зачем составлять техническое задание (ТЗ) на сайт?
Какую бы методику разработки вы не использовали, и какого бы размера ни был ваш сайт, вы в любом случае столкнетесь с вопросом: “А когда мы будем заканчивать работу, то как мы поймем, что мы ее действительно закончили?” В разработке как ПО, так и любого сайта частая проблема - никто не видит конечной точки. С одной стороны можно сказать, что конечным видением проекта должен обладать проектный менеджер. Но если конечный продукт совпадет с образом менеджера, но не совпадет с ожиданиями клиента? А если за время проекта меняется 3 менеджера?

Следствие закона Паркинсона “девяносто-девяносто”:
Первые 90% кода отнимают 90% времени разработки. Оставшиеся 10% кода отнимают вторые 90% времени разработки.
Из книги А.Купера “Психбольница вруках пациентов” .

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

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

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

Добавлю ограничения.
Всегда когда я говорю о написании ТЗ, то имею ввиду, конечно же, каскадную методику разработки. В случае других вариантов (например, экстремальное программирование) составляются другие документы и часто по другим принципам. Это - раз.

Стоит разделять ТЗ для малых и больших сайтов. Это - два. Различия маленьких и больших проектов заключаются не в объеме документа на выходе, а в процессе их разработки. Если у вас всего 4 человека в проектной группе, все давно знают друг друга, то можно предполагать отсутствие формализма. Если же разработкой занимаются несколько “отделов”, а проектная команда состоит из более 10-ка (до бесконечности) сотрудников, то управлять этой ордой может только процесс. Процесс рождает формализацию, а формализм накладывает свой отпечаток на формат документации.

По сути, толщина документов зависит от сложности процесса в больше степени, нежели от размеров проекта.

Мы будем следовать самому сложному пути.

ТЗ отвечает на вопросы

ТЗ изначально создается для нескольких участников разработки:

  1. Разработчики проекта (дизайнеры и программисты).
  2. Проект-менеджер.
  3. Клиент.
  4. Бюрократы (они могут не участвовать в проекте, но на них тоже надо рассчитывать).

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

Для кого создается сайт и для чего?

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

Как будут решены задачи заказчика и пользователей?

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

Как будет проходить создание проекта?

Как я уже писал выше, ТЗ (а может и отдельный документ) иногда описывает процесс разработки проекта. Это совершенно необходимо, если принять во внимание, что сайт может разрабатываться по отличной от принятой в компании методики разработки, которая как правило не описывается ни одним документом. Можно сколько угодно долго мучить себя мечтами о стандартизации по ISO , но что показать дотошному заказчику?
По ГОСТу предусмотрен отдельный раздел “Этапы разработки системы”. В таком разделе можно не слишком подробно описать процесс и установить майлстоуны.

Что будет приниматься на выходе?

ТЗ начинает разработку и ставит в ней точку.
В идеале вы должны пройтись по всем пунктам ТЗ вместе с заказчиком, свериться с полученной системой и спустя неделю сказать: “Уф-ф. Вроде все сделали”.
“ТЗ является средством верификации выполненных работ.” - такая фраза записана во введении многих моих ТЗ.

Что требуется для дальнейшего запуска проекта?

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

Из чего состоит ТЗ

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

Общая информация

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

Общая информация включает в себя:

  • Информацию о заказчике и исполнителе.
    Обязательно указание ответственных лиц с каждой стороны. Указываются документы, на основании которых производится разработка. Как правило, подобным документом является договор. Статус текущего документа и конфиденциальность.
  • Назначение проекта.
    Указывается: для чего будет использоваться полученный продукт.
  • Цели создания и задачи, которые должен решить ресурс.
    С одной стороны это довольно короткий раздел, но по важности проработки он занимает первое место. Если цели и задачи поставлены нечетко и неизмеримо, то может быть довольно сложно им следовать.
  • Описание аудитории проекта.
    Критично важная информация для разработки хороших и правильных сайтов. Ясно, что информацию об аудитории не только надо правильно собирать, но еще важнее это уметь этой информацией пользоваться.
    Описание аудитории должно содержать не только информацию, которую так любят маркетологи (демография, потребности, сегментирование и т.п.), но также информация, которая пригодится дизайнерам и проектировщикам: какие задачи решает пользователь, какие его цели в работе с сайтом, что его привлекает. Алан Купер рекомендует описывать аудиторию сайта не в виде безликой массы, а выделять персонажи - описывать собирательный образ конкретных людей.
  • Термины и определения .
    В большом документе вы сможете употребить огромное количество терминов и сленговых выражений, которые редко понимают специалисты по маркетингу или крупные руководители. Они могут читать этот документ, поэтому лучше предусмотреть для них список определений. Я не тешу себя надеждой, что этот список хоть раз в жизни был прочтен, но зато я могу всегда сослаться на него.

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

Эта информация собирается в рамки проекта.

Рамки проекта

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

Рамки проекта примерно то же самое. Прочитав эту главу каждый должен представлять, что будет получено в процессе разработки, но абсолютно не вдаваясь в детали. Вы пишите, что на сайте будет работать “регистрация пользователей”, но не пишите, как конкретно она будет устроена, или какие поля должен будет заполнить пользователь.

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

Рамки проекта пишутся в виде сценариев работы пользователей с сайтом и описывают общую функциональность и интеракции с интерфейсом.

Информационная архитектура и интерфейс

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

Для описания ИА потребуется описывать сверху вниз:

  1. Структуру сайта. Это так называемые высокоуровневые прототипы.
  2. Шаблоны страниц. Низкоуровневые прототипы, описывающие непосредственно интерфейс сайта.
  3. Опись контента. Табличное описание содержания каждой страницы сайта.
Структура сайта

Карта сайта выполняется графическим способом в одной из известных нотаций: Visio или Garrett . Я советую именно рисовать карту сайта, потому как в этом случае полученная структура получается наиболее наглядной и удобной в дальнейшем использовании. С одной стороны может показаться, что в виде списка написать карту сайта будет куда проще, но когда вы сами задумаетесь над связями различных областей сайта между собой, вы волей неволей начнете чиркать квадратики на бумаге.

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

Не забывайте присваивать номер каждой отдельной странице карты сайта. Это потребуется на этапе описания контента.

Полезные советы при рисовании карты сайта:

  • Не жалейте места. Старайтесь располагать блоки так, чтобы они были отделены друг от друга. Это поможет читабельности карты.
  • Не мельчите. Прочитать текст, напечатанный 4 кеглем, в принципе можно, но это уже причина для ненависти.
  • Выравнивайте “квадратики” страниц относительно друг друга, выстраивая в линии. Это улучшит восприятие уровней вложенности страниц.
  • Не пересекайте линии. Старайтесь избегать большого количества пересечений линий связей. Если они пересекаются, то должны “перескакивать” одна над другой. Кто занимался черчением функциональных схем в университете, меня поймет.
  • Подписывайте карту. Подпишите саму карту, а также отдельные блоки. Это позволит меньше путаться в дальнейшем.
  • Почаще сохраняйте файл. Банально, но надо просто помнить об этом. Не стоит лишний раз вспоминать родственников разработчиков программы Visio, в сущности, они ни в чем не виноваты.

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

Шаблоны страниц

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

Для упрощения выделяют ряд шаблонов интерфейса сайта, которые описываются вслед за картой сайта.

Описание шаблонов состоит из 3х частей:

  1. Перечень шаблонов. Выявляются основные типы страниц и описывается их использование.
  2. Типовой шаблон. Основные блоки. Описываются основные блоки страниц с целью уменьшить повторяемость информации.
  3. Описание каждого шаблона согласно перечня. Шаблоны отрисовываются в любом графическом пакете (Adobe Illustrator, Adobe InDesign, MS Visio и др.), а затем дополняются кратким описанием.

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

Описание контента

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

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

Хорошее описание контента залог спланированной работы на этапе запуска сайта и внесения информации.

Функционал

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

Хороший пример описания функционала дает ГОСТ. Рекомендую держаться стандарта при описании функционала разрабатываемого в рамках сайта программ. Должны быть описаны: общая система, общие функциональности подсистем и модулей, взаимосвязь подсистем и модулей между собой и, наконец, перечисление всех функций модулей с более или менее подробным описанием их работы. Для каждого модуля должны быть расписаны объекты, которые создаются или используются в работе программы.

Можно также описывать структуру базы данных, предварительные алгоритмы работы, но само по себе техническое задание этого не требует. По ГОСТу подобные подробности должны описывать в дальнейших документах: эскизный и технический проекты.

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

Требования

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

  • Технические требования к системе;
  • Требования к персоналу;
  • Требования к надежности;
  • Требования к эргономике и технической эстетике;
  • Требования к защите информации от НСД;
  • Требования по сохранности информации при авариях;
  • Требования к видам обеспечения;
  • Требования к программным средствам;
  • Требования к информационному обеспечению;
  • Требования к техническим средствам;

Может быть также ряд специфических требований.

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

Конечно, в небольших проектах нет необходимости прописывать все приведенные выше требования. Так, например, часто персонала в веб-сайте вообще нет, поэтому такие разделы пропускают.

Прочее

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

Что дальше?

ТЗ составлено, подписано и поступило в работу. Что дальше? Заканчивается ли работа с ним на этом этапе? Нет.

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

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

В сухом остатке

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

  • Общую информацию о документе и его составителях;
  • Цели и задачи сайта;
  • Описание пользователей сайта, их цели и задачи;
  • Рамки проекта;
  • Информационная архитектура (ИА) сайта: карта сайта, шаблоны, описание интерфейса;
  • Описание контента сайта;
  • Описание функционала сайта;
  • Описание процесса и майлстоунов, если требуется;
  • Перечень всевозможных требований при разработке сайта и верификации полученной работы.

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

Полезные ссылки

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

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

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

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

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

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

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

Требуется программист, чтобы добавить функцию 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