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

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

Калькулятор по умолчанию работает в режиме «скептик». Однако, мы надеемся, что, прочитав статью, вы согласитесь, что правильнее будет переключиться в режим: Я доверяю расчётам, описанным в статье «PVS-Studio ROI» :).

Ценность часа работы программиста


Для того чтобы определить, сколько денег вернёт PVS-Studio, для начала надо рассчитать, какова настоящая стоимость (ценность) часа работы программиста.

Дело в том, что недостаточно просто взять месячную зарплату программиста и поделить её на 160 (среднее количество часов в месяце при 40 часовой рабочей неделе).

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

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

Для скептически настроенных читателей мы возьмем коэффициент 2. То есть программист приносит в 2 раза больше денег, чем тратится на его зарплату. На самом деле, компания с такими коэффициентами балансирует на грани безубыточности. Более честно брать коэффициент, равный по крайней мере 3.

Что всё это означает? Если программист выпал из процесса разработки на 1 час, то компания недополучила не сумму равную часу его работы, а в 2 или 3 раза больше.

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

Вот и получается, что стоимость часа нужно дополнительно умножить на 8/6=1.33 или на 2.

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

  • коэффициент для скептиков: 2 * 1.33 = 2.66
  • коэффициент более близкий к реальности: 3 * 2 = 6

На практике коэффициенты будут чуть больше, так как мы не учитываем в расчётах отпуск.

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

Примечание. Для понимания отметим, что на самом деле компания тратит на выплату зарплаты больше, чем 100 000 рублей. Следует учесть, что компания делает отчисления в различные фонды («зарплатные налоги»). А на руки после удержания 13% налога человек получает 87 000 рублей. Для упрощения расчётов не будем учитывать отчисления и примем, что компания тратит только 100 000. Я решил это отметить, чтобы показать, что делаю округления не в пользу PVS-Studio.

При зарплате 100 000 рублей ставка 1 часа работы составит 625 рублей. Получается, что если программист на 1 час отвлёкся на правку ошибки, то компания не сможет из-за этого заработать:

  • для скептика: 625 рублей/час * 2.66 = 1660 рублей/час
  • в реальности более чем: 625 рублей/час * 6 = 3750 рублей/час

Это и есть настоящая стоимость (ценность) одного часа программиста, когда он занят полезным делом.

Сколько часов экономит PVS-Studio


Очень сложно назвать, сколько часов в год сэкономит PVS-Studio, находя ошибки на ранних этапах. Ошибки бывают очень разные. Некоторые из них программист сразу замечает сам и моментально исправляет. А иногда баг может отвлечь программиста от полезной деятельности на несколько дней.

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

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

В году приблизительно 52 недели. В год анализатор экономит следующее количество часов настоящей работы программиста:

  • скептическое отношение к статическому анализу: 2 часа * 52 = 104 сэкономленных часа
  • позитивное отношение: 3 часа * 52 = 156 сэкономленных часа

Пришло время считать ROI


Тогда использование PVS-Studio одним программистом с зарплатой в 100 000 рублей будет возвращать бизнесу в год:

  • Если вы скептик: 1660 рублей/час * 104 часа = 172 640 рублей
  • Реально: 3750 рублей/час * 156 часов = 585 000 рублей

Возьмём теперь типовую команду разработчиков из 10 человек. Внедрив PVS-Studio, можно ожидать, что благодаря сэкономленному времени команда сможет выполнить полезную работу стоимостью:

  • Скептик: 1 726 400 рублей
  • Реальность: 5 850 000 рублей

Окончательная формула


Итак, давайте теперь объединим всё в единую формулу, которая используется в калькуляторе.

Обозначим месячную зарплату программиста как S.

Количество программистов в команде обозначим как N.

  • Формула для скептика: N * (S / 160) * 2.66 * 104
  • Реальная формула: N * (S / 160) * 6 * 156

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

Верхняя строка: количество программистов в команде. Левый столбец: зарплата разработчиков.

Таблица для скептиков:

Таблица N1. Скептик. Красный: использование PVS-Studio может быть неоправданным. Зеленый: использование статического анализатора оправдано и полезно. Голубой: использование однозначно выгодно.


Таблица N1. Скептик. Красный: использование PVS-Studio может быть неоправданным. Зеленый: использование статического анализатора оправдано и полезно. Голубой: использование однозначно выгодно.

Реальная таблица:

Таблица N2. Реальность. Красный: использование PVS-Studio может быть неоправданным. Зеленый: использование статического анализатора оправдано и полезно. Голубой: использование однозначно выгодно.


Таблица N2. Реальность. Красный: использование PVS-Studio может быть неоправданным. Зеленый: использование статического анализатора оправдано и полезно. Голубой: использование однозначно выгодно.

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

Примечание


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

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

Заключение


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

Комментарии (67)


  1. Igor_Shumilov
    03.12.2018 14:39

    Из полученных цифр надо ещё вычесть стоимость лицензии. Какова она?
    На сайте цифр нет, только предложение «написать нам».


    1. Andrey2008 Автор
      03.12.2018 15:12

      Это очень обдуманное и взвешенное решение не говорить сразу о цене. Если услышать просто число, каким бы оно не было, первая реакция человека — это недопустимо много (это больше моей месячной зарплаты!). Поэтому, мы хотим прийти к режиму, что в начале человек оценивает пользу от анализатора кода для команды, а только затем узнаёт цену на него. Тогда восприятие цены будет правильным.


      1. Igor_Shumilov
        03.12.2018 15:48

        Это не «просто число», это тот минимальный показатель, после которого траты на Ваш продукт будут оправданы.

        Из приведённой Вами таблицы 2 видно, что для одного человека с зарплатой менее 200 000 покупка может быть не оправдана. Но почему? Стоимость лицензии может достигать 900 000 в год на человека? Но при этом она оправдана для пятерых, «выхлоп» которых 1 755 000. Но ведь пять лицензий должны стоить в разы дороже одной (даже с учётом потовых скидок). Вообще неясно как с такими цифрами работать.

        Плюс есть поправка на опыт. Хороший программист не просто будет читать объяснения анализатора, но и осознавать их. А значит в дальнейшем будет повторять эти ошибки реже, или вовсе перестанет их допускать. Т.е. цифры в столбцах пойдут вниз, а стоимость лицензии потеряет только 20%.

        P.S. Я прекрасно понимаю ценность Вашего продукта. Я сам ездил в командировку только для того, чтобы у заказчика обнаружить throw(), который «выпал» из проверки наличия ошибки, и кидался просто так, потому что всё хорошо. И такую ошибку, вероятно, анализатор показал бы заранее.


        1. Andrey2008 Автор
          03.12.2018 16:08
          +1

          Вы правы. Но чтобы этот показатель правильно осознать, хорошо начать не с цены, а с объяснения ценности продукта. Это очень, очень важно. Любая цена вне контекста воспринимается как завышенная. Даже когда мы продавали CppCat за $250 было масса возмущающихся. Пример реального отзыва: «Не знаю в каком мире вы живете, но мне кажется что многие компании склонны переоценивать важность своего софта. На 9000 рублей можно кормить двух человек месяц.» (тогда 1$ был равен около 35 рублей). У нас нет цели спрятать цены, как думают некоторые. У нас есть цель, чтобы она была воспринята правильно после предварительной настройки восприятия :).

          P.S. Статические анализаторы кода приносят пользу всему проекту, а не только тому пользователю, которые его запускают. Поэтому у нас, как и у многих, нет Single User лицензии. И, да, на одного человека это скорее всего не выгодно.


          1. gt8one
            05.12.2018 11:47
            +1

            Цена для всех одинаковая, или если вы во время «объяснения ценности продукта» понимаете, что заказчик крупный и платёжеспособный, то можете предложить более высокую цену?


      1. a-tk
        03.12.2018 21:05
        +1

        Это почти НЛП выходит


  1. dukei
    03.12.2018 16:01

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


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


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


    1. Andrey2008 Автор
      03.12.2018 16:23
      +3

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

      А по поводу ваших подсчётов — обычная манипуляция. Нет там экономии такой большой. Это видно и по вашему анализу опен сорс проектов. Все ошибки довольно незначительные и редко проявляющиеся, собственно, поэтому даже необязательные к исправлению. Потому вы их и нашли, а не пользователи и сами разработчики. При этом для нахождения этих ошибок приходится перелопатить тонны ложных срабатываний, а это, между прочим, тоже время программистов, которое вы «забыли» учесть.
      Про это уже много раз было. Да, ошибки исправляются альтернативно, но гораздо большей ценой. Здесь как раз показано, какие ресурсы теряются из-за неэффективного подхода к их обнаружению и исправлению. По поводу количества ложных срабатываний: Характеристики анализатора PVS-Studio на примере EFL Core Libraries, 10-15% ложных срабатываний.

      Я восхищён тем, что вы сумели сделать неплохой продукт, который даже работает, я восхищён вашим упорством по его впариванию, при том, что впаривание, очевидно, продвигается не очень, судя по тому, что это делают все те же основатели в течение многих лет, но навязчивость и неприкрытость этого впаривания раздражает.
      Осенью я стоял на стенде на таких конференциях, как TeamLead, HighLoad++, CEE SECR, YappyDays, InfoSec. Так вот, половина посетителей вообще ничего не слышала про PVS-Studio. И что интересно, половина из тех, кто никогда про нас не слышал, говорят, что читают Хабр. Так что как-то не могу согласиться, прям все знают и что мы всем впариваем :).


      1. dukei
        03.12.2018 16:39

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

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

        Уверен, что 90% аудитории уже о вас знает и вам бы освоить новые площадки. Так вы и клиентов новых получите и у аудитории хабра отторжение вызывать не будете.


        1. olekl
          03.12.2018 19:09
          +2

          По-моему, «впаривание» не совсем верно отражает специфику этого продукта и выбранный способ продвижения.


        1. geisha
          04.12.2018 01:32

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


          1. dukei
            04.12.2018 11:45
            -4

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


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


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


            Например, давайте рассмотрим комплекс питания программистов через капельницу. Типа, каждый день программисты тратят минимум часа полтора на еду. Если посчитать, то это более 350 часов в год, а значит, по самым минимальным подсчетам от пвсстудии, более 500к руб в год на одного программиста. Плюс жрут всякую вредную фигню, а это приводит к болезням и дополнительному простою. Поэтому достаточно купить на каждое рабочее место капельницу с полезной питательной смесью, и будете экономить огромные деньги.


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


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


            1. Andrey2008 Автор
              04.12.2018 11:54

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


              1. dukei
                04.12.2018 15:41
                -2

                Ой, ну только не надо опять искажать факты. Это у вас не первая статья, чтобы попытаться квалифицировать ее как для "изучить". Эта статья исключительно, чтобы продавать.


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


                Похожая на продажу гомеопатии и средств для похудения. Цель которых — впарить.


          1. balexa
            04.12.2018 12:34

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

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

            У меня возникает знаете, неприятная ассоциация с продавцами бадов и прочих тяньши.
            Ну знаете, когда предлагают купить целебную минеральную соль по 5 тысяч за порцию. И на вопрос — насколько эта соль эффективна, может за эти деньги лучше как-то по другому полечиться, мне отвечают «это же ваше здоровье, что может быть дороже здоровья».
            Я не могу это объяснить, но мне кажется что качественный продукт для программистов должен продаваться по другому. Снизу, показом для программистов, непосредственно занятых анализом кода, что этот продукт улучшает их жизнь. А на данный момент он продается только сверху, только руководству, а авторы прямым текстом говорят — на мнение инженеров плевать, не они решают покупать или нет. Это знаете, отторгает.


            1. Andrey2008 Автор
              04.12.2018 12:42

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


              1. balexa
                04.12.2018 12:50

                Прошу привести именно настоящие ошибки

                Настоящие критичные ошибки как правило отлавливаются во время написания юнит тестов и тестирования.

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


                1. Andrey2008 Автор
                  04.12.2018 12:58

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

                  то статические анализаторы приносят очень мало пользы
                  «Быть может у вас нормального анализатора не было?» ;))) Такое вполне возможно при использовании полумёртвого FindBugs. Какие анализаторы использовались?

                  И кстати, всё-таки хочется увидеть примеры ошибок, которые лучше не править. :)


                1. EvgeniyRyzhkov
                  04.12.2018 13:16
                  +1

                  А давайте погоняем наш Java анализатор на вашем коде? Одни плюсы:

                  • если найдем интересные ошибки, то это полезно вам
                  • если не найдем, то будете уверены, что ничего не теряете

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


                  1. balexa
                    04.12.2018 14:29

                    А давайте, высылайте ключ.


                    1. EvgeniyRyzhkov
                      04.12.2018 14:39
                      +1

                      Вот здесь выберите «Хочу анализатор для Java» и укажите еще свой ник на Хабре, пожалуйста.


            1. MarazmDed
              04.12.2018 13:00
              +1

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

              Так ведь почти все статьи про PVS-Studio содержат прогоны анализатора и разбор ошибок.
              Например, эта habr.com/company/pvs-studio/blog/431370


            1. geisha
              04.12.2018 23:24
              +2

              Некоторые ошибки править некритично. Некоторые ошибки стоят дешевле чем цена исправления.
              Я уже принес попкорн: приведите пример бага и адекватной оценки его стоимости в рублях/долларах/тенге. Стоимость = сколько заинтересованная сущность потеряет (не «может потерять», не «потеряла», а именно потеряет в будущем) денег. Пример обязательно должен быть про софтверную компанию, поизводящую только софт.
              К сожалению все мои попытки выяснить, насколько PVS студия эффективна имеют один ответ — это дополнительный контроль кода, это качество вашего кода, это хорошо.
              Абсолютно весь бизнес такой: впарить что угодно за максимальные деньги. Никто вам не ответит, насколько вам действительно нужен айфон и насколько он эффективен в решении ваших задач. Тем не менее, он замечательно продается.
              насколько PVS студия эффективна

              насколько эта соль эффективна

              Вот я вас спрашиваю, насколько лопата эффективна? Отвечайте.


        1. MarazmDed
          04.12.2018 11:22
          +4

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

          Я, как 1С-программист, скорее всего в обозримом будущем не стану пользователем PVS-Studio. И тем не менее, с интересом читаю статьи про анализатор. Да, я понимаю, что все статьи про анализатор имеют целью продать. Но, черт возьми, это, наверно, единственная реклама, которая носит содержательный и познавательный характер.
          Лично у меня отторжения не вызывает.


          1. Andrey2008 Автор
            04.12.2018 11:42

            Спасибо. :)


      1. gasizdat
        04.12.2018 09:39

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


        1. olekl
          04.12.2018 11:23

          Отдельно взятую диагностику можно выключить тремя кликами мыши. Если она на самом деле false positive.


          1. SvyatoslavMC
            04.12.2018 11:36
            +3

            Это внутренний код ошибки, о котором нужно сообщить нам. В 99% случаев такое исправляется в течение дня. Правки уже готовы, с gasizdat общаемся.


  1. dukei
    03.12.2018 16:35

    (промахнулся, написал выше).


  1. olekl
    03.12.2018 19:08

    О, знакомая ссылка :) Еще можете рассмотреть кейс быстрой оценки продукта, который команду нанимают сопровождать и дописывать «небольшие функции» :)


  1. DaneSoul
    03.12.2018 19:27
    +2

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


    1. Andrey2008 Автор
      03.12.2018 20:25

      После настройки 9 из 10 предупреждений будет указывать на ошибки или код, который явно будет полезно поправить, чтобы он не путал не только анализатор, но и коллег. PVS-Studio генерирует мало незначительных предупреждений. В нём нет диагностик в духе: поменять NULL на nullptr, имя переменной слишком длинное и т.п.


  1. pierser
    03.12.2018 20:10
    +2

    Как-то по умолчанию считается, что в команде из 10 программистов каждый гарантированно тратит в год на поиск и исправление багов по 156 часов (1 560 часов суммарно).

    А что, по вашей статистике среднестатистический проект и правда требует такого объема баголовных часов? И более того, из этого времени 100% закрывается анализатором кода?


    1. Andrey2008 Автор
      03.12.2018 20:31

      Как-то по умолчанию считается, что в команде из 10 программистов каждый гарантированно тратит в год на поиск и исправление багов по 156 часов (1 560 часов суммарно).
      Прошу предложить на рассмотрение Ваши прикидки.

      А что, по вашей статистике среднестатистический проект и правда требует такого объема баголовных часов? И более того, из этого времени 100% закрывается анализатором кода?
      На мой взгляд, на баги (поиск, отладку и т.д.) программист тратит в год куда больше 156 часов. 156 часов, это то, что можно попробовать сэкономить, найдя часть ошибок с помощью анализатора.

      Конечно хочется сказать: да нет, это история не про нашу команду! Так вот только почему у всех багтрекеры забиты багами? :)


      1. pierser
        03.12.2018 20:35
        +2

        Я не утверждаю, что расчеты неверные; мне была интересна статистика компании, профиль которой — разработка инструментов тестирования.

        И да, у нас в основном TDD, а как при таком подходе выделить чистое (и потенциально сэкономленное) время на поиск и устранение ошибок — не представляю.


  1. picul
    04.12.2018 01:03
    +1

    А почему не имеется совершенно никакой бесплатной лицензии, ну хотя бы для каких-нибудь мелких наколенных разработок? Да, это могло бы повлечь потери (хотя серьезно, большие клиенты платят за весь софт, за который просят деньги), но я думаю, что это способствовало популяризации PVS-Studio сильно больше, чем регулярная реклама на Хабре, и в долгосрочной перспективе окупилось бы сполна. На всякий случай, наколенные разработки != open-source, так что, насколько я понимаю, таким пользователям Вы бы не одолжили бесплатные ключи.
    И на счет ценовой политики, это лишь мое мнение, но мне кажется, что отсутствие определенной цены лишь отпугивает клиентов. Индивидуальная цена для каждого — это субъективизм, и вряд ли кому-либо нравится. Но это лишь мое мнение.


    1. Andrey2008 Автор
      04.12.2018 10:14

      А почему не имеется совершенно никакой бесплатной лицензии, ну хотя бы для каких-нибудь мелких наколенных разработок?
      Имеется. В том числе не только для открытых проектов. Как использовать PVS-Studio бесплатно.

      Индивидуальная цена для каждого.
      Нет никакой цены для каждого. Прайс один для всех. Однако, есть цель а) в начале заинтересовать, иначе любая цена слишком высока б) начать общаться с человеком.


      1. Andrey2008 Автор
        04.12.2018 12:14

        И ещё на тему бесплатной лицензии: Обсуждение бесплатной лицензии PVS-Studio для проектов, размещённых на GitHub. Приходите обсуждать.


        1. picul
          04.12.2018 15:10

          Моя ситуация — закрытый проект, Mercurial, BitBucket. Так что потрачено))


          1. Andrey2008 Автор
            04.12.2018 15:18

            Закрытый проект? Тогда habr.com/company/pvs-studio/blog/316484 :) Или приобрести лицензию.


      1. picul
        04.12.2018 14:58

        Почитал. Такой подход очевидно может работать, но мне кажется что принцип ограничения не верен. Обычно для бесплатных/более дешевых лицензий отрезают некоторые возможности программы, а Вы вводите неудобства для клиентов (ИМХО, принудительные комментарии — как раз неудобство). Без обид, но напоминает ситуацию, когда хостинги принудительно вставляют рекламные баннеры в страницы клиентов, но там они хотя бы доход получают, а профит для Вас от комментариев в коде, который никогда никто кроме меня не увидит — не совсем ясен.


        1. Andrey2008 Автор
          04.12.2018 15:22

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

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


          1. picul
            04.12.2018 16:32

            Мне кажется, намного лучше было бы поставлять бесплатную версию с вырезанными ошибками не первой существенности. Этого хватило бы для наколенных проектов, а большие клиенты с возгласами «Как это не все ошибки найдем?!» побежали бы покупать продукт. Ну или ввести для платных версий некоторые дополнительные примочки. Ну и поддержку ясное дело только для платных.


  1. mickvav
    04.12.2018 04:49
    +1

    Да, общественность требует web-сервиса. Регистрируешься, имеешь 10000 строк кода на проверку в год, например. Думали про такое?


    1. Andrey2008 Автор
      04.12.2018 10:18

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

      10000 строк кода на проверку в год
      Это противоречит концепции регулярного использования анализатора.


      1. mickvav
        05.12.2018 21:15

        Ну виртуалка, которая вычищается с определенной частотой. Первая доза должна быть бесплатной.


      1. a-tk
        06.12.2018 13:29

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


  1. qw1
    04.12.2018 11:25

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

    Скрытый текст


    1. SvyatoslavMC
      04.12.2018 11:41

      Интеграция и настройка анализатора первый раз — немного иной процесс, за счёт этого нельзя усреднять время регулярного использования анализатора. О том, с чего можно начать первый раз за минимальное время, я описал в статье: "Как перешагнуть через legacy и начать использовать статический анализ кода".


      1. qw1
        04.12.2018 11:48

        Ложные сообщения могут появляться каждый день, в свеженаписанном коде.


        1. SvyatoslavMC
          04.12.2018 11:54

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


        1. Andrey2008 Автор
          04.12.2018 11:57

          Могут. Но вот тут хочется конкретики. Что значит ложные? Если анализатор настроен, размечены хитрые макросы, то ложным срабатываниям практически нет места. Почти всегда предупреждение говорит об ошибке или о кривом коде, который сложно понять анализатору, а заодно и коллегам. И такой код в любом случае лучше переписать. Готов рассматривать и обсуждать обратные примеры.


          1. qw1
            04.12.2018 13:17

            На скриншоте — пример кода.


          1. a-tk
            05.12.2018 16:44

            Иногда false positives я видел в C#-коде какого-нибудь конвертера значений (WPF), когда нужно сделать отрицание: в этом случае методы Convert и ConvertBack будут иметь идентичные тела, и анализатор начинает на такое кричать.
            Рефакторинг с вызовом другого метода всё равно оставляет идентичное тело.


            1. SvyatoslavMC
              06.12.2018 00:22

              И мы видели, например, одинаковые GetX() и GetY(), потом оказалось, что объект типа куб и так должно быть. Разметили как FA и продолжили править код, вполне штатная ситуация. Но бывают и откровенно ложные предупреждения, которые мы правим уже в ядре анализатора, если есть такой фидбек. К сожалению, мало кто пытается разобраться и просто оценивает цифры в отчётах. Хотя порядки у этих двух групп очень разные.


              1. a-tk
                06.12.2018 13:26

                Раз пошло такое дело, то расскажите пожалуйста, как наиболее корректно в таких ситуациях поступать?
                Я так и не разобрался в своё время, куда вписать комментарий для подавления предупреждения.


                1. qw1
                  06.12.2018 13:44

                  Кликнуть правой кнопкой мыши в предупреждение и выбрать «False Alarm», комментарий добавится автоматически.

                  Скрытый текст


    1. datacompboy
      04.12.2018 12:17
      +1

      Понимаю такой код в тестах — на то они и тесты, чтоб создавать идиотские ситуации.
      В конкретном случае правильно добавить коммент для анализатора «да, я знаю».

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


      1. qw1
        04.12.2018 13:24

        Я не против анализаторов. Я лишь за объективность статьи. Написали, какие будут преимущества, но не написали, что с внедрением программисты должны будут регулярно отсматривать все сообщения анализатора и гасить ложные предупреждения (какие намного больше, чем реальных ошибок). Это снижает продуктивность, т.к. выбивает из потока и тратит "мыслетопливо".


        1. Andrey2008 Автор
          04.12.2018 14:23

          Гасить ложные предупреждения (которых намного больше, чем реальных ошибок
          Но ведь это не так :). Пример. Откуда все эти ложные срабатывания? Анализтор или не настроен или это плохой анализатор.


  1. slamon
    04.12.2018 12:00
    +2

    Прайс один для всех. Однако, есть цель а) в начале заинтересовать, иначе любая цена слишком высока б) начать общаться с человеком.

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


    1. Andrey2008 Автор
      04.12.2018 12:03

      Магазин с батонами, это B2C. Статические анализаторы, это B2B. Это не хорошо и не плохо. Просто это так.


      1. slamon
        04.12.2018 12:05
        +1

        Серьезно? И где проходит разница между B2B и B2C в вашем случае?


        1. Andrey2008 Автор
          04.12.2018 12:16

          Прошу утончить вопрос. Вы удивились, что нет цены :). Я ответил, что это стандартная практика для множества подобных продуктов.


          1. slamon
            04.12.2018 12:21

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


            1. Andrey2008 Автор
              04.12.2018 12:36

              Окей, сколько сотрудников должно быть минимально в компании?
              Эти прикидки как раз отображены в таблицах. Скорее всего есть смысл говорить о командах от 5 человек, у нас есть такие клиенты. Но надо понимать, что это высокооплачиваемые специалисты, а не джуниоры.

              Я, как обычный программист, могу приобрести ваш продукт?
              Нет. Подробнее про эту тему: Мы закрываем проект CppCat.


  1. sergegers
    04.12.2018 17:27

    Вы как-то сосредоточились на поиске ошибок в коде в стиле C с классами. Попробуйте проверить что-нибудь с бустовскими библиотеками, где делается свой EDSL типа Proto, Spirit, uBLAS. Ну или хотя бы в своих правилах проверяйте операторы на перегруженность и не давайте предупреждений на них, если не можете их правильно обрабатывать. А то отчёт полон предупреждений не просто ложных, а не имеющих отношения к коду вообще.