書き殴りでやはり人間系の大事さを語るが酔っぱらっているの巻き

酔っぱらっているので何とか理解してください皆様。

リアルタイムOS

 Windows VistaとかLinuxとかよく使われているOSは、基本的にベストエフォート型である。ベストエフォートというと最善の努力をしているんだし、語呂もかっこいいのだが、そうはいってもベストエフォート。仕事を大量に与えると賢いOSはCPUが100%までがんばるが、がんばるだけである。また突如にのDVDのリッピング&デコードなんかしようものなら、元の仕事なんかほっておいてしまうこともある、ぼろぼろだ。二言目には「めっちゃがんばります(がいつ出来るかは保証できません)」という体育会系OSといってよかろう。
 一方、それに比べるとリアルタイムOSは、資源の中でも特に時間資源をきっちり管理し、またリアルタイムがだいたいembededなのでそのほかの資源利用にシビアなのにその当然の結果終了時間を高い確率で予測できるOSであるような仕組みがある。つまり少ない予算しか与えずに複数の仕事を与えても「XX月XX日までにそれらの仕事やります」といったらきっちりやるタイプ。俺の対局にいるのがリアルタイムOSなところが悲しいが、超有能な社員といいきっていいだろう。
 リアルタイムOSから学べることは、開発プロジェクトであっても、「結局利用可能な資源と実行するタスクが明確であれば」、リアルタイムOSとして実装されているような特定のアルゴリズムに従えば、プロジェクトの時間制約は守られるということだ。つまり当たり前なのだが逆説的に 「」の部分の前提を真にすることがもっとも難しいわけで、「」が真であるようなモデルを仮定したプロジェクトマネージメントの研究をする場合はiTRONを関連研究として参考文献に入れてもよいのではということになる。やっぱプロジェクトは人間系が大変なのねという当たり前の結論でした。

スケーラビリティ

 そうはいっても、企業系システムの場合、最も重要なのはスケーラビリティである。というのも、企業系システムの開発は現状ではリアルタイムOS的な管理ができていないからである。なら、次善のやり方はスケーラビリティの確保なんだ。スケーラビリティは、並列に処理させた場合、それにともない実行に必要な資源が競合している時間があがっていってしまうのをいかに減らして、投入処理に比例して処理が進むようにできるかを考えることがポイントになる、つまり、たくさんの体育会系のお兄さん全員に、どうやればぶっ倒れるまで働いてもらえるような環境を作れるかということだ。
 ちなみに自分はアイスホッケー部だったわけだが、一つのスケートリンク(50mx25m)に部員が30人もきてしまうと、一度に練習できる人数は限られるから他の人が練習している際には結構暇になる。じゃあ、どうすればよいか。答えは軽井沢スケートセンターにあって、そこにはなんと普通のリンクが3面あったり競技用の400mリンクがあったりで、30人ぐらいの部員全員がいっぺんに練習できるような環境となっていたのだ。こうなると、ぶっ倒れるまでやるしかない。自分はそれで疲労困憊し、その2週間後に退部届を出すことになったのである。
 で、開発プロジェクトのスケーラビリティも同じだそうだ。スケーラビリティを確保するためには軽井沢スケートセンタがあれば、体育会系のお兄さんをたくさん投入できる。これはなんのメタファかというと、しょーもない技術でもたくさんの人が使えるものならスケーラビリティは確保できるということだ。つまり並列に開発が出来て、結果的には早い開発が可能となる。
 おれは今更ながらZ notationのファンなのだが、これは絶対にスケールしない。だから絶対にメインストリームにはならないのだ。だから、みんなVBAJava、Cで書く。そういういものだ。

ソフトウェア プロセス アズ ソフトウェア

かつてソフトウェアプロセスもソフトウェアだといった人がいたが、そうだと思う。ただ、ソフトウェアだけど、プログラムじゃない。明確なアルゴリズムを定義できればソフトウェアプロセスがうまく動作すると思ったら大間違い。

酔っぱらい

酔っぱらうと適当に書いても平気でエントリしたくなるな。じゃ、お休み。