その他の必要条件

 ここまで述べてきた「能力」は、「Good Enough」の扉を開けるための「キー」を手に入れる条件でもあり、これらは全て「CMM」のレベル1から2へのステップ・アップの主要な取り組みのテーマでもあるのです。そこでの主要な取り組みのテーマは6つ提案されていますが、その中でも、

  要求管理

  プロジェクトの計画

  プロジェクトの追跡と監視

が、中心となります。

 もちろん、これだけでは「Good Enough」の扉は開きません。しかしながら、上に紹介したような形で「CMM」によるステップ・アップに取り組むことで、結果として「Good Enough」の扉に近づくことは出来ます。とは言っても、「CMM」に関係する能力は、その考え方を学習しただけでは殆ど役に立ちません。これらは全て「習慣」のものであって、日常的に行動が出来なければ、実際には何の力にもならないのです。それだけに、少しでも早く着手しておく必要があります。

 また、別の必要条件として、適切な「分析・設計手法」の修得が必要になりますが、これは「CMM」のいうレベル1の約束できない渾沌とした組織においては、組織的にこれに取り組むことは、実は殆ど困難なことなのです。もちろん、個人的にはそれらに取り組むことはできますが、それには、高い能力と強い意思力が求められます。そして、そのような人が、自らの努力で「分析・設計手法」をある程度修得したとしても、それを組織に広げることは簡単には出来ないでしょう。

したがって、今すぐにでも、レベル1から2に引き上げる為の取り組みに着手しておかなければ、この後の幾つかの取り組みに支障を来すことになります。

 以下に、「Good Enough」の扉を開けるための、「CMM」とは別の要件について幾つか説明します。

 James Bach や Edward Yourdon は、どちらかというと、「CMM」の観点よりは、この後に述べる条件の観点から、「Good Enough」に到達するための必要条件について述べています。それでも、「実用主義的戦略」や「ダイナミックなアプローチ」という論点は、「CMM」の観点から捉えることが出来ますし、そのほうが、説明しやすいのと、それらを支援する幾つかのアプローチも「CMM」にはあるのです。実際、Bach や Yourdon が、いくら「実用主義的戦略」とか「ダイナミック・・」を論じても、それを確実に支援するのは、「1日の遅れを、その日に検出する」ことの出来る「詳細スケジューリング」や、その前提となる「ユニークな番号の付いた要求仕様」を作成するスキルであり、それらは「CMM」を取り巻く一連のノウハウに属するものです。そのような「CMM」の背景があって、その上で有効な分析・設計手法や、開発方法論が活きてくるのです。



 分析・設計手法

 「Good Enough」の実現に適切な分析・設計手法は必要としないのかというと、決してそうではありません。Bach の言う「協調性の高いチーム」を支えるために、メンバー全員が分析能力を持っていることや、共通の表記法を持っていることなどが必要です。もちろん、それによって適切なレビューも実現するでしょう。「Clean Room 手法」で求められるほどの厳密なレビュー能力はなくても、Yourdon の言う「ウォークスルー」で求められているようなレビュー能力がなくては、問題の発見が遅れてしまい、スケジュール通りに開発作業を進めていくことは難しいでしょう。

 チームのメンバーが、統一した分析・設計手法に通じていることによって、隠れた問題を早く発見することが出来ます。通常、設計者の自由気ままなドキュメントの場合、何処に何が書かれているかというところで、引っ掛かってしまいます。当人は、然るべき「場所」に書いたと思っても、別の人は、同じ項目を違うところに書く可能性があります。そうなると、設計書をレビューするにも、然るべき所に掛かれていないと言うだけで、「欠陥」として指摘することは出来なくなり、この種の曖昧さが、設計者の「甘さ」を見逃す原因となってしまいます。

 適切な分析・設計手法は、それ自身設計者が、それ以降の作業を進める為のツールです。これによって初期の分析作業を円滑に進めることができるでしょう。しかしながら、この種の手法は同時に、統一した表記法を提供するものでもあります。そして、“チーム”に於ては、この共通の表記法を提供してくれることにも意味があるのです。明らかに、チームが一つの表現を持っているということは、「Good Enough」への階段を一歩進めることになります。

 手法としては、構造化手法でもオブジェクト指向でも構いませんが、何れにしてもレベルの高い状態で修得することが大事であり、それに従って使用することです。決して勝手に解釈を曲げてはいけません。そのような誘惑に駆られるときは、一般に、手法の理解が不足していたり、不十分なときです。

 ただ、厄介なのは、レベル1の組織にあっては、組織単位でこの種の手法を活用できる程度に修得することは非常な困難を伴うということです。この見地からも「Good Enough」は、本来はレベル2以上(出来ればレベル3以上)の組織のテーマであると云えるのです。

  (インデックスに戻るときはウィンドウをクローズしてください)


 開発方法の問題

 もう一つ、「Good Enough」にとって重要な要件は、開発の「ライフサイクル・モデル」と呼ばれるものです。如何にして危険の度合いを小さくするかという姿勢は、「約束」を実現するためには必要な姿勢です。そのために有効なモデルとして、例えば「インクリメンタル」という開発方法があります。これは、「Clean Room 手法」などでも前提として使用されているようですが、必ずしも、「Clean Room 手法」の専用というわけではありません。

 今までのような「ウォーター・フォール」や、それの変形である「V字モデル」では、「約束」の実現に危険を伴います。これにたいして、「インクリメンタル」モデルを採用して危険を分散して、確実に要求を実現していく方法が有効です。

 実現の危険の高い要求や、システムの基礎となる重要な要求を優先的に最初のフェーズで開発することで 、約束に対する危険を小さくすることが出来ます。もちろん、この方法は、単にフェーズを分けて、それぞれのフェーズに要求を振り分けるだけではありません。それでは、後のフェーズでの要求の実現に際して、前のフェーズで実現したモジュールを書き換える危険が高くなります。

 「インクリメンタル」開発は、単に「ウォーター・フォール」式の開発作業を幾つかに分割しただけではありません。最初のフェーズでは、すでに「全体」の設計が終わっていなければなりません。そして全体の設計が既に終わっていることで、予測が外れる結果が出ても、そのために変更しなければならない部分の判断が容易に出来るのです。

これが、単に長い作業を3つに分割しただけで、そこでパフォーマンスなどで期待外れの結果が出てしまうと、結局、1から設計し直しになります。もちろん、この事は「程度」の問題であり、たとえ「インクリメンタル」開発を選択したとしても、最初の設計を根底から覆すことになる可能背もありますが、もし、そのような危険があるのなら、別にパイロット・プロジェクトを組んで、問題を事前に解消しておくべきでしょう。

 何れにしても、有効な開発モデルを選択し、それに沿って作業を進める能力は、「Good Enough」に必要なのです。

  (インデックスに戻るときはウィンドウをクローズしてください)


 優れたリーダー

 「CMM」への取り組みそのものも、明確なリーダーシップが求められます。新しい取り組みは、その必要性が分かっていても、常に二の足を踏むものです。それに、いままで述べてきたように、「Good Enough」を目指そうというからには、「リスク管理能力」や「戦術の変更能力」が求められます。

 戦術の変更は、チームのメンバーに動揺を与えますので、リーダーは自分の考えを分かりやすく示して、動揺や不安を押さえなければなりません。リスク管理能力は、問題を早期に検出することで、戦術の変更をやり易くします。

 これに対して、戦術の変更能力は、状況に応じてどのような戦術が考えられるか、その知識の豊富さが求められます。いわば商品の品揃えに相当するもので、簡単に仕入れることは出来ません。また、オブジェクト指向のような一つの手法が、万能の方策を提供してくれることもありません。

 オブジェクト指向のような手法は、それを習得していることで戦い方の幾つかの形を提供してくれますが、実際に「教科書」の通りに戦えることは稀で、殆どの場合、そこで習った幾つかの「戦法」は十分には使えないものです。例えば、ここは戦車で攻めるものとして習ったが、実際には天候の不順が予定外に続き、戦車が使えないという場面に直面して、戦術の変更が迫られる分けです。

 もちろん、その結果として、当初に目論んでいたような形での「勝利」にはならないかも知れませんが、悪くても、後の戦いがやり易くしたり、総合的には勝利と認められるような結果には導くことが出来なければなりません。それだけに、リーダーには正しい意味での経験が必要になります。もちろん、この経験は、ある程度は「学習」することが出来ますし、そうでないと優れたリーダーに育つのに時間がかかり過ぎます。

 Bach や Yourdon は、ここで「協調能力の高いチーム」を条件として挙げています。目標に向かって協同で作業をするという意識の高いチームでなければ、一人のメンバーの失敗を吸収できず、納期の遅れなどの形で表に出てしまい、「Good Enough」が曲げられて使われてしまいます。このようなことにならない「協調能力の高いチーム」であるためには、単に「技術」に秀でているというだけでは実現しません。仕事や競争、チーム、個性、あるいは適者生存や救済の原則といったところに高い倫理観が求められます。そして、そのためにも優れたリーダーが必要になるのです。

 また、チームに“これぐらいでいいだろう”とか、“少しぐらい分からないだろう”といった「甘え」があると、「Good Enough」に到達することは出来ないでしょう。したがって「プロ」の集団としての使命感が求められます。

 このようなチームは、技術的には「CMM」で支えられたチームということも出来ます。実際、チームとしてオブジェクト指向などの分析・設計手法を手に入れるためには、それらをチームで修得するために「時間」を確保できなければなりません。それには「約束」出来る状態であることが条件になってきます。

  (インデックスに戻るときはウィンドウをクローズしてください)


 組織の支援

 これまで述べてきたようなことを実現するためには「組織」の支援も欠かせません。実際、ここに挙げた「CMM」への取り組みや、開発方法の選択、協調意識の高いチーム作りなど、一人の“優れたリーダー”の善意に基づく行為だけでは、とても実現するものではありません。特に、「CMM」に取り組むとなると、数年の時間が必要であり、関係者のトレーニングなどを考えても、コンサルタントなど適切な支援がなくては実現しないことは言うまでもありません。

 組織の責任あるマネージャーは、「CMM」の目指すものを理解しその上で、人的・資金的な支援を考えて欲しいものです。「Good Enough」への道は、これまでのように「力任せ」で到達することはありえないのです。今までのように尻を叩いて実現することはないのです。

 そうして、「CMM」を確実に推進出来るリーダーを確保することが必要です。わが国では、アメリカと違って、「CMM」の出来る人を何処かから連れてくるということは、今の時点では難しい状況で、結局、自社内で育成するしかありません。そうなると、恐らく数年の時間がかかってしまうでしょうが、それを選択するしかないのが実情で、責任あるマネージャーは、この覚悟と行動が必要です。

  (インデックスに戻るときはウィンドウをクローズしてください)