メルマガ
バックナンバー

第3号:計測について, プロセスとは何か?

2004年06月25日

  • 01計測について

    SW-CMMの各キープロセスエリアには、計測と分析についてのキープラクティスがあります。CMMIの各プロセス領域にも計画と比較した計測について言っているGP2.8があります(さらにその名も「計測と分析」というプロセス領域まであります)。なぜ計測が必要なのかについて今回は、お話ししたいと思います。

    計測を行うということは、各作業に「メーター」をつけるようなものです。車を見れば、スピードメーター、タコメーター、燃料メーター、走行距離メーター等様々なメーターがついています。ドライバーは運転中、常にこれらのメーターを参照することにより順調に走っていることを確認します。これらのメーター無しに無事目的地にたどり着くことは至難の業でしょう。
    プロジェクトをゴールにたどり着かせるためにも、様々なメーターにより状況を確認しながら進めるのと、それらが無くて進めるのとでは、安全性が全く違います。
    もちろん各メーターには、それぞれ何を測るためなのかが明確に決まっています。
    今の速度を知ったり、ガソリンの残量を知ったり。プロジェクトで行う計測にも、当然目的が必要です。車に体重計がついていても誰も喜ばないように、プロジェクトで使い道の無い計測を行っても、測る側は嫌になるだけです。

    色々なメーターを取りつけても、そのメーターの信頼性が無ければ意味がないばかりか、かえって危険が増してしまいます。時速100キロ出ているのに、50キロを指すメーターの車を考えれば明白です。そのため、作業を実施する人は、正しい計測を行うことが必須になります。工数を入力しても、それが正しい値でなければ、かえって混乱を招きます。CMMでは、ソフトウェア開発について一般的に役立つであろうメーターにはこんなものがありますよ、ということを言っているので、まずはそれから測っていくことになります。

    メーターの目盛りも重要です。ガソリンの残量が20リットル単位でしか分からない目盛りでは安心して運転できませんが、だからといって1ミリリットル単位である必要もありません。情報を細かく集めようと思うと大変なので、適切な単位で測ることが肝心です。
    また、後部座席に乗っている上司やお客さんに、「今何キロ出ている?ガソリンは持ちそう?」と聞かれた時に答えられるでしょうか?
    「大丈夫です」とか「がんばってみます」とか報告されても安心することはできないでしょう。明らかにガソリンがほとんどカラだと分かれば、給油をすることも検討してもらえるでしょう。

    1年後に同じ道を通って同じような場所に行くときに、これらのデータが残っていれば、いくらか安心して目的地までの予定を立てることができます。自分でなくても他の人のデータでも使えないことはないでしょう。車の性能が違う分は、調整して考えれば良いのです(この当たりはレベル3のテーラリングに関わってくるので、次回に続きを書きます)

    いきなり残り何キロか分かるカーナビまでつけるのは難しいですが、まずは測れる所からはかってみてはいかがでしょうか?

    02プロセスとは何か?

    プロセス改善とか、定義されたプロセス、管理されたプロセス等、「プロセス」という言葉は、よく出てきます。「プロセス」って何でしょう。
    CMMやCMMIに関連する文献を利用し、「プロセス」について整理してみました。

    CMM

    CMMではプロセスをどのように定義しているのでしょうか。

    IEEEの定義によれば、「与えられた目的のために実施される一連のステップ(原文:A process is a sequence of steps performed for a given purpose.)」となっています。

    『成功するソフトウェア開発-CMMによるガイドライン』によると、プロセスは、「人材、ツール、手順が統合されたもの」であり、「プロセスとは、手順、方法論、ツール、設備を用いて、人が原材料(インプット)から顧客にとって価値のある製品(アウトプット)を生み出すために行う作業のこと」です。

              こんな感じです。
                 ↓
               タスクの相関関係を定義
               する手順と方法
                    ○
                   / \
                  /   \
    スキルとモチベーション  / プロセス \
    を持ち、研修を受けた人 ○―――――――○ ツール、設備


    また、「『プロセスの記述』はプロセスではない。記述されたプロセスが実施されたり、方法論が実際に使われて初めてプロセスとなる」そうです。


    そして、「『ソフトウェアプロセス』は、ソフトウェアとこれに関連する成果物(プロジェクト計画、設計文書、ソースコード、テストケース、ユーザマニュアルなど)を開発、保守するための活動、方法論、プラクティス、およびインプットからアウトプットを生産すること」であり、「効果的なソフトウェアプロセスというものは、人材、ツール、方法が三位一体となっている」そうです。

    CMMI

    次にCMMIのほうを見てみましょう。
    公式コースのIntroduction to CMMIワークブックにプロセスが定義されています。

    [Definition of Process]

    Process: a set of practices performed to achieve a given purpose.May include tools, methods, materials, and/or people.
    (与えられた目的を達成するために行われたプラクティスのセット。ツール、方法、材料、および/または人々を含み得る)

    CMMでは「sequence of steps」で、CMMIでは「set of practices」となっています。ちょっと変わりました。

    While process is often described as a leg of the process-people-technology triad, it may also be considered the "glue" that unifies the other aspects.
    (プロセスがしばしばプロセス-人々-テクノロジーの三つの脚と述べられるが、それは、また、他の面を統合する「接着剤」と考えられるかもしれません。)

                   人々
                   □
                  / \
                 /   \
            ◯   /     \
     虫眼鏡の → ∥  □―――――――□
       つもり   プロセス    テクノロジー


    CMMIでは、プロセスを次のように定義しています。

    プロセス
    CMMI成果物一式の中で使用されている場合、『プロセス』は、CMMIモデルにおけるプラクティスの実装として認められる活動から成る。これらの活動は、CMMIプロセス領域の一つ以上のプラクティスにマッピングできる。このことにより、モデルは、プロセス改善およびプロセス評定にとって有用なものとなる。

    まとめ

    以上をまとめると、こんな感じです。


             人々
             □←脚
       脚    / \
       ↓   /   \
    ┌─プロセス─┐    ▲←接着剤のプロセス
    │  方法  │     \
    │   ○   │      \
    │  / \  ├───────□テクノロジー
    │ ○―――○ │       ↑
    │人々 ツール│       脚
    └────↑─┘
        CMMIモデルにおけるプラクティスの実装として認められる活動たち


    えェェ~! そうなのか~???

    参考文献

    ・『ソフトウェア能力成熟モデル1.1版(CMU/SEI-93-TR-24 公式日本語版)』ソフトウェア技術者協会
    ・『成功するソフトウェア開発-CMMによるガイドライン』オーム社出版局
    ・『The Capability Maturity Model -Guidelines for Improving the Software Process』ADDISON-WESLEY
    ・『Introduction to the Capability Maturity Model』SEI
    ・『Introduction to the Capability Maturity Model-Integrated』SEI
    ・『能力成熟度モデル統合(CMMI),1.1版』SEI
    ・『Capability Maturity Model Integration(CMMI),Version 1.1』SEI