「ソフトウェア開発はなぜ難しいのか - 人月の神話を超えて」

出張帰りの機内で読みました。
http://www.amazon.co.jp/dp/4774140287

著者の大槻氏は日立から独立され、コンサル会社の副社長を勤めていらっしゃる方です。
http://www.1corp.co.jp/consultant/ohtsuki.html

1975年に出されたブルックス氏の「人月の神話」というタイトルを知らない IT 業界人は少ないでしょう。私は人月の仕組みをこの業界に入ってから知ったのですが、直感的に不自然さを感じました。あとになって、その違和感は間違っていないと思いを強くしますが、それに代わる方法が出てこないことにもどかしさを感じる日々が続きました。著者の本は私がやろうとしていること(自動生成技術の活用)を後押しするのか、それとも別の道を示してくれるのかを知りたいと思い、購入しました。

本の中では、すでに知られている人月の問題や、そもそもソフトウェアとは製造ではなく設計作業であり、規模が大きくなるにつれ困難度が高まることは避けられないという事実を、わかりやすく説明しています。また、ソフトウェアエンジニアリングの歴史についても平易に説明されており、今後の可能性についても言及しています。そして、著者の考える次の開発手法は、まさに当社のアプローチでした。以下、本文の一部抜粋です。

近年、モデル駆動開発と呼ばれている、仕様記述言語からコード生成を行う方式は、ソフトウェアエンジニアリング全体の位置づけからするとプログラミング環境の高級化と考えてよいと思います。モデル駆動開発は究極的には、ユーザが直接開発に関わることができる可能性を秘めています。

ソフトウェアの同調性や可変性の問題というのは、ユーザと開発者との間の距離をどのように縮めるかという問題でもあります。ユーザが直接、プログラミング相当のことができるようになれば理想的です。この意味でモデル駆動開発は正しい方向に挑戦しているとみなすことができます。

また、これからのソフトウェアづくりにおいて重要な観点は「抽象化」「自動化」「モジュール化」であるとも主張しています。これを Wagby 的観点で捉えると次のようになるでしょう。

  • 抽象化:業務に普遍的なパターンの洗い出し
  • 自動化:仕様書からのソースコード自動生成およびビルドとデプロイの自動処理。
  • モジュール化:Wagby定義ファイルが提供する業務部品の提供

Wagby を使うと、プログラムコードの保守から解放され、業務知識の話題に集中することができます。これが私達が目指すユーザと開発者の真の関係です。この本の中でも、あとがきの中で次のように記されています。

(中略)そして、機能やフィーチャの先に、ソフトウェアを取り巻く様相があること、ソフトウェアをつくる(生産する)ということと、使う(消費する)ということとを一体として捉え、つくる/使う(生産消費)としてアプローチしていく可能性についても述べました。

来るべき知識社会においてソフトウェアは、プログラムコード中心の見方をするよりも、知識を織り込んだものではないかということにも言及しました。

ソフトウェア開発プロセスの変化は、このように静かに進行しています。自動生成技術を中核とした生成的プログラミングを行うチームの成功例が認知されるにつれ、この変化は大きなうねりになることでしょう。Wagby は国内で最先端の開発を学ぶことができるツールになっていますが、最先端とは難しいという意味ではなく、ひょうしぬけするほど簡単で、ソースコードを書かないということなのです。この開発プロセスは従来の常識を覆しますが、本書の指摘は、私達が進もうとしている方向性の正しさを裏付けるものでした。