真のエンジニアリングには「定量化&定性化」が不可欠
「『エンジニアリング』してますか?」という参加者への問いかけからスタートした鷲崎氏の講演。同氏によれば、エンジニアリングの辞書的な定義は「科学に裏打ちされた技術活動・学問体系」とされており、ソフトウェアの開発運用を行う際にこの定義を満たしていれば、きちんと「エンジニアリングを行っている」と表現できる。
ただしSWEBOKにおいては、ソフトウェアエンジニアリングを「ソフトウェアの開発運用保守に対する体系的、規律的、定量的なアプローチの適用」としている。この定義に則れば、個々の技術者の直感、すなわちそれぞれが良かれと思うスタイルで開発を行うカウボーイコーディングは、ソフトウェアエンジニアリングではないことになる。
加えて、鷲崎氏はソフトウェアエンジニアリングを「定量的であることが望ましい」とする。定性的な部分はもちろん、品質の測定評価や顧客満足・開発者満足を定量化していることが理想だが、こうした定量化を実践している企業はほとんど見当たらない。冒頭の問いかけは、自分の行っているソフトウェア技術活動が、「まっとうな」ソフトウェアエンジニアリングと呼べるのかという問いかけだったのだ。
このような背景から鷲崎氏は、「正統なソフトウェアエンジニアリングにおいては、科学や理論に裏付けされた実証済みの知識体系を通じて、さまざまなテクニックやコツなどを体系的にまとめていくことが重要」だと説く。その指針のもと、プラクティスやパターンを組み立てて開発を進めていくのがエンジニアの役割というわけだ。
そして、エンジニアが立脚すべき知識体系の基盤となるのがSWEBOKだ。知識の島々をまとめ上げたこのガイドは、実務家や研究者・学習者が共通して押さえるべき知識を特定し、ソフトウェアエンジニアリングに対する共通の理解を得ることを目的としている。
IoTやビッグデータ・AIの時代に入った現代においては、データドリブンのソフトウェア開発やDevOpsなどの重要度が増してきている。近々発表されるSWEBOK Ver.4にも、こうした新しい技術知識についての内容が含まれる(ただしSWEBOKの「実証済みの内容を基盤として提供する」という特性上、実証に至っていない最新の内容は含まれない)。
2014年のVer.3からリニューアルするVer.4では、複雑で不確実な時代だからこそ重要となる「アーキテクチャ」、開発と運用を一体で捉えるDevOpsの時代に対応した「運用」、他の品質とは異なる特殊性をもつ「セキュリティ」の知識領域を新設。ソフトウェアエンジニアリングにおけるプラクティスが著しく変化したことを背景に、これら3つの領域を設けることで、ソフトウェアエンジニアリングの現代的な要求に対応する。
これらの領域においては、まず基礎概念を押さえ、実践的なツールやパターンを参照することで具体的な技術や手法を深掘りするという構成になっている。