企業情報システム開発に携わるすべてのITエンジニアが,ぜひ知っておきたいのが「ソフトウエア・エンジニアリング」である。ソフトウエア・エンジニアリングとは,ソフトウエアの開発や保守に関する理論,方法,ノウハウなどを体系化し,仕事の現場で活用できるようにする取り組みだ。Part1では,ソフトウエア・エンジニアリングの定義とともに,その歴史を解説しよう。

 銀行のオンライン・システムが停止,不具合の見つかった数十万台の携帯電話をメーカーが回収,航空管制システムの障害で運航がストップ――。ここ数年,ソフトウエアのバグに起因する事件の報道が目立つ。

 こうした事件が多発する背景には,ソフトウエアが企業情報システムはもとより,自動車や携帯電話,家電にまで入り込み,今や社会基盤の重要な要素になったことがある。特に企業情報システムは,ソフトウエアの複雑化・巨大化が急速に進行。同時に,品質や納期,コストへの要求が厳しさを増し,従来の開発・保守のやり方では対処し切れないケースが増えている。

 ITエンジニアが過去に身に付けた知識だけで何とかなる時代でないことは,日ごろから実感しているだろう。有用な知識を積極的に取り入れ,継続的にスキルを高めていかなければ,あっという間に取り残されてしまう。

 そこでぜひ知っておきたいのが「ソフトウエア・エンジニアリング」だ。ソフトウエア・エンジニアリングとは,ソフトウエアの開発や保守に関する理論,方法,ノウハウなどを体系化し,仕事の現場で活用できるようにする取り組みである。

 研究者やITエンジニアが書籍や論文などの形で著したソフトウエアに関する知識は膨大にある。それらの知識を整理・分類するソフトウエア・エンジニアリングを知ることで,ITエンジニアは必要な知識を習得して,仕事に活用できるようになる。

欧米では基本的な素養

 後述するようにソフトウエア・エンジニアリングの歴史は古いが,いま改めて注目を集めている。きっかけとなったのが,「SWEBOK(SoftWare Engineering Body Of Knowledge)」である。SWEBOKは,IEEE(米国電気電子学会)を母体とする団体「SWECC(SoftWare Engineering Coordinating Committee)」が策定した,ソフトウエアの開発・保守に関する知識体系の1つ。「SWEBOKガイド」と呼ぶ書籍として出版されており,これを使ってソフトウエア・エンジニアリングを学ぶITエンジニアが増えてきた。

 欧米ではソフトウエア・エンジニアリングを,ITエンジニアの基本的な素養と位置づけて,大学でみっちりと教えている。ところが日本では,大学教育や企業の社員教育で,ソフトウエア・エンジニアリングをあまり重視してこなかった。日本のソフト産業の競争力が低い原因の一端は,ここにあると筆者は考えている。

 こうした危機感から,経済産業省は2004年に,ソフトウエア・エンジニアリングの研究機関「ソフトウエア・エンジニアリング・センター(SEC)」を設立した。ソフトウエア産業の国際競争力強化の“切り札”として,ソフトウエア・エンジニアリングに大きな期待をかけているのだ。

“宝の山”を見過ごすな

 「アカデミックな理論や知識体系など,現場では役に立たない」と思う読者もいるかもしれない。だが,それはソフトウエア・エンジニアリングに対する誤解である。ソフトウエア・エンジニアリングがあくまでも実践的な知識を扱うものだということを理解していただくために,筆者の経験談を紹介しよう。

 筆者がソフトウエア・エンジニアリングを知ったのは,書店で何気なく手に取った書籍がきっかけだった。ちょうど銀行の第3次オンライン・システム開発プロジェクトが終わったところだったのだが,筆者が苦労したことが明確に説明されているのを見て愕然としたのを覚えている。モジュール分割や仕様の表記,テストケースの洗い出し,進ちょくの計測の方法などだ。

 プロジェクトでは,そうしたことを考えるために膨大な時間を費やした。しかも手探りなので,満足な答えに至らないことも多かった。「どうしてもっと早くソフトウエア・エンジニアリングを知っておかなかったのか」という後悔の念と同時に,“宝の山”を発見した思いで,さっそくソフトウエア・エンジニアリングに関する書籍を読みあさった。もちろん,書籍に書いてある通りにいかない場合も少なくなかったが,解決策を考えるうえで有用な指針になった。こうして身に付けたスキルが,ITエンジニアとしての礎になったと実感している。

 以下では,まずソフトウエア・エンジニアリングの歴史を押さえた上で,ソフトウエア・エンジニアリングの意味や目的,そしてSWEBOKなどの知識体系を中心にソフトウエア・エンジニアリングを学ぶためのポイントを解説していく。