ソフトウェアプロセス(そふとうぇあぷろせす)情報システム用語事典

software process

» 2011年09月09日 00時00分 公開

 ソフトウェア開発や保守などの業務を構成する一連の作業のこと。作業ごとに機能と成果物が決められ、作業間相互には階層構造と順序関係が定められる。

 ソフトウェアのプロダクトやサービスというアウトプットが存在しているとき、それを作成・提供する作業の過程が必ず存在した/するはずである。ソフトウェアプロセスの第一義は、こうした“実行される業務プロセス”をいう。

 しかし、ソフトウェアという複雑なプロダクトは計画や統制なしに開発・運用できない。ソフトウェア業務の現場でいうソフトウェアプロセスは、作業者に対する計画や統制――すなわち、ソフトウェア業務をどのように進めていくかに関する“取り決め”のことである。一般にそのソフトウェア組織で実施する作業群とその実行順序、各作業の内容やプラクティス、規約、ガイドライン、そして成果物などが定められる。

 特にソフトウェア開発は1回限りのプロジェクトとして行われるので、プロジェクトごとに“開発プロセス”を設計することになる。ソフトウェア開発会社などでは毎回ゼロから開発プロセスを作るのは非効率なので、基本となる標準プロセスを用意しておき、それを修正利用する(※)。また、ソフトウェアプロセスは最終成果物に応じて必要な作業を事前に定めるものなので、工数や要員、費用の(大まかな)見積もりに役立つ。

※ 明文化されたソフトウェアプロセスが存在せず、暗黙知で運用されている現場も多い

プロセスの特性

プロセス(=工程、処理)とは、一般にインプットをアウトプットに変換する過程と定義される。ソフトウェアプロセスも同様で「要求仕様を設計書に」「設計書をソースコードに」「変更要求を修正済みソフトウェアに」変換するといった機能を持つ。“取り決め”として、機能(処理)や成果物(アウトプット)を決めるのは重要である。

また(業務の)プロセスは、一般に階層構造を持つ。例えば「要求定義」という作業には「制約条件の確認」「機能要求事項の洗い出し」「非機能要求事項の洗い出し」「要求の優先順位付け」「要求仕様書の作成」「要求仕様書の確認」などの小さな作業に分解できる。

さらにプロセスには、一般に相互の依存関係や順序関係が存在する。「仕様書やユーザーとのコミュニケーションなしにコードを書く」ことはできず、「プログラムの完成前に運用を始める」ことはできない。ただし、実世界の業務プロセスに比べてソフトウェアプロセスは順序に関する制約が弱い。

 ソフトウェアプロセスはソフトウェアの作り方そのものなので、その巧拙や適否は最終的なプロダクトやサービスの品質やプロジェクトの生産性に大きな影響を及ぼす。そのため、ソフトウェア組織やプロジェクトに適したやり方を確立する必要がある。“取り決め”としてのソフトウェアプロセスを策定する際の参考として、あるいは確立されたソフトウェアプロセスを評価・診断する際の基準として、さまざまな“ソフトウェアプロセスモデル”が提案されている。

 ソフトウェアプロセスモデルのうち、基本中の基本とみなされるのがウォーターフォール・モデルである。これをベースにソフトウェア業務を網羅・詳細化したISO/IEC 12207/JIS X 0160共通フレーム、プロセスの診断を行う基準としてCMMIやISO 15504が作られている。また、プロセス特性の類型を論じる際にはウォーターフォールとそのアンチテーゼである反復型開発アジャイル開発が対比される。

 ウォーターフォールは別名をソフトウェアライフサイクルというとおり、ソフトウェア業務の初めから終わりまでを示すモデルである。ソフトウェアプロセスの階層構造で最上位のレベルを示す。このレベルにおける目的の第一は、ソフトウェア業務にどのような要素があるのかを把握することにある。

 “実行”や“取り決め”としてのソフトウェアプロセスは、これよりもずっと下位の階層にある実作業のレベルで策定・実施される。ウォーターフォール型プロセスでは“取り決め”を事前の静的な計画として定義する傾向にあるが、アジャイル型プロセスではもっと動的なルール集のようなものになる場合がある。

 プロセス品質を向上するには作業順序を標準として定義するだけではなく、それが正しく実行されているか、品質や生産性などに影響があったかのを検証し、必要に応じてプロセスを修正する必要がある。その方法としてソフトウェアプロセス評価(SPA)、ソフトウェアプロセス改善(SPI)などがある。

 「動的なプロセスの定義や適用」「プロセス実行の記録や検証」を手作業で行うのは簡単・確実ではないが、IDEALMにはソフトウェアプロセスの一部自動化をサポートするものがある。

 ソフトウェアプロセスを形式化・自動化する構想は、1980年代後半に始まった「プロセスプログラミング」にも見られた。この研究の流れの中で数多くのプロセス記述言語が提案された。今日、ソフトウェアプロセスを記述する標準的な方法として、UMLベースのソフトウェアプロセス・メタモデル仕様のSPEM(Software Process Engineering Metamodel)が提案されている。

参考文献

▼『共通フレーム2007――経営者、業務部門が参画するシステム開発および取引のために』 情報処理推進機構 ソフトウェア・エンジニアリング・センター=編/オーム社/2007年10月

▼『ソフトウエアとしてのソフトウェア・プロセス」 レオン・J・オスターワイル=著/鯵坂恒夫=訳/情報処理学会/情報処理 28(9)1987年9月15日(「Software Processes Are Software Too」の邦訳)

▼『ソフトウェアプロセス成熟度の改善』 ワッツ・S・ハンフリー=著/藤野喜一=監訳/日本電気ソフトウェアプロセス研究会=訳/日科技連出版社/1991年9月(『Managing the Software Process』の邦訳)

▼『ソフトウェアプロセスのトレンド』 アルフォンゾ・フュジェッタ、アレキサンダー・ウルフ=編/岸田孝一=監修/坂本啓司、中小路久美代=監訳/鈴木孝弘、山本恭裕、高木徳生=訳/海文堂出版/1997年7月(『Software Process』の邦訳)

▼『ソフトウェアプロセス――プロセスと環境トラック』 井上克郎、松本健一、飯田元=著/共立出版/2000年3月

▼『反復型開発のエコノミクス――業績を改善するソフトウェアプロジェクト管理』 ウォーカー・ロイス、カート・ビットナー、マイク・ペロー=著/藤井拓=監訳/ピアソン・エデュケーション/2009年12月(『The Economics of Iterative Software Development: Steering Toward Better Business Results』の邦訳)


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ