ソフトウェアエンジニアリング(そふとうぇあえんじにありんぐ)情報システム用語事典

software engineering / ソフトウェア工学

» 2008年07月15日 00時00分 公開

 高品質のコンピュータ・ソフトウェアを効率的かつ効果的に作成・利用するために、科学的・定量的に導き出された理論や技法、ツールを体系的な方法で実践に適用すること。あるいは、このようなアプローチに関する研究や学問分野、その研究成果としての体系的知識、それらの知識を基礎とする専門職業をいう。

 ソフトウェアエンジニアリングとは、ソフトウェアの開発・運用・保守に工学的手法を適用することである。ただし、一般の工学分野は科学知識(自然法則)を基礎としているのに対して、ソフトウェアエンジニアリングは現場が蓄積してきたノウハウから優れた部分を取り出して整理するという方法が主流で、システム工学やインダストリアル・エンジニアリング同様、経験科学的アプローチを用いる。そこでソフトウェアの作成・利用という人間の知的活動の中から、普遍的と呼ぶことができる法則や原理を見出し、具体的な技法として体系化する活動――「方法論」が重要な分野となる。

 ソフトウェアエンジアリングの基本的なアプローチとしては、ソフトウェア・プロダクトに対するものと、ソフトウェア・プロセスに対するものが挙げられる。ソフトウェア・プロダクトはコンピュータ・プログラム(実行コード、ソースコード)やデータのほかに、中間成果物である各種ドキュメントやモデルを含む。それらの構成方法や表現方法として「抽象化」「構造化」「モジュール化」などが研究、実践されてきた。

 ソフトウェア・プロセスに関してはソフトウェアライフサイクルの概念が導入され、分析・要求・仕様・設計・開発・検証・保守などの段階を明確にして、各段階における技術や方法が検討、実践されてきた。また、プロジェクトマネジメント、品質保証・品質管理、コスト管理、変更管理・構成管理、運用管理なども重要な領域である。

 「ソフトウェアエンジニアリング」という言葉は、1968年10月に西ドイツ(当時)のガルミッシュ=パルテンキルヒェンで開かれたNATO(北大西洋条約機構)科学委員会主催の「NATOソフトウェアエンジニアリング・カンファレンス」で、初めて公式に使われたとされる。

 1960年代後半、コンピュータハードウェアの発展もあって大規模なシステムを作る動きが活発になっていたが、実際のプロジェクトでは発注者と製作者の間でトラブルが多発していた(ソフトウェア危機)。軍事関連システムでは特に深刻な問題ととらえられ、NATO科学委員会が1967年にこれらの問題を評価・検討する研究グループを設立した。同グループは問題の中心はソフトウェア製造であるとして、「ソフトウェアエンジニアリング」に関する国際会議の開催を提言した。

 このとき、工学各分野で確立されてきた論理的基礎と実践的規律に基づく規範がソフトウェア製造にも必要性であることを主張するために、意図的に選ばれたのが「ソフトウェアエンジニアリング」というフレーズだった。研究グループの一員で同カンファレンス議長を務めたミュンヘン工科大学教授(当時)のフリードリッヒ・L・バウアー(Friedrich Ludwig Bauer)の発言に由来するという。バウアー自身は、ソフトウェアエンジニアリングを次のように説明してる。

信頼性があって、実際のマシンの上で効率よく動作するソフトウェアを経済的に得るために、適切な工学の原則を確立して用いること


 ソフトウェア開発・利用に関する知識体系化としてのソフトウェアエンジニアリングは上記のように1960年代末から広がってきたが、職業上あるいは学術上のディシプリン(規律、教育分野)としてのソフトウェアエンジニアリングが受け入れられるようになってきたのは1990年代になってからである。

 米国では個別の大学/大学院でのソフトウェアエンジニアリング教育は1960年代末から行われていたが、教育プログラム認定はIEEE-CS(米国電気電子技術者協会 コンピュータソサエティ)とACM(米国計算機学会)が合同して策定したコンピューティングカリキュラム 1991(CC1991)によって基礎付けられた。両団体は1997年からカリキュラムの基礎となるSWEBOK策定の作業を行い、最初のバージョンを1998年に発表している。これはソフトウェアエンジニアリングの範囲を表すものとしても参照される。

 ソフトウェアエンジニアリングは天賦の才に任されていたソフトウェア開発を、教育・訓練を積んだ専門家=ソフトウェアエンジニアが決められた手順を守ることによって実現できるようにする活動である。特に大規模ソフトウェア開発を中心に技法の研究・実践が進められ、ソフトウェア開発の標準化・自動化を目指すソフトウェアファクトリやCASEはその典型だといえる。その一方で、ハッカー文化の根強い米国などでは、ソフトウェア開発はあくまでの個人の技芸(art)や工芸(craft)であり、工業化に反対する意見もある。

参考文献

▼『ソフトウェアの考え方・作り方』 松本吉弘=著/電気書院/1981年8月

▼『ソフトウェアエンジニアリング』 イアン・サマーヴィル=著/佐野美知夫、佐藤匡正=監訳/フジ・テクノシステム/1993年10月(『Software Engineering』の邦訳)

▼『ソフトウェア工学――理論と実践』 シャリ・ローレンス・プリーガー=著/堀内泰輔=訳/ピアソン・エデュケーション/2001年11月(『Software engineering』の邦訳)

▼『実践ソフトウェアエンジニアリング――ソフトウェアプロフェッショナルのための基本知識』 ロジャー・S・プレスマン=著/西康晴、榊原彰、内藤裕史=監訳/古沢聡子、正木めぐみ、関口梢=訳/日科技連出版社/2005年2月(『Software Engineering: A Practitioner's Approach』の邦訳)

▼『ソフトウェア職人気質――人を育て、システム開発を成功へと導くための重要キーワード』 ピート・マクブリーン=著/村上雅章=訳/ピアソン・エデュケーション/2002年3月(『Software Craftsmanship: the New Imperative』の邦訳)

▼『Software Engineering: Report of a conference sponsored by the NATO Science Committee』 Peter Naur、Brian Randell=編/NATO/1968年10月


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ