KAOS (19) ソフトウェアプロジェクトのタイプ(1.1.8)

異なった種類のプロジェクトがある.[…]  1.1.6 で議論したREプロセスに手を加えることが必要になるかもしれない (p. 40)

ここでは,幾つかのプロジェクト種類を定義している.ソフトウェアプロセスの観点からは,大変に興味深い箇所である.

新規開発プロジェクトと再開発プロジェクト 1

新規開発プロジェクトでは,全く新しいソフトウェアが作られる.このとき,現状システムの問題を調べ,技術進化や市場の状況を見て,新しい仕様が作られる.

再開発プロジェクトの場合,現状システムは,既にサービスを行っている.将来システムは,それらを統合し・向上し・適応し・拡張しなければならない.

これは,既存システムをムシできるか,或いは,既存システムと折り合いをつけながら開発を進めるかという違いになる.更なる発展として,「通常設計」と「ラディカル設計」という概念が紹介されている 2.通常設計では,開発者は既存技術を向上し,或いは新しいやり方で既存技術を利用する.そうして,問題を解決する.一方,ラジカル設計では,まったく新しい技術を創造することになる.このとき,最初に要求仕様を作る人は,十分な記述ができるのだろうか(例えば,17回でみた実現可能性は書きにくいものの一つに違いない).

特定顧客のためのプロジェクトと市場を対象にするプロジェクト

特定顧客のためのプロジェクトでは,具体的な必要性に応じて,開発を行う.市場を対象とするプロジェクトでは,対象の市場セグメントの潜在的な必要性に応じて,開発を行う.

組織内の開発とアウトソースによる開発

組織内の開発では,開発主体は,開発期間中,自組織である.一方でアウトソースによる開発の場合は,プロジェクトの要求が確定した後は,委託先によって開発を行う.

単一製品プロジェクトとプロダクトラインプロジェクト

単一製品プロジェクトでは,製品は特定の顧客のために作られる.プロダクトラインプロジェクトにおいては,複数の変種(variant)に対応できるよう開発を行う.このとき,製品は,特定のユーザクラス,特定のアイテムクラスに対応する.各変種間では,共通点と変異点(variation point)における差異がある.

ソフトウェアプロジェクトは,上記に示した次元のどこかの場所にいる.例えば,会議管理システムは,新規開発で・市場を対象として・組織内の開発であり・プロダクトラインプロジェクトである.

さて,「特定顧客のためのプロジェクトと市場を対象にするプロジェクト」を考えてみる.市場を対象にする場合,厳格な要求仕様書を書くことの意味は小さい.対象とするセグメントが期待していることは,所詮想像に過ぎない.そもそも,市場そのものが開発期間中に変化する.

「組織内の開発とアウトソースによる開発」も同様である.この両者で,要求仕様書という文書の重み付けは違う.組織内であれば,文書の変更も容易であり,文脈を共有することで,不必要な記述もある.一方で,アウトソースの場合は,明らかに異なる.不必要と思えることでも,異なる組織であれば,記載が必要なこともある.

従って,上記に示されるような次元を考慮した上で,適切な記述のレベルが,都度存在する.それを考えること(いわば設計すること)が重要であり,2者間取引に限定した方法を敷延するとか,特定顧客のための開発方法を,単純に強調するというのは,要求分析に限らず,意味がないことが分かる.

(nil)

Notes:

  1. 英語では,greenfield vs brownfieldプロジェクトとなっています.greenfieldとは緑の草が生えていて,これから新たに開発を待つというイメージです.一方で,brownfield は,かつては栄えたが今は寂れているくすんだ街という意味で使われることが多い.否定的な意味を持っています.従って,ここでは,緑色の場所 vs 茶色の場所といった視覚的で魅力的なタイトルは使わずに,単に新規開発と再開発としています
  2. What Engineers Know and How They Know It: Analytical Studies from Aeronautical History (Johns Hopkins Studies in the History of Technology)