В связи с поступающими обращениями по вопросам применения положений пункта 1.15 статьи 284 и подпункта 3 пункта 1 статьи 427 Налогового кодекса Российской Федерации Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации в рамках полномочий, определенных Положением о Министерстве цифрового развития, связи и массовых коммуникаций Российской Федерации, утвержденным постановлением Правительства Российской Федерации от 2 июня 2008 г. N 418 (далее соответственно - Положение, Министерство), направляет настоящие разъяснения в части толкования отдельных понятий в сфере информационных технологий для их использования государственными органами, органами местного самоуправления, юридическими и физическими лицами.
При применении понятий "разработка", "адаптация", "модификация", "установка", "тестирование", "сопровождение", "программа для электронных вычислительных машин (далее - "ЭВМ"), база данных, (программное средство и информационный продукт вычислительной техники)" следует руководствоваться действующими законами, подзаконными актами, техническими регламентами, утвержденными федеральными органами государственной власти документами по стандартизации (национальными стандартами, предварительными национальными стандартами, сводами правил, рекомендациями по стандартизации, техническими спецификациями (отчетами), общероссийскими классификаторами технико-экономической и социальной информации), а также международными стандартами.
При отсутствии применимых в конкретном случае актов государственных органов допустимо руководствоваться смыслом, обычно придаваемым указанным понятиям при осуществлении деятельности в сфере информационных технологий, и закрепленным в общедоступных словарях, справочниках, энциклопедиях и т.п.
1. По вопросам разъяснения термина "разработка" применительно к программам для ЭВМ и базам данных (программным средствам и информационным продуктам вычислительной техники)
В соответствии со статьей 1261 и абзацем 2 пункта 2 статьи 1260 Гражданского кодекса Российской Федерации под программой для ЭВМ понимается представленная в объективной форме совокупность данных и команд, предназначенных для функционирования ЭВМ и других компьютерных устройств в целях получения определенного результата, включая подготовительные материалы, полученные в ходе разработки программы для ЭВМ, и порождаемые ею аудиовизуальные отображения; под базой данных - представленная в объективной форме совокупность самостоятельных материалов (статей, расчетов, нормативных актов, судебных решений и иных подобных материалов), систематизированных таким образом, чтобы эти материалы могли быть найдены и обработаны с помощью ЭВМ.
Государственными и национальными стандартами Российской Федерации введены и разъясняются определения, являющиеся аналогами термина "программа для ЭВМ", в частности, "программное средство".
Согласно ГОСТ 28806-90 "Качество программных средств. Термины и определения" (утвержден и введен в действие Постановлением Госстандарта СССР от 25 декабря 1990 г. N 3278) (далее - "ГОСТ 28806-90") программное средство - объект, состоящий из программ, процедур, правил, а также, если предусмотрено, сопутствующих им документации и данных, относящихся к функционированию системы обработки информации. ГОСТ Р 51904-2002 "Программное обеспечение встроенных систем. Общие требования к разработке и документированию" (утвержден и введен в действие постановлением Госстандарта России от 25 июня 2002 г. N 247-ст) (далее - "ГОСТ Р 51904-2002") выделяет термин программное средство, которое определяется как программное обеспечение и связанные с ним документы, вновь созданные, модифицированные или сгруппированные для удовлетворения требованиям контракта, а программное обеспечение - совокупность компьютерных программ и программных документов, необходимых для эксплуатации этих программ. В соответствии с ГОСТ Р 51904-2002 под разработкой программного обеспечения (далее - "ПО") понимается набор действий, результатом выполнения которых являются программные средства. При этом разработка ПО включает в себя следующие процессы (далее - "Процессы разработки"):
- определение требований к ПО;
- проектирование ПО;
- кодирование ПО;
- интеграция ПО.
Определение требований к ПО
В рамках процесса определения требований к ПО разработчик определяет требования к ПО, которые будут выполнены каждым элементом конфигурации ПО (далее - "ЭКПО"), методы, которые нужно использовать для того, чтобы каждое требование было выполнено, и следит за соответствием между требованиями к ЭКПО и системными требованиями. Результат этих работ может быть включен в документ "Спецификация требований к ПО" либо в иной документ. Требования относительно интерфейсов ЭКПО могут быть включены либо в спецификацию требований к ПО, либо в спецификацию требований к интерфейсу, либо в иной документ.
Процесс определения требований к ПО обеспечивает следующее:
- анализ функциональных системных требований и требований к интерфейсам, которые предназначены для программной реализации, на отсутствие противоречий, несоответствий и неопределенностей;
- регистрацию для последующего уточнения или исправления и передачи в качестве входной информации обратной связи к исходным процессам тех входных данных процесса определения требований к ПО, которые оказались неадекватными или некорректными;
- спецификацию в документе требований верхнего уровня каждого системного требования, которое предназначено для программной реализации;
- определение всех требований верхнего уровня, соответствующих системным требованиям, которые связаны с предотвращением риска;
- верифицируемость, непротиворечивость и соответствие требований верхнего уровня стандартам на разработку требований к ПО;
- установление требований верхнего уровня в количественных показателях с погрешностями в тех случаях, когда это необходимо;
- требования верхнего уровня не должны описывать детали проектирования или верификации, исключая определения и обоснования ограничений проектирования;
- трассируемость каждого системного требования, которое предназначено для программной реализации, к одному или нескольким требованиям верхнего уровня для ПО;
- трассируемость каждого требования верхнего уровня, кроме производных требований к одному или нескольким системным требованиям;
- оценку производных требований верхнего уровня с точки зрения безопасности системы.
Проектирование ПО
В рамках процесса проектирования ПО требования верхнего уровня к ПО уточняют в процессе проектирования ПО одной или несколькими итерациями, чтобы разработать архитектуру ПО и требования нижнего уровня, которые могут быть непосредственно использованы для получения исходного кода.
В рамках указанного процесса разработчик определяет проектные решения уровня ЭКПО. Результаты могут быть включены в раздел проектных решений уровня ЭКПО документов проектирования ПО или в иной документ.
Разработчик разрабатывает проект архитектуры ПО (идентифицирует модули ПО, входящие в ЭКПО, их интерфейсы и концепцию их совместного выполнения) и проверяет соответствие между модулями ПО и требованиями к ЭКПО. Результат этих работ может быть включен в разделы документа "Описание проекта ПО", посвященные архитектуре ПО и прослеживанию соответствия, либо в иной документ.
Кодирование ПО
В рамках процесса кодирования ПО разрабатывается исходный код ПО, соответствующий каждому модулю ПО в проекте ЭКПО. Реализация ПО может включать в себя, если это применимо, кодирование машинных команд и определение данных, создание базы данных, заполнение базы данных и других файлов данных значениями данных, а также другие работы, необходимые для реализации проекта.
При этом процесс кодирования ПО является завершенным, когда реализованы все его цели и цели интегральных процессов, связанных с ним, а именно:
- исходный код должен реализовывать требования нижнего уровня и соответствовать архитектуре ПО;
- исходный код должен соответствовать стандартам кодирования ПО;
- исходный код должен быть трассируемым к описанию проекта;
- для неадекватных или некорректных входных данных, обнаруженных при выполнении процесса кодирования ПО, необходимо обеспечить обратную связь с процессами определения требований к ПО, проектирования ПО или планирования ПО для исследования или исправления.
Интеграция ПО
В рамках процесса интеграции ПО с объектной программно-аппаратной средой исходный код и объектный код, полученные в процессе кодирования ПО, используются при редактировании связей и загрузке с целью создать интегрированную систему.
Процесс интеграции является завершенным, когда удовлетворены его цели и цели интегральных процессов, связанных с ним, а именно:
- исполняемый объектный код должен быть генерирован на основе исходного кода и информации о редактировании связей и загрузке;
- ПО должно быть загружено в объектную программно-аппаратную среду для интеграции программно-аппаратных средств и ПО;
- для неадекватных или некорректных входных данных, обнаруженных в процессе интеграции, необходимо обеспечить обратную связь с процессами определения требований к ПО, проектирования ПО, кодирования ПО или планирования ПО для исследования или исправления.
При этом перечень и содержание Процессов разработки, предусмотренных ГОСТ Р 51904-2002, не является исчерпывающим и общеобязательным. Деятельность организации должна считаться деятельностью по разработке программы для ЭВМ или базы данных в том числе в случаях, если она выполняет работы (оказывает услуги) (как собственными силами, так и третьими лицами, привлеченными по договорам подряда либо иным гражданско-правовым договорам), не поименованные в данном ГОСТе или иной нормативно-технической документации, но их реализация:
направлена на достижение результата в виде любой программы для ЭВМ, базы данных (включая работы (услуги) в области машинного обучения и больших данных, высоконагруженных систем и оптимизации, облачных технологий, прикладных исследований, мобильной и веб-разработки и инфраструктуры, инженерной инфраструктуры и эксплуатации, продуктовой разработки, включая проектирование и продуктовый дизайн, аналитику, локализацию и тестирование программ для ЭВМ, баз данных); и (или)
предусматривает выполнение полностью или частично одного или нескольких Процессов разработки программы для ЭВМ, базы данных или отдельных их компонентов и не приводит к созданию окончательной версии программы для ЭВМ либо базы данных (например, тестирование в процессе кодирования или интеграции ПО, создание необходимой для эксплуатации ПО документации и т.п.).
Работы (услуги) по созданию, автоматизации, доработке, развитию, кастомизации (включая локализацию) и иные работы (услуги), если их выполнение направлено на достижение результата в виде законченного произведения (программы для ЭВМ, базы данных), считаются разновидностями разработки, если их содержание соответствует работам (услугам), указанным в настоящем пункте Процессам разработки.
2. По вопросам разъяснения термина "установка" применительно к программам для ЭВМ, базам данных (программным средствам и информационным продуктам вычислительной техники)
В действующем законодательстве Российской Федерации отсутствует определение термина "установка", в связи с чем для понимания его содержания может использоваться толкование слова "установка" в соответствии со словарями русского языка:
- установленный, смонтированный где-нибудь механизм, приспособление или система механизмов, приспособлений;
- действие по установке, где действие по установке - "поставить, поместить где-л. механизм, приспособление и т.п., налаживая, подключая к чему-л., подготавливая к использованию".
Аналогом слова "установка" является слово "инсталляция" (от англ. installation - установка, монтаж), широко применяемое в сфере информационных технологий для описания установки программных продуктов.
В соответствии с государственным стандартом ГОСТ Р ИСО/МЭК 12207-2010 "Национальный стандарт Российской Федерации. Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств" (утвержден и введен в действие Приказом Росстандарта от 30 ноября 2010 г. N 631-ст) (далее - "ГОСТ Р ИСО/МЭК 12207-2010") задачей инсталляции является гарантия готовности программного продукта к применению в предназначенной для него среде. Согласно ГОСТ Р ИСО/МЭК 12207-2010 под программным продуктом понимается совокупность компьютерных программ, процедур и, возможно, связанных с ними документации и данных.
Одним из результатов выполнения работ (оказания услуг) по договору, связанному с установкой (инсталляцией) программного продукта, является реализация заказчиком правомочия на воспроизведение такого программного продукта (подпункт 1 пункта 1 статьи 1270 Гражданского кодекса Российской Федерации).
В процессе инсталляции исполнитель разрабатывает стратегию инсталляции программных средств, согласованную с заказчиком и эксплуатирующей организацией, определяет критерии среды, в которой программное средство будет установлено, осуществляет адаптацию системы для удовлетворения требований к функционированию программного средства. При этом если инсталлируемый программный продукт заменяет существующую систему, то исполнитель должен поддерживать любые параллельно выполняемые действия, которые требуются в соответствии с контрактом. Таким образом, работы (услуги) по установке (инсталляции) могут в том числе включать в себя такие этапы, как:
- интеграция программного продукта с программно-аппаратной средой (в том числе разработка интеграционных модулей/шлюзов);
- подготовка, развертывание, настройка и конфигурирование программно-аппаратной среды, предназначенной для использования программного продукта;
- подготовка, развертывание и конфигурирование программного продукта;
- тестирование установленного программного продукта (включая, но не ограничиваясь: функциональное тестирование, нагрузочное тестирование, проведение тестовых дней, приемо-сдаточные испытания и т.п.);
- разработка алгоритмов и миграция данных в/из систем заказчика из/в устанавливаемое программного продукта.
Таким образом, в процессе выполнения работ (оказания услуг) по установке исполнителем могут также производиться работы (услуги), входящие в процессы разработки и (или) сопровождения (в соответствии с разъяснениями по пунктам 1 и 3 настоящего письма), а также необходимые для установки программного продукта работы (услуги) по адаптации или модификации программного продукта, если целью реализации таких процессов является обеспечение готовности программного продукта к применению в предназначенной для него среде. Деятельность относится к деятельности по установке программы для ЭВМ, базы данных, если выполняемые по договору работы (услуги) относятся, по существу, к некоторым (или всем) этапам установки программы для ЭВМ, базы данных и направлены на достижение результата в виде обеспечения готовности программы для ЭВМ, базы данных к применению в предназначенной для него среде.
3. По вопросам разъяснения термина "сопровождение" применительно к программам для ЭВМ, базам данных (программным средствам и информационным продуктам вычислительной техники)
В действующем законодательстве отсутствует определение термина "сопровождение". В этой связи для понимания содержания данного понятия могут использоваться государственные стандарты, в частности:
- ГОСТ Р ИСО/МЭК 12207-2010 "Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств" (утвержден и введен в действие приказом Росстандарта от 30 ноября 2010 г. N 631-ст) (далее - "ГОСТ Р ИСО/ИЭК 12207-2010");
- ГОСТ Р ИСО/МЭК 14764-2002 "Информационная технология. Сопровождение программных средств" (принят и введен в действие постановлением Госстандарта РФ от 25 июня 2002 г. N 248-ст) (далее - "ГОСТ Р ИСО/МЭК 14764-2002");
- ГОСТ Р ИСО/МЭК 90003-2014 "Разработка программных продуктов. Руководящие указания по применению ИСО 9001:2008 при разработке программных продуктов" (утвержден и введен в действие приказом Росстандарта от 23 октября 2014 г. N 1405-ст).
Данные документы соответствуют международным стандартам ISO/IEC, отражают универсальный, устоявшийся в отрасли подход к использованию наименований процессов, работ и задач, из которых складываются такие укрупненные стадии жизненного цикла программных средств как разработка, эксплуатация и сопровождение.
Содержащиеся в названных стандартах положения применимы к различным типам программных средств: встроенное и системное ПО, тиражные продукты и разработанные под конкретного пользователя информационные системы, мобильные и серверные приложения, ПО, предоставляемое по модели сервиса ("облачное"), и относящееся к классу СПО ("свободного") и т.п.
ГОСТ Р ИСО/ИЭК 12207-2010 предусматривает, что виды деятельности по сопровождению программных средств перед поставкой включают планирование операций после поставки, обеспечение поддержки и логистики. Виды деятельности после поставки включают в себя модификацию программных средств и поддержку функционирования, такую как обучение или работа в режиме диспетчерской связи.
В соответствии с указанным ГОСТ сопровождающая сторона должна осуществлять следующие виды деятельности в соответствии с принятыми в организации политиками и процедурами в отношении процесса сопровождения программных средств:
- разрабатывать, документировать и выполнять планы и процедуры проведения действий и решения задач в рамках процесса сопровождения программных средств;
- определять процедуры получения, регистрации и прослеживания отчетов о проблемах, заявок на модификацию от пользователей и обеспечения обратной связи с пользователями;
- выполнять или устанавливать организационную связь с процессом менеджмента конфигурации для управления модификациями в существующей системе;
- анализировать отчеты о проблемах или заявки на модификацию для определения воздействий на организацию, существующую систему и связанные с ней системы;
- копировать или верифицировать проблему;
- разрабатывать варианты осуществления модификации, которые должны входить в сопровождение программного продукта.
ГОСТ Р ИСО/МЭК 14764-2002, раскрывая термин "сопровождение", придает ему широкое значение, в том числе разделяет сопровождение адаптивное и полное (perfective maintenance). Последнее отличается тем, что в ходе сопровождения продукту придаются новые качества, повышаются его рабочие характеристики, происходит модернизация, развитие функционала, что влечет за собой более глубокую модификацию (доработку) продукта.
Исходя из содержания упомянутых стандартов, сопровождение - это действия (процессы) программного средства на всем его жизненном цикле с целью поддержания эффективности его эксплуатации, которые могут включать в себя такие виды работ/услуг, как:
- обеспечение работоспособности и функционирования программ для ЭВМ, баз данных, в том числе, при первичной интеграции, тестировании, настройках и изменений (адаптации, переустановки) в программно-аппаратной среде пользователя или исполнителя (при использовании программ для ЭВМ, баз данных через удаленный доступ), контроль за соблюдением прав доступа и распределение прав доступа в соответствии с принятой архитектурой прав доступа;
- настройка, обеспечение работоспособности и функционирования программно-аппаратной среды исполнителя, предоставленной с целью использования пользователями программ для ЭВМ, баз данных через удаленный доступ (в том числе, с целью тестирования, оптимизации и организации функционирования программ для ЭВМ, баз данных в соответствии с требованиями заказчика);
- мониторинг функционирования (в том числе, производительности, отказоустойчивости и соблюдения информационной безопасности) программ для ЭВМ, баз данных и устранение ошибок и сбоев в работе программ для ЭВМ, баз данных, в том числе путем тестирования, а также иными способами и средствами;
- исправление ошибок, несоответствий, инцидентов, дефектов, в том числе в рамках существующих или новых версий программ для ЭВМ, баз данных и мер, направленных на решение таких инцидентов;
- профилактическая модификация программ для ЭВМ, баз данных после поставки в целях обнаружения и корректировки имеющихся в нем скрытых ошибок для предотвращения явного проявления этих ошибок при эксплуатации данных программ для ЭВМ, баз данных;
- адаптация, сборка, установка, тестирование обновленных версий и доведение таких новых версий до пользователей, проверка наличия всех новых версий у пользователей;
- адаптация, настройка и дальнейшая техподдержка программ для ЭВМ, баз данных с учетом особенностей программно-аппаратной среды пользователя или исполнителя;
- аудит (анализ, обследование, мониторинг и т.д.) установленного у заказчика или исполнителя программного обеспечения на совместимость с программно-аппаратной средой заказчика/исполнителя, предназначенной для использования программ для ЭВМ, баз данных;
- обеспечение автоматического обновления нормативно-справочной информации, необходимой для функционирования программ для ЭВМ, баз данных в соответствии с требованиями Российской Федерации;
- прием обращений пользователей программ для ЭВМ, баз данных, выполнение работ/услуг, связанных с такими обращениями;
- информационно-справочная поддержка функционирования программ для ЭВМ, баз данных, в том числе рекомендации, консультации по установке, настройке и работе программ для ЭВМ, баз данных, восстановлению работоспособности, по типовому функционалу и его обновлению, модификации и аналогичных консультаций, связанных с использованием программ для ЭВМ, баз данных;
- консультирование, обучение, тренинги по вопросам использования (работы) программ для ЭВМ, баз данных, по его функционалу.
Сопровождение пользователей может обеспечиваться различными средствами, в том числе, но не ограничиваясь, посредством использования телефонной связи, программных средств обмена сообщениями с пользователями и средств электронной почты, а также в ином согласованном сторонами порядке.
Также в ходе выполнения работ (оказания услуг) по сопровождению исполнителем могут выполняться работы (оказываться услуги) по технической поддержке, адаптации и модификации программ для ЭВМ или баз данных, если целью этих работ (услуг) является обеспечение бесперебойного функционирования и эффективной эксплуатации программ для ЭВМ или баз данных (частично или полностью), в том числе в программно-аппаратной среде исполнителя.
Услуги по сопровождению могут быть как выделены в отдельные договоры (в том числе в договоры выполнения работ (оказания услуг) технической поддержки, абонентские договоры, договоры приобретения абонементов, сертификатов на получение услуг технической поддержки, оказываемых организацией, оказания консультационных услуг, аутсорсинга и т.п.), так и включаться в лицензионные договоры либо договоры о выполнении работ (оказании услуг).
4. По вопросам использования терминов и выражений
Значительная часть поступавших в Министерство обращений связана с тем, что организации часто используют в договорах, первичных учетных и иных документах термины и выражения (в том числе их версии на иностранных языках), которые не упоминаются в действующих нормативных правовых актах или нормативно-технической документации, но аналогичны им по своему смыслу и содержанию.
Примерами таких терминов являются: программный комплекс, приложение, банк данных, информационная система, веб-сайт, внедрение, модернизация, переработка, конфигурирование, настройка, испытание, интеграция, поддержка и другие.
При определении последствий использования таких терминов и выражений следует исходить не из их формы, а из смыслового значения, определяемого с учетом настоящего письма, в том числе в целях применения положений пункта 1.15 статьи 284 и подпункта 3 пункта 1 статьи 427 Налогового кодекса Российской Федерации.
Дополнительно обращаем внимание, что в соответствии с пунктом 6.6 Положения Министерство в целях реализации полномочий в установленной сфере деятельности имеет право давать государственным органам, органам местного самоуправления, юридическим и физическим лицам разъяснения по вопросам, отнесенным к сфере ведения Министерства. В связи с изложенным, настоящее письмо Министерства носит исключительно информационно-разъяснительный характер.
Директор Департамента развития
отрасли информационных технологий
Д.С.НИКИТИН