Part2では,ソフトウエア・エンジニアリングの「知識体系」(BOK=Body Of Knowledge)について解説する。主要な知識体系としては,SWECCのSWEBOKガイド(正確には「Guide to the SWEBOK」)のほか,著名な研究者であるロジャー・プレスマン氏やイアン・ソマビル氏,シャリ・プリーガー氏,河村一樹氏などが書籍としてまとたものがある。これらの書籍を構成する「章」や「節」が,知識を整理・分類した結果,すなわち知識体系を表している。

SWEBOKがデファクトへ

 ソフトウエア・エンジニアリングの知識体系の内容に話を進めよう。もう一度整理すると,ソフトウエア・エンジニアリングでは,ソフトウエアの開発・保守に関する様々な理論や方法を「知識」として整理・分類し,これを「知識体系」(BOK=Body Of Knowledge)としてまとめる。知識とすべき理論や方法を,様々なベストプラクティスから抽出したり,知識体系に沿って整理・分類する研究活動は,前述したSWECCなどの団体や著名な研究者,ITエンジニアなどが行っている。

 主要な知識体系は,書籍として出版されている。SWECCのSWEBOKガイド(正確には「Guide to the SWEBOK」)はその1つである。SWEBOKガイドのほか,著名な研究者であるロジャー・プレスマン氏やイアン・ソマビル氏,シャリ・プリーガー氏,河村一樹氏(東京国際大学教授)が著した書籍を表1に示した。これらの書籍を構成する「章」や「節」が,知識を整理・分類した結果,すなわち知識体系を表していると考えてよい。

表1●ソフトウエア・エンジニアリングの知識体系に関する代表的な書籍<br>このほか「ソフトウェア工学大事典」(朝倉書店)もソフトウエア・エンジニアリングに関する大著として知られている。
表1●ソフトウエア・エンジニアリングの知識体系に関する代表的な書籍
このほか「ソフトウェア工学大事典」(朝倉書店)もソフトウエア・エンジニアリングに関する大著として知られている。
[画像のクリックで拡大表示]

 このうちSWEBOKガイドは,その内容を検討するSWECCの委員会のメンバーに,前述のプレスマン氏やソマビル氏といった著名な研究者が加わっており,ソフトウエア・エンジニアリングに関する知識体系のデファクト・スタンダードになろうとしている。

 ただし,SWEBOKガイドで注意して欲しいのは,知識(ソフトウエア開発・保守の理論や方法)そのものについてはほとんど解説していない,ということだ。詳しい解説が記述された書籍を参考文献として,章や節ごとに紹介するにとどめている。これに対して,プレスマン氏,ソマビル氏,プリーガー氏,河村氏の4冊は,知識そのものについての基本的な解説も記述している。これらは大学の授業でテキストとして使われており,内容も分かりやすい。

 実務経験を通じてソフトウエア開発・保守に関する知識をある程度持っている人は,SWEBOKガイドと,その参考文献に挑戦して欲しい。逆に,実務経験が数年以内と浅く,「基本的な理論や方法を一通り勉強したい」という人には,プレスマン氏らの書籍をお勧めする。

 参考までに,後者の4冊を内容の簡単な順に並べると,河村氏の「ソフトウェア工学入門」(近代科学社),プリーガー氏の「ソフトウェア工学 理論と実践」(ピアソン・エデュケーション),プレスマン氏の「実践ソフトウェアエンジニアリング」(日科技連出版),ソマビル氏の「Software Engineering」(アジソン・ウェスレイ)となる。どれでも1冊でよいから通読し,自分の専門分野についてはできる限り参考文献にも当たると良い。

4階層の樹形図で知識を整理

 SWEBOKガイドを例にとって,知識体系のより具体的なイメージをつかんでいただこう。図1に知識体系の全体像を表した。

図1●SWECCが「SWEBOKガイド」で定義した知識の分類*<br>IEEEが母体の団体「SWECC(SoftWare Engineering Coordinating Committee)」が策定し,「Guide to the Software Engineering Body of Knowledge」(SWEBOKガイド)として刊行している。
図1●SWECCが「SWEBOKガイド」で定義した知識の分類*
IEEEが母体の団体「SWECC(SoftWare Engineering Coordinating Committee)」が策定し,「Guide to the Software Engineering Body of Knowledge」(SWEBOKガイド)として刊行している。
[画像のクリックで拡大表示]

 最上位の大項目は10個あり,2つのグループに大別できる。1つはソフトウエア開発・保守の工程に沿った知識で,「ソフトウエア要求」,「ソフトウエア設計」,「ソフトウエア構築」,「ソフトウエア・テスティング」,「ソフトウエア保守」の5個。もう1つは開発・保守のどの工程にもかかわる横断的な知識で,「ソフトウエア構成管理」,「ソフトウエア・エンジニアリング・マネジメント」,「ソフトウエア・エンジニアリング・プロセス」,「ソフトウエア・エンジニアリングのためのツールおよび手法」,「ソフトウエア品質」の5個である。

 このうちソフトウエア・エンジニアリング・マネジメントとソフトウエア・エンジニアリング・プロセスについては,説明が必要だろう。前者は,ソフトウエア・エンジニアリングという活動そのものの効果を上げるために,計画を立てて実行し,その状況を監視してやり方を改善することである。後者は,開発・保守の工程全体の改善活動を意味する。