スレッド型システム開発とは
システム開発方法の変遷


■コンピュータシステムを開発するためには様々なやり方があります。
最近は少なくなりましたが,以前はシステム開発イコールプログラム開発という考え方の経営者の方も見受けられました。システム開発の中でプログラム開発は一部分に過ぎず,年をおうごとに,その比率は下がってきています。

ウォーターフォール型開発(80年代)
 80年代メインフレームと呼ばれる大型のコンピュータを使っていたころ,システム開発のなかでプログラム開発は,全体工数の6割以上を占めていました。このころのシステムは,ウォーターフォール型と呼ばれる手順で制作されていました。
要件分析→基本設計→詳細設計→開発→テスト→リリースという手順を踏む開発方法です。ウォーターフォール型システム開発は,上流である要件分析がうまく間違いなくできていると,すばらしいシステムができあがりますが,ここを間違えると,システム変更は大変なものになってしまいます。

スパイラル型の開発(90年代)
 90年代になって,クライアントサーバー型のシステムが主流になり,開発言語もCOBOLなどの記述型言語からグラフィカルなものになり短期間での開発が可能になると,ウォーターフォール型の一発勝負にかけるリスクを回避するために,プロトタイピングとか,スパイラル型の開発ということが実現できました。これは,プロジェクトの中で核になるような部分を試しに作ってみて,動いた結果で判断するというものです。スパイラル型を成功させるためには,少数精鋭主義が必須です。つまり開発者自身が分析から設計まで出来なければうまくいかず,現実にはそれほど優秀な人材をそろえられないため,あまり現実的な方法ではありませんでした。さらには,スパイラル型にはテストや品質面で致命的な欠陥がありました。
スレッド型の開発(00年代)
 さらに最近は,これを発展させたスレッド型のシステム開発というものが主流になりつつあります。最近の経営サイドから見たシステム開発に対する要求のうちで一番強いものは納期です。三日遅れの古新聞は必要ないということで,数ヶ月から,長くて半年で結果(すなわち効果)がでるようなシステム開発です。短期間で出た効果を見極めて次のステップを決めていくというアプローチです。このアプローチをスレッド型システム開発と呼びます。スレッド型の開発は,経営的な観点からは,システム開発投資という大きなリスク要素を最小にできるというメリットがありますが,開発サイドにとっては,もっとも現実的でない方法論です。

 プロジェクトの失敗例を見ていると,プロジェクト管理や,スペック変更など様々な要因がありますが,上流工程しかも,最上流に近い部分,すなわち経営目標からの戦略展開・戦術展開・問題分析・リスク分析などをおろそかにしているか,不十分であることが多いと思います。



■スレッド型のシステム開発とは・・・
スレッド型システム開発は,ウォーターフォール型のような一発勝負のリスクも回避でき,スパイラル型のような,優秀なプログラマ集団を確保できないとか品質面での問題などといった両方の欠点をクリアするものです。もともとオブジェクト指向という考え方のなかから出てきた考え方です。簡単に言えば大規模なシステムをビジネス的に意味のある小さい単位に区切り,その分割した単位でウォーターフォール型のように開発〜テストを小刻みに行うというものです。  スレッド型開発は,プロトタイプ型開発のように「システム機能の評価」をするためのモックアップのようなものではありません。十分にテストされたシステムです。ただし,その範囲は小さいものになります。経営者にとっては,プロトタイピングのようにシステムを見えるようにして,経営的な判断の手助けにするというものではなく,リリースしたシステムの効果自体を評価します。システム的に万全のものでも,効果が出なければ,別の方策を考えられるのです。効果があれば,次にそのシステムの別スレッドのリリースを承認します。

■ポイント1:スレッド型開発に適した要件定義が必要
 スレッド型システム開発は,システムの効果を検討し評価しようと言うものです。従って,システム開発での第一のポイントは,やはり効果のでるあるいは出やすい部分をスレッドにするということです。プロトタイピングと違い,リリースした範囲の中できちんと動いてかつ,ビジネスとして意味がある=効果がある。ものを常に優先してスレッドとして選択する必要があります。

 従って,要件定義やドメイン分析などは,きちんと行う必要があります。プロトタイピングは,ともすると要件定義プロセスの一環として,完成イメージを作ってみようというところにポイントがおかれがちでしたが,
スレッド型開発は,システムが生み出す効果にフォーカスしています。従って,開発するスレッドが全体のシステムの中でどの問題を解決できるのかを見極めてから開発しないと,リリースされたスレッドは,動いているものの経営になんのメリットもださないということになってしまいます。
このようなことを防ぐには,スレッド型に適した効果優先の要件定義をきちっと行う必要があります。

■ポイント2:全体を舵取りするプロジェクトマネージャが必要
スレッド型システム開発のポイント2つめは,これら全体をマネージするプロジェクト管理をうまくやることです。このようなシステム開発の方法がうまくいくかどうかはプロジェクトマネージャの腕にかかっているといっても過言ではありません。
スパイラル型アプローチの成功要因が優秀な人材を何人も確保するということであったのに対して,スレッド型開発は,優秀なプロジェクトマネージャさえ確保すればあとは,一般的なスキルのプログラマやテスタがいればすむということです。
 当然スケジュール貫徹型の伝統的なプロジェクト管理手法ではこのような開発のプロジェクトはうまく進行しません。リソースを確保したり,稲妻線をひいているだけでは,柔軟に対応が出来ないばかりでなく,リリースしたシステムの効果が出ないという結果にもなってしまいます。
つねに,経営サイドと開発サイド両者の橋渡しをし,予想されるリスクに対してアンテナを張り,リスクをリスクのまま消し去り,それがトラブルに育つことを阻止できるプロジェクトマネージャが必要です。