InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

オピニオン:プログラマの生産性を査定する

作者 Sadek Drobi , 翻訳者 編集部 投稿日 2008年10月17日

セクション
デベロップメント,
エンタープライズ・アーキテクチャ,
設計/アーキテクチャ
トピック
プログラミング ,
ヒューマンリソース ,
Architecture
タグ
品質 ,
Productivity

ソフトウェア開発の分野では、その他の分野と同様に、マネージャがプログラマのパフォーマンスおよびプロジェクトの進捗を正しく評価する必要がある。しかしながら、この目的への適切なメトリックを定義するのは、厄介なタスクであるかもしれない。

コードのソースライン(SLOC)を評価することは、一般的に使用されているアプローチであるが、近ごろShahar Yair氏(リンク)およびSteve McConnell氏(リンク) によって多くの重要な制限が提示された。まず最初に、コードのラインの量は、結果よりもアクティビティに重点を置いているため、プロジェクトの進捗を効率 的に評価することができない。LOCは、それ自体は価値を持たない。つまり、最終生産物は、そのパフォーマンスや品質に依存しており、コードの量には依存 していない。したがって、後者にフォーカスすると生産性のアプローチが非常に制限される。

SLOCは、保守容易性、柔軟性、拡張可能性の観点では、間近に迫った問題の複雑性や最終生産物の品質について何も語らない。品質に関して、実際否 定的に関連付けられる。設計パターン同様にリファクタリングは、コードの質を改善しながらも、LOCを減らすことになる。コードベースが大きくなると、ノ イズが多くなり、不必要に複雑になり、読み出し可能性や柔軟性がなくなることを意味する。

プログラマのパフォーマンスの還元的なビューを導入する上で特に危険なことは、誤ったインセンチブを作成するということである。最終生産物の観点か ら作業を最適化するよりむしろ、デベロッパは、品質に被害が及ぶまでにコードの量を支持するよう働きかけられている。またしかも、意図的に詳細なコードを 記述するように後押しされている。「査定されるものが、終えられる」とSteve McConnell氏は思い起こしている。

氏は、メトリックを査定する際に、ファンクションポイントを使用することで、これらの問題は解決することができると指摘している。プログラムサイズは、入力、出力、クエリーおよびファイルの数によって決定される。そうは言っても、このアプローチには欠点もある。McConnell氏 は、認証ファンクションポイントカウンターを所有する必要性および各ファンクションポイントを個々のプログラマにマッピングする際の難しさといった現実的 な問題について言及している。認証ファンクションポイントのスペシャリストであるDaniel Yokomizo氏は、そういったアプローチのその他の制限についても強調している。それは、ファンクションポイントの複雑性を査定するためのツールおよ びコードの共有、フレームワーク、ライブラリ、など機能を作成するために必要な時間に影響を与えるものを考慮するためのツールがないことである。

アプローチの評価に関する議論に関わっている解説者の多くが、それぞれの制限に同意を示しているけれども、プログラマのパフォーマンスを評価する必 要性を必ずしもはねつけているわけではない。たとえば、SLOCは、さまざまな要因が組み合わさったより複雑な分析をするためのベースラインとして使用す ることができる、ことを多くの人が主張している。これは、McConnell氏によって概説された4つの原則と足並みをそろえる。それはプログラマの生産性の分析を正しく導くものである。

1. 生産性の次元評価によって、個々の生産性の良い図式が得られると期待してはいけない[…]

2. 評価によって[…]それぞれの生産性を細かく区分することができると期待してはいけない。 答えるべき質問を提示するが、答えを与えてはくれない[…]

3. 傾向はたいてい、ある1つの地点の評価よりも重要な意味を持つことを忘れてはいけない[…]

4. そもそも、なぜ個々の生産性を評価する必要があるのかを自問する[…]

実際に、どのコンテキストでプログラマの生産性を評価するのが意味があるのか?それには、どんな基準を用いることができるか?どのように結び付けることが できるか?多くの質問が、まだ議論を受付中であり、実際の経験によってある種の答えを得たのであれば、気軽にそれを提供して欲しい。

原文はこちらです:http://www.infoq.com/news/2008/10/measure-programmers-productivity

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。