Техническое задание на разработку программного обеспечения
О технических заданиях, об их важности и о правильном составлении приходится слышать постоянно. Техническое задание на создание сайтов, техническое задание на дизайн-проекты, техническое задание на разработку программ, техническое задание на то, техническое задание на это… Так ли важно это самое, техническое задание, панибратски именуемое, ТЗ? А давайте разберемся!
Для примера выделим одно из самых распространенных направлений – составление технического задания на разработку программ. И, пожалуй, начнем постепенно отвечать на возникающие вопросы.
Зачем техническое задание?
Отвечая на вопрос: «зачем?» важно понимать, о чем в действительности идет речь. Как уже было обозначено выше, в качестве примера составления технического задания, была выбрана разработка программ. А это означает, что у предприятия, фирмы, организации возникли реально существующие, текущие задачи, которые можно и нужно решать эффективнее, чем это делается на данный момент. Другими словами, необходимо заменить человеческий труд, дорогостоящий и переменного качества, на эффективную, и гораздо менее затратную работу программного обеспечения.
Действительно, сотрудникам нужен отпуск, все они хотят вовремя получать заработную плату, периодически «ходят на больничные», и, как правило, не изъявляют желания работать в выходные дни. Разработка программ, напротив, не только не приносит обозначенных проблем, с завидной регулярностью сменяющих одна другую, но и наоборот, решает их!
А вот на решениях остановимся более подробно. Поскольку список текущих проблем, необходимых для устранения посредством программного обеспечения, уже сформирован, настало время подумать и о самом процессе решения. Собираемся, заседаем, спорим, выясняем, и в итоге, вот оно, более-менее общее мнение ответственных лиц, о том, чего же будет делать будущая программа. Вот так и зарождается, предпосылка к составлению технического задания на разработку программ, медленно, но верно.
Конечно, всё может обстоять и совсем иначе. Поручаем составление технического задания специалистам фирмы, предлагающей разработку программ. Пара-тройка встреч в деловой, но дружеской обстановке, готовые брифы, бланки, договора, формы. Всё заполнили, все довольны. По крайней мере, пока.
Хозяин, как говориться, барин, и всегда волен выбирать оптимальный вариант, и по цене, и по качеству. В идеале, конечно, чтобы и то, и другое соизмерялось, но всегда приходится идти на компромиссы. При слишком низкой цене, компромисс по разработке программ, естественно сдвигается в сторону резкого ухудшения качества программного обеспечения. Однако, как ни парадоксально, то же самое происходит и при неграмотном составлении технического задания на разработку программ. Деньги заплачены, продукт получен, работает, да не так.
Вот, собственно, ответ на вопрос, зачем нужно составлять грамотное техническое задание на разработку программ, очевиден. Идем дальше.
Для кого техническое задание?
Техническое задание на разработку программ составляется, прежде всего, для тех людей, которые буду осуществлять эту самую разработку. Соответственно, оно должно быть понятно тому человеку, который ничего не знает о клиенте, и уж тем более, о его задачах и проблемах. По крайней мере, не знает пока.
Следовательно, техническое задание на разработку программ должно рассказать исполнителю и о фирме, и о целях, и о задачах. При этом чем конкретнее будет рассказ, тем лучше – и для повествователя, то бишь Заказчика разработки программ, и для слушателя, то есть для исполнителя проекта.
В общем виде, техническое задание преследует несколько целей, и хотя об этом, возможно надо было сказать в самом начале, исправлять упущения не поздно никогда. И так, цели:
- Организация
- Информация
- Коммуникация
- Юрисдикция.
Организация должна быть направлена на сам процесс, иначе говоря, упорядочить творчество и созидание программы, или программного комплекса. Строго, структура технического задания на разработку программ должна быть четкой и в тоже время лаконичной. Поскольку читать 120-150, а то и более, страниц неудобоваримого технического текста, творческая личность программиста попросту не сможет. А значит, краткость – сестра таланта.
Информационная составляющая ТЗ должна быть полной, но сжатой.
И опять же простое правило, «необходимо и достаточно». Его, как водится, нужно придерживаться всегда и везде, но при составлении технического задания по разработке программ, это правило становится номер один. Грамотное техническое задание – первый и последний документ, который расскажет обо всех желаниях заказчика в удобной для понимания программиста форме. Хотите перевернуть жизнедеятельность Вашей фирмы или предприятия на принципиально новый уровень? Тогда, техническое задание на разработку программ – та самая точка опоры, с помощью которой мир перевернется в указанном Вами направлении. А этим, согласитесь, пренебрегать, ну никак нельзя.
С коммуникациями несколько сложнее. Почему? Да потому что коммуникации, да ещё и в процессе относительно творческом, сложны всегда. Особенно, если говорить на разных языках. А языков тут может быть несколько, более точно – по числу участников проекта под кодовым названием «разработка программ».
Проще говоря:
- Клиент, он же Заказчик
- Менеджер проекта
- Исполнители проекта, они или он: программист(ы)
- Другие возможные участники, имеющие мнение: как сделать, как сделать лучше, и чем всё должно закончиться.
Естественно, создавая общий проект, эти участники вынуждены искать язык, доступный для общего понимания каждым. Таким языком и призвано стать техническое задание на разработку программ. В идеале, главное – установить канал связи между первым и третьим звеном, и чем меньше помех при этом будет вносить второе и четвертое звенья, тем качественнее будет результат, а разработка программ принесет желаемый результат при минимальных нервопотерях.
Вот и добрались до юрисдикции, попутно затронув вопрос о «потере нервов». Благодаря техническому заданию, можно судить о соответствии результата разработки программ и заданных начальных условий. Надо сказать, что кратковременностью памяти, страдают как Заказчики проекта, так и псполнители. Первые забывают об оговоренной стоимости, количестве правок, возможностях внедрения и отладки, а вторые – в принципе о том, что и когда они должны были сделать. Дабы свести амнезию и её последствия к минимуму, необходимо опять же, четкое и конкретное ТЗ на разработку программ!
Как составлять техническое задание?
Убедившись о необходимости, и даже бесценности технического задания при разработке программ, можно продолжать разговор дальше. Теперь мы подошли к самому серьезному вопросу: как составлять ТЗ, чтобы оно было грамотным, четким, лаконичным, но конкретным?! А ведь другого нам и не надо.
Об этом позаботились ещё в стародавние времена СССР, разработав целую концепцию стандартов, называемых ГОСТами. Удивительно, но разработка программ, этими стандартами также предусмотрена, что согласитесь, не может не радовать.
Разработка программ и составление технического задания по этому направлению регламентируется ГОСТ 19.201-78 Единая система программной документации. Техническое задание. Требования к содержанию и оформлению.
Также не лишними будут ещё два руководства:
- ГОСТ 2.114-95 Единая система конструкторской документации. Технические условия;
- ГОСТ 34.602-89 информационная технология. Комплекс стандартов на автоматизированные системы. Техническое задание на создание автоматизированной системы. Эту троицу, несомненно, можно считать «святая святых» при разработке и составлении технического задания практически любой предметной области. Есть, конечно, и другие стандарты, руководствоваться которыми можно и нужно, но вспомним о «необходимом и достаточном».
Прочитать перечисленные документы – это личный долг каждого, мы же перейдем непосредственно к выводам.
Что мы имеем в итоге?
Ответ: общую структуру технического задания, в том числе и на разработку программ.
- Что нужно сделать в рамках проекта;
- Зачем это нужно, и для каких конкретно целей;
- Где будет использоваться результат проекта (читай, разработка программ), в какой сфере деятельности, и на каком уровне;
- Какие требования должна удовлетворять разработка программ;
- Что нужно сделать в процессе работы над проектом;
- Как будет оцениваться результат со стороны Заказчика;
- Какими документами устанавливается порядок взаимодействия по проекту;
- На чем основана инициация работы над проектом по разработке программ.
Более детально составить техническое задание на разработку программ поможет вторая часть указанного ГОСТа 19.201-78, предписывающая содержание разделов.
Отдельным пунктом нашей специфики – разработка программного обеспечения, хотелось бы выделить раздел требований к программному обеспечению. При составлении этого раздела, к вопросу нужно подходить формально. Иначе говоря, «открывать новое окно», «редактировать текущий файл посредством команд с пользовательских консолей», и «сохранять изменения при закрытии основного окна программы» — это четкий и формальный подход.
Также, разработка программ должна удовлетворять ряду требований, которые необходимо изложить в техническом задании. Вот список требований:
- к набору выполняемых программой функций;
- по организации входных и выходных данных;
- к быстродействию;
- к надежности функционирования;
- к длительности восстановления при отказах;
- по отказам в связи с некорректными действиями пользователя;
- к видам обслуживания;
- к числу и квалификации персонала, взаимодействующего с программой;
- к параметрам технических средств, на которых будет обеспечиваться нормальная работоспособность программы;
- к исходным языкам и кодам программирования, информационным структурам и сторонним программным средствам;
- по защите и информационной безопасности;
- к маркировке и упаковке;
- к условиям транспортировки и хранения.
Также список требований на разработку программ может быть изменен: дополнен или сокращен в зависимости от конкретных условий проекта.
Кто составляет техническое задание?
Пришла пора подводить итоги. Кто же должен взвалить на свои, наверняка, хрупкие плечи, столь тяжкий груз – составление технического задания на разработку программ. Естественно, менеджер проектов! именно этот человек непосильным трудом прокладывает дорогу к совместному счастью, гармонии и взаимопониманию Исполнителя и Заказчика.
Естественно, работа менеджера не менее творческая, чем того же программиста, и дабы избежать креативного хаоса и беспорядка, она также нуждается в четком оформлении. Расставим всё, что касается функций менеджера проектов при разработке, по своим местам:
- Постановка задачи проекта;
- Формирование и конкретизация требований к технической реализации;
- Формулировка требований к разрабатываемой программе;
- Согласование этапов, их длительности, и составление документации;
- Указание языков и кодов программирования;
- Составление, корректировка и утверждение у Заказчика технического задания.
Несмотря на кажущуюся простоту перечисленных функций, лишь небольшой процент менеджеров способен к их качественному выполнению. п чтобы не нашлось виноватых, необходимо техническое задание утверждать подписями представителей обоих сторон, обозначенных условиями Договора на разработку программ.
Ну а сторонам этим, необходимо руководствоваться ГОСТ 19.201-78, которому ни много, ни мало, а почти 30 лет.