2019年4月22日月曜日

状態指向プログラミング


今のシステムは相当に複雑である。しかしその中身は、DBやミドルの仕様に引っ張られているとか、可用性や負荷対策とか、セキュリティとか、本来やりたいこととは違うところでの苦労だ。現在、巨大なシステムが全てSIerに任されている原因の一端はここにあり、システムのモジュール化の仕方がアーキテクチャ寄りになり過ぎているのが原因だと思う。

システムは、もっと「状態指向」に書くべきである。つまり、あるべき状態をまず記述し、そこからはみ出た時にはどう直すか、そのためにはどんな動きをするか、更にはそのスピードや故障対応等のいわゆる非機能要件、最後にインプリメンテーション。こういう階層で書くべきなのだ。また、この階層は、できるだけ分離して書くべきだ。

この背後には、高度な負荷分散・可用性維持・セキュリティ・状態監視システムを含んだ並列実行環境が必要だが、逆に言えばこれはシステムによって異なることはなく、SIはその規模のみに依存し、知識は共通である。並列実行環境のSIer・メンテナーは上位システムには感知しないし、もし不具合が起きてもシステムに依存せず代替機種を用意して移植できる。

この環境に一番近いのが、AWS Lambdaなどのようなサーバーレスコンピューティングだ。しかしまだ足りないところがあって、Lambdaは関数ベースであり状態指向ではないこと、非機能要件の記述ができないところなどがある。ここら辺は計算機言語学に属するのだろうが、そういう体系をAWSが作れるのかは注目するところだ。

0 件のコメント:

コメントを投稿

注目の投稿:

超音波モーターの原理によるVR用トレッドミル

  VRにおけるリアリティ問題の一つに、その場で動くのではなく移動する場合、つまり歩いたり走ったりすることが挙げられる。実際にはその場にいるので、歩いたかのように足場を調節してやる必要がある。 これを実現する方法として、すり鉢状の滑りやすい足場を作っておく方法と、トレッドミルを使...

人気の投稿: