2

Personal Software Process (PSP) は、ソフトウェア エンジニアが自分のパフォーマンスを理解し、改善できるように設計されています。PSP は、スクリプトを使用して、プロセスを通じて開業医をガイドします。各スクリプトは、目的、開始基準、実行する手順、および終了基準を定義します。PSP0 は、個人的なプロセスを開始できるフレームワークになるように設計されています。

PSP0 で使用されるスクリプトの 1 つは、開発をガイドする開発スクリプトです。このスクリプトは、要件ステートメント、プロジェクト計画の要約、時間と欠陥の記録ログが作成され、欠陥タイプの標準が確立されると使用されます。このスクリプトの活動は、設計、コーディング、コンパイル、およびテストです。アプリケーションが完全にテストされ、時間と障害のログが完了すると、スクリプトは終了します。

コード フェーズでは、要件を確認して設計を行い、要件の欠陥をログに記録し、タイム トラッキングを実行します。コンパイル フェーズでは、コンパイルを行い、コンパイル時のエラーを修正し、プログラムがコンパイルされるまで繰り返し、欠陥と時間を記録します。最後に、テスト フェーズでは、時間と欠陥を記録しながら、すべてのテストがエラーなしで実行され、すべての欠陥が修正されるまでテストします。

私の懸念は、最新のプログラミング言語 (特に Python、Perl、Ruby などのインタープリター型言語) と IDE を使用する場合に、コード、コンパイル、およびテスト フェーズを管理する方法にあります。

私の質問:

  • インタープリター言語では、コンパイル時間はありません。ただし、実行時に問題が発生する可能性があります。ユニット (およびその他の) テストの外部でスクリプトを実行することは、「コンパイル」または「テスト」時間と見なされますか? 実行時のエラーは、欠陥を追跡するときに「コンパイル」または「テスト」エラーと見なすべきですか?
  • テスト ケースで構文エラーが発生した場合、それはコードの欠陥、コンパイルの欠陥、またはテストの欠陥と見なされますか? テストで実際にエラーが検出されましたが、これはコードの問題です。
  • IDE が実際にコンパイルする前にコンパイルを妨げるエラーを特定した場合、それを特定する必要がありますか? その場合、コンパイル エラーまたはコード エラーとして識別して追跡する必要がありますか?

PSP、少なくとも PSP0 のベースライン プロセスは、コンパイルされた言語と (IDE ではなく) テキスト エディターを使用して記述された小さなアプリケーションで使用するように設計されているようです。私の質問に加えて、PSP を使用している、または使用したことがある方のアドバイスと解説をいただければ幸いです。

4

5 に答える 5

1

一般に、PSP は個人の改善プロセスであるため、実際の質問に対する回答は、1 つの回答を選択して一貫して適用する限り、問題ではありません。そうすれば、定義された各フェーズでかかる時間を測定できます。これは、PSP が求めているものです。チーム全体で PSP を使用している場合は、使用するスクリプトと質問への回答方法について全員で合意する必要があります。

実際の質問に対する私の見解は次のとおりです(それらが関連しているわけではありません):

  • インタープリター言語では、コンパイル時間はありません。ただし、実行時に問題が発生する可能性があります。ユニット (およびその他の) テストの外部でスクリプトを実行することは、「コンパイル」または「テスト」時間と見なされますか? 実行時のエラーは、欠陥を追跡するときに「コンパイル」または「テスト」エラーと見なすべきですか?

私にとって、テスト時間は実際のテストが実行される時間であり、それ以外の時間ではありません。この場合、エラーと実行時間の両方を「コンパイル」時間として追加します。これは、コードの生成と実行に使用される時間です。

  • テスト ケースで構文エラーが発生した場合、それはコードの欠陥、コンパイルの欠陥、またはテストの欠陥と見なされますか? テストで実際にエラーが検出されましたが、これはコードの問題です。

構文エラーはコードの欠陥です。

  • IDE が実際にコンパイルする前にコンパイルを妨げるエラーを特定した場合、それを特定する必要がありますか? もしそうなら、コンパイルエラーまたはコードエラーとして識別して追跡する必要がありますか?

IDE がツールチェーンの一部である場合、エラーが表示されるのは、自分がエラーを見つけてコード エラーを見つけたのと同じです。IDE を定期的に使用しない場合は、コンパイル エラーとして数えます。

于 2009-09-15T22:31:04.020 に答える
1

PSPを何年も使っています。他の人が言ったように、これは個人的なプロセスであり、開発プロセスを改善するには PSP0 を進化させる必要があります。それにもかかわらず、私たちのチーム (すべて PSP のトレーニングを受けた) は、いくつかの面でこれらの問題に取り組みました。関連するコンポーネントの概要を説明した後、どのように管理したかを説明します。

PowerBuilder の「層」がありました。PowerBuilder IDE では、コードが正しくコンパイルされてリンクされるまで、コードを保存することさえできません。システムの一部は JSP を使用していましたが、Java の量はわずかで定型的なものであったため、実際にはまったくカウントしませんでした。システムの大部分は JS/JavaScript でした。これは素晴らしい Ajax ライブラリが登場する前に行われたもので、作業の大部分を占めていました。もう 1 つの大部分は Oracle Pl/Sql でした。これには、やや伝統的なコンパイル段階があります。

PowerBuilder で作業している場合、コンパイル (およびリンク) フェーズは、開発者がオブジェクトを保存したときに開始されました。保存が成功した場合は、コンパイル時間を 0 と記録しました。それ以外の場合は、コンパイル時の欠陥の原因となったエラーを修正するのにかかった時間を記録しました。ほとんどの場合、これらはコーディング中に挿入され、コンパイル フェーズで削除された欠陥です。

PowerBuilder IDE の強制的なコンパイル/リンクの側面により、コード レビュー フェーズをコンパイル後に移行することを余儀なくされました。最初は、このような変更がデータの意味にどのように/または影響するかがわからなかったので、これは私たちにいくらかの苦痛を引き起こしました. 実際には、それは問題ではなくなりました。実際、私たちの多くは Oracle Pl/Sql のコード レビューもコンパイル フェーズの後に移動しました。コードをレビューするときに、コンパイラが報告する構文エラーを見逃してしまうことがよくあるからです。

テスト時間が 0 の場合に問題があるのと同様に、コンパイル時間が 0 の場合も問題はありません (ユニット テストがエラーを検出せずに合格し、測定単位よりも大幅に速く実行されたことを意味します)。これらの時間がゼロの場合、それらのフェーズの欠陥は削除されず、div/0 の問題は発生しません。より快適にする場合、またはメジャーでゼロ以外の値が必要な場合は、1 分の公称最小値を記録することもできます。

2 番目の質問は、開発環境に依存しません。欠陥に遭遇した場合は、それを挿入したフェーズ (通常は設計またはコード) と削除したフェーズ (通常は設計/コード レビュー、コンパイルまたはテスト) を記録します。これにより、特定のフェーズで欠陥を除去することの相対的な有効性を示す「レバレッジ」と呼ばれる尺度が得られます (また、欠陥を早期に除去することは、プロセスの後半で除去するよりも効果的であるという「常識」をサポートします)。欠陥が注入されたフェーズは、そのタイプ、つまり設計またはコーディングの欠陥です。欠陥が除去されるフェーズは、そのタイプには影響しません。

同様に、JS/JavaScript では、コンパイル時間は事実上計り知れません。コンパイル フェーズの時間は記録しませんでしたが、そのフェーズで欠陥を削除しませんでした。JS/JavaScript の欠陥の大部分は、設計/コーディングで挿入され、設計レビュー、コード レビュー、またはテストで削除されました。

于 2010-09-27T14:16:56.490 に答える
0
  • インタープリター言語では、コンパイル時間はありません。ただし、実行時に問題が発生する可能性があります。ユニット (およびその他の) テストの外部でスクリプトを実行することは、「コンパイル」または「テスト」時間と見なされますか? 実行時のエラーは、欠陥を追跡するときに「コンパイル」または「テスト」エラーと見なすべきですか?

エラーは、発見した時期ではなく、作成された時期に従って分類する必要があります。

  • テスト ケースで構文エラーが発生した場合、それはコードの欠陥、コンパイルの欠陥、またはテストの欠陥と見なされますか? テストで実際にエラーが検出されましたが、これはコードの問題です。

同上。常に最も古い時点に戻ります。コーディング中に構文エラーが発生した場合はコーディング フェーズに対応し、バグの修正中に発生した場合は欠陥フェーズに該当します。

  • IDE が実際にコンパイルする前にコンパイルを妨げるエラーを特定した場合、それを特定する必要がありますか? その場合、コンパイル エラーまたはコード エラーとして識別して追跡する必要がありますか?

特定してはいけないと思います。コードを書くのに費やされた時間です。

余談ですが、私は Process Dashboard ツールを使用して PSP データを追跡しましたが、非常に優れていることがわかりました。無料で Java ベースなので、どこでも実行できます。ここから入手できます: http://processdash.sourceforge.net/

于 2009-09-15T22:46:46.483 に答える
0

Mike BurtonVinko Vrsalovic、およびJRLによる返信を読み、PSP: A Self-Improvement Process for Software Engineers の適切な章を読み直した後、私はこれらの問題に対する独自の見解を思いつきました。ただし、2 つのページがくっついたときに最初に見逃していたセクションを本の中に見つけたのは良いことです。

  • インタープリター言語では、コンパイル時間はありません。ただし、実行時に問題が発生する可能性があります。ユニット (およびその他の) テストの外部でスクリプトを実行することは、「コンパイル」または「テスト」時間と見なされますか? 実行時のエラーは、欠陥を追跡するときに「コンパイル」または「テスト」エラーと見なすべきですか?

この本によると、「コンパイルしない開発環境を使用している場合は、コンパイルのステップを飛ばしてください」と書かれています。ただし、ビルドステップがある場合は、「コンパイルフェーズでビルド時間とビルドエラーを記録できます」とも書かれています。

これは、インタープリター言語の場合、追跡からコンパイル フェーズを削除するか、コンパイルをビルド スクリプトに置き換えることを意味します。PSP0 は通常、小規模なアプリケーション (大学の研究室で期待されるものと同様) で使用されるため、ビルド プロセスはなく、単純にステップを省略することになると思います。

  • テスト ケースで構文エラーが発生した場合、それはコードの欠陥、コンパイルの欠陥、またはテストの欠陥と見なされますか? テストで実際にエラーが検出されましたが、これはコードの問題です。

エラーが発生した場所にエラーを記録します。

たとえば、テスト ケースに欠陥がある場合、それはテストの欠陥になります。テストが実行され、テスト対象のアプリケーションでエラーが見つかった場合、問題の実際の発生場所に応じて、コードまたは設計上の欠陥になります。

  • IDE が実際にコンパイルする前にコンパイルを妨げるエラーを特定した場合、それを特定する必要がありますか? その場合、コンパイル エラーまたはコード エラーとして識別して追跡する必要がありますか?

IDE が構文エラーを識別した場合は、実行前に実際にエラーを見つけたのと同じです。IDE を適切に使用すると、実行に影響を与える欠陥 (ロジック/実装エラー以外のアプリケーションの実行にエラーを引き起こすなど) を許す言い訳はほとんどありません。

于 2009-09-15T23:14:19.413 に答える
0

基本的に、正式なプロセスが実践プロセスと一致していないように思えます。一歩下がって、自分がしていることと、別の正式なアプローチを選択する必要があるかどうかを再評価します (実際に最初から正式なアプローチが必要な場合)。

于 2009-09-15T21:53:34.643 に答える