PVS-Studioコードアナライザーでトライアルモードを実装するタスクをどのように解決したか

PVS-Studioの新しい試用モード



多くのソフトウェア開発者にとって、試用モードモデルの選択と変更は、最も心配され、議論されているタスクの1つです。 一部のプログラムではモデルの作成が簡単ですが、他のプログラムでは困難です。 また、一部の人にとっては、「すべてを正しく行ったのか?」という疑問が残ることはありません。 トライアルモデルを選択する実際のタスクは、PVS-Studioの開発者でもあります。 関連するいくつかの考えを共有し、どのような新しいオプションを思いついたかについて話し合うことにしました。 私たちの推論といくつかの考えが他の開発者に役立つことを願っています。







はじめに



試用版(またはシェアウェア)モデルは、長い間、現代のソフトウェアビジネスの古典となっています。 私は、無料および/またはオープンソースソフトウェアを開発する人々を心からvy望しています。 ある意味では、彼らはプログラムをあらゆる面から潜在的なユーザーに見せ、同時にソフトウェアを購入する動機を与える必要性を免れます。 もちろん、彼らはプログラムを宣伝すべきであり、Google ChromeとMozilla Firefoxの豊富な広告はこれを証明しています。 それにもかかわらず、状況は異なり、私はそれを考慮しません。



では、何がありますか? 静的コードアナライザーは、コンパイラの診断メッセージなどのプログラムのエラーを検出するツールです。 このツールをユーザーに販売する必要があります。



静的コードアナライザーを販売するための標準的なアプローチ



業界のリーダー(Coverity、Klocwork、Parasoft)のWebサイトでは、「無料トライアル」ボタンをいつでも簡単に見つけることができます。 これは、スーツのセールスマネージャーがハント、つまり仕事をできるだけ早く開始するために行われます。 さらに、プログラム自体がユーザーに提供される場合もあれば、そうでない場合もあります。 なんで? クールな企業では理想的であるため、特殊部隊はヘリコプターですぐに価値のあるクライアントに飛んでいきます:セールスマネージャー、コードアナライザーの複雑な環境を展開してクライアントのプロジェクトで起動する技術チーム、および発見に関するプレゼンテーションのために中断された言語を持つ人潜在的なクライアントエラーのコード内。 その後、クライアントは、「はい、この製品を年間数十万ドルで購入します」または「ありがとう、感動しませんでした」と言います。



なぜクライアントに行き、彼のインフラストラクチャを展開し、見つかったエラーを提示するのですか? これは、静的コードアナライザーが誤検知を与えるためです。 また、ユーザーが最初に表示された10個のメッセージを誤検知として見た場合、11番目のメッセージで(これが実際の間違いであっても)「これはエラーではありません」と言うことができます。 丁寧ではないからです。 もちろん、読者は「私はそうではありません!」と反対します。 残念ながら、人々はそのように配置されており、それについては何もできません。 したがって、はるかに経験豊富な人が潜在的なクライアントのコードを見て、エラーを見つけてプレゼンテーションを行うとよいでしょう。 そして、ほとんどの場合、潜在的な顧客は本物になります。 そして、これらは私の考えだけではありません。 これについては、記事「数十億行のコード-静的分析を使用して現実世界のバグを見つける」で説明されています。



前にPVS-Studioで実装したように



私たちPVS-Studioの開発者は小さな新興企業であり、前のセクションの特殊部隊はまだ利用できません。 しかし、私たちは自分の弱点を利点に変えようとしています。 したがって、当社のウェブサイトでは、登録せずに試用版をダウンロードし、セールスマネージャーがダウンロードリクエストを承認するまで待つことができます。 これは、潜在的なユーザーから非常に高く評価されています。 実際、作業の「三元性」は、アナライザーがコード内のすべてのエラーを検出したことですが、一部のエラーについては、エラーの場所を示していませんでした。 この試用モードでは、かなり長い間生きていました。 そして彼への主張は蓄積されました:

  1. 多くの場合、興味深いエラーが隠されており、それとは対照的に、ユーザーには興味のない(つまり、誤検知)が表示されていました。 ツールが悪いようです。
  2. ユーザーは、静的分析の利点が通常の使用で明らかになることを常に認識しているわけではありません。 トライアルモードで表示されたエラーを修正し、これを落ち着かせるために、ツールを一度「実行」するだけでは不十分です。 できるだけ早くコードに入力されたばかりのエラーを見つけるために定期的に実行することが重要です。
  3. 最後に、このような試用モードでは、非常に優れたインクリメンタル分析機能の利点を示すことは非常に困難です。 これは、コンパイル後に静的アナライザーが自動的に起動し、変更されたファイルのみをチェックするときの動作モードです。 これは、プロジェクト全体に関する一連の診断メッセージではなく、現在のユーザーの変更に関連するメッセージのみを表示します。 2つまたは3つのファイルを編集して再コンパイルした後、アナライザーが2つのエラーについて話しますが、そのうちの1つが表示されない場合、これがなんらかのクールな機能であると納得できません。
  4. さらに、当社製品の潜在的なユーザーが誰であるかを知りませんでした。サイト上のどこにも登録や他の同様のフォームがないからです。


これらの欠点に基づいて、ダウンロードの容易さという形で既存のバージョンの尊厳を保ちながら、試用モデルを変更することが決定されました。



私の夢の完璧な試練



ここでは、静的アナライザーから少し脱線し、大好きな2つの試用モデルについてお話します。



CADシステム



まず第一に、私はCAD開発者がうらやましいです。彼らはしばしばこのようなトライアルを持っています。 ユーザーは、プログラムのすべての機能を時間制限なく常に利用できます。 機能の唯一の制限は、...開発されたモデルを保存できないことです。 この機能がなければ、ツールを実際に使用することはできませんが、潜在的なユーザーはプログラムのすべての機能を評価できます。 スーパー、ただの夢。



残念ながら、見つかったエラーのレポートは保存できますが、CADシステムのように必要なものではないため、静的分析には適していません。



World of Warcraftのようなゲーム



私はWorld of Warcraftや同様のゲームをプレイしたことがないということを言わなければなりませんが、私が知る限り、そこでは試用版がそのように動作します。 ユーザーは無料でプレイを開始し、キャラクターを特定のレベルにアップグレードすることができます。その場合にのみ、継続料金を支払う必要があります。 15番目のレベルに達した人は誰も続行を拒否できないため、これは別の理想的なスキームです。



Visual Studioの開発者をポンピングするためのユーモラスなプラグインVisual Studio Achievements Extensionのリリースにより、ポンピングはプログラマーにも関連するようになりましたが、それを適応させることはできません。



PVS-Studioでやっとやったこと



「クリック」の概念を使用することにしました-これは、メッセージリストをクリックすることによるエラーのあるソースコードへの移行です。 登録なしでPVS-Studioをダウンロードすると、潜在的なユーザーはコードアナライザーの完全に機能するバージョンを受け取ります。 彼は彼女にどんなプロジェクトでも何度でもチェックできます。 彼はメッセージの完全なリストを受け取ります。 しかし、彼のクリック数は限られています(コードへのジャンプ)。 たとえば、100です。しかし、その数は重要ではないため、変更する可能性があります。 したがって、ユーザーは100の診断を見て行きます。 制限なしで繰り返します。



ユーザーがこれらのクリックを消費した場合、次のいずれかの決定を行う必要があります。



ライセンスを購入すると、ユーザーは1年間正規のキーを受け取り、ツールを完全に使用します(クリックについて考える必要はありません)。 すべてを使用することを拒否する場合も、明らかです。



ただし、バージョンPVS-Studio 4.54の体制の拡張は次のように実装されています。 クリックの終了後、ユーザーは次の情報を含む電子メールを送信します。名前、会社、試用モードの延長理由。 そして、私たちは彼にもう一週間の鍵を渡します。 つまり、ある程度の手作業があります。



4.54以降の次のバージョンでは、これをやり直します。 プログラムには、この情報を示すための自動フォームがあり、送信後、ユーザーは、たとえば、さらに500クリックを受け取ります。 トライアルモードは1回更新されます。



ユーザーが試用期間を延長したくない場合、次の制限があります。

  1. 新しいプロジェクトをチェックするとき、エラーのあるファイル名は表示されません。 代わりに、「トライアル制限」というフレーズがあります。
  2. ユーザーが以前に保存したログを開いてエラーが見つかった場合、クリックによるコードへの移行は機能しません。


もちろん、ユーザーは、クリックが0回であっても、以前に保存したレポートを開いて手動でナビゲートできます。ファイルを開いて、対応する行に移動します。 これを行うことができます。 ただし、静的分析はまず時間を節約するツールであることを理解する必要があります(リリース後ではなく、リリース前のプログラムでエラーを早期に検出するため)。 潜在的なユーザーの時間が安価または無料であるため、手動ナビゲーションを実行する準備ができている場合、静的分析は彼にとってではなく、いずれにしてもクライアントではありません。



結論



新しい試用モデルが最終的に売り上げを増やすことを願っています。 さて、あなたが今すべきことは、PVS-Studioダウンロードして、自分でクリックして私たちのアイデアを試してみることです。



All Articles