Оценка стоимости разработки программного продукта: обзор | ПУФ. 2016. № 1(21).

Оценка стоимости разработки программного продукта: обзор

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

Software Development Cost Estimation: A Survey.pdf Введение В современных экономических условиях для успешной конкуренции компаний особенно актуальна разработка и внедрение новых технологий. Важным элементом принятия инвестиционных решений по технологическим проектам является оценка их эффективности. Поскольку рынок купли/продажи новых технологий существует и функционирует, то возникает необходимость определения стоимости разработки. Объектом сделки может быть технология на разных стадиях ее создания и/или внедрения. Главный критерий оценки технологий - показатель «чистая стоимость», определяемый для разных стадий внедрения и реализации интеллектуальной стоимости, разных масштабов ее применения, конкурентной среды и разных инвестиционных рисков [1]. Для успешного инвестирования и управления активами требуется не только понимание того, что такое «стоимость», но и знание тех факторов, которые на нее влияют. 1. Особенности экономики производства программных продуктов Создание новых технологий - это поэтапный процесс: от ее разработки и до доведения ее до коммерчески успешной реализации. Оценка стоимости технологий необходима для анализа прибыльности нынешних и будущих технологических проектов, а значит, и целесообразности инвестиций. Важной особенностью современных технологий является их информа-ционноёмкость, что, в частности, обеспечивается широким применением программного обеспечения. Начиная с 60-х гг. ХХ века, когда появился программный рынок, т. е. программное обеспечение превратилось в программный продукт и стало особым видом товара (информационным товаром), оценка стоимости разработки программного обеспечения остается одним из самых сложных вопросов в программной инженерии, которым озадачены финансисты, оценщики, аналитики, программисты, инженеры-разработчики, руководители инновационных предприятий и научно-исследовательских институтов. Ввиду того, что предварительная оценка стоимости разработки включает в себя множество элементов неопределенности, предприятия используют на практике широкий круг методов - от самых элементарных до весьма изощренных. Что такое программный продукт? Приведем определения из разных нормативных документов. Программный продукт - программное средство, предназначенное для поставки, передачи, продажи пользователю. Соответственно, программное средство - объект, состоящий из программ, процедур, правил, а также, если предусмотрено, сопутствующих им документации и данных, относящихся к функционированию системы обработки информации (Межгосударственный стандарт ГОСТ 28806-90. Качество программных средств. Термины и определения) [2]. Программный продукт - самостоятельное, отчуждаемое произведение, представляющее собой публикацию текста программы или программ на языке программирования или в виде исполняемого кода (Межгосударственный стандарт ГОСТ 7.83-2001. СИБИД (Система стандартов по информации, библиотечному и издательскому делу). Электронные издания. Основные виды и выходные сведения) [3]. Программный продукт - совокупность компьютерных программ, процедур и, возможно, связанных с ними документации и данных (ГОСТ РИСО/МЭК 12207:2010. Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств) [4]. Выделим основные признаки программного продукта. Это, во-первых, комплекс программ, представленных в различном виде, и, во-вторых, отчуждаемое произведение, причем отчуждаемость обеспечивается наличием прилагаемой документации и данных. Рассмотрение программного продукта как экономического объекта предполагает исследование экономических основ, а также существующих подходов и методов оценки стоимости разработки программного продукта [5, 6]. Необходимы активные исследования на разных уровнях детализации, начиная от экономики и планирования создания программных продуктов в масштабах страны или предприятия и кончая экономикой выполнения частных операций отдельными специалистами при проектировании или производстве компонентов и конкретных продуктов. Для небольших относительно простых проектов программных комплексов во многих случаях достаточно достоверными могут быть интуитивные оценки требуемых экономических ресурсов, выполняемые опытными руководителями, реализовавшими несколько аналогичных проектов. Такие оценки размеров, сложности, трудоемкости и сроков создания конкретных программных проектов, как правило, отличаются существенными недостатками и ошибками вследствие того, что зачастую многим руководителям проект комплекса программ представляется меньшим по размеру, более простым и дешевым, что ведет к первоначальным недооценкам его сложности и к конфликтным ситуациям между заказчиками и разработчиками. Массовое создание сложных программных продуктов промышленными методами и большими коллективами специалистов вызывает необходимость их достоверного экономического прогнозирования и анализа, четкой организации производства, планирования работ по затратам, этапам и срокам реализации. Менеджеры и разработчики сложных комплексов программ, как правило, не знают основ экономики промышленного производства сложной технической продукции, а экономисты не представляют сущность и свойства объектов разработки программных продуктов, а также особенностей технологических процессов их производства и применения. Для решения этих задач еще в 80-е годы начала формироваться новая область знания - экономика разработки сложных программных продуктов, развивающая методологический подход к процессу производства программ. Основные сегменты этой области: - структурное описание процесса производства программ в виде моделей жизненного цикла программного обеспечения, иерархической модели целей проекта, сетевых графиков работ; - оценка стоимости программного обеспечения, планирования затрат на его разработку, анализ факторов повышения производительности труда; - применение методов микроэкономики в задачах проектирования сложных систем - анализе эффективности затрат, предельном анализе чистой стоимости, анализе рисков, условной оптимизации. При экономическом анализе и обосновании проектов сложных комплексов программ возможны два сценария: - создание и весь жизненный цикл комплекса программ ориентируется на массовое тиражирование и распространение их на рынке среди заранее не известных пользователей, в различных сферах и внешней среде применения; при этом отсутствует конкретный внешний потребитель-заказчик, который определяет и диктует основные требования к программному продукту, выделяет ресурсы и финансирует проект; - разработка программного продукта относительно небольшим тиражом с известной областью и внешней средой применения, для конкретного потребителя-заказчика, который определяет требования к функциям и характеристикам качества, финансирует и выделяет ресурсы. Эти сценарии принципиально различаются методами экономического анализа и обоснования их экономических характеристик. Первый сценарий базируется на маркетинговых исследованиях рынка программных продуктов и на стремлении поставщика занять на рынке достаточно выгодное место. Для этого ему необходимо определить наличие на рынке всей гаммы близких по назначению и функциям продуктов, оценить их эффективность, стоимость и применяемость, а также возможную конкурентоспособность предполагаемого к разработке программного продукта для потенциальных пользователей и их возможное число. Второй сценарий предполагает наличие определенного заказчика потребителя конкретного программного продукта, который должен соответствовать его формализованным и утвержденным техническим и экономическим требованиям. Он выбирает конкурентоспособного поставщика-производителя продукта, которого оценивает на возможность реализовать проект с необходимым качеством с учетом ограничения требуемых бюджета, сроков и других ресурсов. При этом результаты разработки не обязательно подлежат широкому тиражированию, могут не поступать на рынок, маркетинговые исследования для таких проектов являются второстепенными и предварительно могут не проводиться [7]. Предварительный экономический эффект рассчитывается до выполнения разработки на основе данных технических предложений и прогноза использования. Предварительный эффект является элементом технико-экономического обоснования разработки программного продукта и используется при планировании его внедрения. Потенциальный экономический эффект рассчитывается по окончании разработки на основе достигнутых технико-экономических характеристик и прогнозных данных о максимальных объемах использования программного продукта в народном хозяйстве. Потенциальный эффект используется при оценке деятельности организаций-разработчиков. Гарантированный экономический эффект рассчитывается в виде гарантированного экономического эффекта для конкретного объекта внедрения и общего гарантированного внедрения по ряду объектов. Фактический экономический эффект рассчитывается на основе данных учета и сопоставления затрат и результатов при кон-кретных применениях программного продукта [8]. Надежные и ранние оценки трудно получить из-за отсутствия подробной информации о будущей системе на ранней стадии. Тем не менее предварительные оценки очень важны на стадии обсуждения условий и сроков выполнения заказа [9]. Недооценка стоимости, времени и ресурсов, требуемых для создания программного проекта, влечет за собой недостаточную численность проектной команды, чрезмерно сжатые сроки разработки и, как результат, утрату доверия к разработчикам в случае нарушения графика. С другой стороны, перестраховка и переоценка могут оказаться ничуть не лучше. Если для проекта выделено больше ресурсов, чем реально необходимо, причем без должного контроля за их использованием, то ни о какой экономии ресурсов говорить не приходится. Такой проект окажется более дорогостоящим, чем должен был быть при грамотной оценке, и приведет к запаздыванию с началом следующего проекта [10]. Необходимо учитывать глобализацию индустрии программных продуктов, а также мировые тенденции стандартизации программных платформ и приложений, реорганизацию рабочих процессов и аутсорсинг и введение новых бизнес-моделей. При разделении труда разработки программного продукта необходимо учитывать: необходимость постоянной модернизации инфраструктуры для взаимодействия разработчиков в реальном времени, их культурные и языковые особенности, разницу во времени. Зачастую все это требует дополнительных усилий и расходов [11]. 2. Основные подходы к оценке стоимости разработки программного продукта Одним из направлений исследований в экономике программных продуктов является оценка трудоемкости (трудозатрат) [12, 13, 14, 15, 16, 17, 18]. Оценка представляет собой комплекс мероприятий юридического, экономического, организационно-технического и иного характера, направленный на установление ценности объекта оценки как товара. Известно несколько подходов и реализуемых в их составе методов, с помощью которых даются денежные оценки стоимости [19]. Оценочная деятельность осуществляется в соответствии с международными договорами Российской Федерации, настоящим Федеральным законом, а также другими федеральными законами и иными нормативными правовыми актами Российской Федерации, регулирующими отношения, возникающие при осуществлении оценочной деятельности (Федеральный закон от 29.07.1998 № 135-ФЗ (ред. от 13.07.2015) «Об оценочной деятельности в Российской Федерации» (с изм. и доп., вступ. в силу с 01.01.2016) [20, 21]. В отечественной теории используются три основных общепринятых подхода к оценке стоимости: - Доходный подход (Income approach) -совокупность методов оценки стоимости объекта оценки, основанных на определении ожидаемых доходов от использования объекта оценки. - Сравнительный подход (Market approach) -совокупность методов оценки стоимости объекта оценки, основанных на сравнении объекта оценки с объектами - аналогами объекта оценки, в отношении которых имеется информация о ценах. Объектом - аналогом объекта оценки для целей оценки признается объект, сходный с объектом оценки по основным экономическим, материальным, техническим и другим характеристикам, определяющим его стоимость. - Затратный подход (Asset based approach) -совокупность методов оценки стоимости объекта оценки, основанных на определении затрат, необходимых для воспроизводства либо замещения объекта оценки с учетом износа и устаревания. Затратами на воспроизводство объекта оценки являются затраты, необходимые для создания точной копии объекта оценки с использованием применявшихся при создании объекта оценки материалов и технологий. Затратами на замещение объекта оценки являются затраты, необходимые для создания аналогичного объекта с использованием материалов и технологий, применяющихся на дату оценки [22]. В связи с тем, что существенной особенностью процесса создания программных продуктов является большой удельных вес затрат труда в общих производственных затратах, основное внимание во многих исследованиях уделено вопросу оценки стоимости программного продукта. Оценка трудоемкости является одним из наиболее важных видов деятельности в процессе создания программного проекта. Существует большое разнообразие исследований по различным методам оценки стоимости программного обеспечения и об их точности. Основные категории методов оценивания затрат были названы Барри Боэмом (Barry Boehm) еще в 1981 г. [23, 24]. В зависимости от способа получения исходных данных при определении стоимостных и трудовых затрат на разработку программного продукта предлагаются различные методы [25, 26, 27, 28, 29, 30, 31]: - метод экспертных оценок основан на опросе нескольких экспертов по технологии разработки, знающих область его применения. Каждый из них дает свою оценку трудоемкости проекта, после чего все оценки сравниваются и обсуждаются. Этот процесс повторяется до тех пор, пока не будет достигнуто согласие по окончательному варианту предварительной трудоемкости [32]; - метод аналогий используется в том случае, если в данной области применения создаваемого программного проекта уже реализованы аналогичные проекты. Метод основан на сравнении планируемого проекта с предыдущими проектами, имеющими подобные характеристики [33, 34]; - исследовательские и эмпирические методы основаны на специально проводимых исследованиях, экспериментах и наблюдениях с последующей их статистической обработкой. Они различаются между собой прежде всего набором факторов, включаемых в расчетные формулы, способами их расчета и значениями их корректирующих коэффициентов, отражающих параметры и организационно-технологические условия разработки программного продукта [35]; - методы алгоритмического моделирования основаны на анализе статистических данных о ранее выполненных проектах, при этом определяется зависимость трудоемкости проекта от какого-нибудь количественного показателя программного продукта, обычно это размер программного кода). Проводится оценка этого показателя для данного проекта, после чего с помощью модели прогнозируются будущие затраты [33]. - математическая модель SLIM (Software Life-cycle Model) - нелинейная модель, предложенная в 1978 г. Л. Патнамом, использующая эмпирические данные для измерения времени и трудозатрат, необходимых для оценки программного продукта определенного размера [36]; - нейронные сети - самообучающиеся системы, имитирующие деятельность человеческого мозга; инструмент поиска закономерностей, прогнозирования, качественного анализа [12, 37, 38, 39, 29, 40]; - имитационного моделирования, при котором изучаемая система заменяется моделью, с достаточной точностью описывающей реальную систему, с которой проводятся эксперименты с целью получения информации об этой системе [23]; - байесовские сети - статистический метод описания закономерностей данных. На основе первичной информации, содержащейся в базах данных, строится модель в виде сети, где множество вершин описывают события, а ребра интерпретируются как причинные связи между событиями [32, 23]; - динамические методы используют предположение о том, что факторы, влияющие на стоимость и продолжительность проекта (например, опыт разработчиков, исходные требования, необходимость обучения и др.), изменяются на протяжении разработки. Это существенно отличает динамические методы от других методов оценивания [23]; - метод функциональных точек стандартный метод измерения размера программного продукта с точки зрения пользователей системы. Метод разработан Аланом Альбрехтом в середине 70-х гг. ХХ в. [41]; - COCOMO (Constructive COst MOdel -конструктивная модель стоимости), разработанная в 1970-х Б. Боэмом; устанавливает зависимость между размером программного кода и трудоемкостью программного продукта [34, 42]; - оценки с целью выиграть контракт -затраты на проект определяются наличием тех средств, которые имеются у заказчика, поэтому трудоемкость проекта зависит от бюджета заказчика, а не от функциональных характеристик создаваемого проекта. Требования приходится изменить так, чтобы не выходить за рамки принятого бюджета [43, 44]. Исходя из основной идеи каждого метода, они в соответствии с вышеприведенными подходами к оценке стоимости могут быть разбиты на три группы (таблица). 61 Таблица . Классификация методов оценки стоимости Затратный подход Сравнительный Доходный под подход ход Математическая Метод экспертных Нейронные сети модель SLIM оценок Исследовательские Оценка по анало Байесовские сети методы гии Метод оценки с Алгоритмическое Динамические целью выиграть моделирование. методы контракт Семейство моделей Имитационное Анализ функоценивания затрат моделирование циональных COCOMO точек Анализ показывает, что нет какого-то одного метода, который бы превосходил другие по всем параметрам. Таким образом, чтобы произвести наиболее реалистичные подсчеты, важно использовать комбинацию методов и тщательно сравнить оценки стоимости программного обеспечения, полученные разными методами. Конкретные комбинации методов могут быть выбраны исходя из целей оценки стоимости, что является предметом особого исследования.

Ключевые слова

программный продукт, оценка стоимости разработки, экономика производства программных продуктов, software development, cost estimation, software production economics

Авторы

ФИООрганизацияДополнительноE-mail
Ваганова Елена ВладимировнаТомский государственный университетаспирант экономического факультета, младший научный сотрудник, старший преподаватель кафедры управления качеством факультета инновационных технологийhailun@mail.ru
Земцов Анатолий АнатольевичТомский государственный университетдоктор экономических наук, профессор, заведующий кафедрой финансов и учетаfbd@bk.ru
Миньков Сергей ЛеонидовичТомский государственный университеткандидат физико-математических наук, старший научный сотрудник заведующий кафедрой информационного обеспечения инновационной деятельности факультета инновационных технологий
Всего: 3

Ссылки

 Оценка стоимости разработки программного продукта: обзор | ПУФ. 2016. № 1(21).

Оценка стоимости разработки программного продукта: обзор | ПУФ. 2016. № 1(21).