無料ブログはココログ

« [#TiDD] チケット駆動開発の事例を集めたい | トップページ | [#TiDD] プロセスプログラミング2 - ウォーターフォールとアジャイル - »

[#TiDD] プロセスプログラミング1 - ソフトウェアプロセスもソフトウェアである -

プロセスプログラミングという言葉をご存知の方は少ないかもしれませんが、4半世紀も前に生まれたこの言葉は、その後のソフトウェア工学を大きく発展させました。すでに死語となった感もあるプロセスプログラミングという言葉ですが、原点回帰すると見えてくるものもあるものです。そこで、プロセスプログラミングの観点で、今あるプロセスの議論を考えてみたいと思います。

ソフトウェアプロセスの議論は1980年代半ばに、ソフトウェアプロセス国際ワークショップ(IWSP)を中心に議論されていました。ハンフリー氏のプロセス成熟度の話や、ベーム氏のスパイラルモデルも議論されていました。見聞きした話では「旅行は想定外のことが楽しいよね」とか「ウォータフォールを繰り返すスパイラルはフラワーモデルと呼んだ方が良い」などという議論もあったようです。

そのような中で最もインパクトのあったのはオスターワイル(Leon J. Osterweil)氏のプロセスプログラミングです。氏の

Software Processes are Software, Too
(ソフトウェアプロセスもソフトウェアである)

という言葉はソフトウェア工学に大きな衝撃を与えました。そして第9回ICSE(ソフトウェア工学交際会議)で発表された論文は、後に最も影響を及ぼした論文として表彰されました。

プロセスプログラミングは2つの流れを生みました。一つはプロセスのインスタンスともいうべき実世界のプロセスのモデリングによって、表現し、伝え、議論し、実行支援や自動実行する、というプロセスモデリングの流れ。もう一つはプロセスのクラスともいえる標準プロセスの流れです。

プロセスモデリングでは、複雑なプロセスをどのように記述するかが注目されました。ソフトウェア開発のプロセスは、予期せぬ事態により、あるプロセスから別のプロセス群が生まれたり、別のプロセスに変質することがあります。このようなプロセスの動的な変化をどのように記述するか、共通例題が作られペトリネットのように図的なものを含めて多くの言語が提案されました。

一方の標準プロセスの流れは、成果物を中心とした標準化から、組織プロセスの成熟度を考慮したものに発展しました。当時はコーディングルールや仕様書の体裁に見られるような成果物の標準化が多く行われていました。そこにソフトウェア工学の技術が組み込まれ、CMM/CMMIのような組織プロセスの成熟度を考慮したものに発展しました。

CMMIの元になったCMMは、段階モデルが特徴ですが、SEPGにプロセスプログラミングの影響を見ることができます。CMMの段階モデルは、開発組織の成熟度ランキングから、ソフトウェア工学の技術を組織の成長すべきと思われた順にならべたものです。そのような組織の標準プロセスを構築し、技術を導入しつつプロセスを改善するのがSEPG(Software Engineering Process Group)です。言うならばプロセスプログラミングと保守によって、標準プロセスを進化させることが仕事です。

このように、プロセスプログラミングはソフトウェア工学の世界に大きな影響を及ぼしました。しかし、その中心はプロセスのクラスともいうべき標準プロセスでした。この歴史を考えると、現在のソフトウェア開発に必要なものが見えてきます。

以降、プロセスプログラミングの観点から、ウォーターフォールとアジャイルファシリテーションチケット駆動開発について考えてみたいと思います。

このエントリーをはてなブックマークに追加


« [#TiDD] チケット駆動開発の事例を集めたい | トップページ | [#TiDD] プロセスプログラミング2 - ウォーターフォールとアジャイル - »

ソフトウェア」カテゴリの記事

チケット駆動開発」カテゴリの記事

プログラミング」カテゴリの記事

私のアジャイル」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/138594/51406844

この記事へのトラックバック一覧です: [#TiDD] プロセスプログラミング1 - ソフトウェアプロセスもソフトウェアである -:

« [#TiDD] チケット駆動開発の事例を集めたい | トップページ | [#TiDD] プロセスプログラミング2 - ウォーターフォールとアジャイル - »