« SIビジネスの規格化 | トップページ | フォーマル・メソッドと日本語プログラミング »

2008年3月 8日 (土)

ソフトウエア開発を効率化するには

抽象度をより引き上げていく以外にないのでしょうけど。

On the one hand, you may hear about that things have never looked brighter: We have better tools, better testing, better languages, and better methods than ever before! On the other hand, you will also hear that we haven't really made much headway since the dawn of the computer era.

Scott Rosenberg, "Dreaming in code", Crown Publishers, 2007, p.9

ソフトウエア開発について明瞭であったことはないかもしれない。プログラマ達は言うだろう。ソフトウエア開発には、かってないほどに、良いツール、良いテスト手法、良い言語、良い方法論があると。またプログラマ達は、こうも言うだろう。コンピュータの黎明期から、ソフトウエア開発には、本当の進歩はほとんどないと。

抽象度を引き上げる手段としては、ライブラリ的なアプローチと、言語的なアプローチがあり、”部品化”というのは、どちらかといえば前者になるかと思います。

ライブラリ的なアプローチというのは、ボトムアップにソフトウエアのスタックを、より抽象度の高い方向へと積み上げていくやり方です。コンピューティングの”How”に関する詳細な部分を、スタックの下部へと押しやり、”What”な部分をスタックの上部に持ってくることで、ソフトウエア開発の効率化を図ろうとするわけでして。スタックの下部が安定していれば − つまりあまり仕様変更がなければ、スタックの下部はテストの積み重ねで、品質が向上していき、その結果、スタックの上部にだけ注意を払えばよくなるので、効率化できるわけですね。

言語的なアプローチというのは、より抽象度の高い、メタなレベルでソフトウエアを記述して、トップダウンでソフトウエアのスタックを、抽象度の高いレベルから、抽象度の低いレベルへと落とし込むアプローチです。つまり、新しいプログラミング言語を用意するわけですが。これも、翻訳の機構が安定すれば、品質の向上と効率化を図ることができます。

ソフトウエア開発の進化の歴史というのは、このボトムアップ・アプローチとトップダウン・アプローチの積み重ねだと思います。両者は相互に影響し合って進歩してきたわけです。

ただ、残念ながら、”革新的”というほどの進歩ではないんですよね。

1954年、世界初のプログラミング言語 FORTRAN が生まれて、プログラマは”普通の数式”でプログラムを書くことができるようになりました。足し算や掛け算を機械にどうやらせるか、なんてことを考える必要はなくなったのです(ただし、十分な計算機リソースがあれば)。

1960年、 ALGOL 60 が提唱され、プログラムを構造化して記述することができるようになりました。プログラマは、巨大な一枚岩のプログラムを、サブルーチンに分割できるようになったのです(ただし、十分な計算機リソースがあれば)。

1972年、 C言語 が生まれました。この言語は、コンパクトで効率がよく、ミニコン上でも、コンパイラを動かすことができたのです。プログラマは、貧弱な計算機上でも、まともなコンパイラが使えるようになったのです。また、標準ライブラリ他、プログラムのライブラリの蓄積が始まり、同じコードを何度も再発明する必要も多少は薄らぐようになってきました。

1983年、 C++言語 が生まれました。プログラマはオブジェクト指向でプログラムを記述できるようになったのです。リスト、マップなどのコンテナ、ソート、サーチのようなアルゴリズムなど、以前はライブラリ化の難しかったものもライブラリ化できるようになりました。

1995年、 Java言語 が生まれました。プログラマはソースコードの再コンパイルを行なわなくても、プラットフォーム間で同じプログラムを使うことができるようになったのです(ちゃんと互換性に気をつけていれば)。また、ガベージコレクション機能によって、プログラマはメモリ・リソースの管理を行なう必要もなくなりました(ある程度は)。

プログラミング言語の簡単な歴史です。この数十年で、コンピュータの利用形態は劇的に変化していますが、それはハードウエアの価格性能比面での進歩に負うところが大かと思います。”ソフトウエアの開発”という面だけをみると、思ったほどには進歩していないと言うべきでしょう。ブルックス氏のいうとおり、今のところ”銀の弾丸”はなさそうです。

|

« SIビジネスの規格化 | トップページ | フォーマル・メソッドと日本語プログラミング »

コメント

開発者・技術者の支援プロジェクト紹介


開発者・技術者特化型の事業支援プロジェクト
『スプリング・テック・キャンプ2008』(STC2008)の運営開始!
~開発者・技術者を大募集!~

初めまして。ALITO株式会社のスプリング・テック・キャンプ2008(STC2008)事務局の井上と申します。 突然のメッセージで失礼致します。

国内外企業のインキュベーション事業を展開するALITO株式会社(本社:東京都中央区)は、開発者及び技術者に焦点を当てた起業家支援プロジェクト『スプリング・テック・キャンプ2008』(以下、STC2008)を開始します。このプロジェクトは、開発者及び技術者がこれまで培った技術を活用し、自分が作りたいサービスを思う存分2ヶ月間で開発して頂くために、当社が最大限に支援するプロジェクトとなります。志望者は、開発したいソフトウェア、サービスをベンチャー企業経営者にプレゼンテーションして頂きます。支援決定後、志望者は、実施期間中は開発環境や食事、宿泊施設、交通費などを受け、STC2008に集まったメンバーと共に切磋琢磨し、開発していただきます。また、支援対象者にはSTC2008後も事業化の見込みがあるソフトウェア、サービスに関しては大きく3つの支援をさせて頂きます。まず、当社からの資金支援のサポートに加え、銀行や大手VCを紹介し、銀行、VCに対するプレゼンのサポートをさせて頂きます。次に、事業計画や経営戦略などの立案や営業代理、提携先斡旋などの営業面の支援をさせて頂きます。最後に、オフィス提供や開発用PC、サーバー、ネット環境などのインフラ提供、事務支援、会計・財務、法務などのバックオフィス・環境面等を支援させて頂きます。日本では、あまり馴染みがないかもしれませんが、アメリカでは、このような支援プロジェクトがわりとポピュラーでこのような環境から起業し、成長しているビジネスが多々あります。


詳細は、

http://www.alito.co.jp/stc2008.html

となります。

募集をお待ちしております。
よろしくお願い致します。

投稿: stc2008 | 2008年4月11日 (金) 18時15分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/80472/11093751

この記事へのトラックバック一覧です: ソフトウエア開発を効率化するには:

« SIビジネスの規格化 | トップページ | フォーマル・メソッドと日本語プログラミング »