software factory / ソフトウェア工場 / ソフトウェア生産工場
組織的ソフトウェア開発アプローチの1つで、ソフトウェア開発に関する手順、手法、ツールを標準化してノウハウや知識、成果物の蓄積と再利用を促進し、厳格な工程管理・品質管理を適用することで、ソフトウェア開発の生産性と品質を向上することを目指すコンセプトのこと。また、このアプローチを具体化するための開発環境、あるいは設備や組織体制をいう。
コンピュータソフトウェアは開発者の論理思考と創造性から生み出される知的創作物だが、大規模ソフトウェアを部分ごとに分担開発する場合や組み込みソフトウェアのように多数のバリエーションを繰り返し開発する場合、納期や品質などの問題から属人的・職人的手法は適当ではない。統制や規律のない手工業的な仕事の進め方を脱し、同種製品の継続的再生産(大量生産)を行う“工場”をモデルに形成されてきたソフトウェア開発アプローチが「ソフトウェアファクトリ」である。
ソフトウェアファクトリの定義や具体的取り組みは一様ではないが、ソフトウェア開発に必要な技術・知識・設備・人員を集約して利用効率を高め、工程・作業・ツールを標準化して非熟練作業者の戦力化を図るとともに、厳密な工程管理と品質保証・品質管理を適用して品質を維持するというのが一般的なアプローチである。
「ソフトウェアファクトリ」という言葉を最初に使ったのは、米国GE(ゼネラルエレクトリック)に所属していたロバート・W・バーマー(Robert William Bemer)だとされる。バーマーはプログラマごとの生産性のばらつきを抑えるため、標準ツールやコンピュータベースのインターフェイス、予算や組織を管理する履歴データベースなどからなる環境(コンピュータ内に構築される)――ソフトウェアファクトリを用意すべきことを世界コンピュータ会議(1965年)やNATOソフトウェアエンジニアリング・カンファレンス(1968年)で提案した。また、NATOソフトウェアエンジニアリング・カンファレンスでは、米AT&Tのベル研究所のM・ダグラス・マキルロイ(M. Douglas McIlroy)がソフトウェア部品の組み合わせによってソフトウェアを開発する方法を提唱し、その環境を「コンポーネントファクトリー」と呼んでいる。
1969年には日立製作所がソフトウェア開発専門の事業所を設置し、「ソフトウェア工場」と名付けている(英語ではSoftware Works)。日立では工場を組織上の基本単位としていたことからの命名だとされる。1970年〜1980年代には日本電気(NEC)、東芝、富士通などがソフトウェア専門事業所を置き、開発プロセスの分析から手法の標準化、要員教育プログラムの導入、各種支援ツールの開発、オンライン端末の利用、品質管理の推進など、工程・ツール・組織・管理方法などを順次進化させていった。米国企業でも1970年代に同様の取り組みが見られたが、一部を除いて長続きしなかった。
日本企業の取り組みは、1980年代にマサチューセッツ工科大学(MIT)スローンスクール教授のマイケル・A・クスマノ(Michael A. Cusumano)が研究を行い、『Japan's Software Factories』(1991年)などで報告した。これによると日本のソフトウェアファクトリ・アプローチは米国の手法(職人芸型)に比べて、生産性は58%以上、品質水準は2倍以上、ソフトウェア再利用度は1.8倍良かったという。ただし、独創的なソフトウェアを開発するには米国型が適しているとも指摘している。
1990年代初頭には、クスマノのレポートを通じて日本型ファクトリ・アプローチは米国でも注目されたが、ちょうどこのころからオープン化とダウンサイジングが進展して開発言語・開発基盤・開発手法が多様化し、「標準化による生産性・品質の向上」が難しくなったことから、ソフトウェアファクトリは“古い方法”と看做されるようになっていく。
しかし、2000年代になるとオープン系技術・方法論も安定・収斂化してきた。モデル駆動系の手法で汎用モデリング言語で一品物のモデルを記述する方法に替えて、問題領域を特定してモデルの再利用を図る「フィーチャ指向アプローチ」が登場すると、知的資産を重視するソフトウェアファクトリ・アプローチに再び注目が集まるようになった。
米国マイクロソフトは2004年、新たな開発環境技術として「Software Factories」を発表している。これは特定分野ごとにプロダクトライン(Factoryスキーマ)を定義して開発環境(Factoryテンプレート)を構築し、そのうえでモデル駆動開発を行うというもの。プロダクトラインとは製造業でいう製品系列のことで、製品系列ごとに専用の製造ラインが構成されるように、分野ごとにFactoryスキーマを定義して複数プロジェクトで再利用可能な資産を用意することで、開発生産性を高めるという考え方である。マイクロソフトでは、Software FactoriesをMDAを包含・拡張するものと位置付けているが、モデリングは汎用言語のUMLではなく特定分野ごとに用意されるモデリング言語、DSL(Domain Specific Languages)を使う。
また京都高度技術研究所の松本吉弘は、2005年に「セル方式ソフトウェアファクトリ構想」をまとめている。これはソフト開発会社などが開発・保守するソフトウェアの適用目的領域を特定し、そこで獲得される知識・スキル・経験・固定/可変ソフトウェア資産・ツールを利用して、開発者(チーム)ごとにソフトウェア生産セルを構成し、それらが連携しながらソフトウェア開発を進める開発モデルである。
▼『ソフトウエア工場――見えない工業製品の生産と労働』 下田博次=著/東洋経済新報社/1986年4月
▼『日本のソフトウェア戦略――アメリカ式経営への挑戦』 マイケル・A・クスマノ=著/富沢宏之、藤井留美=訳/三田出版会/1993年2月(『Japan's Software Factories: A Challenge to U.S. Management』の邦訳)
▼『ソフトウエア企業の競争戦略』 マイケル・A・クスマノ=著/サイコム・インターナショナル=監訳/ダイヤモンド社/2004年12月(『The Business of Software: What Every Manager, Programmer, and Entrepreneur Must Know to Thrive and Survive in Good Times and Bad』の邦訳)
▼『ソフトウェアファクトリー――パターン、モデル、フレームワーク、ツールによるアプリケーションの組み立て』 ジャック・グリーンフィールド、スティーブ・クック、キース・ショート、スチュアート・ケント=著/野村一行=訳/マイクロソフト=監修/日経BPソフトプレス/2005年12月(『Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools』の邦訳)
▼「最近のソフトウェアファクトリ論」 松本吉弘=著/『SEC journal』 2006年9月(通巻7号)
Copyright © ITmedia, Inc. All Rights Reserved.