新年にあたって、「ソフトウェア工学の未来がどういう姿になっているか」を語っているケイパー・ジョーンズさんの新刊から、ケイパーさんの描く未来像を紹介してみたいと思います。
昨年、版を重ねている『ソフトウェア開発の定量化手法』や『ソフトウェア見積りのすべて』を通して、以前からお世話になっているケイパー・ジョーンズさんの新刊『ソフトウェア工学のベストプラクティス ―ソフトウェア工学の真の工学への発展をめざして―』(*1)の邦訳がでました。原著は、2010年に出ていますが、分厚いものだったので、訳出されて身近に手に取れるようになり、感謝しています。
今回の内容は、ソフトウェア構築におけるベストプラクティスが主テーマになっていて、現在ソフトウェア工学が関わっている様々な分野のベストプラクティスが紹介されています。狭義のソフトウェア工学のスコープである、要求定義から設計・開発・テストだけでなく、ITエンジニアの採用基準・評価・育成計画、ITエンジニアやプロジェクトマネージャのモチベーションやモラル、アウトソーシングや各種スペシャリストの活用法、エンジニアリングに関わる効果的な手法・ツール・プラクティスとその選択基準などが幅広く、目配り良く紹介されているのが特徴です。
そして、現在のベストプラクティスを概観した後、第3章の「2049年頃のソフトウェア開発と保守についての予見」において、執筆時から40年後のソフトウェア開発の現場の未来が語られています。
プログラムの自動化など、過去においても、例えば1980年代であれば、2000年頃には実現していると巷間にいわれていたような気がします。しかしながら、本書では、改めて、ソフトウェア構築の自動化や再利用を図るための条件を明らかにし、その条件を解決するために必要な道具立てを示しています。
ケイパーさんのソフトウェア工学に対する見方はこうです。1960年から現在にいたるまで、ソフトウェア工学は、基本的に「工芸」的なものあり、「工学」にはなっていなかった。複雑なソフトウェアアプリケーションは、それぞれ個別に設計され、1行ずつ書かれるソースコードから構築されてきた。このような開発は、効率的でも経済的でもなく、品質も安定せず、セキュリティも満足なものではなかった。このような状況のソフトウェア工学は、芸術的表現から、真の工学になってほしい、といいます。
取り上げられているソフトウェア工学のスコープはとても広いのですが、今回は、狭義のソフトウェア工学のスコープである要求定義から設計・開発、そして保守について見てみたいと思います。
1.未来の要求分析
未来の要求分析は、まず最初に、インテリジェントエージェントやアバターを使って、Webやデータベースに蓄積された、ソフトウェアや技術文献、マーケット情報などあらゆる関連情報を収集、分析することからはじまるといいます。
といいます。
再利用されるソフトウェアは、品質やセキュリティが保証されていること。
また、インテリジェントエージェントは、
なぜなら、特許侵害による巨額の出費により、開発中止になることを未然に防ぐことが必要とされているため。
さらに、
現時点の見積りツールには、このような3つの機能を持つものはない。
しかしながら、現在の再利用のレベルはまだまだです。
2.未来の設計
現在と未来の設計の非常に重要な差異の1つは、
上記の機能は、とてもハードルが高いと思いますが、
といいます。
3.未来のソフトウェア開発
固有アプリケーションのコードを1行ずつ書くスタイルから、品質やセキュリティが保証されたソフトウェアの再利用が前提となる。
そのためには、新規に開発されるにあたっては、再利用を考慮したものになる必要があります。
そのためには、品質とセキュリティの欠陥を発見できるインテリジェントエージェントとエキスパートシステムが必須となります。
4.未来の保守と機能拡張
ソフトウェアのアプリケーションは、運用開始後の規模拡大率は年8%ともいわれており、7年で倍になるペースになる。また、規模拡大にともない、複雑度も増していきます。そのため、ソフトウェアの老朽化、衰退速度を遅らせるために、運用後5年くらいでリノベーションをする必要があります。
最後に、ちょっと毛色の変わった話題ですが、未来の訴訟を取り上げてみます。
意外にも、ソフトウェアのソースコードや設計が密接に関わってきます。これまで分からなかったことが、分かるようになることで、問題が顕在化する、と指摘しています。
5.未来の訴訟
・・もちろん、こんな統合ツールはまだありませんが、再利用の効率化のためには、40年後といわず、数年以内にほしいと思います。
いまから40年後のソフトウェア開発現場に必要な道具立てがいかなるものか、現時点で分からないものもあります。しかしながら、そのような場合でも、あるべき未来像から逆算することで、現在の仕事の効率化や、効果を求めるべき領域が明らかになってくると思います。